DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_00555_AAD_S_000001_PKG

Source


1 PACKAGE BODY XLA_00555_AAD_S_000001_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_00555_AAD_S_000001_PKG                                        |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |     Package generated From Product Accounting Definition              |
13 |      Name    : Process Manufacturing Financials                       |
14 |      Code    : PROCESS_MFG_FINANCIALS                                 |
15 |      Owner   : PRODUCT                                                |
16 |      Version :                                                        |
17 |      AMB Context Code: DEFAULT                                        |
18 | HISTORY                                                               |
19 |     Generated at 30-03-2009 at 04:03:27 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_00555_AAD_S_000001_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_00555_AAD_S_000001_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_00555_AAD_S_000001_PKG.ValidateLookupMeaning');
204        --
205 END ValidateLookupMeaning;
206 --
207 --
208 
209 --
210 ---------------------------------------
211 --
212 -- PUBLIC FUNCTION
213 --         GetMeaning
214 --
215 ---------------------------------------
216 FUNCTION GetMeaning (
217   p_flex_value_set_id               IN INTEGER
218 , p_flex_value                      IN VARCHAR2
219 , p_source_code                     IN VARCHAR2
220 , p_source_type_code                IN VARCHAR2
221 , p_source_application_id           IN INTEGER
222 )
223 RETURN VARCHAR2
224 IS
225 l_meaning_meaning                     VARCHAR2(4000);
226 l_array_meaning                        xla_ae_sources_pkg.t_array_meaning;
227 l_Idx                                 INTEGER;
228 l_log_module                          VARCHAR2(240);
229 --
230 BEGIN
231 IF g_log_enabled THEN
232       l_log_module := C_DEFAULT_MODULE||'.GetMeaning';
233 END IF;
234 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
235       trace
236          (p_msg      => 'BEGIN of GetMeaning'||
237                         'p_flex_value_set_id = '||p_flex_value_set_id||
238                         'p_flex_value = '||p_flex_value
239          ,p_level    => C_LEVEL_PROCEDURE
240          ,p_module   => l_log_module);
241 END IF;
242 --
243 l_array_meaning := xla_ae_sources_pkg.g_array_meaning;
244 --
245 IF p_flex_value IS NULL THEN
246 
247   l_meaning_meaning := NULL;
248 
249 ELSE
250 
251  CASE p_flex_value_set_id
252       
253    WHEN 1010186 THEN
254 
255     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
256 
257       trace
258          (p_msg      => '-> CALL  DBMS_UTILITY.get_hash_value'
259          ,p_level    => C_LEVEL_PROCEDURE
260          ,p_module   => l_log_module);
261 
262     END IF;
263 
264     l_Idx := DBMS_UTILITY.get_hash_value(TO_CHAR(p_flex_value),1,1073741824);
265 
266     IF l_array_meaning.EXISTS(1010186) AND
267        l_array_meaning(1010186).array_flex_value.EXISTS(l_Idx) AND
268        l_array_meaning(1010186).array_flex_value(l_Idx)   = p_flex_value        THEN
269 
270        l_meaning_meaning    := l_array_meaning(1010186).array_meaning(l_Idx);
271 
272     ELSE
273 
274      l_meaning_meaning := p_flex_value;
275      l_array_meaning(1010186).array_flex_value(l_Idx)       := p_flex_value;
276      l_array_meaning(1010186).array_meaning(l_Idx)          := l_meaning_meaning;
277 
278     END IF;
279 
280  ELSE
281          l_meaning_meaning  := NULL;
282          xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
283          xla_accounting_err_pkg.build_message
284                         (p_appli_s_name            => 'XLA'
285                         ,p_msg_name                => 'XLA_AP_FLEX_VALUE_MEANING'
286                         ,p_token_1                 => 'VALUE_SET_NAME'
287                         ,p_value_1                 =>  xla_flex_pkg.get_value_set_name(p_flex_value_set_id)
288                         ,p_token_2                 => 'FLEX_VALUE'
289                         ,p_value_2                 =>  p_flex_value
290                         ,p_token_3                 => 'SOURCE_NAME'
291                         ,p_value_3                 =>  xla_ae_sources_pkg.GetSourceName(
292                                                      p_source_code
293                                                    , p_source_type_code
294                                                    , p_source_application_id
295                                                      )
296                         ,p_token_4                 => 'PRODUCT_NAME'
297                         ,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
298                         ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
299                         ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
300                         ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
301         );
302       IF (C_LEVEL_ERROR >= g_log_level) THEN
303                          trace
304                             (p_msg      => 'ERROR: XLA_AP_FLEX_VALUE_MEANING'
305                             ,p_level    => C_LEVEL_ERROR
306                             ,p_module   => l_log_module);
307      END IF;
308  END CASE;
309 --
310 END IF;
311 --
312 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
313 
314       trace
315          (p_msg      => 'return value. meaning = '||l_meaning_meaning
316          ,p_level    => C_LEVEL_PROCEDURE
317          ,p_module   => l_log_module);
318 
319       trace
320          (p_msg      => 'END of GetMeaning'
321          ,p_level    => C_LEVEL_PROCEDURE
322          ,p_module   => l_log_module);
323 END IF;
324 --
325 xla_ae_sources_pkg.g_array_meaning := l_array_meaning ;
326 --
327 RETURN l_meaning_meaning ;
328 --
329 EXCEPTION
330 WHEN NO_DATA_FOUND OR TOO_MANY_ROWS THEN
331  --
332       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
333       xla_accounting_err_pkg.build_message
334                 (p_appli_s_name            => 'XLA'
335                 ,p_msg_name                => 'XLA_AP_FLEX_VALUE_MEANING'
336                 ,p_token_1                 => 'VALUE_SET_NAME'
337                 ,p_value_1                 =>  xla_flex_pkg.get_value_set_name(p_flex_value_set_id)
338                 ,p_token_2                 => 'FLEX_VALUE'
339                 ,p_value_2                 =>  p_flex_value
340                 ,p_token_3                 => 'SOURCE_NAME'
341                 ,p_value_3                 =>  xla_ae_sources_pkg.GetSourceName(
345                                                      )
342                                                      p_source_code
343                                                    , p_source_type_code
344                                                    , p_source_application_id
346                 ,p_token_4                 => 'PRODUCT_NAME'
347                 ,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
348                 ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
349                 ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
350                 ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
351         );
352 
353      IF (C_LEVEL_ERROR >= g_log_level) THEN
354                          trace
355                             (p_msg      => 'ERROR: XLA_AP_FLEX_VALUE_MEANING'
356                             ,p_level    => C_LEVEL_ERROR
357                             ,p_module   => l_log_module);
358      END IF;
359 
360      RETURN NULL;
361   WHEN xla_exceptions_pkg.application_exception THEN
362       RAISE;
363   WHEN OTHERS THEN
364        xla_exceptions_pkg.raise_message
365            (p_location => 'XLA_00555_AAD_S_000001_PKG.GetMeaning');
366 END GetMeaning;
367 --
368 
369 ---------------------------------------
370 --
371 -- PRIVATE FUNCTION
372 --         AcctDerRule_1
373 --
374 ---------------------------------------
375 FUNCTION AcctDerRule_1 (
376   p_application_id              IN NUMBER
377 , p_ae_header_id                IN NUMBER
378 , p_side                        IN VARCHAR2 
379 --Transaction Account
380  , p_source_1            IN NUMBER
381 --Journal Line Type
382  , p_source_2            IN VARCHAR2
383 , x_transaction_coa_id         OUT NOCOPY NUMBER
384 , x_accounting_coa_id          OUT NOCOPY NUMBER
385 , x_value_type_code            OUT NOCOPY VARCHAR2
386 )
387 RETURN NUMBER
388 IS
389 l_component_type       VARCHAR2(80)  ;
390 l_component_code       VARCHAR2(30)  ;
391 l_component_type_code  VARCHAR2(1)   ;
392 l_component_appl_id    INTEGER       ;
393 l_amb_context_code     VARCHAR2(30)  ;
394 l_log_module           VARCHAR2(240) ;
395 l_output_value         NUMBER        ;
396 BEGIN
397 IF g_log_enabled THEN
398       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_1';
399 END IF;
400 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
401       trace
402          (p_msg      => 'BEGIN of AcctDerRule_1'
403          ,p_level    => C_LEVEL_PROCEDURE
404          ,p_module   => l_log_module);
405 END IF;
406 --
407 l_component_type         := 'AMB_ADR';
408 l_component_code         := 'AAC';
409 l_component_type_code    := 'S';
410 l_component_appl_id      :=  555;
411 l_amb_context_code       := 'DEFAULT';
412 x_transaction_coa_id     :=  null;
413 x_accounting_coa_id      :=  null;
414 --
415 
416  IF NVL(p_source_2,'
417 ') =  'AAC'
418  THEN 
419  --
420   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
421       trace
422          (p_msg      => 'END of AcctDerRule_1'
423          ,p_level    => C_LEVEL_PROCEDURE
424          ,p_module   => l_log_module);
425   END IF;
426   x_value_type_code := 'S';
427   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
428   RETURN l_output_value;
429 
430  END IF;
431 --
432 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
433       trace
434          (p_msg      => 'END of AcctDerRule_1(invalid)'
435          ,p_level    => C_LEVEL_PROCEDURE
436          ,p_module   => l_log_module);
437 END IF;
438 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
439 x_value_type_code := null;
440 l_output_value    := null;
441 xla_accounting_err_pkg.build_message
442                  (p_appli_s_name            => 'XLA'
443                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
444                  ,p_token_1                 => 'COMPONENT_NAME'
445                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
446                                                             l_component_type
447                                                           , l_component_code
448                                                           , l_component_type_code
449                                                           , l_component_appl_id
450                                                           , l_amb_context_code
451                                                           )
452                  ,p_token_2                 => 'OWNER'
453                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
454                                                         'XLA_OWNER_TYPE'
455                                                         ,l_component_type_code
456                                                         )
457                  ,p_token_3                 => 'PAD_NAME'
458                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
459                  ,p_token_4                 => 'PAD_OWNER'
460                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
461                                                         'XLA_OWNER_TYPE'
465                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
462                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
463                                                         )
464                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
466                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
467                  ,p_ae_header_id            => NULL
468 );
469 RETURN l_output_value;
470 EXCEPTION
471   WHEN xla_exceptions_pkg.application_exception THEN
472       RAISE;
473   WHEN OTHERS THEN
474        xla_exceptions_pkg.raise_message
475            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_1');
476 END AcctDerRule_1;
477 --
478 
479 ---------------------------------------
480 --
481 -- PRIVATE FUNCTION
482 --         AcctDerRule_2
483 --
484 ---------------------------------------
485 FUNCTION AcctDerRule_2 (
486   p_application_id              IN NUMBER
487 , p_ae_header_id                IN NUMBER
488 , p_side                        IN VARCHAR2 
489 --Transaction Account
490  , p_source_1            IN NUMBER
491 --Journal Line Type
492  , p_source_2            IN VARCHAR2
493 , x_transaction_coa_id         OUT NOCOPY NUMBER
494 , x_accounting_coa_id          OUT NOCOPY NUMBER
495 , x_value_type_code            OUT NOCOPY VARCHAR2
496 )
497 RETURN NUMBER
498 IS
499 l_component_type       VARCHAR2(80)  ;
500 l_component_code       VARCHAR2(30)  ;
501 l_component_type_code  VARCHAR2(1)   ;
502 l_component_appl_id    INTEGER       ;
503 l_amb_context_code     VARCHAR2(30)  ;
504 l_log_module           VARCHAR2(240) ;
505 l_output_value         NUMBER        ;
506 BEGIN
507 IF g_log_enabled THEN
508       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_2';
509 END IF;
510 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
511       trace
512          (p_msg      => 'BEGIN of AcctDerRule_2'
513          ,p_level    => C_LEVEL_PROCEDURE
514          ,p_module   => l_log_module);
515 END IF;
516 --
517 l_component_type         := 'AMB_ADR';
518 l_component_code         := 'AAP';
519 l_component_type_code    := 'S';
520 l_component_appl_id      :=  555;
521 l_amb_context_code       := 'DEFAULT';
522 x_transaction_coa_id     :=  null;
523 x_accounting_coa_id      :=  null;
524 --
525 
526  IF NVL(p_source_2,'
527 ') =  'AAP'
528  THEN 
529  --
530   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
531       trace
532          (p_msg      => 'END of AcctDerRule_2'
533          ,p_level    => C_LEVEL_PROCEDURE
534          ,p_module   => l_log_module);
535   END IF;
536   x_value_type_code := 'S';
537   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
538   RETURN l_output_value;
539 
540  END IF;
541 --
542 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
543       trace
544          (p_msg      => 'END of AcctDerRule_2(invalid)'
545          ,p_level    => C_LEVEL_PROCEDURE
546          ,p_module   => l_log_module);
547 END IF;
548 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
549 x_value_type_code := null;
550 l_output_value    := null;
551 xla_accounting_err_pkg.build_message
552                  (p_appli_s_name            => 'XLA'
553                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
554                  ,p_token_1                 => 'COMPONENT_NAME'
555                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
556                                                             l_component_type
557                                                           , l_component_code
558                                                           , l_component_type_code
559                                                           , l_component_appl_id
560                                                           , l_amb_context_code
561                                                           )
562                  ,p_token_2                 => 'OWNER'
563                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
564                                                         'XLA_OWNER_TYPE'
565                                                         ,l_component_type_code
566                                                         )
567                  ,p_token_3                 => 'PAD_NAME'
568                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
569                  ,p_token_4                 => 'PAD_OWNER'
570                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
571                                                         'XLA_OWNER_TYPE'
572                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
573                                                         )
574                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
575                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
576                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
577                  ,p_ae_header_id            => NULL
578 );
579 RETURN l_output_value;
580 EXCEPTION
584        xla_exceptions_pkg.raise_message
581   WHEN xla_exceptions_pkg.application_exception THEN
582       RAISE;
583   WHEN OTHERS THEN
585            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_2');
586 END AcctDerRule_2;
587 --
588 
589 ---------------------------------------
590 --
591 -- PRIVATE FUNCTION
592 --         AcctDerRule_3
593 --
594 ---------------------------------------
595 FUNCTION AcctDerRule_3 (
596   p_application_id              IN NUMBER
597 , p_ae_header_id                IN NUMBER
598 , p_side                        IN VARCHAR2 
599 --Transaction Account
600  , p_source_1            IN NUMBER
601 --Journal Line Type
602  , p_source_2            IN VARCHAR2
603 , x_transaction_coa_id         OUT NOCOPY NUMBER
604 , x_accounting_coa_id          OUT NOCOPY NUMBER
605 , x_value_type_code            OUT NOCOPY VARCHAR2
606 )
607 RETURN NUMBER
608 IS
609 l_component_type       VARCHAR2(80)  ;
610 l_component_code       VARCHAR2(30)  ;
611 l_component_type_code  VARCHAR2(1)   ;
612 l_component_appl_id    INTEGER       ;
613 l_amb_context_code     VARCHAR2(30)  ;
614 l_log_module           VARCHAR2(240) ;
615 l_output_value         NUMBER        ;
616 BEGIN
617 IF g_log_enabled THEN
618       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_3';
619 END IF;
620 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
621       trace
622          (p_msg      => 'BEGIN of AcctDerRule_3'
623          ,p_level    => C_LEVEL_PROCEDURE
624          ,p_module   => l_log_module);
625 END IF;
626 --
627 l_component_type         := 'AMB_ADR';
628 l_component_code         := 'ACV';
629 l_component_type_code    := 'S';
630 l_component_appl_id      :=  555;
631 l_amb_context_code       := 'DEFAULT';
632 x_transaction_coa_id     :=  null;
633 x_accounting_coa_id      :=  null;
634 --
635 
636  IF NVL(p_source_2,'
637 ') =  'ACV'
638  THEN 
639  --
640   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
641       trace
642          (p_msg      => 'END of AcctDerRule_3'
643          ,p_level    => C_LEVEL_PROCEDURE
644          ,p_module   => l_log_module);
645   END IF;
646   x_value_type_code := 'S';
647   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
648   RETURN l_output_value;
649 
650  END IF;
651 --
652 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
653       trace
654          (p_msg      => 'END of AcctDerRule_3(invalid)'
655          ,p_level    => C_LEVEL_PROCEDURE
656          ,p_module   => l_log_module);
657 END IF;
658 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
659 x_value_type_code := null;
660 l_output_value    := null;
661 xla_accounting_err_pkg.build_message
662                  (p_appli_s_name            => 'XLA'
663                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
664                  ,p_token_1                 => 'COMPONENT_NAME'
665                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
666                                                             l_component_type
667                                                           , l_component_code
668                                                           , l_component_type_code
669                                                           , l_component_appl_id
670                                                           , l_amb_context_code
671                                                           )
672                  ,p_token_2                 => 'OWNER'
673                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
674                                                         'XLA_OWNER_TYPE'
675                                                         ,l_component_type_code
676                                                         )
677                  ,p_token_3                 => 'PAD_NAME'
678                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
679                  ,p_token_4                 => 'PAD_OWNER'
680                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
681                                                         'XLA_OWNER_TYPE'
682                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
683                                                         )
684                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
685                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
686                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
687                  ,p_ae_header_id            => NULL
688 );
689 RETURN l_output_value;
690 EXCEPTION
691   WHEN xla_exceptions_pkg.application_exception THEN
692       RAISE;
693   WHEN OTHERS THEN
694        xla_exceptions_pkg.raise_message
695            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_3');
696 END AcctDerRule_3;
697 --
698 
699 ---------------------------------------
700 --
701 -- PRIVATE FUNCTION
702 --         AcctDerRule_4
703 --
704 ---------------------------------------
705 FUNCTION AcctDerRule_4 (
706   p_application_id              IN NUMBER
707 , p_ae_header_id                IN NUMBER
711 --Journal Line Type
708 , p_side                        IN VARCHAR2 
709 --Transaction Account
710  , p_source_1            IN NUMBER
712  , p_source_2            IN VARCHAR2
713 , x_transaction_coa_id         OUT NOCOPY NUMBER
714 , x_accounting_coa_id          OUT NOCOPY NUMBER
715 , x_value_type_code            OUT NOCOPY VARCHAR2
716 )
717 RETURN NUMBER
718 IS
719 l_component_type       VARCHAR2(80)  ;
720 l_component_code       VARCHAR2(30)  ;
721 l_component_type_code  VARCHAR2(1)   ;
722 l_component_appl_id    INTEGER       ;
723 l_amb_context_code     VARCHAR2(30)  ;
724 l_log_module           VARCHAR2(240) ;
725 l_output_value         NUMBER        ;
726 BEGIN
727 IF g_log_enabled THEN
728       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_4';
729 END IF;
730 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
731       trace
732          (p_msg      => 'BEGIN of AcctDerRule_4'
733          ,p_level    => C_LEVEL_PROCEDURE
734          ,p_module   => l_log_module);
735 END IF;
736 --
737 l_component_type         := 'AMB_ADR';
738 l_component_code         := 'ALC';
739 l_component_type_code    := 'S';
740 l_component_appl_id      :=  555;
741 l_amb_context_code       := 'DEFAULT';
742 x_transaction_coa_id     :=  null;
743 x_accounting_coa_id      :=  null;
744 --
745 
746  IF NVL(p_source_2,'
747 ') =  'ALC'
748  THEN 
749  --
750   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
751       trace
752          (p_msg      => 'END of AcctDerRule_4'
753          ,p_level    => C_LEVEL_PROCEDURE
754          ,p_module   => l_log_module);
755   END IF;
756   x_value_type_code := 'S';
757   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
758   RETURN l_output_value;
759 
760  END IF;
761 --
762 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
763       trace
764          (p_msg      => 'END of AcctDerRule_4(invalid)'
765          ,p_level    => C_LEVEL_PROCEDURE
766          ,p_module   => l_log_module);
767 END IF;
768 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
769 x_value_type_code := null;
770 l_output_value    := null;
771 xla_accounting_err_pkg.build_message
772                  (p_appli_s_name            => 'XLA'
773                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
774                  ,p_token_1                 => 'COMPONENT_NAME'
775                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
776                                                             l_component_type
777                                                           , l_component_code
778                                                           , l_component_type_code
779                                                           , l_component_appl_id
780                                                           , l_amb_context_code
781                                                           )
782                  ,p_token_2                 => 'OWNER'
783                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
784                                                         'XLA_OWNER_TYPE'
785                                                         ,l_component_type_code
786                                                         )
787                  ,p_token_3                 => 'PAD_NAME'
788                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
789                  ,p_token_4                 => 'PAD_OWNER'
790                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
791                                                         'XLA_OWNER_TYPE'
792                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
793                                                         )
794                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
795                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
796                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
797                  ,p_ae_header_id            => NULL
798 );
799 RETURN l_output_value;
800 EXCEPTION
801   WHEN xla_exceptions_pkg.application_exception THEN
802       RAISE;
803   WHEN OTHERS THEN
804        xla_exceptions_pkg.raise_message
805            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_4');
806 END AcctDerRule_4;
807 --
808 
809 ---------------------------------------
810 --
811 -- PRIVATE FUNCTION
812 --         AcctDerRule_5
813 --
814 ---------------------------------------
815 FUNCTION AcctDerRule_5 (
816   p_application_id              IN NUMBER
817 , p_ae_header_id                IN NUMBER
818 , p_side                        IN VARCHAR2 
819 --Transaction Account
820  , p_source_1            IN NUMBER
821 --Journal Line Type
822  , p_source_2            IN VARCHAR2
823 , x_transaction_coa_id         OUT NOCOPY NUMBER
824 , x_accounting_coa_id          OUT NOCOPY NUMBER
825 , x_value_type_code            OUT NOCOPY VARCHAR2
826 )
827 RETURN NUMBER
828 IS
829 l_component_type       VARCHAR2(80)  ;
830 l_component_code       VARCHAR2(30)  ;
831 l_component_type_code  VARCHAR2(1)   ;
832 l_component_appl_id    INTEGER       ;
836 BEGIN
833 l_amb_context_code     VARCHAR2(30)  ;
834 l_log_module           VARCHAR2(240) ;
835 l_output_value         NUMBER        ;
837 IF g_log_enabled THEN
838       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_5';
839 END IF;
840 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
841       trace
842          (p_msg      => 'BEGIN of AcctDerRule_5'
843          ,p_level    => C_LEVEL_PROCEDURE
844          ,p_module   => l_log_module);
845 END IF;
846 --
847 l_component_type         := 'AMB_ADR';
848 l_component_code         := 'ALV';
849 l_component_type_code    := 'S';
850 l_component_appl_id      :=  555;
851 l_amb_context_code       := 'DEFAULT';
852 x_transaction_coa_id     :=  null;
853 x_accounting_coa_id      :=  null;
854 --
855 
856  IF NVL(p_source_2,'
857 ') =  'ALV'
858  THEN 
859  --
860   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
861       trace
862          (p_msg      => 'END of AcctDerRule_5'
863          ,p_level    => C_LEVEL_PROCEDURE
864          ,p_module   => l_log_module);
865   END IF;
866   x_value_type_code := 'S';
867   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
868   RETURN l_output_value;
869 
870  END IF;
871 --
872 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
873       trace
874          (p_msg      => 'END of AcctDerRule_5(invalid)'
875          ,p_level    => C_LEVEL_PROCEDURE
876          ,p_module   => l_log_module);
877 END IF;
878 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
879 x_value_type_code := null;
880 l_output_value    := null;
881 xla_accounting_err_pkg.build_message
882                  (p_appli_s_name            => 'XLA'
883                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
884                  ,p_token_1                 => 'COMPONENT_NAME'
885                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
886                                                             l_component_type
887                                                           , l_component_code
888                                                           , l_component_type_code
889                                                           , l_component_appl_id
890                                                           , l_amb_context_code
891                                                           )
892                  ,p_token_2                 => 'OWNER'
893                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
894                                                         'XLA_OWNER_TYPE'
895                                                         ,l_component_type_code
896                                                         )
897                  ,p_token_3                 => 'PAD_NAME'
898                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
899                  ,p_token_4                 => 'PAD_OWNER'
900                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
901                                                         'XLA_OWNER_TYPE'
902                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
903                                                         )
904                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
905                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
906                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
907                  ,p_ae_header_id            => NULL
908 );
909 RETURN l_output_value;
910 EXCEPTION
911   WHEN xla_exceptions_pkg.application_exception THEN
912       RAISE;
913   WHEN OTHERS THEN
914        xla_exceptions_pkg.raise_message
915            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_5');
916 END AcctDerRule_5;
917 --
918 
919 ---------------------------------------
920 --
921 -- PRIVATE FUNCTION
922 --         AcctDerRule_6
923 --
924 ---------------------------------------
925 FUNCTION AcctDerRule_6 (
926   p_application_id              IN NUMBER
927 , p_ae_header_id                IN NUMBER
928 , p_side                        IN VARCHAR2 
929 --Transaction Account
930  , p_source_1            IN NUMBER
931 --Journal Line Type
932  , p_source_2            IN VARCHAR2
933 , x_transaction_coa_id         OUT NOCOPY NUMBER
934 , x_accounting_coa_id          OUT NOCOPY NUMBER
935 , x_value_type_code            OUT NOCOPY VARCHAR2
936 )
937 RETURN NUMBER
938 IS
939 l_component_type       VARCHAR2(80)  ;
940 l_component_code       VARCHAR2(30)  ;
941 l_component_type_code  VARCHAR2(1)   ;
942 l_component_appl_id    INTEGER       ;
943 l_amb_context_code     VARCHAR2(30)  ;
944 l_log_module           VARCHAR2(240) ;
945 l_output_value         NUMBER        ;
946 BEGIN
947 IF g_log_enabled THEN
948       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_6';
949 END IF;
950 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
951       trace
952          (p_msg      => 'BEGIN of AcctDerRule_6'
953          ,p_level    => C_LEVEL_PROCEDURE
954          ,p_module   => l_log_module);
955 END IF;
956 --
957 l_component_type         := 'AMB_ADR';
958 l_component_code         := 'CAD';
962 x_transaction_coa_id     :=  null;
959 l_component_type_code    := 'S';
960 l_component_appl_id      :=  555;
961 l_amb_context_code       := 'DEFAULT';
963 x_accounting_coa_id      :=  null;
964 --
965 
966  IF NVL(p_source_2,'
967 ') =  'CAD'
968  THEN 
969  --
970   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
971       trace
972          (p_msg      => 'END of AcctDerRule_6'
973          ,p_level    => C_LEVEL_PROCEDURE
974          ,p_module   => l_log_module);
975   END IF;
976   x_value_type_code := 'S';
977   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
978   RETURN l_output_value;
979 
980  END IF;
981 --
982 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
983       trace
984          (p_msg      => 'END of AcctDerRule_6(invalid)'
985          ,p_level    => C_LEVEL_PROCEDURE
986          ,p_module   => l_log_module);
987 END IF;
988 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
989 x_value_type_code := null;
990 l_output_value    := null;
991 xla_accounting_err_pkg.build_message
992                  (p_appli_s_name            => 'XLA'
993                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
994                  ,p_token_1                 => 'COMPONENT_NAME'
995                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
996                                                             l_component_type
997                                                           , l_component_code
998                                                           , l_component_type_code
999                                                           , l_component_appl_id
1000                                                           , l_amb_context_code
1001                                                           )
1002                  ,p_token_2                 => 'OWNER'
1003                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1004                                                         'XLA_OWNER_TYPE'
1005                                                         ,l_component_type_code
1006                                                         )
1007                  ,p_token_3                 => 'PAD_NAME'
1008                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1009                  ,p_token_4                 => 'PAD_OWNER'
1010                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1011                                                         'XLA_OWNER_TYPE'
1012                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1013                                                         )
1014                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1015                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1016                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1017                  ,p_ae_header_id            => NULL
1018 );
1019 RETURN l_output_value;
1020 EXCEPTION
1021   WHEN xla_exceptions_pkg.application_exception THEN
1022       RAISE;
1023   WHEN OTHERS THEN
1024        xla_exceptions_pkg.raise_message
1025            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_6');
1026 END AcctDerRule_6;
1027 --
1028 
1029 ---------------------------------------
1030 --
1031 -- PRIVATE FUNCTION
1032 --         AcctDerRule_7
1033 --
1034 ---------------------------------------
1035 FUNCTION AcctDerRule_7 (
1036   p_application_id              IN NUMBER
1037 , p_ae_header_id                IN NUMBER
1038 , p_side                        IN VARCHAR2 
1039 --Transaction Account
1040  , p_source_1            IN NUMBER
1041 --Journal Line Type
1042  , p_source_2            IN VARCHAR2
1043 , x_transaction_coa_id         OUT NOCOPY NUMBER
1044 , x_accounting_coa_id          OUT NOCOPY NUMBER
1045 , x_value_type_code            OUT NOCOPY VARCHAR2
1046 )
1047 RETURN NUMBER
1048 IS
1049 l_component_type       VARCHAR2(80)  ;
1050 l_component_code       VARCHAR2(30)  ;
1051 l_component_type_code  VARCHAR2(1)   ;
1052 l_component_appl_id    INTEGER       ;
1053 l_amb_context_code     VARCHAR2(30)  ;
1054 l_log_module           VARCHAR2(240) ;
1055 l_output_value         NUMBER        ;
1056 BEGIN
1057 IF g_log_enabled THEN
1058       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_7';
1059 END IF;
1060 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1061       trace
1062          (p_msg      => 'BEGIN of AcctDerRule_7'
1063          ,p_level    => C_LEVEL_PROCEDURE
1064          ,p_module   => l_log_module);
1065 END IF;
1066 --
1067 l_component_type         := 'AMB_ADR';
1068 l_component_code         := 'CLEARING';
1069 l_component_type_code    := 'S';
1070 l_component_appl_id      :=  555;
1071 l_amb_context_code       := 'DEFAULT';
1072 x_transaction_coa_id     :=  null;
1073 x_accounting_coa_id      :=  null;
1074 --
1075 
1076  IF NVL(p_source_2,'
1077 ') =  'CLR'
1078  THEN 
1079  --
1080   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1081       trace
1082          (p_msg      => 'END of AcctDerRule_7'
1083          ,p_level    => C_LEVEL_PROCEDURE
1084          ,p_module   => l_log_module);
1085   END IF;
1089 
1086   x_value_type_code := 'S';
1087   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
1088   RETURN l_output_value;
1090  END IF;
1091 --
1092 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1093       trace
1094          (p_msg      => 'END of AcctDerRule_7(invalid)'
1095          ,p_level    => C_LEVEL_PROCEDURE
1096          ,p_module   => l_log_module);
1097 END IF;
1098 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1099 x_value_type_code := null;
1100 l_output_value    := null;
1101 xla_accounting_err_pkg.build_message
1102                  (p_appli_s_name            => 'XLA'
1103                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1104                  ,p_token_1                 => 'COMPONENT_NAME'
1105                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1106                                                             l_component_type
1107                                                           , l_component_code
1108                                                           , l_component_type_code
1109                                                           , l_component_appl_id
1110                                                           , l_amb_context_code
1111                                                           )
1112                  ,p_token_2                 => 'OWNER'
1113                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1114                                                         'XLA_OWNER_TYPE'
1115                                                         ,l_component_type_code
1116                                                         )
1117                  ,p_token_3                 => 'PAD_NAME'
1118                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1119                  ,p_token_4                 => 'PAD_OWNER'
1120                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1121                                                         'XLA_OWNER_TYPE'
1122                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1123                                                         )
1124                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1125                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1126                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1127                  ,p_ae_header_id            => NULL
1128 );
1129 RETURN l_output_value;
1130 EXCEPTION
1131   WHEN xla_exceptions_pkg.application_exception THEN
1132       RAISE;
1133   WHEN OTHERS THEN
1134        xla_exceptions_pkg.raise_message
1135            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_7');
1136 END AcctDerRule_7;
1137 --
1138 
1139 ---------------------------------------
1140 --
1141 -- PRIVATE FUNCTION
1142 --         AcctDerRule_8
1143 --
1144 ---------------------------------------
1145 FUNCTION AcctDerRule_8 (
1146   p_application_id              IN NUMBER
1147 , p_ae_header_id                IN NUMBER
1148 , p_side                        IN VARCHAR2 
1149 --Transaction Account
1150  , p_source_1            IN NUMBER
1151 --Journal Line Type
1152  , p_source_2            IN VARCHAR2
1153 , x_transaction_coa_id         OUT NOCOPY NUMBER
1154 , x_accounting_coa_id          OUT NOCOPY NUMBER
1155 , x_value_type_code            OUT NOCOPY VARCHAR2
1156 )
1157 RETURN NUMBER
1158 IS
1159 l_component_type       VARCHAR2(80)  ;
1160 l_component_code       VARCHAR2(30)  ;
1161 l_component_type_code  VARCHAR2(1)   ;
1162 l_component_appl_id    INTEGER       ;
1163 l_amb_context_code     VARCHAR2(30)  ;
1164 l_log_module           VARCHAR2(240) ;
1165 l_output_value         NUMBER        ;
1166 BEGIN
1167 IF g_log_enabled THEN
1168       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_8';
1169 END IF;
1170 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1171       trace
1172          (p_msg      => 'BEGIN of AcctDerRule_8'
1173          ,p_level    => C_LEVEL_PROCEDURE
1174          ,p_module   => l_log_module);
1175 END IF;
1176 --
1177 l_component_type         := 'AMB_ADR';
1178 l_component_code         := 'CLS';
1179 l_component_type_code    := 'S';
1180 l_component_appl_id      :=  555;
1181 l_amb_context_code       := 'DEFAULT';
1182 x_transaction_coa_id     :=  null;
1183 x_accounting_coa_id      :=  null;
1184 --
1185 
1186  IF NVL(p_source_2,'
1187 ') =  'CLS'
1188  THEN 
1189  --
1190   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1191       trace
1192          (p_msg      => 'END of AcctDerRule_8'
1193          ,p_level    => C_LEVEL_PROCEDURE
1194          ,p_module   => l_log_module);
1195   END IF;
1196   x_value_type_code := 'S';
1197   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
1198   RETURN l_output_value;
1199 
1200  END IF;
1201 --
1202 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1203       trace
1204          (p_msg      => 'END of AcctDerRule_8(invalid)'
1205          ,p_level    => C_LEVEL_PROCEDURE
1206          ,p_module   => l_log_module);
1207 END IF;
1208 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1209 x_value_type_code := null;
1210 l_output_value    := null;
1214                  ,p_token_1                 => 'COMPONENT_NAME'
1211 xla_accounting_err_pkg.build_message
1212                  (p_appli_s_name            => 'XLA'
1213                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1215                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1216                                                             l_component_type
1217                                                           , l_component_code
1218                                                           , l_component_type_code
1219                                                           , l_component_appl_id
1220                                                           , l_amb_context_code
1221                                                           )
1222                  ,p_token_2                 => 'OWNER'
1223                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1224                                                         'XLA_OWNER_TYPE'
1225                                                         ,l_component_type_code
1226                                                         )
1227                  ,p_token_3                 => 'PAD_NAME'
1228                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1229                  ,p_token_4                 => 'PAD_OWNER'
1230                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1231                                                         'XLA_OWNER_TYPE'
1232                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1233                                                         )
1234                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1235                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1236                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1237                  ,p_ae_header_id            => NULL
1238 );
1239 RETURN l_output_value;
1240 EXCEPTION
1241   WHEN xla_exceptions_pkg.application_exception THEN
1242       RAISE;
1243   WHEN OTHERS THEN
1244        xla_exceptions_pkg.raise_message
1245            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_8');
1246 END AcctDerRule_8;
1247 --
1248 
1249 ---------------------------------------
1250 --
1251 -- PRIVATE FUNCTION
1252 --         AcctDerRule_9
1253 --
1254 ---------------------------------------
1255 FUNCTION AcctDerRule_9 (
1256   p_application_id              IN NUMBER
1257 , p_ae_header_id                IN NUMBER
1258 , p_side                        IN VARCHAR2 
1259 --Transaction Account
1260  , p_source_1            IN NUMBER
1261 --Journal Line Type
1262  , p_source_2            IN VARCHAR2
1263 , x_transaction_coa_id         OUT NOCOPY NUMBER
1264 , x_accounting_coa_id          OUT NOCOPY NUMBER
1265 , x_value_type_code            OUT NOCOPY VARCHAR2
1266 )
1267 RETURN NUMBER
1268 IS
1269 l_component_type       VARCHAR2(80)  ;
1270 l_component_code       VARCHAR2(30)  ;
1271 l_component_type_code  VARCHAR2(1)   ;
1272 l_component_appl_id    INTEGER       ;
1273 l_amb_context_code     VARCHAR2(30)  ;
1274 l_log_module           VARCHAR2(240) ;
1275 l_output_value         NUMBER        ;
1276 BEGIN
1277 IF g_log_enabled THEN
1278       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_9';
1279 END IF;
1280 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1281       trace
1282          (p_msg      => 'BEGIN of AcctDerRule_9'
1283          ,p_level    => C_LEVEL_PROCEDURE
1284          ,p_module   => l_log_module);
1285 END IF;
1286 --
1287 l_component_type         := 'AMB_ADR';
1288 l_component_code         := 'COGS';
1289 l_component_type_code    := 'S';
1290 l_component_appl_id      :=  555;
1291 l_amb_context_code       := 'DEFAULT';
1292 x_transaction_coa_id     :=  null;
1293 x_accounting_coa_id      :=  null;
1294 --
1295 
1296  IF NVL(p_source_2,'
1297 ') =  'COGS'
1298  THEN 
1299  --
1300   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1301       trace
1302          (p_msg      => 'END of AcctDerRule_9'
1303          ,p_level    => C_LEVEL_PROCEDURE
1304          ,p_module   => l_log_module);
1305   END IF;
1306   x_value_type_code := 'S';
1307   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
1308   RETURN l_output_value;
1309 
1310  END IF;
1311 --
1312 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1313       trace
1314          (p_msg      => 'END of AcctDerRule_9(invalid)'
1315          ,p_level    => C_LEVEL_PROCEDURE
1316          ,p_module   => l_log_module);
1317 END IF;
1318 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1319 x_value_type_code := null;
1320 l_output_value    := null;
1321 xla_accounting_err_pkg.build_message
1322                  (p_appli_s_name            => 'XLA'
1323                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1324                  ,p_token_1                 => 'COMPONENT_NAME'
1325                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1326                                                             l_component_type
1327                                                           , l_component_code
1328                                                           , l_component_type_code
1332                  ,p_token_2                 => 'OWNER'
1329                                                           , l_component_appl_id
1330                                                           , l_amb_context_code
1331                                                           )
1333                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1334                                                         'XLA_OWNER_TYPE'
1335                                                         ,l_component_type_code
1336                                                         )
1337                  ,p_token_3                 => 'PAD_NAME'
1338                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1339                  ,p_token_4                 => 'PAD_OWNER'
1340                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1341                                                         'XLA_OWNER_TYPE'
1342                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1343                                                         )
1344                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1345                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1346                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1347                  ,p_ae_header_id            => NULL
1348 );
1349 RETURN l_output_value;
1350 EXCEPTION
1351   WHEN xla_exceptions_pkg.application_exception THEN
1352       RAISE;
1353   WHEN OTHERS THEN
1354        xla_exceptions_pkg.raise_message
1355            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_9');
1356 END AcctDerRule_9;
1357 --
1358 
1359 ---------------------------------------
1360 --
1361 -- PRIVATE FUNCTION
1362 --         AcctDerRule_10
1363 --
1364 ---------------------------------------
1365 FUNCTION AcctDerRule_10 (
1366   p_application_id              IN NUMBER
1367 , p_ae_header_id                IN NUMBER
1368 , p_side                        IN VARCHAR2 
1369 --Transaction Account
1370  , p_source_1            IN NUMBER
1371 --Journal Line Type
1372  , p_source_2            IN VARCHAR2
1373 , x_transaction_coa_id         OUT NOCOPY NUMBER
1374 , x_accounting_coa_id          OUT NOCOPY NUMBER
1375 , x_value_type_code            OUT NOCOPY VARCHAR2
1376 )
1377 RETURN NUMBER
1378 IS
1379 l_component_type       VARCHAR2(80)  ;
1380 l_component_code       VARCHAR2(30)  ;
1381 l_component_type_code  VARCHAR2(1)   ;
1382 l_component_appl_id    INTEGER       ;
1383 l_amb_context_code     VARCHAR2(30)  ;
1384 l_log_module           VARCHAR2(240) ;
1385 l_output_value         NUMBER        ;
1386 BEGIN
1387 IF g_log_enabled THEN
1388       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_10';
1389 END IF;
1390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1391       trace
1392          (p_msg      => 'BEGIN of AcctDerRule_10'
1393          ,p_level    => C_LEVEL_PROCEDURE
1394          ,p_module   => l_log_module);
1395 END IF;
1396 --
1397 l_component_type         := 'AMB_ADR';
1398 l_component_code         := 'DCOGS';
1399 l_component_type_code    := 'S';
1400 l_component_appl_id      :=  555;
1401 l_amb_context_code       := 'DEFAULT';
1402 x_transaction_coa_id     :=  null;
1403 x_accounting_coa_id      :=  null;
1404 --
1405 
1406  IF NVL(p_source_2,'
1407 ') =  'DCOGS'
1408  THEN 
1409  --
1410   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1411       trace
1412          (p_msg      => 'END of AcctDerRule_10'
1413          ,p_level    => C_LEVEL_PROCEDURE
1414          ,p_module   => l_log_module);
1415   END IF;
1416   x_value_type_code := 'S';
1417   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
1418   RETURN l_output_value;
1419 
1420  END IF;
1421 --
1422 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1423       trace
1424          (p_msg      => 'END of AcctDerRule_10(invalid)'
1425          ,p_level    => C_LEVEL_PROCEDURE
1426          ,p_module   => l_log_module);
1427 END IF;
1428 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1429 x_value_type_code := null;
1430 l_output_value    := null;
1431 xla_accounting_err_pkg.build_message
1432                  (p_appli_s_name            => 'XLA'
1433                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1434                  ,p_token_1                 => 'COMPONENT_NAME'
1435                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1436                                                             l_component_type
1437                                                           , l_component_code
1438                                                           , l_component_type_code
1439                                                           , l_component_appl_id
1440                                                           , l_amb_context_code
1441                                                           )
1442                  ,p_token_2                 => 'OWNER'
1443                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1444                                                         'XLA_OWNER_TYPE'
1445                                                         ,l_component_type_code
1446                                                         )
1450                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1447                  ,p_token_3                 => 'PAD_NAME'
1448                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1449                  ,p_token_4                 => 'PAD_OWNER'
1451                                                         'XLA_OWNER_TYPE'
1452                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1453                                                         )
1454                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1455                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1456                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1457                  ,p_ae_header_id            => NULL
1458 );
1459 RETURN l_output_value;
1460 EXCEPTION
1461   WHEN xla_exceptions_pkg.application_exception THEN
1462       RAISE;
1463   WHEN OTHERS THEN
1464        xla_exceptions_pkg.raise_message
1465            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_10');
1466 END AcctDerRule_10;
1467 --
1468 
1469 ---------------------------------------
1470 --
1471 -- PRIVATE FUNCTION
1472 --         AcctDerRule_11
1473 --
1474 ---------------------------------------
1475 FUNCTION AcctDerRule_11 (
1476   p_application_id              IN NUMBER
1477 , p_ae_header_id                IN NUMBER
1478 , p_side                        IN VARCHAR2 
1479 --Transaction Account
1480  , p_source_1            IN NUMBER
1481 --Journal Line Type
1482  , p_source_2            IN VARCHAR2
1483 , x_transaction_coa_id         OUT NOCOPY NUMBER
1484 , x_accounting_coa_id          OUT NOCOPY NUMBER
1485 , x_value_type_code            OUT NOCOPY VARCHAR2
1486 )
1487 RETURN NUMBER
1488 IS
1489 l_component_type       VARCHAR2(80)  ;
1490 l_component_code       VARCHAR2(30)  ;
1491 l_component_type_code  VARCHAR2(1)   ;
1492 l_component_appl_id    INTEGER       ;
1493 l_amb_context_code     VARCHAR2(30)  ;
1494 l_log_module           VARCHAR2(240) ;
1495 l_output_value         NUMBER        ;
1496 BEGIN
1497 IF g_log_enabled THEN
1498       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_11';
1499 END IF;
1500 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1501       trace
1502          (p_msg      => 'BEGIN of AcctDerRule_11'
1503          ,p_level    => C_LEVEL_PROCEDURE
1504          ,p_module   => l_log_module);
1505 END IF;
1506 --
1507 l_component_type         := 'AMB_ADR';
1508 l_component_code         := 'ERA';
1509 l_component_type_code    := 'S';
1510 l_component_appl_id      :=  555;
1511 l_amb_context_code       := 'DEFAULT';
1512 x_transaction_coa_id     :=  null;
1513 x_accounting_coa_id      :=  null;
1514 --
1515 
1516  IF NVL(p_source_2,'
1517 ') =  'ERA'
1518  THEN 
1519  --
1520   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1521       trace
1522          (p_msg      => 'END of AcctDerRule_11'
1523          ,p_level    => C_LEVEL_PROCEDURE
1524          ,p_module   => l_log_module);
1525   END IF;
1526   x_value_type_code := 'S';
1527   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
1528   RETURN l_output_value;
1529 
1530  END IF;
1531 --
1532 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1533       trace
1534          (p_msg      => 'END of AcctDerRule_11(invalid)'
1535          ,p_level    => C_LEVEL_PROCEDURE
1536          ,p_module   => l_log_module);
1537 END IF;
1538 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1539 x_value_type_code := null;
1540 l_output_value    := null;
1541 xla_accounting_err_pkg.build_message
1542                  (p_appli_s_name            => 'XLA'
1543                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1544                  ,p_token_1                 => 'COMPONENT_NAME'
1545                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1546                                                             l_component_type
1547                                                           , l_component_code
1548                                                           , l_component_type_code
1549                                                           , l_component_appl_id
1550                                                           , l_amb_context_code
1551                                                           )
1552                  ,p_token_2                 => 'OWNER'
1553                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1554                                                         'XLA_OWNER_TYPE'
1555                                                         ,l_component_type_code
1556                                                         )
1557                  ,p_token_3                 => 'PAD_NAME'
1558                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1559                  ,p_token_4                 => 'PAD_OWNER'
1560                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1561                                                         'XLA_OWNER_TYPE'
1562                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1563                                                         )
1567                  ,p_ae_header_id            => NULL
1564                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1565                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1566                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1568 );
1569 RETURN l_output_value;
1570 EXCEPTION
1571   WHEN xla_exceptions_pkg.application_exception THEN
1572       RAISE;
1573   WHEN OTHERS THEN
1574        xla_exceptions_pkg.raise_message
1575            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_11');
1576 END AcctDerRule_11;
1577 --
1578 
1579 ---------------------------------------
1580 --
1581 -- PRIVATE FUNCTION
1582 --         AcctDerRule_12
1583 --
1584 ---------------------------------------
1585 FUNCTION AcctDerRule_12 (
1586   p_application_id              IN NUMBER
1587 , p_ae_header_id                IN NUMBER
1588 , p_side                        IN VARCHAR2 
1589 --Transaction Account
1590  , p_source_1            IN NUMBER
1591 --Journal Line Type
1592  , p_source_2            IN VARCHAR2
1593 , x_transaction_coa_id         OUT NOCOPY NUMBER
1594 , x_accounting_coa_id          OUT NOCOPY NUMBER
1595 , x_value_type_code            OUT NOCOPY VARCHAR2
1596 )
1597 RETURN NUMBER
1598 IS
1599 l_component_type       VARCHAR2(80)  ;
1600 l_component_code       VARCHAR2(30)  ;
1601 l_component_type_code  VARCHAR2(1)   ;
1602 l_component_appl_id    INTEGER       ;
1603 l_amb_context_code     VARCHAR2(30)  ;
1604 l_log_module           VARCHAR2(240) ;
1605 l_output_value         NUMBER        ;
1606 BEGIN
1607 IF g_log_enabled THEN
1608       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_12';
1609 END IF;
1610 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1611       trace
1612          (p_msg      => 'BEGIN of AcctDerRule_12'
1613          ,p_level    => C_LEVEL_PROCEDURE
1614          ,p_module   => l_log_module);
1615 END IF;
1616 --
1617 l_component_type         := 'AMB_ADR';
1618 l_component_code         := 'EXP';
1619 l_component_type_code    := 'S';
1620 l_component_appl_id      :=  555;
1621 l_amb_context_code       := 'DEFAULT';
1622 x_transaction_coa_id     :=  null;
1623 x_accounting_coa_id      :=  null;
1624 --
1625 
1626  IF NVL(p_source_2,'
1627 ') =  'EXP'
1628  THEN 
1629  --
1630   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1631       trace
1632          (p_msg      => 'END of AcctDerRule_12'
1633          ,p_level    => C_LEVEL_PROCEDURE
1634          ,p_module   => l_log_module);
1635   END IF;
1636   x_value_type_code := 'S';
1637   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
1638   RETURN l_output_value;
1639 
1640  END IF;
1641 --
1642 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1643       trace
1644          (p_msg      => 'END of AcctDerRule_12(invalid)'
1645          ,p_level    => C_LEVEL_PROCEDURE
1646          ,p_module   => l_log_module);
1647 END IF;
1648 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1649 x_value_type_code := null;
1650 l_output_value    := null;
1651 xla_accounting_err_pkg.build_message
1652                  (p_appli_s_name            => 'XLA'
1653                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1654                  ,p_token_1                 => 'COMPONENT_NAME'
1655                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1656                                                             l_component_type
1657                                                           , l_component_code
1658                                                           , l_component_type_code
1659                                                           , l_component_appl_id
1660                                                           , l_amb_context_code
1661                                                           )
1662                  ,p_token_2                 => 'OWNER'
1663                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1664                                                         'XLA_OWNER_TYPE'
1665                                                         ,l_component_type_code
1666                                                         )
1667                  ,p_token_3                 => 'PAD_NAME'
1668                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1669                  ,p_token_4                 => 'PAD_OWNER'
1670                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1671                                                         'XLA_OWNER_TYPE'
1672                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1673                                                         )
1674                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1675                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1676                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1677                  ,p_ae_header_id            => NULL
1678 );
1679 RETURN l_output_value;
1680 EXCEPTION
1681   WHEN xla_exceptions_pkg.application_exception THEN
1682       RAISE;
1683   WHEN OTHERS THEN
1684        xla_exceptions_pkg.raise_message
1688 
1685            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_12');
1686 END AcctDerRule_12;
1687 --
1689 ---------------------------------------
1690 --
1691 -- PRIVATE FUNCTION
1692 --         AcctDerRule_13
1693 --
1694 ---------------------------------------
1695 FUNCTION AcctDerRule_13 (
1696   p_application_id              IN NUMBER
1697 , p_ae_header_id                IN NUMBER
1698 , p_side                        IN VARCHAR2 
1699 --Transaction Account
1700  , p_source_1            IN NUMBER
1701 --Journal Line Type
1702  , p_source_2            IN VARCHAR2
1703 , x_transaction_coa_id         OUT NOCOPY NUMBER
1704 , x_accounting_coa_id          OUT NOCOPY NUMBER
1705 , x_value_type_code            OUT NOCOPY VARCHAR2
1706 )
1707 RETURN NUMBER
1708 IS
1709 l_component_type       VARCHAR2(80)  ;
1710 l_component_code       VARCHAR2(30)  ;
1711 l_component_type_code  VARCHAR2(1)   ;
1712 l_component_appl_id    INTEGER       ;
1713 l_amb_context_code     VARCHAR2(30)  ;
1714 l_log_module           VARCHAR2(240) ;
1715 l_output_value         NUMBER        ;
1716 BEGIN
1717 IF g_log_enabled THEN
1718       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_13';
1719 END IF;
1720 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1721       trace
1722          (p_msg      => 'BEGIN of AcctDerRule_13'
1723          ,p_level    => C_LEVEL_PROCEDURE
1724          ,p_module   => l_log_module);
1725 END IF;
1726 --
1727 l_component_type         := 'AMB_ADR';
1728 l_component_code         := 'FRT';
1729 l_component_type_code    := 'S';
1730 l_component_appl_id      :=  555;
1731 l_amb_context_code       := 'DEFAULT';
1732 x_transaction_coa_id     :=  null;
1733 x_accounting_coa_id      :=  null;
1734 --
1735 
1736  IF NVL(p_source_2,'
1737 ') =  'FRT'
1738  THEN 
1739  --
1740   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1741       trace
1742          (p_msg      => 'END of AcctDerRule_13'
1743          ,p_level    => C_LEVEL_PROCEDURE
1744          ,p_module   => l_log_module);
1745   END IF;
1746   x_value_type_code := 'S';
1747   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
1748   RETURN l_output_value;
1749 
1750  END IF;
1751 --
1752 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1753       trace
1754          (p_msg      => 'END of AcctDerRule_13(invalid)'
1755          ,p_level    => C_LEVEL_PROCEDURE
1756          ,p_module   => l_log_module);
1757 END IF;
1758 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1759 x_value_type_code := null;
1760 l_output_value    := null;
1761 xla_accounting_err_pkg.build_message
1762                  (p_appli_s_name            => 'XLA'
1763                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1764                  ,p_token_1                 => 'COMPONENT_NAME'
1765                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1766                                                             l_component_type
1767                                                           , l_component_code
1768                                                           , l_component_type_code
1769                                                           , l_component_appl_id
1770                                                           , l_amb_context_code
1771                                                           )
1772                  ,p_token_2                 => 'OWNER'
1773                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1774                                                         'XLA_OWNER_TYPE'
1775                                                         ,l_component_type_code
1776                                                         )
1777                  ,p_token_3                 => 'PAD_NAME'
1778                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1779                  ,p_token_4                 => 'PAD_OWNER'
1780                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1781                                                         'XLA_OWNER_TYPE'
1782                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1783                                                         )
1784                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1785                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1786                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1787                  ,p_ae_header_id            => NULL
1788 );
1789 RETURN l_output_value;
1790 EXCEPTION
1791   WHEN xla_exceptions_pkg.application_exception THEN
1792       RAISE;
1793   WHEN OTHERS THEN
1794        xla_exceptions_pkg.raise_message
1795            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_13');
1796 END AcctDerRule_13;
1797 --
1798 
1799 ---------------------------------------
1800 --
1801 -- PRIVATE FUNCTION
1802 --         AcctDerRule_14
1803 --
1804 ---------------------------------------
1805 FUNCTION AcctDerRule_14 (
1806   p_application_id              IN NUMBER
1807 , p_ae_header_id                IN NUMBER
1808 , p_side                        IN VARCHAR2 
1809 --Transaction Account
1813 , x_transaction_coa_id         OUT NOCOPY NUMBER
1810  , p_source_1            IN NUMBER
1811 --Journal Line Type
1812  , p_source_2            IN VARCHAR2
1814 , x_accounting_coa_id          OUT NOCOPY NUMBER
1815 , x_value_type_code            OUT NOCOPY VARCHAR2
1816 )
1817 RETURN NUMBER
1818 IS
1819 l_component_type       VARCHAR2(80)  ;
1820 l_component_code       VARCHAR2(30)  ;
1821 l_component_type_code  VARCHAR2(1)   ;
1822 l_component_appl_id    INTEGER       ;
1823 l_amb_context_code     VARCHAR2(30)  ;
1824 l_log_module           VARCHAR2(240) ;
1825 l_output_value         NUMBER        ;
1826 BEGIN
1827 IF g_log_enabled THEN
1828       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_14';
1829 END IF;
1830 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1831       trace
1832          (p_msg      => 'BEGIN of AcctDerRule_14'
1833          ,p_level    => C_LEVEL_PROCEDURE
1834          ,p_module   => l_log_module);
1835 END IF;
1836 --
1837 l_component_type         := 'AMB_ADR';
1838 l_component_code         := 'ICACC';
1839 l_component_type_code    := 'S';
1840 l_component_appl_id      :=  555;
1841 l_amb_context_code       := 'DEFAULT';
1842 x_transaction_coa_id     :=  null;
1843 x_accounting_coa_id      :=  null;
1844 --
1845 
1846  IF NVL(p_source_2,'
1847 ') =  'ICACC'
1848  THEN 
1849  --
1850   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1851       trace
1852          (p_msg      => 'END of AcctDerRule_14'
1853          ,p_level    => C_LEVEL_PROCEDURE
1854          ,p_module   => l_log_module);
1855   END IF;
1856   x_value_type_code := 'S';
1857   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
1858   RETURN l_output_value;
1859 
1860  END IF;
1861 --
1862 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1863       trace
1864          (p_msg      => 'END of AcctDerRule_14(invalid)'
1865          ,p_level    => C_LEVEL_PROCEDURE
1866          ,p_module   => l_log_module);
1867 END IF;
1868 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1869 x_value_type_code := null;
1870 l_output_value    := null;
1871 xla_accounting_err_pkg.build_message
1872                  (p_appli_s_name            => 'XLA'
1873                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1874                  ,p_token_1                 => 'COMPONENT_NAME'
1875                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1876                                                             l_component_type
1877                                                           , l_component_code
1878                                                           , l_component_type_code
1879                                                           , l_component_appl_id
1880                                                           , l_amb_context_code
1881                                                           )
1882                  ,p_token_2                 => 'OWNER'
1883                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1884                                                         'XLA_OWNER_TYPE'
1885                                                         ,l_component_type_code
1886                                                         )
1887                  ,p_token_3                 => 'PAD_NAME'
1888                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1889                  ,p_token_4                 => 'PAD_OWNER'
1890                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1891                                                         'XLA_OWNER_TYPE'
1892                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1893                                                         )
1894                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1895                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1896                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1897                  ,p_ae_header_id            => NULL
1898 );
1899 RETURN l_output_value;
1900 EXCEPTION
1901   WHEN xla_exceptions_pkg.application_exception THEN
1902       RAISE;
1903   WHEN OTHERS THEN
1904        xla_exceptions_pkg.raise_message
1905            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_14');
1906 END AcctDerRule_14;
1907 --
1908 
1909 ---------------------------------------
1910 --
1911 -- PRIVATE FUNCTION
1912 --         AcctDerRule_15
1913 --
1914 ---------------------------------------
1915 FUNCTION AcctDerRule_15 (
1916   p_application_id              IN NUMBER
1917 , p_ae_header_id                IN NUMBER
1918 , p_side                        IN VARCHAR2 
1919 --Transaction Account
1920  , p_source_1            IN NUMBER
1921 --Journal Line Type
1922  , p_source_2            IN VARCHAR2
1923 , x_transaction_coa_id         OUT NOCOPY NUMBER
1924 , x_accounting_coa_id          OUT NOCOPY NUMBER
1925 , x_value_type_code            OUT NOCOPY VARCHAR2
1926 )
1927 RETURN NUMBER
1928 IS
1929 l_component_type       VARCHAR2(80)  ;
1930 l_component_code       VARCHAR2(30)  ;
1931 l_component_type_code  VARCHAR2(1)   ;
1932 l_component_appl_id    INTEGER       ;
1933 l_amb_context_code     VARCHAR2(30)  ;
1934 l_log_module           VARCHAR2(240) ;
1938       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_15';
1935 l_output_value         NUMBER        ;
1936 BEGIN
1937 IF g_log_enabled THEN
1939 END IF;
1940 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1941       trace
1942          (p_msg      => 'BEGIN of AcctDerRule_15'
1943          ,p_level    => C_LEVEL_PROCEDURE
1944          ,p_module   => l_log_module);
1945 END IF;
1946 --
1947 l_component_type         := 'AMB_ADR';
1948 l_component_code         := 'ICCOGS';
1949 l_component_type_code    := 'S';
1950 l_component_appl_id      :=  555;
1951 l_amb_context_code       := 'DEFAULT';
1952 x_transaction_coa_id     :=  null;
1953 x_accounting_coa_id      :=  null;
1954 --
1955 
1956  IF NVL(p_source_2,'
1957 ') =  'ICCOGS'
1958  THEN 
1959  --
1960   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1961       trace
1962          (p_msg      => 'END of AcctDerRule_15'
1963          ,p_level    => C_LEVEL_PROCEDURE
1964          ,p_module   => l_log_module);
1965   END IF;
1966   x_value_type_code := 'S';
1967   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
1968   RETURN l_output_value;
1969 
1970  END IF;
1971 --
1972 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1973       trace
1974          (p_msg      => 'END of AcctDerRule_15(invalid)'
1975          ,p_level    => C_LEVEL_PROCEDURE
1976          ,p_module   => l_log_module);
1977 END IF;
1978 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1979 x_value_type_code := null;
1980 l_output_value    := null;
1981 xla_accounting_err_pkg.build_message
1982                  (p_appli_s_name            => 'XLA'
1983                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1984                  ,p_token_1                 => 'COMPONENT_NAME'
1985                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1986                                                             l_component_type
1987                                                           , l_component_code
1988                                                           , l_component_type_code
1989                                                           , l_component_appl_id
1990                                                           , l_amb_context_code
1991                                                           )
1992                  ,p_token_2                 => 'OWNER'
1993                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1994                                                         'XLA_OWNER_TYPE'
1995                                                         ,l_component_type_code
1996                                                         )
1997                  ,p_token_3                 => 'PAD_NAME'
1998                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1999                  ,p_token_4                 => 'PAD_OWNER'
2000                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2001                                                         'XLA_OWNER_TYPE'
2002                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2003                                                         )
2004                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2005                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2006                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2007                  ,p_ae_header_id            => NULL
2008 );
2009 RETURN l_output_value;
2010 EXCEPTION
2011   WHEN xla_exceptions_pkg.application_exception THEN
2012       RAISE;
2013   WHEN OTHERS THEN
2014        xla_exceptions_pkg.raise_message
2015            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_15');
2016 END AcctDerRule_15;
2017 --
2018 
2019 ---------------------------------------
2020 --
2021 -- PRIVATE FUNCTION
2022 --         AcctDerRule_16
2023 --
2024 ---------------------------------------
2025 FUNCTION AcctDerRule_16 (
2026   p_application_id              IN NUMBER
2027 , p_ae_header_id                IN NUMBER
2028 , p_side                        IN VARCHAR2 
2029 --Transaction Account
2030  , p_source_1            IN NUMBER
2031 --Journal Line Type
2032  , p_source_2            IN VARCHAR2
2033 , x_transaction_coa_id         OUT NOCOPY NUMBER
2034 , x_accounting_coa_id          OUT NOCOPY NUMBER
2035 , x_value_type_code            OUT NOCOPY VARCHAR2
2036 )
2037 RETURN NUMBER
2038 IS
2039 l_component_type       VARCHAR2(80)  ;
2040 l_component_code       VARCHAR2(30)  ;
2041 l_component_type_code  VARCHAR2(1)   ;
2042 l_component_appl_id    INTEGER       ;
2043 l_amb_context_code     VARCHAR2(30)  ;
2044 l_log_module           VARCHAR2(240) ;
2045 l_output_value         NUMBER        ;
2046 BEGIN
2047 IF g_log_enabled THEN
2048       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_16';
2049 END IF;
2050 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2051       trace
2052          (p_msg      => 'BEGIN of AcctDerRule_16'
2053          ,p_level    => C_LEVEL_PROCEDURE
2054          ,p_module   => l_log_module);
2055 END IF;
2056 --
2057 l_component_type         := 'AMB_ADR';
2058 l_component_code         := 'ICEXP';
2059 l_component_type_code    := 'S';
2060 l_component_appl_id      :=  555;
2061 l_amb_context_code       := 'DEFAULT';
2065 
2062 x_transaction_coa_id     :=  null;
2063 x_accounting_coa_id      :=  null;
2064 --
2066  IF NVL(p_source_2,'
2067 ') =  'ICEXP'
2068  THEN 
2069  --
2070   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2071       trace
2072          (p_msg      => 'END of AcctDerRule_16'
2073          ,p_level    => C_LEVEL_PROCEDURE
2074          ,p_module   => l_log_module);
2075   END IF;
2076   x_value_type_code := 'S';
2077   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
2078   RETURN l_output_value;
2079 
2080  END IF;
2081 --
2082 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2083       trace
2084          (p_msg      => 'END of AcctDerRule_16(invalid)'
2085          ,p_level    => C_LEVEL_PROCEDURE
2086          ,p_module   => l_log_module);
2087 END IF;
2088 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2089 x_value_type_code := null;
2090 l_output_value    := null;
2091 xla_accounting_err_pkg.build_message
2092                  (p_appli_s_name            => 'XLA'
2093                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2094                  ,p_token_1                 => 'COMPONENT_NAME'
2095                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2096                                                             l_component_type
2097                                                           , l_component_code
2098                                                           , l_component_type_code
2099                                                           , l_component_appl_id
2100                                                           , l_amb_context_code
2101                                                           )
2102                  ,p_token_2                 => 'OWNER'
2103                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2104                                                         'XLA_OWNER_TYPE'
2105                                                         ,l_component_type_code
2106                                                         )
2107                  ,p_token_3                 => 'PAD_NAME'
2108                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2109                  ,p_token_4                 => 'PAD_OWNER'
2110                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2111                                                         'XLA_OWNER_TYPE'
2112                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2113                                                         )
2114                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2115                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2116                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2117                  ,p_ae_header_id            => NULL
2118 );
2119 RETURN l_output_value;
2120 EXCEPTION
2121   WHEN xla_exceptions_pkg.application_exception THEN
2122       RAISE;
2123   WHEN OTHERS THEN
2124        xla_exceptions_pkg.raise_message
2125            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_16');
2126 END AcctDerRule_16;
2127 --
2128 
2129 ---------------------------------------
2130 --
2131 -- PRIVATE FUNCTION
2132 --         AcctDerRule_17
2133 --
2134 ---------------------------------------
2135 FUNCTION AcctDerRule_17 (
2136   p_application_id              IN NUMBER
2137 , p_ae_header_id                IN NUMBER
2138 , p_side                        IN VARCHAR2 
2139 --Transaction Account
2140  , p_source_1            IN NUMBER
2141 --Journal Line Type
2142  , p_source_2            IN VARCHAR2
2143 , x_transaction_coa_id         OUT NOCOPY NUMBER
2144 , x_accounting_coa_id          OUT NOCOPY NUMBER
2145 , x_value_type_code            OUT NOCOPY VARCHAR2
2146 )
2147 RETURN NUMBER
2148 IS
2149 l_component_type       VARCHAR2(80)  ;
2150 l_component_code       VARCHAR2(30)  ;
2151 l_component_type_code  VARCHAR2(1)   ;
2152 l_component_appl_id    INTEGER       ;
2153 l_amb_context_code     VARCHAR2(30)  ;
2154 l_log_module           VARCHAR2(240) ;
2155 l_output_value         NUMBER        ;
2156 BEGIN
2157 IF g_log_enabled THEN
2158       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_17';
2159 END IF;
2160 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2161       trace
2162          (p_msg      => 'BEGIN of AcctDerRule_17'
2163          ,p_level    => C_LEVEL_PROCEDURE
2164          ,p_module   => l_log_module);
2165 END IF;
2166 --
2167 l_component_type         := 'AMB_ADR';
2168 l_component_code         := 'INV';
2169 l_component_type_code    := 'S';
2170 l_component_appl_id      :=  555;
2171 l_amb_context_code       := 'DEFAULT';
2172 x_transaction_coa_id     :=  null;
2173 x_accounting_coa_id      :=  null;
2174 --
2175 
2176  IF NVL(p_source_2,'
2177 ') =  'INV'
2178  THEN 
2179  --
2180   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2181       trace
2182          (p_msg      => 'END of AcctDerRule_17'
2183          ,p_level    => C_LEVEL_PROCEDURE
2184          ,p_module   => l_log_module);
2185   END IF;
2186   x_value_type_code := 'S';
2187   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
2188   RETURN l_output_value;
2189 
2193       trace
2190  END IF;
2191 --
2192 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2194          (p_msg      => 'END of AcctDerRule_17(invalid)'
2195          ,p_level    => C_LEVEL_PROCEDURE
2196          ,p_module   => l_log_module);
2197 END IF;
2198 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2199 x_value_type_code := null;
2200 l_output_value    := null;
2201 xla_accounting_err_pkg.build_message
2202                  (p_appli_s_name            => 'XLA'
2203                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2204                  ,p_token_1                 => 'COMPONENT_NAME'
2205                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2206                                                             l_component_type
2207                                                           , l_component_code
2208                                                           , l_component_type_code
2209                                                           , l_component_appl_id
2210                                                           , l_amb_context_code
2211                                                           )
2212                  ,p_token_2                 => 'OWNER'
2213                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2214                                                         'XLA_OWNER_TYPE'
2215                                                         ,l_component_type_code
2216                                                         )
2217                  ,p_token_3                 => 'PAD_NAME'
2218                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2219                  ,p_token_4                 => 'PAD_OWNER'
2220                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2221                                                         'XLA_OWNER_TYPE'
2222                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2223                                                         )
2224                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2225                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2226                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2227                  ,p_ae_header_id            => NULL
2228 );
2229 RETURN l_output_value;
2230 EXCEPTION
2231   WHEN xla_exceptions_pkg.application_exception THEN
2232       RAISE;
2233   WHEN OTHERS THEN
2234        xla_exceptions_pkg.raise_message
2235            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_17');
2236 END AcctDerRule_17;
2237 --
2238 
2239 ---------------------------------------
2240 --
2241 -- PRIVATE FUNCTION
2242 --         AcctDerRule_18
2243 --
2244 ---------------------------------------
2245 FUNCTION AcctDerRule_18 (
2246   p_application_id              IN NUMBER
2247 , p_ae_header_id                IN NUMBER
2248 , p_side                        IN VARCHAR2 
2249 --Transaction Account
2250  , p_source_1            IN NUMBER
2251 --Journal Line Type
2252  , p_source_2            IN VARCHAR2
2253 --Entered Amount
2254  , p_source_3            IN NUMBER
2255 --Line Number
2256  , p_source_4            IN NUMBER
2257 , x_transaction_coa_id         OUT NOCOPY NUMBER
2258 , x_accounting_coa_id          OUT NOCOPY NUMBER
2259 , x_value_type_code            OUT NOCOPY VARCHAR2
2260 )
2261 RETURN NUMBER
2262 IS
2263 l_component_type       VARCHAR2(80)  ;
2264 l_component_code       VARCHAR2(30)  ;
2265 l_component_type_code  VARCHAR2(1)   ;
2266 l_component_appl_id    INTEGER       ;
2267 l_amb_context_code     VARCHAR2(30)  ;
2268 l_log_module           VARCHAR2(240) ;
2269 l_output_value         NUMBER        ;
2270 BEGIN
2271 IF g_log_enabled THEN
2272       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_18';
2273 END IF;
2274 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2275       trace
2276          (p_msg      => 'BEGIN of AcctDerRule_18'
2277          ,p_level    => C_LEVEL_PROCEDURE
2278          ,p_module   => l_log_module);
2279 END IF;
2280 --
2281 l_component_type         := 'AMB_ADR';
2282 l_component_code         := 'INV_SUB_FROM';
2283 l_component_type_code    := 'S';
2284 l_component_appl_id      :=  555;
2285 l_amb_context_code       := 'DEFAULT';
2286 x_transaction_coa_id     :=  null;
2287 x_accounting_coa_id      :=  null;
2288 --
2289 
2290  IF (NVL(p_source_2,'
2291 ') =  'INV' AND 
2292 p_source_3 <  0) OR 
2293 (NVL(p_source_2,'
2294 ') =  'INV' AND 
2295 NVL(p_source_3,9E125) =  0 AND 
2296 NVL(p_source_4,9E125) =  1)
2297  THEN 
2298  --
2299   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2300       trace
2301          (p_msg      => 'END of AcctDerRule_18'
2302          ,p_level    => C_LEVEL_PROCEDURE
2303          ,p_module   => l_log_module);
2304   END IF;
2305   x_value_type_code := 'S';
2306   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
2307   RETURN l_output_value;
2308 
2309  END IF;
2310 --
2311 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2312       trace
2313          (p_msg      => 'END of AcctDerRule_18(invalid)'
2314          ,p_level    => C_LEVEL_PROCEDURE
2315          ,p_module   => l_log_module);
2316 END IF;
2320 xla_accounting_err_pkg.build_message
2317 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2318 x_value_type_code := null;
2319 l_output_value    := null;
2321                  (p_appli_s_name            => 'XLA'
2322                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2323                  ,p_token_1                 => 'COMPONENT_NAME'
2324                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2325                                                             l_component_type
2326                                                           , l_component_code
2327                                                           , l_component_type_code
2328                                                           , l_component_appl_id
2329                                                           , l_amb_context_code
2330                                                           )
2331                  ,p_token_2                 => 'OWNER'
2332                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2333                                                         'XLA_OWNER_TYPE'
2334                                                         ,l_component_type_code
2335                                                         )
2336                  ,p_token_3                 => 'PAD_NAME'
2337                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2338                  ,p_token_4                 => 'PAD_OWNER'
2339                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2340                                                         'XLA_OWNER_TYPE'
2341                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2342                                                         )
2343                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2344                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2345                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2346                  ,p_ae_header_id            => NULL
2347 );
2348 RETURN l_output_value;
2349 EXCEPTION
2350   WHEN xla_exceptions_pkg.application_exception THEN
2351       RAISE;
2352   WHEN OTHERS THEN
2353        xla_exceptions_pkg.raise_message
2354            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_18');
2355 END AcctDerRule_18;
2356 --
2357 
2358 ---------------------------------------
2359 --
2360 -- PRIVATE FUNCTION
2361 --         AcctDerRule_19
2362 --
2363 ---------------------------------------
2364 FUNCTION AcctDerRule_19 (
2365   p_application_id              IN NUMBER
2366 , p_ae_header_id                IN NUMBER
2367 , p_side                        IN VARCHAR2 
2368 --Transaction Account
2369  , p_source_1            IN NUMBER
2370 --Journal Line Type
2371  , p_source_2            IN VARCHAR2
2372 --Entered Amount
2373  , p_source_3            IN NUMBER
2374 --Line Number
2375  , p_source_4            IN NUMBER
2376 , x_transaction_coa_id         OUT NOCOPY NUMBER
2377 , x_accounting_coa_id          OUT NOCOPY NUMBER
2378 , x_value_type_code            OUT NOCOPY VARCHAR2
2379 )
2380 RETURN NUMBER
2381 IS
2382 l_component_type       VARCHAR2(80)  ;
2383 l_component_code       VARCHAR2(30)  ;
2384 l_component_type_code  VARCHAR2(1)   ;
2385 l_component_appl_id    INTEGER       ;
2386 l_amb_context_code     VARCHAR2(30)  ;
2387 l_log_module           VARCHAR2(240) ;
2388 l_output_value         NUMBER        ;
2389 BEGIN
2390 IF g_log_enabled THEN
2391       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_19';
2392 END IF;
2393 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2394       trace
2395          (p_msg      => 'BEGIN of AcctDerRule_19'
2396          ,p_level    => C_LEVEL_PROCEDURE
2397          ,p_module   => l_log_module);
2398 END IF;
2399 --
2400 l_component_type         := 'AMB_ADR';
2401 l_component_code         := 'INV_SUB_TO';
2402 l_component_type_code    := 'S';
2403 l_component_appl_id      :=  555;
2404 l_amb_context_code       := 'DEFAULT';
2405 x_transaction_coa_id     :=  null;
2406 x_accounting_coa_id      :=  null;
2407 --
2408 
2409  IF (NVL(p_source_2,'
2410 ') =  'INV' AND 
2411 p_source_3 >  0) OR 
2412 (NVL(p_source_2,'
2413 ') =  'INV' AND 
2414 NVL(p_source_3,9E125) =  0 AND 
2415 NVL(p_source_4,9E125) =  2)
2416  THEN 
2417  --
2418   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2419       trace
2420          (p_msg      => 'END of AcctDerRule_19'
2421          ,p_level    => C_LEVEL_PROCEDURE
2422          ,p_module   => l_log_module);
2423   END IF;
2424   x_value_type_code := 'S';
2425   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
2426   RETURN l_output_value;
2427 
2428  END IF;
2429 --
2430 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2431       trace
2432          (p_msg      => 'END of AcctDerRule_19(invalid)'
2433          ,p_level    => C_LEVEL_PROCEDURE
2434          ,p_module   => l_log_module);
2435 END IF;
2436 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2437 x_value_type_code := null;
2438 l_output_value    := null;
2439 xla_accounting_err_pkg.build_message
2443                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2440                  (p_appli_s_name            => 'XLA'
2441                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2442                  ,p_token_1                 => 'COMPONENT_NAME'
2444                                                             l_component_type
2445                                                           , l_component_code
2446                                                           , l_component_type_code
2447                                                           , l_component_appl_id
2448                                                           , l_amb_context_code
2449                                                           )
2450                  ,p_token_2                 => 'OWNER'
2451                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2452                                                         'XLA_OWNER_TYPE'
2453                                                         ,l_component_type_code
2454                                                         )
2455                  ,p_token_3                 => 'PAD_NAME'
2456                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2457                  ,p_token_4                 => 'PAD_OWNER'
2458                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2459                                                         'XLA_OWNER_TYPE'
2460                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2461                                                         )
2462                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2463                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2464                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2465                  ,p_ae_header_id            => NULL
2466 );
2467 RETURN l_output_value;
2468 EXCEPTION
2469   WHEN xla_exceptions_pkg.application_exception THEN
2470       RAISE;
2471   WHEN OTHERS THEN
2472        xla_exceptions_pkg.raise_message
2473            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_19');
2474 END AcctDerRule_19;
2475 --
2476 
2477 ---------------------------------------
2478 --
2479 -- PRIVATE FUNCTION
2480 --         AcctDerRule_20
2481 --
2482 ---------------------------------------
2483 FUNCTION AcctDerRule_20 (
2484   p_application_id              IN NUMBER
2485 , p_ae_header_id                IN NUMBER
2486 , p_side                        IN VARCHAR2 
2487 --Transaction Account
2488  , p_source_1            IN NUMBER
2489 --Journal Line Type
2490  , p_source_2            IN VARCHAR2
2491 , x_transaction_coa_id         OUT NOCOPY NUMBER
2492 , x_accounting_coa_id          OUT NOCOPY NUMBER
2493 , x_value_type_code            OUT NOCOPY VARCHAR2
2494 )
2495 RETURN NUMBER
2496 IS
2497 l_component_type       VARCHAR2(80)  ;
2498 l_component_code       VARCHAR2(30)  ;
2499 l_component_type_code  VARCHAR2(1)   ;
2500 l_component_appl_id    INTEGER       ;
2501 l_amb_context_code     VARCHAR2(30)  ;
2502 l_log_module           VARCHAR2(240) ;
2503 l_output_value         NUMBER        ;
2504 BEGIN
2505 IF g_log_enabled THEN
2506       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_20';
2507 END IF;
2508 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2509       trace
2510          (p_msg      => 'BEGIN of AcctDerRule_20'
2511          ,p_level    => C_LEVEL_PROCEDURE
2512          ,p_module   => l_log_module);
2513 END IF;
2514 --
2515 l_component_type         := 'AMB_ADR';
2516 l_component_code         := 'IOP';
2517 l_component_type_code    := 'S';
2518 l_component_appl_id      :=  555;
2519 l_amb_context_code       := 'DEFAULT';
2520 x_transaction_coa_id     :=  null;
2521 x_accounting_coa_id      :=  null;
2522 --
2523 
2524  IF NVL(p_source_2,'
2525 ') =  'IOP'
2526  THEN 
2527  --
2528   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2529       trace
2530          (p_msg      => 'END of AcctDerRule_20'
2531          ,p_level    => C_LEVEL_PROCEDURE
2532          ,p_module   => l_log_module);
2533   END IF;
2534   x_value_type_code := 'S';
2535   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
2536   RETURN l_output_value;
2537 
2538  END IF;
2539 --
2540 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2541       trace
2542          (p_msg      => 'END of AcctDerRule_20(invalid)'
2543          ,p_level    => C_LEVEL_PROCEDURE
2544          ,p_module   => l_log_module);
2545 END IF;
2546 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2547 x_value_type_code := null;
2548 l_output_value    := null;
2549 xla_accounting_err_pkg.build_message
2550                  (p_appli_s_name            => 'XLA'
2551                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2552                  ,p_token_1                 => 'COMPONENT_NAME'
2553                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2554                                                             l_component_type
2555                                                           , l_component_code
2556                                                           , l_component_type_code
2557                                                           , l_component_appl_id
2558                                                           , l_amb_context_code
2562                                                         'XLA_OWNER_TYPE'
2559                                                           )
2560                  ,p_token_2                 => 'OWNER'
2561                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2563                                                         ,l_component_type_code
2564                                                         )
2565                  ,p_token_3                 => 'PAD_NAME'
2566                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2567                  ,p_token_4                 => 'PAD_OWNER'
2568                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2569                                                         'XLA_OWNER_TYPE'
2570                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2571                                                         )
2572                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2573                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2574                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2575                  ,p_ae_header_id            => NULL
2576 );
2577 RETURN l_output_value;
2578 EXCEPTION
2579   WHEN xla_exceptions_pkg.application_exception THEN
2580       RAISE;
2581   WHEN OTHERS THEN
2582        xla_exceptions_pkg.raise_message
2583            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_20');
2584 END AcctDerRule_20;
2585 --
2586 
2587 ---------------------------------------
2588 --
2589 -- PRIVATE FUNCTION
2590 --         AcctDerRule_21
2591 --
2592 ---------------------------------------
2593 FUNCTION AcctDerRule_21 (
2594   p_application_id              IN NUMBER
2595 , p_ae_header_id                IN NUMBER
2596 , p_side                        IN VARCHAR2 
2597 --Transaction Account
2598  , p_source_1            IN NUMBER
2599 --Journal Line Type
2600  , p_source_2            IN VARCHAR2
2601 , x_transaction_coa_id         OUT NOCOPY NUMBER
2602 , x_accounting_coa_id          OUT NOCOPY NUMBER
2603 , x_value_type_code            OUT NOCOPY VARCHAR2
2604 )
2605 RETURN NUMBER
2606 IS
2607 l_component_type       VARCHAR2(80)  ;
2608 l_component_code       VARCHAR2(30)  ;
2609 l_component_type_code  VARCHAR2(1)   ;
2610 l_component_appl_id    INTEGER       ;
2611 l_amb_context_code     VARCHAR2(30)  ;
2612 l_log_module           VARCHAR2(240) ;
2613 l_output_value         NUMBER        ;
2614 BEGIN
2615 IF g_log_enabled THEN
2616       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_21';
2617 END IF;
2618 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2619       trace
2620          (p_msg      => 'BEGIN of AcctDerRule_21'
2621          ,p_level    => C_LEVEL_PROCEDURE
2622          ,p_module   => l_log_module);
2623 END IF;
2624 --
2625 l_component_type         := 'AMB_ADR';
2626 l_component_code         := 'IOPR';
2627 l_component_type_code    := 'S';
2628 l_component_appl_id      :=  555;
2629 l_amb_context_code       := 'DEFAULT';
2630 x_transaction_coa_id     :=  null;
2631 x_accounting_coa_id      :=  null;
2632 --
2633 
2634  IF NVL(p_source_2,'
2635 ') =  'IOPR'
2636  THEN 
2637  --
2638   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2639       trace
2640          (p_msg      => 'END of AcctDerRule_21'
2641          ,p_level    => C_LEVEL_PROCEDURE
2642          ,p_module   => l_log_module);
2643   END IF;
2644   x_value_type_code := 'S';
2645   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
2646   RETURN l_output_value;
2647 
2648  END IF;
2649 --
2650 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2651       trace
2652          (p_msg      => 'END of AcctDerRule_21(invalid)'
2653          ,p_level    => C_LEVEL_PROCEDURE
2654          ,p_module   => l_log_module);
2655 END IF;
2656 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2657 x_value_type_code := null;
2658 l_output_value    := null;
2659 xla_accounting_err_pkg.build_message
2660                  (p_appli_s_name            => 'XLA'
2661                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2662                  ,p_token_1                 => 'COMPONENT_NAME'
2663                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2664                                                             l_component_type
2665                                                           , l_component_code
2666                                                           , l_component_type_code
2667                                                           , l_component_appl_id
2668                                                           , l_amb_context_code
2669                                                           )
2670                  ,p_token_2                 => 'OWNER'
2671                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2672                                                         'XLA_OWNER_TYPE'
2673                                                         ,l_component_type_code
2674                                                         )
2675                  ,p_token_3                 => 'PAD_NAME'
2676                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2680                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2677                  ,p_token_4                 => 'PAD_OWNER'
2678                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2679                                                         'XLA_OWNER_TYPE'
2681                                                         )
2682                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2683                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2684                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2685                  ,p_ae_header_id            => NULL
2686 );
2687 RETURN l_output_value;
2688 EXCEPTION
2689   WHEN xla_exceptions_pkg.application_exception THEN
2690       RAISE;
2691   WHEN OTHERS THEN
2692        xla_exceptions_pkg.raise_message
2693            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_21');
2694 END AcctDerRule_21;
2695 --
2696 
2697 ---------------------------------------
2698 --
2699 -- PRIVATE FUNCTION
2700 --         AcctDerRule_22
2701 --
2702 ---------------------------------------
2703 FUNCTION AcctDerRule_22 (
2704   p_application_id              IN NUMBER
2705 , p_ae_header_id                IN NUMBER
2706 , p_side                        IN VARCHAR2 
2707 --Transaction Account
2708  , p_source_1            IN NUMBER
2709 --Journal Line Type
2710  , p_source_2            IN VARCHAR2
2711 , x_transaction_coa_id         OUT NOCOPY NUMBER
2712 , x_accounting_coa_id          OUT NOCOPY NUMBER
2713 , x_value_type_code            OUT NOCOPY VARCHAR2
2714 )
2715 RETURN NUMBER
2716 IS
2717 l_component_type       VARCHAR2(80)  ;
2718 l_component_code       VARCHAR2(30)  ;
2719 l_component_type_code  VARCHAR2(1)   ;
2720 l_component_appl_id    INTEGER       ;
2721 l_amb_context_code     VARCHAR2(30)  ;
2722 l_log_module           VARCHAR2(240) ;
2723 l_output_value         NUMBER        ;
2724 BEGIN
2725 IF g_log_enabled THEN
2726       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_22';
2727 END IF;
2728 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2729       trace
2730          (p_msg      => 'BEGIN of AcctDerRule_22'
2731          ,p_level    => C_LEVEL_PROCEDURE
2732          ,p_module   => l_log_module);
2733 END IF;
2734 --
2735 l_component_type         := 'AMB_ADR';
2736 l_component_code         := 'IOR';
2737 l_component_type_code    := 'S';
2738 l_component_appl_id      :=  555;
2739 l_amb_context_code       := 'DEFAULT';
2740 x_transaction_coa_id     :=  null;
2741 x_accounting_coa_id      :=  null;
2742 --
2743 
2744  IF NVL(p_source_2,'
2745 ') =  'IOR'
2746  THEN 
2747  --
2748   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2749       trace
2750          (p_msg      => 'END of AcctDerRule_22'
2751          ,p_level    => C_LEVEL_PROCEDURE
2752          ,p_module   => l_log_module);
2753   END IF;
2754   x_value_type_code := 'S';
2755   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
2756   RETURN l_output_value;
2757 
2758  END IF;
2759 --
2760 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2761       trace
2762          (p_msg      => 'END of AcctDerRule_22(invalid)'
2763          ,p_level    => C_LEVEL_PROCEDURE
2764          ,p_module   => l_log_module);
2765 END IF;
2766 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2767 x_value_type_code := null;
2768 l_output_value    := null;
2769 xla_accounting_err_pkg.build_message
2770                  (p_appli_s_name            => 'XLA'
2771                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2772                  ,p_token_1                 => 'COMPONENT_NAME'
2773                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2774                                                             l_component_type
2775                                                           , l_component_code
2776                                                           , l_component_type_code
2777                                                           , l_component_appl_id
2778                                                           , l_amb_context_code
2779                                                           )
2780                  ,p_token_2                 => 'OWNER'
2781                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2782                                                         'XLA_OWNER_TYPE'
2783                                                         ,l_component_type_code
2784                                                         )
2785                  ,p_token_3                 => 'PAD_NAME'
2786                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2787                  ,p_token_4                 => 'PAD_OWNER'
2788                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2789                                                         'XLA_OWNER_TYPE'
2790                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2791                                                         )
2792                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2793                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2797 RETURN l_output_value;
2794                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2795                  ,p_ae_header_id            => NULL
2796 );
2798 EXCEPTION
2799   WHEN xla_exceptions_pkg.application_exception THEN
2800       RAISE;
2801   WHEN OTHERS THEN
2802        xla_exceptions_pkg.raise_message
2803            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_22');
2804 END AcctDerRule_22;
2805 --
2806 
2807 ---------------------------------------
2808 --
2809 -- PRIVATE FUNCTION
2810 --         AcctDerRule_23
2811 --
2812 ---------------------------------------
2813 FUNCTION AcctDerRule_23 (
2814   p_application_id              IN NUMBER
2815 , p_ae_header_id                IN NUMBER
2816 , p_side                        IN VARCHAR2 
2817 --Transaction Account
2818  , p_source_1            IN NUMBER
2819 --Journal Line Type
2820  , p_source_2            IN VARCHAR2
2821 , x_transaction_coa_id         OUT NOCOPY NUMBER
2822 , x_accounting_coa_id          OUT NOCOPY NUMBER
2823 , x_value_type_code            OUT NOCOPY VARCHAR2
2824 )
2825 RETURN NUMBER
2826 IS
2827 l_component_type       VARCHAR2(80)  ;
2828 l_component_code       VARCHAR2(30)  ;
2829 l_component_type_code  VARCHAR2(1)   ;
2830 l_component_appl_id    INTEGER       ;
2831 l_amb_context_code     VARCHAR2(30)  ;
2832 l_log_module           VARCHAR2(240) ;
2833 l_output_value         NUMBER        ;
2834 BEGIN
2835 IF g_log_enabled THEN
2836       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_23';
2837 END IF;
2838 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2839       trace
2840          (p_msg      => 'BEGIN of AcctDerRule_23'
2841          ,p_level    => C_LEVEL_PROCEDURE
2842          ,p_module   => l_log_module);
2843 END IF;
2844 --
2845 l_component_type         := 'AMB_ADR';
2846 l_component_code         := 'IPA';
2847 l_component_type_code    := 'S';
2848 l_component_appl_id      :=  555;
2849 l_amb_context_code       := 'DEFAULT';
2850 x_transaction_coa_id     :=  null;
2851 x_accounting_coa_id      :=  null;
2852 --
2853 
2854  IF NVL(p_source_2,'
2855 ') =  'IPA'
2856  THEN 
2857  --
2858   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2859       trace
2860          (p_msg      => 'END of AcctDerRule_23'
2861          ,p_level    => C_LEVEL_PROCEDURE
2862          ,p_module   => l_log_module);
2863   END IF;
2864   x_value_type_code := 'S';
2865   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
2866   RETURN l_output_value;
2867 
2868  END IF;
2869 --
2870 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2871       trace
2872          (p_msg      => 'END of AcctDerRule_23(invalid)'
2873          ,p_level    => C_LEVEL_PROCEDURE
2874          ,p_module   => l_log_module);
2875 END IF;
2876 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2877 x_value_type_code := null;
2878 l_output_value    := null;
2879 xla_accounting_err_pkg.build_message
2880                  (p_appli_s_name            => 'XLA'
2881                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2882                  ,p_token_1                 => 'COMPONENT_NAME'
2883                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2884                                                             l_component_type
2885                                                           , l_component_code
2886                                                           , l_component_type_code
2887                                                           , l_component_appl_id
2888                                                           , l_amb_context_code
2889                                                           )
2890                  ,p_token_2                 => 'OWNER'
2891                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2892                                                         'XLA_OWNER_TYPE'
2893                                                         ,l_component_type_code
2894                                                         )
2895                  ,p_token_3                 => 'PAD_NAME'
2896                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2897                  ,p_token_4                 => 'PAD_OWNER'
2898                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2899                                                         'XLA_OWNER_TYPE'
2900                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2901                                                         )
2902                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2903                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2904                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2905                  ,p_ae_header_id            => NULL
2906 );
2907 RETURN l_output_value;
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_00555_AAD_S_000001_PKG.AcctDerRule_23');
2914 END AcctDerRule_23;
2915 --
2916 
2917 ---------------------------------------
2918 --
2922 ---------------------------------------
2919 -- PRIVATE FUNCTION
2920 --         AcctDerRule_24
2921 --
2923 FUNCTION AcctDerRule_24 (
2924   p_application_id              IN NUMBER
2925 , p_ae_header_id                IN NUMBER
2926 , p_side                        IN VARCHAR2 
2927 --Transaction Account
2928  , p_source_1            IN NUMBER
2929 --Journal Line Type
2930  , p_source_2            IN VARCHAR2
2931 , x_transaction_coa_id         OUT NOCOPY NUMBER
2932 , x_accounting_coa_id          OUT NOCOPY NUMBER
2933 , x_value_type_code            OUT NOCOPY VARCHAR2
2934 )
2935 RETURN NUMBER
2936 IS
2937 l_component_type       VARCHAR2(80)  ;
2938 l_component_code       VARCHAR2(30)  ;
2939 l_component_type_code  VARCHAR2(1)   ;
2940 l_component_appl_id    INTEGER       ;
2941 l_amb_context_code     VARCHAR2(30)  ;
2942 l_log_module           VARCHAR2(240) ;
2943 l_output_value         NUMBER        ;
2944 BEGIN
2945 IF g_log_enabled THEN
2946       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_24';
2947 END IF;
2948 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2949       trace
2950          (p_msg      => 'BEGIN of AcctDerRule_24'
2951          ,p_level    => C_LEVEL_PROCEDURE
2952          ,p_module   => l_log_module);
2953 END IF;
2954 --
2955 l_component_type         := 'AMB_ADR';
2956 l_component_code         := 'IRV';
2957 l_component_type_code    := 'S';
2958 l_component_appl_id      :=  555;
2959 l_amb_context_code       := 'DEFAULT';
2960 x_transaction_coa_id     :=  null;
2961 x_accounting_coa_id      :=  null;
2962 --
2963 
2964  IF NVL(p_source_2,'
2965 ') =  'IRV'
2966  THEN 
2967  --
2968   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2969       trace
2970          (p_msg      => 'END of AcctDerRule_24'
2971          ,p_level    => C_LEVEL_PROCEDURE
2972          ,p_module   => l_log_module);
2973   END IF;
2974   x_value_type_code := 'S';
2975   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
2976   RETURN l_output_value;
2977 
2978  END IF;
2979 --
2980 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2981       trace
2982          (p_msg      => 'END of AcctDerRule_24(invalid)'
2983          ,p_level    => C_LEVEL_PROCEDURE
2984          ,p_module   => l_log_module);
2985 END IF;
2986 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2987 x_value_type_code := null;
2988 l_output_value    := null;
2989 xla_accounting_err_pkg.build_message
2990                  (p_appli_s_name            => 'XLA'
2991                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2992                  ,p_token_1                 => 'COMPONENT_NAME'
2993                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2994                                                             l_component_type
2995                                                           , l_component_code
2996                                                           , l_component_type_code
2997                                                           , l_component_appl_id
2998                                                           , l_amb_context_code
2999                                                           )
3000                  ,p_token_2                 => 'OWNER'
3001                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3002                                                         'XLA_OWNER_TYPE'
3003                                                         ,l_component_type_code
3004                                                         )
3005                  ,p_token_3                 => 'PAD_NAME'
3006                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3007                  ,p_token_4                 => 'PAD_OWNER'
3008                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3009                                                         'XLA_OWNER_TYPE'
3010                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3011                                                         )
3012                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3013                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3014                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3015                  ,p_ae_header_id            => NULL
3016 );
3017 RETURN l_output_value;
3018 EXCEPTION
3019   WHEN xla_exceptions_pkg.application_exception THEN
3020       RAISE;
3021   WHEN OTHERS THEN
3022        xla_exceptions_pkg.raise_message
3023            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_24');
3024 END AcctDerRule_24;
3025 --
3026 
3027 ---------------------------------------
3028 --
3029 -- PRIVATE FUNCTION
3030 --         AcctDerRule_25
3031 --
3032 ---------------------------------------
3033 FUNCTION AcctDerRule_25 (
3034   p_application_id              IN NUMBER
3035 , p_ae_header_id                IN NUMBER
3036 , p_side                        IN VARCHAR2 
3037 --Transaction Account
3038  , p_source_1            IN NUMBER
3039 --Journal Line Type
3040  , p_source_2            IN VARCHAR2
3041 , x_transaction_coa_id         OUT NOCOPY NUMBER
3042 , x_accounting_coa_id          OUT NOCOPY NUMBER
3043 , x_value_type_code            OUT NOCOPY VARCHAR2
3044 )
3048 l_component_code       VARCHAR2(30)  ;
3045 RETURN NUMBER
3046 IS
3047 l_component_type       VARCHAR2(80)  ;
3049 l_component_type_code  VARCHAR2(1)   ;
3050 l_component_appl_id    INTEGER       ;
3051 l_amb_context_code     VARCHAR2(30)  ;
3052 l_log_module           VARCHAR2(240) ;
3053 l_output_value         NUMBER        ;
3054 BEGIN
3055 IF g_log_enabled THEN
3056       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_25';
3057 END IF;
3058 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3059       trace
3060          (p_msg      => 'BEGIN of AcctDerRule_25'
3061          ,p_level    => C_LEVEL_PROCEDURE
3062          ,p_module   => l_log_module);
3063 END IF;
3064 --
3065 l_component_type         := 'AMB_ADR';
3066 l_component_code         := 'ISP';
3067 l_component_type_code    := 'S';
3068 l_component_appl_id      :=  555;
3069 l_amb_context_code       := 'DEFAULT';
3070 x_transaction_coa_id     :=  null;
3071 x_accounting_coa_id      :=  null;
3072 --
3073 
3074  IF NVL(p_source_2,'
3075 ') =  'ISP'
3076  THEN 
3077  --
3078   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3079       trace
3080          (p_msg      => 'END of AcctDerRule_25'
3081          ,p_level    => C_LEVEL_PROCEDURE
3082          ,p_module   => l_log_module);
3083   END IF;
3084   x_value_type_code := 'S';
3085   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
3086   RETURN l_output_value;
3087 
3088  END IF;
3089 --
3090 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3091       trace
3092          (p_msg      => 'END of AcctDerRule_25(invalid)'
3093          ,p_level    => C_LEVEL_PROCEDURE
3094          ,p_module   => l_log_module);
3095 END IF;
3096 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3097 x_value_type_code := null;
3098 l_output_value    := null;
3099 xla_accounting_err_pkg.build_message
3100                  (p_appli_s_name            => 'XLA'
3101                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3102                  ,p_token_1                 => 'COMPONENT_NAME'
3103                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3104                                                             l_component_type
3105                                                           , l_component_code
3106                                                           , l_component_type_code
3107                                                           , l_component_appl_id
3108                                                           , l_amb_context_code
3109                                                           )
3110                  ,p_token_2                 => 'OWNER'
3111                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3112                                                         'XLA_OWNER_TYPE'
3113                                                         ,l_component_type_code
3114                                                         )
3115                  ,p_token_3                 => 'PAD_NAME'
3116                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3117                  ,p_token_4                 => 'PAD_OWNER'
3118                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3119                                                         'XLA_OWNER_TYPE'
3120                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3121                                                         )
3122                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3123                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3124                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3125                  ,p_ae_header_id            => NULL
3126 );
3127 RETURN l_output_value;
3128 EXCEPTION
3129   WHEN xla_exceptions_pkg.application_exception THEN
3130       RAISE;
3131   WHEN OTHERS THEN
3132        xla_exceptions_pkg.raise_message
3133            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_25');
3134 END AcctDerRule_25;
3135 --
3136 
3137 ---------------------------------------
3138 --
3139 -- PRIVATE FUNCTION
3140 --         AcctDerRule_26
3141 --
3142 ---------------------------------------
3143 FUNCTION AcctDerRule_26 (
3144   p_application_id              IN NUMBER
3145 , p_ae_header_id                IN NUMBER
3146 , p_side                        IN VARCHAR2 
3147 --Transaction Account
3148  , p_source_1            IN NUMBER
3149 --Journal Line Type
3150  , p_source_2            IN VARCHAR2
3151 , x_transaction_coa_id         OUT NOCOPY NUMBER
3152 , x_accounting_coa_id          OUT NOCOPY NUMBER
3153 , x_value_type_code            OUT NOCOPY VARCHAR2
3154 )
3155 RETURN NUMBER
3156 IS
3157 l_component_type       VARCHAR2(80)  ;
3158 l_component_code       VARCHAR2(30)  ;
3159 l_component_type_code  VARCHAR2(1)   ;
3160 l_component_appl_id    INTEGER       ;
3161 l_amb_context_code     VARCHAR2(30)  ;
3162 l_log_module           VARCHAR2(240) ;
3163 l_output_value         NUMBER        ;
3164 BEGIN
3165 IF g_log_enabled THEN
3166       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_26';
3167 END IF;
3168 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3169       trace
3170          (p_msg      => 'BEGIN of AcctDerRule_26'
3174 --
3171          ,p_level    => C_LEVEL_PROCEDURE
3172          ,p_module   => l_log_module);
3173 END IF;
3175 l_component_type         := 'AMB_ADR';
3176 l_component_code         := 'ITR';
3177 l_component_type_code    := 'S';
3178 l_component_appl_id      :=  555;
3179 l_amb_context_code       := 'DEFAULT';
3180 x_transaction_coa_id     :=  null;
3181 x_accounting_coa_id      :=  null;
3182 --
3183 
3184  IF NVL(p_source_2,'
3185 ') =  'ITR'
3186  THEN 
3187  --
3188   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3189       trace
3190          (p_msg      => 'END of AcctDerRule_26'
3191          ,p_level    => C_LEVEL_PROCEDURE
3192          ,p_module   => l_log_module);
3193   END IF;
3194   x_value_type_code := 'S';
3195   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
3196   RETURN l_output_value;
3197 
3198  END IF;
3199 --
3200 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3201       trace
3202          (p_msg      => 'END of AcctDerRule_26(invalid)'
3203          ,p_level    => C_LEVEL_PROCEDURE
3204          ,p_module   => l_log_module);
3205 END IF;
3206 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3207 x_value_type_code := null;
3208 l_output_value    := null;
3209 xla_accounting_err_pkg.build_message
3210                  (p_appli_s_name            => 'XLA'
3211                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3212                  ,p_token_1                 => 'COMPONENT_NAME'
3213                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3214                                                             l_component_type
3215                                                           , l_component_code
3216                                                           , l_component_type_code
3217                                                           , l_component_appl_id
3218                                                           , l_amb_context_code
3219                                                           )
3220                  ,p_token_2                 => 'OWNER'
3221                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3222                                                         'XLA_OWNER_TYPE'
3223                                                         ,l_component_type_code
3224                                                         )
3225                  ,p_token_3                 => 'PAD_NAME'
3226                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3227                  ,p_token_4                 => 'PAD_OWNER'
3228                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3229                                                         'XLA_OWNER_TYPE'
3230                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3231                                                         )
3232                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3233                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3234                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3235                  ,p_ae_header_id            => NULL
3236 );
3237 RETURN l_output_value;
3238 EXCEPTION
3239   WHEN xla_exceptions_pkg.application_exception THEN
3240       RAISE;
3241   WHEN OTHERS THEN
3242        xla_exceptions_pkg.raise_message
3243            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_26');
3244 END AcctDerRule_26;
3245 --
3246 
3247 ---------------------------------------
3248 --
3249 -- PRIVATE FUNCTION
3250 --         AcctDerRule_27
3251 --
3252 ---------------------------------------
3253 FUNCTION AcctDerRule_27 (
3254   p_application_id              IN NUMBER
3255 , p_ae_header_id                IN NUMBER
3256 , p_side                        IN VARCHAR2 
3257 --Transaction Account
3258  , p_source_1            IN NUMBER
3259 --Journal Line Type
3260  , p_source_2            IN VARCHAR2
3261 , x_transaction_coa_id         OUT NOCOPY NUMBER
3262 , x_accounting_coa_id          OUT NOCOPY NUMBER
3263 , x_value_type_code            OUT NOCOPY VARCHAR2
3264 )
3265 RETURN NUMBER
3266 IS
3267 l_component_type       VARCHAR2(80)  ;
3268 l_component_code       VARCHAR2(30)  ;
3269 l_component_type_code  VARCHAR2(1)   ;
3270 l_component_appl_id    INTEGER       ;
3271 l_amb_context_code     VARCHAR2(30)  ;
3272 l_log_module           VARCHAR2(240) ;
3273 l_output_value         NUMBER        ;
3274 BEGIN
3275 IF g_log_enabled THEN
3276       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_27';
3277 END IF;
3278 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3279       trace
3280          (p_msg      => 'BEGIN of AcctDerRule_27'
3281          ,p_level    => C_LEVEL_PROCEDURE
3282          ,p_module   => l_log_module);
3283 END IF;
3284 --
3285 l_component_type         := 'AMB_ADR';
3286 l_component_code         := 'IVA';
3287 l_component_type_code    := 'S';
3288 l_component_appl_id      :=  555;
3289 l_amb_context_code       := 'DEFAULT';
3290 x_transaction_coa_id     :=  null;
3291 x_accounting_coa_id      :=  null;
3292 --
3293 
3294  IF NVL(p_source_2,'
3295 ') =  'IVA'
3296  THEN 
3297  --
3298   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3299       trace
3303   END IF;
3300          (p_msg      => 'END of AcctDerRule_27'
3301          ,p_level    => C_LEVEL_PROCEDURE
3302          ,p_module   => l_log_module);
3304   x_value_type_code := 'S';
3305   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
3306   RETURN l_output_value;
3307 
3308  END IF;
3309 --
3310 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3311       trace
3312          (p_msg      => 'END of AcctDerRule_27(invalid)'
3313          ,p_level    => C_LEVEL_PROCEDURE
3314          ,p_module   => l_log_module);
3315 END IF;
3316 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3317 x_value_type_code := null;
3318 l_output_value    := null;
3319 xla_accounting_err_pkg.build_message
3320                  (p_appli_s_name            => 'XLA'
3321                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3322                  ,p_token_1                 => 'COMPONENT_NAME'
3323                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3324                                                             l_component_type
3325                                                           , l_component_code
3326                                                           , l_component_type_code
3327                                                           , l_component_appl_id
3328                                                           , l_amb_context_code
3329                                                           )
3330                  ,p_token_2                 => 'OWNER'
3331                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3332                                                         'XLA_OWNER_TYPE'
3333                                                         ,l_component_type_code
3334                                                         )
3335                  ,p_token_3                 => 'PAD_NAME'
3336                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3337                  ,p_token_4                 => 'PAD_OWNER'
3338                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3339                                                         'XLA_OWNER_TYPE'
3340                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3341                                                         )
3342                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3343                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3344                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3345                  ,p_ae_header_id            => NULL
3346 );
3347 RETURN l_output_value;
3348 EXCEPTION
3349   WHEN xla_exceptions_pkg.application_exception THEN
3350       RAISE;
3351   WHEN OTHERS THEN
3352        xla_exceptions_pkg.raise_message
3353            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_27');
3354 END AcctDerRule_27;
3355 --
3356 
3357 ---------------------------------------
3358 --
3359 -- PRIVATE FUNCTION
3360 --         AcctDerRule_28
3361 --
3362 ---------------------------------------
3363 FUNCTION AcctDerRule_28 (
3364   p_application_id              IN NUMBER
3365 , p_ae_header_id                IN NUMBER
3366 , p_side                        IN VARCHAR2 
3367 --Transaction Account
3368  , p_source_1            IN NUMBER
3369 --Journal Line Type
3370  , p_source_2            IN VARCHAR2
3371 , x_transaction_coa_id         OUT NOCOPY NUMBER
3372 , x_accounting_coa_id          OUT NOCOPY NUMBER
3373 , x_value_type_code            OUT NOCOPY VARCHAR2
3374 )
3375 RETURN NUMBER
3376 IS
3377 l_component_type       VARCHAR2(80)  ;
3378 l_component_code       VARCHAR2(30)  ;
3379 l_component_type_code  VARCHAR2(1)   ;
3380 l_component_appl_id    INTEGER       ;
3381 l_amb_context_code     VARCHAR2(30)  ;
3382 l_log_module           VARCHAR2(240) ;
3383 l_output_value         NUMBER        ;
3384 BEGIN
3385 IF g_log_enabled THEN
3386       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_28';
3387 END IF;
3388 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3389       trace
3390          (p_msg      => 'BEGIN of AcctDerRule_28'
3391          ,p_level    => C_LEVEL_PROCEDURE
3392          ,p_module   => l_log_module);
3393 END IF;
3394 --
3395 l_component_type         := 'AMB_ADR';
3396 l_component_code         := 'OHV';
3397 l_component_type_code    := 'S';
3398 l_component_appl_id      :=  555;
3399 l_amb_context_code       := 'DEFAULT';
3400 x_transaction_coa_id     :=  null;
3401 x_accounting_coa_id      :=  null;
3402 --
3403 
3404  IF NVL(p_source_2,'
3405 ') =  'OHV'
3406  THEN 
3407  --
3408   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3409       trace
3410          (p_msg      => 'END of AcctDerRule_28'
3411          ,p_level    => C_LEVEL_PROCEDURE
3412          ,p_module   => l_log_module);
3413   END IF;
3414   x_value_type_code := 'S';
3415   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
3416   RETURN l_output_value;
3417 
3418  END IF;
3419 --
3420 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3421       trace
3422          (p_msg      => 'END of AcctDerRule_28(invalid)'
3423          ,p_level    => C_LEVEL_PROCEDURE
3424          ,p_module   => l_log_module);
3425 END IF;
3429 xla_accounting_err_pkg.build_message
3426 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3427 x_value_type_code := null;
3428 l_output_value    := null;
3430                  (p_appli_s_name            => 'XLA'
3431                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3432                  ,p_token_1                 => 'COMPONENT_NAME'
3433                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3434                                                             l_component_type
3435                                                           , l_component_code
3436                                                           , l_component_type_code
3437                                                           , l_component_appl_id
3438                                                           , l_amb_context_code
3439                                                           )
3440                  ,p_token_2                 => 'OWNER'
3441                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3442                                                         'XLA_OWNER_TYPE'
3443                                                         ,l_component_type_code
3444                                                         )
3445                  ,p_token_3                 => 'PAD_NAME'
3446                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3447                  ,p_token_4                 => 'PAD_OWNER'
3448                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3449                                                         'XLA_OWNER_TYPE'
3450                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3451                                                         )
3452                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3453                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3454                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3455                  ,p_ae_header_id            => NULL
3456 );
3457 RETURN l_output_value;
3458 EXCEPTION
3459   WHEN xla_exceptions_pkg.application_exception THEN
3460       RAISE;
3461   WHEN OTHERS THEN
3462        xla_exceptions_pkg.raise_message
3463            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_28');
3464 END AcctDerRule_28;
3465 --
3466 
3467 ---------------------------------------
3468 --
3469 -- PRIVATE FUNCTION
3470 --         AcctDerRule_29
3471 --
3472 ---------------------------------------
3473 FUNCTION AcctDerRule_29 (
3474   p_application_id              IN NUMBER
3475 , p_ae_header_id                IN NUMBER
3476 , p_side                        IN VARCHAR2 
3477 --Transaction Account
3478  , p_source_1            IN NUMBER
3479 --Journal Line Type
3480  , p_source_2            IN VARCHAR2
3481 , x_transaction_coa_id         OUT NOCOPY NUMBER
3482 , x_accounting_coa_id          OUT NOCOPY NUMBER
3483 , x_value_type_code            OUT NOCOPY VARCHAR2
3484 )
3485 RETURN NUMBER
3486 IS
3487 l_component_type       VARCHAR2(80)  ;
3488 l_component_code       VARCHAR2(30)  ;
3489 l_component_type_code  VARCHAR2(1)   ;
3490 l_component_appl_id    INTEGER       ;
3491 l_amb_context_code     VARCHAR2(30)  ;
3492 l_log_module           VARCHAR2(240) ;
3493 l_output_value         NUMBER        ;
3494 BEGIN
3495 IF g_log_enabled THEN
3496       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_29';
3497 END IF;
3498 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3499       trace
3500          (p_msg      => 'BEGIN of AcctDerRule_29'
3501          ,p_level    => C_LEVEL_PROCEDURE
3502          ,p_module   => l_log_module);
3503 END IF;
3504 --
3505 l_component_type         := 'AMB_ADR';
3506 l_component_code         := 'OVH';
3507 l_component_type_code    := 'S';
3508 l_component_appl_id      :=  555;
3509 l_amb_context_code       := 'DEFAULT';
3510 x_transaction_coa_id     :=  null;
3511 x_accounting_coa_id      :=  null;
3512 --
3513 
3514  IF NVL(p_source_2,'
3515 ') =  'OVH'
3516  THEN 
3517  --
3518   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3519       trace
3520          (p_msg      => 'END of AcctDerRule_29'
3521          ,p_level    => C_LEVEL_PROCEDURE
3522          ,p_module   => l_log_module);
3523   END IF;
3524   x_value_type_code := 'S';
3525   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
3526   RETURN l_output_value;
3527 
3528  END IF;
3529 --
3530 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3531       trace
3532          (p_msg      => 'END of AcctDerRule_29(invalid)'
3533          ,p_level    => C_LEVEL_PROCEDURE
3534          ,p_module   => l_log_module);
3535 END IF;
3536 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3537 x_value_type_code := null;
3538 l_output_value    := null;
3539 xla_accounting_err_pkg.build_message
3540                  (p_appli_s_name            => 'XLA'
3541                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3542                  ,p_token_1                 => 'COMPONENT_NAME'
3543                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3544                                                             l_component_type
3548                                                           , l_amb_context_code
3545                                                           , l_component_code
3546                                                           , l_component_type_code
3547                                                           , l_component_appl_id
3549                                                           )
3550                  ,p_token_2                 => 'OWNER'
3551                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3552                                                         'XLA_OWNER_TYPE'
3553                                                         ,l_component_type_code
3554                                                         )
3555                  ,p_token_3                 => 'PAD_NAME'
3556                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3557                  ,p_token_4                 => 'PAD_OWNER'
3558                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3559                                                         'XLA_OWNER_TYPE'
3560                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3561                                                         )
3562                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3563                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3564                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3565                  ,p_ae_header_id            => NULL
3566 );
3567 RETURN l_output_value;
3568 EXCEPTION
3569   WHEN xla_exceptions_pkg.application_exception THEN
3570       RAISE;
3571   WHEN OTHERS THEN
3572        xla_exceptions_pkg.raise_message
3573            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_29');
3574 END AcctDerRule_29;
3575 --
3576 
3577 ---------------------------------------
3578 --
3579 -- PRIVATE FUNCTION
3580 --         AcctDerRule_30
3581 --
3582 ---------------------------------------
3583 FUNCTION AcctDerRule_30 (
3584   p_application_id              IN NUMBER
3585 , p_ae_header_id                IN NUMBER
3586 , p_side                        IN VARCHAR2 
3587 --Transaction Account
3588  , p_source_1            IN NUMBER
3589 --Journal Line Type
3590  , p_source_2            IN VARCHAR2
3591 , x_transaction_coa_id         OUT NOCOPY NUMBER
3592 , x_accounting_coa_id          OUT NOCOPY NUMBER
3593 , x_value_type_code            OUT NOCOPY VARCHAR2
3594 )
3595 RETURN NUMBER
3596 IS
3597 l_component_type       VARCHAR2(80)  ;
3598 l_component_code       VARCHAR2(30)  ;
3599 l_component_type_code  VARCHAR2(1)   ;
3600 l_component_appl_id    INTEGER       ;
3601 l_amb_context_code     VARCHAR2(30)  ;
3602 l_log_module           VARCHAR2(240) ;
3603 l_output_value         NUMBER        ;
3604 BEGIN
3605 IF g_log_enabled THEN
3606       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_30';
3607 END IF;
3608 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3609       trace
3610          (p_msg      => 'BEGIN of AcctDerRule_30'
3611          ,p_level    => C_LEVEL_PROCEDURE
3612          ,p_module   => l_log_module);
3613 END IF;
3614 --
3615 l_component_type         := 'AMB_ADR';
3616 l_component_code         := 'PIN';
3617 l_component_type_code    := 'S';
3618 l_component_appl_id      :=  555;
3619 l_amb_context_code       := 'DEFAULT';
3620 x_transaction_coa_id     :=  null;
3621 x_accounting_coa_id      :=  null;
3622 --
3623 
3624  IF NVL(p_source_2,'
3625 ') =  'PIN'
3626  THEN 
3627  --
3628   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3629       trace
3630          (p_msg      => 'END of AcctDerRule_30'
3631          ,p_level    => C_LEVEL_PROCEDURE
3632          ,p_module   => l_log_module);
3633   END IF;
3634   x_value_type_code := 'S';
3635   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
3636   RETURN l_output_value;
3637 
3638  END IF;
3639 --
3640 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3641       trace
3642          (p_msg      => 'END of AcctDerRule_30(invalid)'
3643          ,p_level    => C_LEVEL_PROCEDURE
3644          ,p_module   => l_log_module);
3645 END IF;
3646 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3647 x_value_type_code := null;
3648 l_output_value    := null;
3649 xla_accounting_err_pkg.build_message
3650                  (p_appli_s_name            => 'XLA'
3651                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3652                  ,p_token_1                 => 'COMPONENT_NAME'
3653                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3654                                                             l_component_type
3655                                                           , l_component_code
3656                                                           , l_component_type_code
3657                                                           , l_component_appl_id
3658                                                           , l_amb_context_code
3659                                                           )
3660                  ,p_token_2                 => 'OWNER'
3661                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3662                                                         'XLA_OWNER_TYPE'
3663                                                         ,l_component_type_code
3667                  ,p_token_4                 => 'PAD_OWNER'
3664                                                         )
3665                  ,p_token_3                 => 'PAD_NAME'
3666                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3668                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3669                                                         'XLA_OWNER_TYPE'
3670                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3671                                                         )
3672                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3673                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3674                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3675                  ,p_ae_header_id            => NULL
3676 );
3677 RETURN l_output_value;
3678 EXCEPTION
3679   WHEN xla_exceptions_pkg.application_exception THEN
3680       RAISE;
3681   WHEN OTHERS THEN
3682        xla_exceptions_pkg.raise_message
3683            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_30');
3684 END AcctDerRule_30;
3685 --
3686 
3687 ---------------------------------------
3688 --
3689 -- PRIVATE FUNCTION
3690 --         AcctDerRule_31
3691 --
3692 ---------------------------------------
3693 FUNCTION AcctDerRule_31 (
3694   p_application_id              IN NUMBER
3695 , p_ae_header_id                IN NUMBER
3696 , p_side                        IN VARCHAR2 
3697 --Transaction Account
3698  , p_source_1            IN NUMBER
3699 --Journal Line Type
3700  , p_source_2            IN VARCHAR2
3701 , x_transaction_coa_id         OUT NOCOPY NUMBER
3702 , x_accounting_coa_id          OUT NOCOPY NUMBER
3703 , x_value_type_code            OUT NOCOPY VARCHAR2
3704 )
3705 RETURN NUMBER
3706 IS
3707 l_component_type       VARCHAR2(80)  ;
3708 l_component_code       VARCHAR2(30)  ;
3709 l_component_type_code  VARCHAR2(1)   ;
3710 l_component_appl_id    INTEGER       ;
3711 l_amb_context_code     VARCHAR2(30)  ;
3712 l_log_module           VARCHAR2(240) ;
3713 l_output_value         NUMBER        ;
3714 BEGIN
3715 IF g_log_enabled THEN
3716       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_31';
3717 END IF;
3718 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3719       trace
3720          (p_msg      => 'BEGIN of AcctDerRule_31'
3721          ,p_level    => C_LEVEL_PROCEDURE
3722          ,p_module   => l_log_module);
3723 END IF;
3724 --
3725 l_component_type         := 'AMB_ADR';
3726 l_component_code         := 'PPV';
3727 l_component_type_code    := 'S';
3728 l_component_appl_id      :=  555;
3729 l_amb_context_code       := 'DEFAULT';
3730 x_transaction_coa_id     :=  null;
3731 x_accounting_coa_id      :=  null;
3732 --
3733 
3734  IF NVL(p_source_2,'
3735 ') =  'PPV'
3736  THEN 
3737  --
3738   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3739       trace
3740          (p_msg      => 'END of AcctDerRule_31'
3741          ,p_level    => C_LEVEL_PROCEDURE
3742          ,p_module   => l_log_module);
3743   END IF;
3744   x_value_type_code := 'S';
3745   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
3746   RETURN l_output_value;
3747 
3748  END IF;
3749 --
3750 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3751       trace
3752          (p_msg      => 'END of AcctDerRule_31(invalid)'
3753          ,p_level    => C_LEVEL_PROCEDURE
3754          ,p_module   => l_log_module);
3755 END IF;
3756 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3757 x_value_type_code := null;
3758 l_output_value    := null;
3759 xla_accounting_err_pkg.build_message
3760                  (p_appli_s_name            => 'XLA'
3761                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3762                  ,p_token_1                 => 'COMPONENT_NAME'
3763                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3764                                                             l_component_type
3765                                                           , l_component_code
3766                                                           , l_component_type_code
3767                                                           , l_component_appl_id
3768                                                           , l_amb_context_code
3769                                                           )
3770                  ,p_token_2                 => 'OWNER'
3771                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3772                                                         'XLA_OWNER_TYPE'
3773                                                         ,l_component_type_code
3774                                                         )
3775                  ,p_token_3                 => 'PAD_NAME'
3776                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3777                  ,p_token_4                 => 'PAD_OWNER'
3778                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3779                                                         'XLA_OWNER_TYPE'
3780                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3784                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3781                                                         )
3782                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3783                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3785                  ,p_ae_header_id            => NULL
3786 );
3787 RETURN l_output_value;
3788 EXCEPTION
3789   WHEN xla_exceptions_pkg.application_exception THEN
3790       RAISE;
3791   WHEN OTHERS THEN
3792        xla_exceptions_pkg.raise_message
3793            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_31');
3794 END AcctDerRule_31;
3795 --
3796 
3797 ---------------------------------------
3798 --
3799 -- PRIVATE FUNCTION
3800 --         AcctDerRule_32
3801 --
3802 ---------------------------------------
3803 FUNCTION AcctDerRule_32 (
3804   p_application_id              IN NUMBER
3805 , p_ae_header_id                IN NUMBER
3806 , p_side                        IN VARCHAR2 
3807 --Transaction Account
3808  , p_source_1            IN NUMBER
3809 --Journal Line Type
3810  , p_source_2            IN VARCHAR2
3811 , x_transaction_coa_id         OUT NOCOPY NUMBER
3812 , x_accounting_coa_id          OUT NOCOPY NUMBER
3813 , x_value_type_code            OUT NOCOPY VARCHAR2
3814 )
3815 RETURN NUMBER
3816 IS
3817 l_component_type       VARCHAR2(80)  ;
3818 l_component_code       VARCHAR2(30)  ;
3819 l_component_type_code  VARCHAR2(1)   ;
3820 l_component_appl_id    INTEGER       ;
3821 l_amb_context_code     VARCHAR2(30)  ;
3822 l_log_module           VARCHAR2(240) ;
3823 l_output_value         NUMBER        ;
3824 BEGIN
3825 IF g_log_enabled THEN
3826       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_32';
3827 END IF;
3828 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3829       trace
3830          (p_msg      => 'BEGIN of AcctDerRule_32'
3831          ,p_level    => C_LEVEL_PROCEDURE
3832          ,p_module   => l_log_module);
3833 END IF;
3834 --
3835 l_component_type         := 'AMB_ADR';
3836 l_component_code         := 'RCA';
3837 l_component_type_code    := 'S';
3838 l_component_appl_id      :=  555;
3839 l_amb_context_code       := 'DEFAULT';
3840 x_transaction_coa_id     :=  null;
3841 x_accounting_coa_id      :=  null;
3842 --
3843 
3844  IF NVL(p_source_2,'
3845 ') =  'RCA'
3846  THEN 
3847  --
3848   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3849       trace
3850          (p_msg      => 'END of AcctDerRule_32'
3851          ,p_level    => C_LEVEL_PROCEDURE
3852          ,p_module   => l_log_module);
3853   END IF;
3854   x_value_type_code := 'S';
3855   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
3856   RETURN l_output_value;
3857 
3858  END IF;
3859 --
3860 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3861       trace
3862          (p_msg      => 'END of AcctDerRule_32(invalid)'
3863          ,p_level    => C_LEVEL_PROCEDURE
3864          ,p_module   => l_log_module);
3865 END IF;
3866 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3867 x_value_type_code := null;
3868 l_output_value    := null;
3869 xla_accounting_err_pkg.build_message
3870                  (p_appli_s_name            => 'XLA'
3871                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3872                  ,p_token_1                 => 'COMPONENT_NAME'
3873                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3874                                                             l_component_type
3875                                                           , l_component_code
3876                                                           , l_component_type_code
3877                                                           , l_component_appl_id
3878                                                           , l_amb_context_code
3879                                                           )
3880                  ,p_token_2                 => 'OWNER'
3881                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3882                                                         'XLA_OWNER_TYPE'
3883                                                         ,l_component_type_code
3884                                                         )
3885                  ,p_token_3                 => 'PAD_NAME'
3886                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3887                  ,p_token_4                 => 'PAD_OWNER'
3888                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3889                                                         'XLA_OWNER_TYPE'
3890                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3891                                                         )
3892                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3893                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3894                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3895                  ,p_ae_header_id            => NULL
3896 );
3897 RETURN l_output_value;
3898 EXCEPTION
3899   WHEN xla_exceptions_pkg.application_exception THEN
3900       RAISE;
3904 END AcctDerRule_32;
3901   WHEN OTHERS THEN
3902        xla_exceptions_pkg.raise_message
3903            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_32');
3905 --
3906 
3907 ---------------------------------------
3908 --
3909 -- PRIVATE FUNCTION
3910 --         AcctDerRule_33
3911 --
3912 ---------------------------------------
3913 FUNCTION AcctDerRule_33 (
3914   p_application_id              IN NUMBER
3915 , p_ae_header_id                IN NUMBER
3916 , p_side                        IN VARCHAR2 
3917 --Transaction Account
3918  , p_source_1            IN NUMBER
3919 --Journal Line Type
3920  , p_source_2            IN VARCHAR2
3921 , x_transaction_coa_id         OUT NOCOPY NUMBER
3922 , x_accounting_coa_id          OUT NOCOPY NUMBER
3923 , x_value_type_code            OUT NOCOPY VARCHAR2
3924 )
3925 RETURN NUMBER
3926 IS
3927 l_component_type       VARCHAR2(80)  ;
3928 l_component_code       VARCHAR2(30)  ;
3929 l_component_type_code  VARCHAR2(1)   ;
3930 l_component_appl_id    INTEGER       ;
3931 l_amb_context_code     VARCHAR2(30)  ;
3932 l_log_module           VARCHAR2(240) ;
3933 l_output_value         NUMBER        ;
3934 BEGIN
3935 IF g_log_enabled THEN
3936       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_33';
3937 END IF;
3938 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3939       trace
3940          (p_msg      => 'BEGIN of AcctDerRule_33'
3941          ,p_level    => C_LEVEL_PROCEDURE
3942          ,p_module   => l_log_module);
3943 END IF;
3944 --
3945 l_component_type         := 'AMB_ADR';
3946 l_component_code         := 'RMV';
3947 l_component_type_code    := 'S';
3948 l_component_appl_id      :=  555;
3949 l_amb_context_code       := 'DEFAULT';
3950 x_transaction_coa_id     :=  null;
3951 x_accounting_coa_id      :=  null;
3952 --
3953 
3954  IF NVL(p_source_2,'
3955 ') =  'RMV'
3956  THEN 
3957  --
3958   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3959       trace
3960          (p_msg      => 'END of AcctDerRule_33'
3961          ,p_level    => C_LEVEL_PROCEDURE
3962          ,p_module   => l_log_module);
3963   END IF;
3964   x_value_type_code := 'S';
3965   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
3966   RETURN l_output_value;
3967 
3968  END IF;
3969 --
3970 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3971       trace
3972          (p_msg      => 'END of AcctDerRule_33(invalid)'
3973          ,p_level    => C_LEVEL_PROCEDURE
3974          ,p_module   => l_log_module);
3975 END IF;
3976 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3977 x_value_type_code := null;
3978 l_output_value    := null;
3979 xla_accounting_err_pkg.build_message
3980                  (p_appli_s_name            => 'XLA'
3981                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3982                  ,p_token_1                 => 'COMPONENT_NAME'
3983                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3984                                                             l_component_type
3985                                                           , l_component_code
3986                                                           , l_component_type_code
3987                                                           , l_component_appl_id
3988                                                           , l_amb_context_code
3989                                                           )
3990                  ,p_token_2                 => 'OWNER'
3991                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3992                                                         'XLA_OWNER_TYPE'
3993                                                         ,l_component_type_code
3994                                                         )
3995                  ,p_token_3                 => 'PAD_NAME'
3996                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3997                  ,p_token_4                 => 'PAD_OWNER'
3998                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3999                                                         'XLA_OWNER_TYPE'
4000                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4001                                                         )
4002                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4003                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4004                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4005                  ,p_ae_header_id            => NULL
4006 );
4007 RETURN l_output_value;
4008 EXCEPTION
4009   WHEN xla_exceptions_pkg.application_exception THEN
4010       RAISE;
4011   WHEN OTHERS THEN
4012        xla_exceptions_pkg.raise_message
4013            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_33');
4014 END AcctDerRule_33;
4015 --
4016 
4017 ---------------------------------------
4018 --
4019 -- PRIVATE FUNCTION
4020 --         AcctDerRule_34
4021 --
4022 ---------------------------------------
4023 FUNCTION AcctDerRule_34 (
4024   p_application_id              IN NUMBER
4025 , p_ae_header_id                IN NUMBER
4026 , p_side                        IN VARCHAR2 
4027 --Transaction Account
4031 , x_transaction_coa_id         OUT NOCOPY NUMBER
4028  , p_source_1            IN NUMBER
4029 --Journal Line Type
4030  , p_source_2            IN VARCHAR2
4032 , x_accounting_coa_id          OUT NOCOPY NUMBER
4033 , x_value_type_code            OUT NOCOPY VARCHAR2
4034 )
4035 RETURN NUMBER
4036 IS
4037 l_component_type       VARCHAR2(80)  ;
4038 l_component_code       VARCHAR2(30)  ;
4039 l_component_type_code  VARCHAR2(1)   ;
4040 l_component_appl_id    INTEGER       ;
4041 l_amb_context_code     VARCHAR2(30)  ;
4042 l_log_module           VARCHAR2(240) ;
4043 l_output_value         NUMBER        ;
4044 BEGIN
4045 IF g_log_enabled THEN
4046       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_34';
4047 END IF;
4048 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4049       trace
4050          (p_msg      => 'BEGIN of AcctDerRule_34'
4051          ,p_level    => C_LEVEL_PROCEDURE
4052          ,p_module   => l_log_module);
4053 END IF;
4054 --
4055 l_component_type         := 'AMB_ADR';
4056 l_component_code         := 'RPADJ';
4057 l_component_type_code    := 'S';
4058 l_component_appl_id      :=  555;
4059 l_amb_context_code       := 'DEFAULT';
4060 x_transaction_coa_id     :=  null;
4061 x_accounting_coa_id      :=  null;
4062 --
4063 
4064  IF NVL(p_source_2,'
4065 ') =  'RPADJ'
4066  THEN 
4067  --
4068   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4069       trace
4070          (p_msg      => 'END of AcctDerRule_34'
4071          ,p_level    => C_LEVEL_PROCEDURE
4072          ,p_module   => l_log_module);
4073   END IF;
4074   x_value_type_code := 'S';
4075   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
4076   RETURN l_output_value;
4077 
4078  END IF;
4079 --
4080 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4081       trace
4082          (p_msg      => 'END of AcctDerRule_34(invalid)'
4083          ,p_level    => C_LEVEL_PROCEDURE
4084          ,p_module   => l_log_module);
4085 END IF;
4086 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4087 x_value_type_code := null;
4088 l_output_value    := null;
4089 xla_accounting_err_pkg.build_message
4090                  (p_appli_s_name            => 'XLA'
4091                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4092                  ,p_token_1                 => 'COMPONENT_NAME'
4093                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4094                                                             l_component_type
4095                                                           , l_component_code
4096                                                           , l_component_type_code
4097                                                           , l_component_appl_id
4098                                                           , l_amb_context_code
4099                                                           )
4100                  ,p_token_2                 => 'OWNER'
4101                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4102                                                         'XLA_OWNER_TYPE'
4103                                                         ,l_component_type_code
4104                                                         )
4105                  ,p_token_3                 => 'PAD_NAME'
4106                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4107                  ,p_token_4                 => 'PAD_OWNER'
4108                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4109                                                         'XLA_OWNER_TYPE'
4110                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4111                                                         )
4112                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4113                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4114                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4115                  ,p_ae_header_id            => NULL
4116 );
4117 RETURN l_output_value;
4118 EXCEPTION
4119   WHEN xla_exceptions_pkg.application_exception THEN
4120       RAISE;
4121   WHEN OTHERS THEN
4122        xla_exceptions_pkg.raise_message
4123            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_34');
4124 END AcctDerRule_34;
4125 --
4126 
4127 ---------------------------------------
4128 --
4129 -- PRIVATE FUNCTION
4130 --         AcctDerRule_35
4131 --
4132 ---------------------------------------
4133 FUNCTION AcctDerRule_35 (
4134   p_application_id              IN NUMBER
4135 , p_ae_header_id                IN NUMBER
4136 , p_side                        IN VARCHAR2 
4137 --Transaction Account
4138  , p_source_1            IN NUMBER
4139 --Journal Line Type
4140  , p_source_2            IN VARCHAR2
4141 , x_transaction_coa_id         OUT NOCOPY NUMBER
4142 , x_accounting_coa_id          OUT NOCOPY NUMBER
4143 , x_value_type_code            OUT NOCOPY VARCHAR2
4144 )
4145 RETURN NUMBER
4146 IS
4147 l_component_type       VARCHAR2(80)  ;
4148 l_component_code       VARCHAR2(30)  ;
4149 l_component_type_code  VARCHAR2(1)   ;
4150 l_component_appl_id    INTEGER       ;
4151 l_amb_context_code     VARCHAR2(30)  ;
4152 l_log_module           VARCHAR2(240) ;
4153 l_output_value         NUMBER        ;
4154 BEGIN
4158 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4155 IF g_log_enabled THEN
4156       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_35';
4157 END IF;
4159       trace
4160          (p_msg      => 'BEGIN of AcctDerRule_35'
4161          ,p_level    => C_LEVEL_PROCEDURE
4162          ,p_module   => l_log_module);
4163 END IF;
4164 --
4165 l_component_type         := 'AMB_ADR';
4166 l_component_code         := 'RSV';
4167 l_component_type_code    := 'S';
4168 l_component_appl_id      :=  555;
4169 l_amb_context_code       := 'DEFAULT';
4170 x_transaction_coa_id     :=  null;
4171 x_accounting_coa_id      :=  null;
4172 --
4173 
4174  IF NVL(p_source_2,'
4175 ') =  'RSV'
4176  THEN 
4177  --
4178   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4179       trace
4180          (p_msg      => 'END of AcctDerRule_35'
4181          ,p_level    => C_LEVEL_PROCEDURE
4182          ,p_module   => l_log_module);
4183   END IF;
4184   x_value_type_code := 'S';
4185   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
4186   RETURN l_output_value;
4187 
4188  END IF;
4189 --
4190 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4191       trace
4192          (p_msg      => 'END of AcctDerRule_35(invalid)'
4193          ,p_level    => C_LEVEL_PROCEDURE
4194          ,p_module   => l_log_module);
4195 END IF;
4196 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4197 x_value_type_code := null;
4198 l_output_value    := null;
4199 xla_accounting_err_pkg.build_message
4200                  (p_appli_s_name            => 'XLA'
4201                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4202                  ,p_token_1                 => 'COMPONENT_NAME'
4203                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4204                                                             l_component_type
4205                                                           , l_component_code
4206                                                           , l_component_type_code
4207                                                           , l_component_appl_id
4208                                                           , l_amb_context_code
4209                                                           )
4210                  ,p_token_2                 => 'OWNER'
4211                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4212                                                         'XLA_OWNER_TYPE'
4213                                                         ,l_component_type_code
4214                                                         )
4215                  ,p_token_3                 => 'PAD_NAME'
4216                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4217                  ,p_token_4                 => 'PAD_OWNER'
4218                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4219                                                         'XLA_OWNER_TYPE'
4220                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4221                                                         )
4222                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4223                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4224                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4225                  ,p_ae_header_id            => NULL
4226 );
4227 RETURN l_output_value;
4228 EXCEPTION
4229   WHEN xla_exceptions_pkg.application_exception THEN
4230       RAISE;
4231   WHEN OTHERS THEN
4232        xla_exceptions_pkg.raise_message
4233            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_35');
4234 END AcctDerRule_35;
4235 --
4236 
4237 ---------------------------------------
4238 --
4239 -- PRIVATE FUNCTION
4240 --         AcctDerRule_36
4241 --
4242 ---------------------------------------
4243 FUNCTION AcctDerRule_36 (
4244   p_application_id              IN NUMBER
4245 , p_ae_header_id                IN NUMBER
4246 , p_side                        IN VARCHAR2 
4247 --Transaction Account
4248  , p_source_1            IN NUMBER
4249 --Journal Line Type
4250  , p_source_2            IN VARCHAR2
4251 , x_transaction_coa_id         OUT NOCOPY NUMBER
4252 , x_accounting_coa_id          OUT NOCOPY NUMBER
4253 , x_value_type_code            OUT NOCOPY VARCHAR2
4254 )
4255 RETURN NUMBER
4256 IS
4257 l_component_type       VARCHAR2(80)  ;
4258 l_component_code       VARCHAR2(30)  ;
4259 l_component_type_code  VARCHAR2(1)   ;
4260 l_component_appl_id    INTEGER       ;
4261 l_amb_context_code     VARCHAR2(30)  ;
4262 l_log_module           VARCHAR2(240) ;
4263 l_output_value         NUMBER        ;
4264 BEGIN
4265 IF g_log_enabled THEN
4266       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_36';
4267 END IF;
4268 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4269       trace
4270          (p_msg      => 'BEGIN of AcctDerRule_36'
4271          ,p_level    => C_LEVEL_PROCEDURE
4272          ,p_module   => l_log_module);
4273 END IF;
4274 --
4275 l_component_type         := 'AMB_ADR';
4276 l_component_code         := 'RUV';
4277 l_component_type_code    := 'S';
4278 l_component_appl_id      :=  555;
4282 --
4279 l_amb_context_code       := 'DEFAULT';
4280 x_transaction_coa_id     :=  null;
4281 x_accounting_coa_id      :=  null;
4283 
4284  IF NVL(p_source_2,'
4285 ') =  'RUV'
4286  THEN 
4287  --
4288   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4289       trace
4290          (p_msg      => 'END of AcctDerRule_36'
4291          ,p_level    => C_LEVEL_PROCEDURE
4292          ,p_module   => l_log_module);
4293   END IF;
4294   x_value_type_code := 'S';
4295   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
4296   RETURN l_output_value;
4297 
4298  END IF;
4299 --
4300 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4301       trace
4302          (p_msg      => 'END of AcctDerRule_36(invalid)'
4303          ,p_level    => C_LEVEL_PROCEDURE
4304          ,p_module   => l_log_module);
4305 END IF;
4306 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4307 x_value_type_code := null;
4308 l_output_value    := null;
4309 xla_accounting_err_pkg.build_message
4310                  (p_appli_s_name            => 'XLA'
4311                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4312                  ,p_token_1                 => 'COMPONENT_NAME'
4313                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4314                                                             l_component_type
4315                                                           , l_component_code
4316                                                           , l_component_type_code
4317                                                           , l_component_appl_id
4318                                                           , l_amb_context_code
4319                                                           )
4320                  ,p_token_2                 => 'OWNER'
4321                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4322                                                         'XLA_OWNER_TYPE'
4323                                                         ,l_component_type_code
4324                                                         )
4325                  ,p_token_3                 => 'PAD_NAME'
4326                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4327                  ,p_token_4                 => 'PAD_OWNER'
4328                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4329                                                         'XLA_OWNER_TYPE'
4330                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4331                                                         )
4332                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4333                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4334                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4335                  ,p_ae_header_id            => NULL
4336 );
4337 RETURN l_output_value;
4338 EXCEPTION
4339   WHEN xla_exceptions_pkg.application_exception THEN
4340       RAISE;
4341   WHEN OTHERS THEN
4342        xla_exceptions_pkg.raise_message
4343            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_36');
4344 END AcctDerRule_36;
4345 --
4346 
4347 ---------------------------------------
4348 --
4349 -- PRIVATE FUNCTION
4350 --         AcctDerRule_37
4351 --
4352 ---------------------------------------
4353 FUNCTION AcctDerRule_37 (
4354   p_application_id              IN NUMBER
4355 , p_ae_header_id                IN NUMBER
4356 , p_side                        IN VARCHAR2 
4357 --Transaction Account
4358  , p_source_1            IN NUMBER
4359 --Journal Line Type
4360  , p_source_2            IN VARCHAR2
4361 , x_transaction_coa_id         OUT NOCOPY NUMBER
4362 , x_accounting_coa_id          OUT NOCOPY NUMBER
4363 , x_value_type_code            OUT NOCOPY VARCHAR2
4364 )
4365 RETURN NUMBER
4366 IS
4367 l_component_type       VARCHAR2(80)  ;
4368 l_component_code       VARCHAR2(30)  ;
4369 l_component_type_code  VARCHAR2(1)   ;
4370 l_component_appl_id    INTEGER       ;
4371 l_amb_context_code     VARCHAR2(30)  ;
4372 l_log_module           VARCHAR2(240) ;
4373 l_output_value         NUMBER        ;
4374 BEGIN
4375 IF g_log_enabled THEN
4376       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_37';
4377 END IF;
4378 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4379       trace
4380          (p_msg      => 'BEGIN of AcctDerRule_37'
4381          ,p_level    => C_LEVEL_PROCEDURE
4382          ,p_module   => l_log_module);
4383 END IF;
4384 --
4385 l_component_type         := 'AMB_ADR';
4386 l_component_code         := 'SUB';
4387 l_component_type_code    := 'S';
4388 l_component_appl_id      :=  555;
4389 l_amb_context_code       := 'DEFAULT';
4390 x_transaction_coa_id     :=  null;
4391 x_accounting_coa_id      :=  null;
4392 --
4393 
4394  IF NVL(p_source_2,'
4395 ') =  'SUB'
4396  THEN 
4397  --
4398   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4399       trace
4400          (p_msg      => 'END of AcctDerRule_37'
4401          ,p_level    => C_LEVEL_PROCEDURE
4402          ,p_module   => l_log_module);
4403   END IF;
4404   x_value_type_code := 'S';
4405   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
4406   RETURN l_output_value;
4407 
4408  END IF;
4409 --
4413          ,p_level    => C_LEVEL_PROCEDURE
4410 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4411       trace
4412          (p_msg      => 'END of AcctDerRule_37(invalid)'
4414          ,p_module   => l_log_module);
4415 END IF;
4416 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4417 x_value_type_code := null;
4418 l_output_value    := null;
4419 xla_accounting_err_pkg.build_message
4420                  (p_appli_s_name            => 'XLA'
4421                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4422                  ,p_token_1                 => 'COMPONENT_NAME'
4423                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4424                                                             l_component_type
4425                                                           , l_component_code
4426                                                           , l_component_type_code
4427                                                           , l_component_appl_id
4428                                                           , l_amb_context_code
4429                                                           )
4430                  ,p_token_2                 => 'OWNER'
4431                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4432                                                         'XLA_OWNER_TYPE'
4433                                                         ,l_component_type_code
4434                                                         )
4435                  ,p_token_3                 => 'PAD_NAME'
4436                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4437                  ,p_token_4                 => 'PAD_OWNER'
4438                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4439                                                         'XLA_OWNER_TYPE'
4440                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4441                                                         )
4442                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4443                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4444                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4445                  ,p_ae_header_id            => NULL
4446 );
4447 RETURN l_output_value;
4448 EXCEPTION
4449   WHEN xla_exceptions_pkg.application_exception THEN
4450       RAISE;
4451   WHEN OTHERS THEN
4452        xla_exceptions_pkg.raise_message
4453            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_37');
4454 END AcctDerRule_37;
4455 --
4456 
4457 ---------------------------------------
4458 --
4459 -- PRIVATE FUNCTION
4460 --         AcctDerRule_38
4461 --
4462 ---------------------------------------
4463 FUNCTION AcctDerRule_38 (
4464   p_application_id              IN NUMBER
4465 , p_ae_header_id                IN NUMBER
4466 , p_side                        IN VARCHAR2 
4467 --Transaction Account
4468  , p_source_1            IN NUMBER
4469 --Journal Line Type
4470  , p_source_2            IN VARCHAR2
4471 , x_transaction_coa_id         OUT NOCOPY NUMBER
4472 , x_accounting_coa_id          OUT NOCOPY NUMBER
4473 , x_value_type_code            OUT NOCOPY VARCHAR2
4474 )
4475 RETURN NUMBER
4476 IS
4477 l_component_type       VARCHAR2(80)  ;
4478 l_component_code       VARCHAR2(30)  ;
4479 l_component_type_code  VARCHAR2(1)   ;
4480 l_component_appl_id    INTEGER       ;
4481 l_amb_context_code     VARCHAR2(30)  ;
4482 l_log_module           VARCHAR2(240) ;
4483 l_output_value         NUMBER        ;
4484 BEGIN
4485 IF g_log_enabled THEN
4486       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_38';
4487 END IF;
4488 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4489       trace
4490          (p_msg      => 'BEGIN of AcctDerRule_38'
4491          ,p_level    => C_LEVEL_PROCEDURE
4492          ,p_module   => l_log_module);
4493 END IF;
4494 --
4495 l_component_type         := 'AMB_ADR';
4496 l_component_code         := 'USG';
4497 l_component_type_code    := 'S';
4498 l_component_appl_id      :=  555;
4499 l_amb_context_code       := 'DEFAULT';
4500 x_transaction_coa_id     :=  null;
4501 x_accounting_coa_id      :=  null;
4502 --
4503 
4504  IF NVL(p_source_2,'
4505 ') =  'USG'
4506  THEN 
4507  --
4508   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4509       trace
4510          (p_msg      => 'END of AcctDerRule_38'
4511          ,p_level    => C_LEVEL_PROCEDURE
4512          ,p_module   => l_log_module);
4513   END IF;
4514   x_value_type_code := 'S';
4515   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
4516   RETURN l_output_value;
4517 
4518  END IF;
4519 --
4520 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4521       trace
4522          (p_msg      => 'END of AcctDerRule_38(invalid)'
4523          ,p_level    => C_LEVEL_PROCEDURE
4524          ,p_module   => l_log_module);
4525 END IF;
4526 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4527 x_value_type_code := null;
4528 l_output_value    := null;
4529 xla_accounting_err_pkg.build_message
4530                  (p_appli_s_name            => 'XLA'
4534                                                             l_component_type
4531                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4532                  ,p_token_1                 => 'COMPONENT_NAME'
4533                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4535                                                           , l_component_code
4536                                                           , l_component_type_code
4537                                                           , l_component_appl_id
4538                                                           , l_amb_context_code
4539                                                           )
4540                  ,p_token_2                 => 'OWNER'
4541                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4542                                                         'XLA_OWNER_TYPE'
4543                                                         ,l_component_type_code
4544                                                         )
4545                  ,p_token_3                 => 'PAD_NAME'
4546                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4547                  ,p_token_4                 => 'PAD_OWNER'
4548                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4549                                                         'XLA_OWNER_TYPE'
4550                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4551                                                         )
4552                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4553                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4554                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4555                  ,p_ae_header_id            => NULL
4556 );
4557 RETURN l_output_value;
4558 EXCEPTION
4559   WHEN xla_exceptions_pkg.application_exception THEN
4560       RAISE;
4561   WHEN OTHERS THEN
4562        xla_exceptions_pkg.raise_message
4563            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_38');
4564 END AcctDerRule_38;
4565 --
4566 
4567 ---------------------------------------
4568 --
4569 -- PRIVATE FUNCTION
4570 --         AcctDerRule_39
4571 --
4572 ---------------------------------------
4573 FUNCTION AcctDerRule_39 (
4574   p_application_id              IN NUMBER
4575 , p_ae_header_id                IN NUMBER
4576 , p_side                        IN VARCHAR2 
4577 --Transaction Account
4578  , p_source_1            IN NUMBER
4579 --Journal Line Type
4580  , p_source_2            IN VARCHAR2
4581 , x_transaction_coa_id         OUT NOCOPY NUMBER
4582 , x_accounting_coa_id          OUT NOCOPY NUMBER
4583 , x_value_type_code            OUT NOCOPY VARCHAR2
4584 )
4585 RETURN NUMBER
4586 IS
4587 l_component_type       VARCHAR2(80)  ;
4588 l_component_code       VARCHAR2(30)  ;
4589 l_component_type_code  VARCHAR2(1)   ;
4590 l_component_appl_id    INTEGER       ;
4591 l_amb_context_code     VARCHAR2(30)  ;
4592 l_log_module           VARCHAR2(240) ;
4593 l_output_value         NUMBER        ;
4594 BEGIN
4595 IF g_log_enabled THEN
4596       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_39';
4597 END IF;
4598 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4599       trace
4600          (p_msg      => 'BEGIN of AcctDerRule_39'
4601          ,p_level    => C_LEVEL_PROCEDURE
4602          ,p_module   => l_log_module);
4603 END IF;
4604 --
4605 l_component_type         := 'AMB_ADR';
4606 l_component_code         := 'WIP';
4607 l_component_type_code    := 'S';
4608 l_component_appl_id      :=  555;
4609 l_amb_context_code       := 'DEFAULT';
4610 x_transaction_coa_id     :=  null;
4611 x_accounting_coa_id      :=  null;
4612 --
4613 
4614  IF NVL(p_source_2,'
4615 ') =  'WIP'
4616  THEN 
4617  --
4618   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4619       trace
4620          (p_msg      => 'END of AcctDerRule_39'
4621          ,p_level    => C_LEVEL_PROCEDURE
4622          ,p_module   => l_log_module);
4623   END IF;
4624   x_value_type_code := 'S';
4625   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
4626   RETURN l_output_value;
4627 
4628  END IF;
4629 --
4630 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4631       trace
4632          (p_msg      => 'END of AcctDerRule_39(invalid)'
4633          ,p_level    => C_LEVEL_PROCEDURE
4634          ,p_module   => l_log_module);
4635 END IF;
4636 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4637 x_value_type_code := null;
4638 l_output_value    := null;
4639 xla_accounting_err_pkg.build_message
4640                  (p_appli_s_name            => 'XLA'
4641                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4642                  ,p_token_1                 => 'COMPONENT_NAME'
4643                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4644                                                             l_component_type
4645                                                           , l_component_code
4646                                                           , l_component_type_code
4647                                                           , l_component_appl_id
4648                                                           , l_amb_context_code
4649                                                           )
4653                                                         ,l_component_type_code
4650                  ,p_token_2                 => 'OWNER'
4651                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4652                                                         'XLA_OWNER_TYPE'
4654                                                         )
4655                  ,p_token_3                 => 'PAD_NAME'
4656                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4657                  ,p_token_4                 => 'PAD_OWNER'
4658                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4659                                                         'XLA_OWNER_TYPE'
4660                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4661                                                         )
4662                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4663                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4664                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4665                  ,p_ae_header_id            => NULL
4666 );
4667 RETURN l_output_value;
4668 EXCEPTION
4669   WHEN xla_exceptions_pkg.application_exception THEN
4670       RAISE;
4671   WHEN OTHERS THEN
4672        xla_exceptions_pkg.raise_message
4673            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_39');
4674 END AcctDerRule_39;
4675 --
4676 
4677 ---------------------------------------
4678 --
4679 -- PRIVATE FUNCTION
4680 --         AcctDerRule_40
4681 --
4682 ---------------------------------------
4683 FUNCTION AcctDerRule_40 (
4684   p_application_id              IN NUMBER
4685 , p_ae_header_id                IN NUMBER
4686 , p_side                        IN VARCHAR2 
4687 --Transaction Account
4688  , p_source_1            IN NUMBER
4689 --Journal Line Type
4690  , p_source_2            IN VARCHAR2
4691 , x_transaction_coa_id         OUT NOCOPY NUMBER
4692 , x_accounting_coa_id          OUT NOCOPY NUMBER
4693 , x_value_type_code            OUT NOCOPY VARCHAR2
4694 )
4695 RETURN NUMBER
4696 IS
4697 l_component_type       VARCHAR2(80)  ;
4698 l_component_code       VARCHAR2(30)  ;
4699 l_component_type_code  VARCHAR2(1)   ;
4700 l_component_appl_id    INTEGER       ;
4701 l_amb_context_code     VARCHAR2(30)  ;
4702 l_log_module           VARCHAR2(240) ;
4703 l_output_value         NUMBER        ;
4704 BEGIN
4705 IF g_log_enabled THEN
4706       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_40';
4707 END IF;
4708 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4709       trace
4710          (p_msg      => 'BEGIN of AcctDerRule_40'
4711          ,p_level    => C_LEVEL_PROCEDURE
4712          ,p_module   => l_log_module);
4713 END IF;
4714 --
4715 l_component_type         := 'AMB_ADR';
4716 l_component_code         := 'XTC';
4717 l_component_type_code    := 'S';
4718 l_component_appl_id      :=  555;
4719 l_amb_context_code       := 'DEFAULT';
4720 x_transaction_coa_id     :=  null;
4721 x_accounting_coa_id      :=  null;
4722 --
4723 
4724  IF NVL(p_source_2,'
4725 ') =  'XFC'
4726  THEN 
4727  --
4728   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4729       trace
4730          (p_msg      => 'END of AcctDerRule_40'
4731          ,p_level    => C_LEVEL_PROCEDURE
4732          ,p_module   => l_log_module);
4733   END IF;
4734   x_value_type_code := 'S';
4735   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
4736   RETURN l_output_value;
4737 
4738  END IF;
4739 --
4740 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4741       trace
4742          (p_msg      => 'END of AcctDerRule_40(invalid)'
4743          ,p_level    => C_LEVEL_PROCEDURE
4744          ,p_module   => l_log_module);
4745 END IF;
4746 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4747 x_value_type_code := null;
4748 l_output_value    := null;
4749 xla_accounting_err_pkg.build_message
4750                  (p_appli_s_name            => 'XLA'
4751                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4752                  ,p_token_1                 => 'COMPONENT_NAME'
4753                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4754                                                             l_component_type
4755                                                           , l_component_code
4756                                                           , l_component_type_code
4757                                                           , l_component_appl_id
4758                                                           , l_amb_context_code
4759                                                           )
4760                  ,p_token_2                 => 'OWNER'
4761                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4762                                                         'XLA_OWNER_TYPE'
4763                                                         ,l_component_type_code
4764                                                         )
4765                  ,p_token_3                 => 'PAD_NAME'
4766                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4767                  ,p_token_4                 => 'PAD_OWNER'
4771                                                         )
4768                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4769                                                         'XLA_OWNER_TYPE'
4770                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4772                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4773                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4774                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4775                  ,p_ae_header_id            => NULL
4776 );
4777 RETURN l_output_value;
4778 EXCEPTION
4779   WHEN xla_exceptions_pkg.application_exception THEN
4780       RAISE;
4781   WHEN OTHERS THEN
4782        xla_exceptions_pkg.raise_message
4783            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_40');
4784 END AcctDerRule_40;
4785 --
4786 
4787 ---------------------------------------
4788 --
4789 -- PRIVATE FUNCTION
4790 --         AcctDerRule_41
4791 --
4792 ---------------------------------------
4793 FUNCTION AcctDerRule_41 (
4794   p_application_id              IN NUMBER
4795 , p_ae_header_id                IN NUMBER
4796 , p_side                        IN VARCHAR2 
4797 --Transaction Account
4798  , p_source_1            IN NUMBER
4799 --Journal Line Type
4800  , p_source_2            IN VARCHAR2
4801 , x_transaction_coa_id         OUT NOCOPY NUMBER
4802 , x_accounting_coa_id          OUT NOCOPY NUMBER
4803 , x_value_type_code            OUT NOCOPY VARCHAR2
4804 )
4805 RETURN NUMBER
4806 IS
4807 l_component_type       VARCHAR2(80)  ;
4808 l_component_code       VARCHAR2(30)  ;
4809 l_component_type_code  VARCHAR2(1)   ;
4810 l_component_appl_id    INTEGER       ;
4811 l_amb_context_code     VARCHAR2(30)  ;
4812 l_log_module           VARCHAR2(240) ;
4813 l_output_value         NUMBER        ;
4814 BEGIN
4815 IF g_log_enabled THEN
4816       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_41';
4817 END IF;
4818 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4819       trace
4820          (p_msg      => 'BEGIN of AcctDerRule_41'
4821          ,p_level    => C_LEVEL_PROCEDURE
4822          ,p_module   => l_log_module);
4823 END IF;
4824 --
4825 l_component_type         := 'AMB_ADR';
4826 l_component_code         := 'YLD';
4827 l_component_type_code    := 'S';
4828 l_component_appl_id      :=  555;
4829 l_amb_context_code       := 'DEFAULT';
4830 x_transaction_coa_id     :=  null;
4831 x_accounting_coa_id      :=  null;
4832 --
4833 
4834  IF NVL(p_source_2,'
4835 ') =  'YLD'
4836  THEN 
4837  --
4838   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4839       trace
4840          (p_msg      => 'END of AcctDerRule_41'
4841          ,p_level    => C_LEVEL_PROCEDURE
4842          ,p_module   => l_log_module);
4843   END IF;
4844   x_value_type_code := 'S';
4845   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
4846   RETURN l_output_value;
4847 
4848  END IF;
4849 --
4850 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4851       trace
4852          (p_msg      => 'END of AcctDerRule_41(invalid)'
4853          ,p_level    => C_LEVEL_PROCEDURE
4854          ,p_module   => l_log_module);
4855 END IF;
4856 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4857 x_value_type_code := null;
4858 l_output_value    := null;
4859 xla_accounting_err_pkg.build_message
4860                  (p_appli_s_name            => 'XLA'
4861                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4862                  ,p_token_1                 => 'COMPONENT_NAME'
4863                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4864                                                             l_component_type
4865                                                           , l_component_code
4866                                                           , l_component_type_code
4867                                                           , l_component_appl_id
4868                                                           , l_amb_context_code
4869                                                           )
4870                  ,p_token_2                 => 'OWNER'
4871                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4872                                                         'XLA_OWNER_TYPE'
4873                                                         ,l_component_type_code
4874                                                         )
4875                  ,p_token_3                 => 'PAD_NAME'
4876                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4877                  ,p_token_4                 => 'PAD_OWNER'
4878                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4879                                                         'XLA_OWNER_TYPE'
4880                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4881                                                         )
4882                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4883                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4887 RETURN l_output_value;
4884                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4885                  ,p_ae_header_id            => NULL
4886 );
4888 EXCEPTION
4889   WHEN xla_exceptions_pkg.application_exception THEN
4890       RAISE;
4891   WHEN OTHERS THEN
4892        xla_exceptions_pkg.raise_message
4893            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_41');
4894 END AcctDerRule_41;
4895 --
4896 
4897 ---------------------------------------
4898 --
4899 -- PRIVATE FUNCTION
4900 --         AcctLineType_42
4901 --
4902 ---------------------------------------
4903 PROCEDURE AcctLineType_42 (
4904   p_application_id        IN NUMBER
4905  ,p_event_id              IN NUMBER
4906  ,p_calculate_acctd_flag  IN VARCHAR2
4907  ,p_calculate_g_l_flag    IN VARCHAR2
4908  ,p_actual_flag           IN OUT VARCHAR2
4909  ,p_balance_type_code     OUT VARCHAR2
4910  ,p_gain_or_loss_ref      OUT VARCHAR2
4911  
4912 --Transaction Account
4913  , p_source_1            IN NUMBER
4914 --Journal Line Type
4915  , p_source_2            IN VARCHAR2
4916 --Entered Amount
4917  , p_source_3            IN NUMBER
4918 --First Distribution Identifier
4919  , p_source_5            IN NUMBER
4920 --Distribution Type
4921  , p_source_6            IN VARCHAR2
4922 --Currency Code
4923  , p_source_7            IN VARCHAR2
4924 --Currency Conversion Date
4925  , p_source_8            IN DATE
4926 --Currency Conversion Rate
4927  , p_source_9            IN NUMBER
4928 --Currency Conversion Type
4929  , p_source_10            IN VARCHAR2
4930 --Accounted Amount
4931  , p_source_11            IN NUMBER
4932 )
4933 IS
4934 
4935 l_component_type              VARCHAR2(80);
4936 l_component_code              VARCHAR2(30);
4937 l_component_type_code         VARCHAR2(1);
4938 l_component_appl_id           INTEGER;
4939 l_amb_context_code            VARCHAR2(30);
4940 l_entity_code                 VARCHAR2(30);
4941 l_event_class_code            VARCHAR2(30);
4942 l_ae_header_id                NUMBER;
4943 l_event_type_code             VARCHAR2(30);
4944 l_line_definition_code        VARCHAR2(30);
4945 l_line_definition_owner_code  VARCHAR2(1);
4946 --
4947 -- adr variables
4948 l_segment                     VARCHAR2(30);
4949 l_ccid                        NUMBER;
4950 l_adr_transaction_coa_id      NUMBER;
4951 l_adr_accounting_coa_id       NUMBER;
4952 l_adr_flexfield_segment_code  VARCHAR2(30);
4953 l_adr_flex_value_set_id       NUMBER;
4954 l_adr_value_type_code         VARCHAR2(30);
4955 l_adr_value_combination_id    NUMBER;
4956 l_adr_value_segment_code      VARCHAR2(30);
4957 
4958 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4959 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4960 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4961 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4962 
4963 -- 4262811 Variables ------------------------------------------------------------------------------------------
4964 l_entered_amt_idx             NUMBER;
4965 l_accted_amt_idx              NUMBER;
4966 l_acc_rev_flag                VARCHAR2(1);
4967 l_accrual_line_num            NUMBER;
4968 l_tmp_amt                     NUMBER;
4969 l_acc_rev_natural_side_code   VARCHAR2(1);
4970 
4971 l_num_entries                 NUMBER;
4972 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4973 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4974 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4975 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4976 l_recog_line_1                NUMBER;
4977 l_recog_line_2                NUMBER;
4978 
4979 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4980 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4981 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4982 
4983 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4984 
4985 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4986 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4987 
4988 ---------------------------------------------------------------------------------------------------------------
4989 
4990 
4991 --
4992 -- bulk performance
4993 --
4994 l_balance_type_code           VARCHAR2(1);
4995 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4996 l_log_module                  VARCHAR2(240);
4997 
4998 --
4999 -- Upgrade strategy
5000 --
5001 l_actual_upg_option           VARCHAR2(1);
5002 l_enc_upg_option           VARCHAR2(1);
5003 
5004 --
5005 BEGIN
5006 --
5007 IF g_log_enabled THEN
5008       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_42';
5009 END IF;
5010 --
5011 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5012 
5013       trace
5014          (p_msg      => 'BEGIN of AcctLineType_42'
5015          ,p_level    => C_LEVEL_PROCEDURE
5016          ,p_module   => l_log_module);
5017 
5018 END IF;
5019 --
5020 l_component_type             := 'AMB_JLT';
5024 l_amb_context_code           := 'DEFAULT';
5021 l_component_code             := 'AAC';
5022 l_component_type_code        := 'S';
5023 l_component_appl_id          :=  555;
5025 l_entity_code                := 'PURCHASING';
5026 l_event_class_code           := 'DELIVER';
5027 l_event_type_code            := 'RET_TO_RECEIVING';
5028 l_line_definition_owner_code := 'S';
5029 l_line_definition_code       := 'PO_RETURN';
5030 --
5031 l_balance_type_code          := 'A';
5032 l_segment                     := NULL;
5033 l_ccid                        := NULL;
5034 l_adr_transaction_coa_id      := NULL;
5035 l_adr_accounting_coa_id       := NULL;
5036 l_adr_flexfield_segment_code  := NULL;
5037 l_adr_flex_value_set_id       := NULL;
5038 l_adr_value_type_code         := NULL;
5039 l_adr_value_combination_id    := NULL;
5040 l_adr_value_segment_code      := NULL;
5041 
5042 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5043 l_bflow_class_code           := '';    -- 4219869 Business Flow
5044 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5045 l_budgetary_control_flag     := 'N';
5046 
5047 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5048 l_bflow_applied_to_amt       := NULL; -- 5132302
5049 l_entered_amt_idx            := NULL;          -- 4262811
5050 l_accted_amt_idx             := NULL;          -- 4262811
5051 l_acc_rev_flag               := NULL;          -- 4262811
5052 l_accrual_line_num           := NULL;          -- 4262811
5053 l_tmp_amt                    := NULL;          -- 4262811
5054 --
5055  
5056 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5057     l_balance_type_code <> 'B' THEN
5058 IF NVL(p_source_2,'
5059 ') =  'AAC'
5060  THEN 
5061 
5062    --
5063    XLA_AE_LINES_PKG.SetNewLine;
5064 
5065    p_balance_type_code          := l_balance_type_code;
5066    -- set the flag so later we will know whether the gain loss line needs to be created
5067    
5068    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5069      p_actual_flag :='A';
5070    END IF;
5071 
5072    --
5073    -- bulk performance
5074    --
5075    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5076                                       p_header_num   => 0); -- 4262811
5077    --
5078    -- set accounting line options
5079    --
5080    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5081            p_natural_side_code          => 'D'
5082          , p_gain_or_loss_flag          => 'N'
5083          , p_gl_transfer_mode_code      => 'D'
5084          , p_acct_entry_type_code       => 'A'
5085          , p_switch_side_flag           => 'Y'
5086          , p_merge_duplicate_code       => 'W'
5087          );
5088    --
5089    l_acc_rev_natural_side_code := 'C';  -- 4262811
5090    -- 
5091    --
5092    -- set accounting line type info
5093    --
5094    xla_ae_lines_pkg.SetAcctLineType
5095       (p_component_type             => l_component_type
5096       ,p_event_type_code            => l_event_type_code
5097       ,p_line_definition_owner_code => l_line_definition_owner_code
5098       ,p_line_definition_code       => l_line_definition_code
5099       ,p_accounting_line_code       => l_component_code
5100       ,p_accounting_line_type_code  => l_component_type_code
5101       ,p_accounting_line_appl_id    => l_component_appl_id
5102       ,p_amb_context_code           => l_amb_context_code
5103       ,p_entity_code                => l_entity_code
5104       ,p_event_class_code           => l_event_class_code);
5105    --
5106    -- set accounting class
5107    --
5108    xla_ae_lines_pkg.SetAcctClass(
5109            p_accounting_class_code  => 'AAC'
5110          , p_ae_header_id           => l_ae_header_id
5111          );
5112 
5113    --
5114    -- set rounding class
5115    --
5116    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5117                       'AAC';
5118 
5119    --
5120    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5121    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5122    --
5123    -- bulk performance
5124    --
5125    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5126 
5127    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5128       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5129 
5130    -- 4955764
5131    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5132       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5133 
5134    -- 4458381 Public Sector Enh
5135    
5136    --
5137    -- set accounting attributes for the line type
5138    --
5139    l_entered_amt_idx := 3;
5140    l_accted_amt_idx  := 8;
5141    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5142    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
5143    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
5144    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
5145    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
5146    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
5147    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
5151    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
5148    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
5149    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
5150    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
5152    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
5153    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
5154    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
5155    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
5156    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
5157    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
5158 
5159    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5160    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5161 
5162    ---------------------------------------------------------------------------------------------------------------
5163    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5164    ---------------------------------------------------------------------------------------------------------------
5165    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5166 
5167    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5168    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5169 
5170    IF xla_accounting_cache_pkg.GetValueChar
5171          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5172          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5173    AND l_bflow_method_code = 'PRIOR_ENTRY'
5174 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5175    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5176          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5177        )
5178    THEN
5179          xla_ae_lines_pkg.BflowUpgEntry
5180            (p_business_method_code    => l_bflow_method_code
5181            ,p_business_class_code     => l_bflow_class_code
5182            ,p_balance_type            => l_balance_type_code);
5183    ELSE
5184       NULL;
5185 -- No business flow processing for business flow method of NONE.
5186    END IF;
5187 
5188    --
5189    -- call analytical criteria
5190    --
5191    
5192    --
5193    -- call description
5194    --
5195    -- No description or it is inherited.
5196    --
5197    -- call ADRs
5198    -- Bug 4922099
5199    --
5200    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5201         (NVL(l_actual_upg_option, 'N') = 'O') OR
5202         (NVL(l_enc_upg_option, 'N') = 'O')
5203       )
5204    THEN
5205    NULL;
5206    --
5207    --
5208    
5209   l_ccid := AcctDerRule_1(
5210            p_application_id           => p_application_id
5211          , p_ae_header_id             => l_ae_header_id 
5212 , p_source_1 => p_source_1
5213 , p_source_2 => p_source_2
5214          , x_transaction_coa_id       => l_adr_transaction_coa_id
5215          , x_accounting_coa_id        => l_adr_accounting_coa_id
5216          , x_value_type_code          => l_adr_value_type_code
5217          , p_side                     => 'NA'
5218    );
5219 
5220    xla_ae_lines_pkg.set_ccid(
5221     p_code_combination_id          => l_ccid
5222   , p_value_type_code              => l_adr_value_type_code
5223   , p_transaction_coa_id           => l_adr_transaction_coa_id
5224   , p_accounting_coa_id            => l_adr_accounting_coa_id
5225   , p_adr_code                     => 'AAC'
5226   , p_adr_type_code                => 'S'
5227   , p_component_type               => l_component_type
5228   , p_component_code               => l_component_code
5229   , p_component_type_code          => l_component_type_code
5230   , p_component_appl_id            => l_component_appl_id
5231   , p_amb_context_code             => l_amb_context_code
5232   , p_side                         => 'NA'
5233   );
5234 
5235 
5236    --
5237    --
5238    END IF;
5239    --
5240    -- Bug 4922099
5241    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5242           (NVL(l_enc_upg_option, 'N') = 'O')
5243         ) AND
5244         (l_bflow_method_code = 'PRIOR_ENTRY')
5245       )
5246    THEN
5247       IF
5248       --
5249       1 = 2
5250       --
5251       THEN
5252       xla_accounting_err_pkg.build_message
5253                                     (p_appli_s_name            => 'XLA'
5254                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5255                                     ,p_token_1                 => 'LINE_NUMBER'
5256                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5257                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5258                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5259                                                                              l_component_type
5260                                                                             ,l_component_code
5261                                                                             ,l_component_type_code
5262                                                                             ,l_component_appl_id
5266                                                                            )
5263                                                                             ,l_amb_context_code
5264                                                                             ,l_entity_code
5265                                                                             ,l_event_class_code
5267                                     ,p_token_3                 => 'OWNER'
5268                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5269                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5270                                                                           ,p_lookup_code    => l_component_type_code
5271                                                                          )
5272                                     ,p_token_4                 => 'PRODUCT_NAME'
5273                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5274                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5275                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5276                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5277                                     ,p_ae_header_id            =>  NULL
5278                                        );
5279 
5280         IF (C_LEVEL_ERROR>= g_log_level) THEN
5281                  trace
5282                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5283                       ,p_level    => C_LEVEL_ERROR
5284                       ,p_module   => l_log_module);
5285         END IF;
5286       END IF;
5287    END IF;
5288    --
5289    --
5290    ------------------------------------------------------------------------------------------------
5291    -- 4219869 Business Flow
5292    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5293    -- Prior Entry.  Currently, the following code is always generated.
5294    ------------------------------------------------------------------------------------------------
5295    XLA_AE_LINES_PKG.ValidateCurrentLine;
5296 
5297    ------------------------------------------------------------------------------------
5298    -- 4219869 Business Flow
5299    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5300    ------------------------------------------------------------------------------------
5301    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5302 
5303    ----------------------------------------------------------------------------------
5304    -- 4219869 Business Flow
5305    -- Update journal entry status -- Need to generate this within IF <condition>
5306    ----------------------------------------------------------------------------------
5307    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5308          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5309          ,p_balance_type_code => l_balance_type_code
5310          );
5311 
5312    -------------------------------------------------------------------------------------------
5313    -- 4262811 - Generate the Accrual Reversal lines
5314    -------------------------------------------------------------------------------------------
5315    BEGIN
5316       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5317                               (g_array_event(p_event_id).array_value_num('header_index'));
5318       IF l_acc_rev_flag IS NULL THEN
5319          l_acc_rev_flag := 'N';
5320       END IF;
5321    EXCEPTION
5322       WHEN OTHERS THEN
5323          l_acc_rev_flag := 'N';
5324    END;
5325    --
5326    IF (l_acc_rev_flag = 'Y') THEN
5327 
5328        -- 4645092  ------------------------------------------------------------------------------
5329        -- To allow MPA report to determine if it should generate report process
5330        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5331        ------------------------------------------------------------------------------------------
5332 
5333        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5334        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5335    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
5336    -- call ADRs
5337    -- Bug 4922099
5338    --
5339    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5340         (NVL(l_actual_upg_option, 'N') = 'O') OR
5341         (NVL(l_enc_upg_option, 'N') = 'O')
5342       )
5343    THEN
5344    NULL;
5345    --
5346    --
5347    
5348   l_ccid := AcctDerRule_1(
5349            p_application_id           => p_application_id
5350          , p_ae_header_id             => l_ae_header_id 
5351 , p_source_1 => p_source_1
5352 , p_source_2 => p_source_2
5353          , x_transaction_coa_id       => l_adr_transaction_coa_id
5354          , x_accounting_coa_id        => l_adr_accounting_coa_id
5355          , x_value_type_code          => l_adr_value_type_code
5356          , p_side                     => 'NA'
5357    );
5358 
5359    xla_ae_lines_pkg.set_ccid(
5360     p_code_combination_id          => l_ccid
5361   , p_value_type_code              => l_adr_value_type_code
5362   , p_transaction_coa_id           => l_adr_transaction_coa_id
5363   , p_accounting_coa_id            => l_adr_accounting_coa_id
5364   , p_adr_code                     => 'AAC'
5365   , p_adr_type_code                => 'S'
5369   , p_component_appl_id            => l_component_appl_id
5366   , p_component_type               => l_component_type
5367   , p_component_code               => l_component_code
5368   , p_component_type_code          => l_component_type_code
5370   , p_amb_context_code             => l_amb_context_code
5371   , p_side                         => 'NA'
5372   );
5373 
5374 
5375    --
5376    --
5377    END IF;
5378 
5379        --
5380        -- Update the line information that should be overwritten
5381        --
5382        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5383                                          p_header_num   => 1);
5384        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5385 
5386        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5387 
5388        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5389           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5390        END IF;
5391 
5392       --
5393       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5394       --
5395       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5396           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5397       ELSE
5398           ---------------------------------------------------------------------------------------------------
5399           -- 4262811a Switch Sign
5400           ---------------------------------------------------------------------------------------------------
5401           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5402           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5403                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5404           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5405                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5406           -- 5132302
5407           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5408                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5409 
5410       END IF;
5411 
5412       -- 4955764
5413       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5414       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5415 
5416 
5417       XLA_AE_LINES_PKG.ValidateCurrentLine;
5418       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5419 
5420       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5421                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5422                ,p_balance_type_code => l_balance_type_code);
5423 
5424    END IF;
5425 
5426    -----------------------------------------------------------------------------------------
5427    -- 4262811 Multiperiod Accounting
5428    -----------------------------------------------------------------------------------------
5429      -- No MPA option is assigned.
5430 
5431 
5432 END IF;
5433 END IF;
5434 --
5435 
5436 --
5437 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5438    trace
5439       (p_msg      => 'END of AcctLineType_42'
5440       ,p_level    => C_LEVEL_PROCEDURE
5441       ,p_module   => l_log_module);
5442 END IF;
5443 --
5444 EXCEPTION
5445   WHEN xla_exceptions_pkg.application_exception THEN
5446       RAISE;
5447   WHEN OTHERS THEN
5448        xla_exceptions_pkg.raise_message
5449            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_42');
5450 END AcctLineType_42;
5451 --
5452 
5453 ---------------------------------------
5454 --
5455 -- PRIVATE FUNCTION
5456 --         AcctLineType_43
5457 --
5458 ---------------------------------------
5459 PROCEDURE AcctLineType_43 (
5460   p_application_id        IN NUMBER
5461  ,p_event_id              IN NUMBER
5462  ,p_calculate_acctd_flag  IN VARCHAR2
5463  ,p_calculate_g_l_flag    IN VARCHAR2
5464  ,p_actual_flag           IN OUT VARCHAR2
5465  ,p_balance_type_code     OUT VARCHAR2
5466  ,p_gain_or_loss_ref      OUT VARCHAR2
5467  
5468 --Transaction Account
5469  , p_source_1            IN NUMBER
5470 --Journal Line Type
5471  , p_source_2            IN VARCHAR2
5472 --Entered Amount
5473  , p_source_3            IN NUMBER
5474 --First Distribution Identifier
5475  , p_source_5            IN NUMBER
5476 --Distribution Type
5477  , p_source_6            IN VARCHAR2
5478 --Currency Code
5479  , p_source_7            IN VARCHAR2
5480 --Currency Conversion Date
5481  , p_source_8            IN DATE
5482 --Currency Conversion Rate
5483  , p_source_9            IN NUMBER
5484 --Currency Conversion Type
5485  , p_source_10            IN VARCHAR2
5486 --Accounted Amount
5487  , p_source_11            IN NUMBER
5488 )
5489 IS
5490 
5491 l_component_type              VARCHAR2(80);
5492 l_component_code              VARCHAR2(30);
5496 l_entity_code                 VARCHAR2(30);
5493 l_component_type_code         VARCHAR2(1);
5494 l_component_appl_id           INTEGER;
5495 l_amb_context_code            VARCHAR2(30);
5497 l_event_class_code            VARCHAR2(30);
5498 l_ae_header_id                NUMBER;
5499 l_event_type_code             VARCHAR2(30);
5500 l_line_definition_code        VARCHAR2(30);
5501 l_line_definition_owner_code  VARCHAR2(1);
5502 --
5503 -- adr variables
5504 l_segment                     VARCHAR2(30);
5505 l_ccid                        NUMBER;
5506 l_adr_transaction_coa_id      NUMBER;
5507 l_adr_accounting_coa_id       NUMBER;
5508 l_adr_flexfield_segment_code  VARCHAR2(30);
5509 l_adr_flex_value_set_id       NUMBER;
5510 l_adr_value_type_code         VARCHAR2(30);
5511 l_adr_value_combination_id    NUMBER;
5512 l_adr_value_segment_code      VARCHAR2(30);
5513 
5514 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5515 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5516 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5517 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5518 
5519 -- 4262811 Variables ------------------------------------------------------------------------------------------
5520 l_entered_amt_idx             NUMBER;
5521 l_accted_amt_idx              NUMBER;
5522 l_acc_rev_flag                VARCHAR2(1);
5523 l_accrual_line_num            NUMBER;
5524 l_tmp_amt                     NUMBER;
5525 l_acc_rev_natural_side_code   VARCHAR2(1);
5526 
5527 l_num_entries                 NUMBER;
5528 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5529 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5530 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5531 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5532 l_recog_line_1                NUMBER;
5533 l_recog_line_2                NUMBER;
5534 
5535 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5536 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5537 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5538 
5539 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5540 
5541 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5542 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5543 
5544 ---------------------------------------------------------------------------------------------------------------
5545 
5546 
5547 --
5548 -- bulk performance
5549 --
5550 l_balance_type_code           VARCHAR2(1);
5551 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5552 l_log_module                  VARCHAR2(240);
5553 
5554 --
5555 -- Upgrade strategy
5556 --
5557 l_actual_upg_option           VARCHAR2(1);
5558 l_enc_upg_option           VARCHAR2(1);
5559 
5560 --
5561 BEGIN
5562 --
5563 IF g_log_enabled THEN
5564       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_43';
5565 END IF;
5566 --
5567 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5568 
5569       trace
5570          (p_msg      => 'BEGIN of AcctLineType_43'
5571          ,p_level    => C_LEVEL_PROCEDURE
5572          ,p_module   => l_log_module);
5573 
5574 END IF;
5575 --
5576 l_component_type             := 'AMB_JLT';
5577 l_component_code             := 'AAC';
5578 l_component_type_code        := 'S';
5579 l_component_appl_id          :=  555;
5580 l_amb_context_code           := 'DEFAULT';
5581 l_entity_code                := 'PURCHASING';
5582 l_event_class_code           := 'DELIVER';
5583 l_event_type_code            := 'PO_RECEIPT';
5584 l_line_definition_owner_code := 'S';
5585 l_line_definition_code       := 'DELIVER';
5586 --
5587 l_balance_type_code          := 'A';
5588 l_segment                     := NULL;
5589 l_ccid                        := NULL;
5590 l_adr_transaction_coa_id      := NULL;
5591 l_adr_accounting_coa_id       := NULL;
5592 l_adr_flexfield_segment_code  := NULL;
5593 l_adr_flex_value_set_id       := NULL;
5594 l_adr_value_type_code         := NULL;
5595 l_adr_value_combination_id    := NULL;
5596 l_adr_value_segment_code      := NULL;
5597 
5598 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5599 l_bflow_class_code           := '';    -- 4219869 Business Flow
5600 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5601 l_budgetary_control_flag     := 'N';
5602 
5603 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5604 l_bflow_applied_to_amt       := NULL; -- 5132302
5605 l_entered_amt_idx            := NULL;          -- 4262811
5606 l_accted_amt_idx             := NULL;          -- 4262811
5607 l_acc_rev_flag               := NULL;          -- 4262811
5608 l_accrual_line_num           := NULL;          -- 4262811
5609 l_tmp_amt                    := NULL;          -- 4262811
5610 --
5611  
5612 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5613     l_balance_type_code <> 'B' THEN
5614 IF NVL(p_source_2,'
5615 ') =  'AAC'
5616  THEN 
5617 
5618    --
5619    XLA_AE_LINES_PKG.SetNewLine;
5620 
5621    p_balance_type_code          := l_balance_type_code;
5622    -- set the flag so later we will know whether the gain loss line needs to be created
5623    
5627 
5624    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5625      p_actual_flag :='A';
5626    END IF;
5628    --
5629    -- bulk performance
5630    --
5631    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5632                                       p_header_num   => 0); -- 4262811
5633    --
5634    -- set accounting line options
5635    --
5636    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5637            p_natural_side_code          => 'D'
5638          , p_gain_or_loss_flag          => 'N'
5639          , p_gl_transfer_mode_code      => 'D'
5640          , p_acct_entry_type_code       => 'A'
5641          , p_switch_side_flag           => 'Y'
5642          , p_merge_duplicate_code       => 'W'
5643          );
5644    --
5645    l_acc_rev_natural_side_code := 'C';  -- 4262811
5646    -- 
5647    --
5648    -- set accounting line type info
5649    --
5650    xla_ae_lines_pkg.SetAcctLineType
5651       (p_component_type             => l_component_type
5652       ,p_event_type_code            => l_event_type_code
5653       ,p_line_definition_owner_code => l_line_definition_owner_code
5654       ,p_line_definition_code       => l_line_definition_code
5655       ,p_accounting_line_code       => l_component_code
5656       ,p_accounting_line_type_code  => l_component_type_code
5657       ,p_accounting_line_appl_id    => l_component_appl_id
5658       ,p_amb_context_code           => l_amb_context_code
5659       ,p_entity_code                => l_entity_code
5660       ,p_event_class_code           => l_event_class_code);
5661    --
5662    -- set accounting class
5663    --
5664    xla_ae_lines_pkg.SetAcctClass(
5665            p_accounting_class_code  => 'AAC'
5666          , p_ae_header_id           => l_ae_header_id
5667          );
5668 
5669    --
5670    -- set rounding class
5671    --
5672    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5673                       'AAC';
5674 
5675    --
5676    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5677    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5678    --
5679    -- bulk performance
5680    --
5681    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5682 
5683    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5684       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5685 
5686    -- 4955764
5687    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5688       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5689 
5690    -- 4458381 Public Sector Enh
5691    
5692    --
5693    -- set accounting attributes for the line type
5694    --
5695    l_entered_amt_idx := 3;
5696    l_accted_amt_idx  := 8;
5697    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5698    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
5699    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
5700    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
5701    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
5702    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
5703    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
5704    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
5705    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
5706    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
5707    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
5708    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
5709    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
5710    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
5711    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
5712    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
5713    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
5714 
5715    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5716    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5717 
5718    ---------------------------------------------------------------------------------------------------------------
5719    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5720    ---------------------------------------------------------------------------------------------------------------
5721    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5722 
5723    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5724    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5725 
5726    IF xla_accounting_cache_pkg.GetValueChar
5727          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5728          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5729    AND l_bflow_method_code = 'PRIOR_ENTRY'
5730 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5731    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5732          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5733        )
5734    THEN
5735          xla_ae_lines_pkg.BflowUpgEntry
5739    ELSE
5736            (p_business_method_code    => l_bflow_method_code
5737            ,p_business_class_code     => l_bflow_class_code
5738            ,p_balance_type            => l_balance_type_code);
5740       NULL;
5741 -- No business flow processing for business flow method of NONE.
5742    END IF;
5743 
5744    --
5745    -- call analytical criteria
5746    --
5747    
5748    --
5749    -- call description
5750    --
5751    -- No description or it is inherited.
5752    --
5753    -- call ADRs
5754    -- Bug 4922099
5755    --
5756    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5757         (NVL(l_actual_upg_option, 'N') = 'O') OR
5758         (NVL(l_enc_upg_option, 'N') = 'O')
5759       )
5760    THEN
5761    NULL;
5762    --
5763    --
5764    
5765   l_ccid := AcctDerRule_1(
5766            p_application_id           => p_application_id
5767          , p_ae_header_id             => l_ae_header_id 
5768 , p_source_1 => p_source_1
5769 , p_source_2 => p_source_2
5770          , x_transaction_coa_id       => l_adr_transaction_coa_id
5771          , x_accounting_coa_id        => l_adr_accounting_coa_id
5772          , x_value_type_code          => l_adr_value_type_code
5773          , p_side                     => 'NA'
5774    );
5775 
5776    xla_ae_lines_pkg.set_ccid(
5777     p_code_combination_id          => l_ccid
5778   , p_value_type_code              => l_adr_value_type_code
5779   , p_transaction_coa_id           => l_adr_transaction_coa_id
5780   , p_accounting_coa_id            => l_adr_accounting_coa_id
5781   , p_adr_code                     => 'AAC'
5782   , p_adr_type_code                => 'S'
5783   , p_component_type               => l_component_type
5784   , p_component_code               => l_component_code
5785   , p_component_type_code          => l_component_type_code
5786   , p_component_appl_id            => l_component_appl_id
5787   , p_amb_context_code             => l_amb_context_code
5788   , p_side                         => 'NA'
5789   );
5790 
5791 
5792    --
5793    --
5794    END IF;
5795    --
5796    -- Bug 4922099
5797    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5798           (NVL(l_enc_upg_option, 'N') = 'O')
5799         ) AND
5800         (l_bflow_method_code = 'PRIOR_ENTRY')
5801       )
5802    THEN
5803       IF
5804       --
5805       1 = 2
5806       --
5807       THEN
5808       xla_accounting_err_pkg.build_message
5809                                     (p_appli_s_name            => 'XLA'
5810                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5811                                     ,p_token_1                 => 'LINE_NUMBER'
5812                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5813                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5814                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5815                                                                              l_component_type
5816                                                                             ,l_component_code
5817                                                                             ,l_component_type_code
5818                                                                             ,l_component_appl_id
5819                                                                             ,l_amb_context_code
5820                                                                             ,l_entity_code
5821                                                                             ,l_event_class_code
5822                                                                            )
5823                                     ,p_token_3                 => 'OWNER'
5824                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5825                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5826                                                                           ,p_lookup_code    => l_component_type_code
5827                                                                          )
5828                                     ,p_token_4                 => 'PRODUCT_NAME'
5829                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5830                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5831                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5832                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5833                                     ,p_ae_header_id            =>  NULL
5834                                        );
5835 
5836         IF (C_LEVEL_ERROR>= g_log_level) THEN
5837                  trace
5838                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5839                       ,p_level    => C_LEVEL_ERROR
5840                       ,p_module   => l_log_module);
5841         END IF;
5842       END IF;
5843    END IF;
5844    --
5845    --
5846    ------------------------------------------------------------------------------------------------
5847    -- 4219869 Business Flow
5851    XLA_AE_LINES_PKG.ValidateCurrentLine;
5848    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5849    -- Prior Entry.  Currently, the following code is always generated.
5850    ------------------------------------------------------------------------------------------------
5852 
5853    ------------------------------------------------------------------------------------
5854    -- 4219869 Business Flow
5855    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5856    ------------------------------------------------------------------------------------
5857    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5858 
5859    ----------------------------------------------------------------------------------
5860    -- 4219869 Business Flow
5861    -- Update journal entry status -- Need to generate this within IF <condition>
5862    ----------------------------------------------------------------------------------
5863    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5864          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5865          ,p_balance_type_code => l_balance_type_code
5866          );
5867 
5868    -------------------------------------------------------------------------------------------
5869    -- 4262811 - Generate the Accrual Reversal lines
5870    -------------------------------------------------------------------------------------------
5871    BEGIN
5872       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5873                               (g_array_event(p_event_id).array_value_num('header_index'));
5874       IF l_acc_rev_flag IS NULL THEN
5875          l_acc_rev_flag := 'N';
5876       END IF;
5877    EXCEPTION
5878       WHEN OTHERS THEN
5879          l_acc_rev_flag := 'N';
5880    END;
5881    --
5882    IF (l_acc_rev_flag = 'Y') THEN
5883 
5884        -- 4645092  ------------------------------------------------------------------------------
5885        -- To allow MPA report to determine if it should generate report process
5886        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5887        ------------------------------------------------------------------------------------------
5888 
5889        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5890        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5891    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
5892    -- call ADRs
5893    -- Bug 4922099
5894    --
5895    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5896         (NVL(l_actual_upg_option, 'N') = 'O') OR
5897         (NVL(l_enc_upg_option, 'N') = 'O')
5898       )
5899    THEN
5900    NULL;
5901    --
5902    --
5903    
5904   l_ccid := AcctDerRule_1(
5905            p_application_id           => p_application_id
5906          , p_ae_header_id             => l_ae_header_id 
5907 , p_source_1 => p_source_1
5908 , p_source_2 => p_source_2
5909          , x_transaction_coa_id       => l_adr_transaction_coa_id
5910          , x_accounting_coa_id        => l_adr_accounting_coa_id
5911          , x_value_type_code          => l_adr_value_type_code
5912          , p_side                     => 'NA'
5913    );
5914 
5915    xla_ae_lines_pkg.set_ccid(
5916     p_code_combination_id          => l_ccid
5917   , p_value_type_code              => l_adr_value_type_code
5918   , p_transaction_coa_id           => l_adr_transaction_coa_id
5919   , p_accounting_coa_id            => l_adr_accounting_coa_id
5920   , p_adr_code                     => 'AAC'
5921   , p_adr_type_code                => 'S'
5922   , p_component_type               => l_component_type
5923   , p_component_code               => l_component_code
5924   , p_component_type_code          => l_component_type_code
5925   , p_component_appl_id            => l_component_appl_id
5926   , p_amb_context_code             => l_amb_context_code
5927   , p_side                         => 'NA'
5928   );
5929 
5930 
5931    --
5932    --
5933    END IF;
5934 
5935        --
5936        -- Update the line information that should be overwritten
5937        --
5938        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5939                                          p_header_num   => 1);
5940        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5941 
5942        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5943 
5944        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5945           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5946        END IF;
5947 
5948       --
5949       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5950       --
5951       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5952           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5953       ELSE
5954           ---------------------------------------------------------------------------------------------------
5955           -- 4262811a Switch Sign
5956           ---------------------------------------------------------------------------------------------------
5960           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5957           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5958           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5959                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5961                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5962           -- 5132302
5963           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5964                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5965 
5966       END IF;
5967 
5968       -- 4955764
5969       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5970       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5971 
5972 
5973       XLA_AE_LINES_PKG.ValidateCurrentLine;
5974       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5975 
5976       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5977                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5978                ,p_balance_type_code => l_balance_type_code);
5979 
5980    END IF;
5981 
5982    -----------------------------------------------------------------------------------------
5983    -- 4262811 Multiperiod Accounting
5984    -----------------------------------------------------------------------------------------
5985      -- No MPA option is assigned.
5986 
5987 
5988 END IF;
5989 END IF;
5990 --
5991 
5992 --
5993 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5994    trace
5995       (p_msg      => 'END of AcctLineType_43'
5996       ,p_level    => C_LEVEL_PROCEDURE
5997       ,p_module   => l_log_module);
5998 END IF;
5999 --
6000 EXCEPTION
6001   WHEN xla_exceptions_pkg.application_exception THEN
6002       RAISE;
6003   WHEN OTHERS THEN
6004        xla_exceptions_pkg.raise_message
6005            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_43');
6006 END AcctLineType_43;
6007 --
6008 
6009 ---------------------------------------
6010 --
6011 -- PRIVATE FUNCTION
6012 --         AcctLineType_44
6013 --
6014 ---------------------------------------
6015 PROCEDURE AcctLineType_44 (
6016   p_application_id        IN NUMBER
6017  ,p_event_id              IN NUMBER
6018  ,p_calculate_acctd_flag  IN VARCHAR2
6019  ,p_calculate_g_l_flag    IN VARCHAR2
6020  ,p_actual_flag           IN OUT VARCHAR2
6021  ,p_balance_type_code     OUT VARCHAR2
6022  ,p_gain_or_loss_ref      OUT VARCHAR2
6023  
6024 --Transaction Account
6025  , p_source_1            IN NUMBER
6026 --Journal Line Type
6027  , p_source_2            IN VARCHAR2
6028 --Entered Amount
6029  , p_source_3            IN NUMBER
6030 --First Distribution Identifier
6031  , p_source_5            IN NUMBER
6032 --Distribution Type
6033  , p_source_6            IN VARCHAR2
6034 --Currency Code
6035  , p_source_7            IN VARCHAR2
6036 --Currency Conversion Date
6037  , p_source_8            IN DATE
6038 --Currency Conversion Rate
6039  , p_source_9            IN NUMBER
6040 --Currency Conversion Type
6041  , p_source_10            IN VARCHAR2
6042 --Accounted Amount
6043  , p_source_11            IN NUMBER
6044 )
6045 IS
6046 
6047 l_component_type              VARCHAR2(80);
6048 l_component_code              VARCHAR2(30);
6049 l_component_type_code         VARCHAR2(1);
6050 l_component_appl_id           INTEGER;
6051 l_amb_context_code            VARCHAR2(30);
6052 l_entity_code                 VARCHAR2(30);
6053 l_event_class_code            VARCHAR2(30);
6054 l_ae_header_id                NUMBER;
6055 l_event_type_code             VARCHAR2(30);
6056 l_line_definition_code        VARCHAR2(30);
6057 l_line_definition_owner_code  VARCHAR2(1);
6058 --
6059 -- adr variables
6060 l_segment                     VARCHAR2(30);
6061 l_ccid                        NUMBER;
6062 l_adr_transaction_coa_id      NUMBER;
6063 l_adr_accounting_coa_id       NUMBER;
6064 l_adr_flexfield_segment_code  VARCHAR2(30);
6065 l_adr_flex_value_set_id       NUMBER;
6066 l_adr_value_type_code         VARCHAR2(30);
6067 l_adr_value_combination_id    NUMBER;
6068 l_adr_value_segment_code      VARCHAR2(30);
6069 
6070 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6071 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6072 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6073 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6074 
6075 -- 4262811 Variables ------------------------------------------------------------------------------------------
6076 l_entered_amt_idx             NUMBER;
6077 l_accted_amt_idx              NUMBER;
6078 l_acc_rev_flag                VARCHAR2(1);
6079 l_accrual_line_num            NUMBER;
6080 l_tmp_amt                     NUMBER;
6081 l_acc_rev_natural_side_code   VARCHAR2(1);
6082 
6083 l_num_entries                 NUMBER;
6084 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6085 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6086 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6090 
6087 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6088 l_recog_line_1                NUMBER;
6089 l_recog_line_2                NUMBER;
6091 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6092 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6093 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6094 
6095 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6096 
6097 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6098 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6099 
6100 ---------------------------------------------------------------------------------------------------------------
6101 
6102 
6103 --
6104 -- bulk performance
6105 --
6106 l_balance_type_code           VARCHAR2(1);
6107 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6108 l_log_module                  VARCHAR2(240);
6109 
6110 --
6111 -- Upgrade strategy
6112 --
6113 l_actual_upg_option           VARCHAR2(1);
6114 l_enc_upg_option           VARCHAR2(1);
6115 
6116 --
6117 BEGIN
6118 --
6119 IF g_log_enabled THEN
6120       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_44';
6121 END IF;
6122 --
6123 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6124 
6125       trace
6126          (p_msg      => 'BEGIN of AcctLineType_44'
6127          ,p_level    => C_LEVEL_PROCEDURE
6128          ,p_module   => l_log_module);
6129 
6130 END IF;
6131 --
6132 l_component_type             := 'AMB_JLT';
6133 l_component_code             := 'AAC';
6134 l_component_type_code        := 'S';
6135 l_component_appl_id          :=  555;
6136 l_amb_context_code           := 'DEFAULT';
6137 l_entity_code                := 'PURCHASING';
6138 l_event_class_code           := 'DELIVER';
6139 l_event_type_code            := 'INT_REQ_RECEIPT_ADJ';
6140 l_line_definition_owner_code := 'S';
6141 l_line_definition_code       := 'INT_REQ_RCPT_ADJ';
6142 --
6143 l_balance_type_code          := 'A';
6144 l_segment                     := NULL;
6145 l_ccid                        := NULL;
6146 l_adr_transaction_coa_id      := NULL;
6147 l_adr_accounting_coa_id       := NULL;
6148 l_adr_flexfield_segment_code  := NULL;
6149 l_adr_flex_value_set_id       := NULL;
6150 l_adr_value_type_code         := NULL;
6151 l_adr_value_combination_id    := NULL;
6152 l_adr_value_segment_code      := NULL;
6153 
6154 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
6155 l_bflow_class_code           := '';    -- 4219869 Business Flow
6156 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
6157 l_budgetary_control_flag     := 'N';
6158 
6159 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6160 l_bflow_applied_to_amt       := NULL; -- 5132302
6161 l_entered_amt_idx            := NULL;          -- 4262811
6162 l_accted_amt_idx             := NULL;          -- 4262811
6163 l_acc_rev_flag               := NULL;          -- 4262811
6164 l_accrual_line_num           := NULL;          -- 4262811
6165 l_tmp_amt                    := NULL;          -- 4262811
6166 --
6167  
6168 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6169     l_balance_type_code <> 'B' THEN
6170 IF NVL(p_source_2,'
6171 ') =  'AAC'
6172  THEN 
6173 
6174    --
6175    XLA_AE_LINES_PKG.SetNewLine;
6176 
6177    p_balance_type_code          := l_balance_type_code;
6178    -- set the flag so later we will know whether the gain loss line needs to be created
6179    
6180    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6181      p_actual_flag :='A';
6182    END IF;
6183 
6184    --
6185    -- bulk performance
6186    --
6187    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6188                                       p_header_num   => 0); -- 4262811
6189    --
6190    -- set accounting line options
6191    --
6192    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6193            p_natural_side_code          => 'D'
6194          , p_gain_or_loss_flag          => 'N'
6195          , p_gl_transfer_mode_code      => 'D'
6196          , p_acct_entry_type_code       => 'A'
6197          , p_switch_side_flag           => 'Y'
6198          , p_merge_duplicate_code       => 'W'
6199          );
6200    --
6201    l_acc_rev_natural_side_code := 'C';  -- 4262811
6202    -- 
6203    --
6204    -- set accounting line type info
6205    --
6206    xla_ae_lines_pkg.SetAcctLineType
6207       (p_component_type             => l_component_type
6208       ,p_event_type_code            => l_event_type_code
6209       ,p_line_definition_owner_code => l_line_definition_owner_code
6210       ,p_line_definition_code       => l_line_definition_code
6211       ,p_accounting_line_code       => l_component_code
6212       ,p_accounting_line_type_code  => l_component_type_code
6213       ,p_accounting_line_appl_id    => l_component_appl_id
6214       ,p_amb_context_code           => l_amb_context_code
6215       ,p_entity_code                => l_entity_code
6216       ,p_event_class_code           => l_event_class_code);
6217    --
6218    -- set accounting class
6219    --
6220    xla_ae_lines_pkg.SetAcctClass(
6224 
6221            p_accounting_class_code  => 'AAC'
6222          , p_ae_header_id           => l_ae_header_id
6223          );
6225    --
6226    -- set rounding class
6227    --
6228    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6229                       'AAC';
6230 
6231    --
6232    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6233    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6234    --
6235    -- bulk performance
6236    --
6237    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6238 
6239    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6240       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6241 
6242    -- 4955764
6243    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6244       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6245 
6246    -- 4458381 Public Sector Enh
6247    
6248    --
6249    -- set accounting attributes for the line type
6250    --
6251    l_entered_amt_idx := 3;
6252    l_accted_amt_idx  := 8;
6253    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
6254    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
6255    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
6256    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
6257    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
6258    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
6259    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
6260    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
6261    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
6262    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
6263    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
6264    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
6265    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
6266    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
6267    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
6268    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
6269    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
6270 
6271    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6272    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6273 
6274    ---------------------------------------------------------------------------------------------------------------
6275    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6276    ---------------------------------------------------------------------------------------------------------------
6277    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6278 
6279    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6280    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6281 
6282    IF xla_accounting_cache_pkg.GetValueChar
6283          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6284          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6285    AND l_bflow_method_code = 'PRIOR_ENTRY'
6286 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6287    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6288          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6289        )
6290    THEN
6291          xla_ae_lines_pkg.BflowUpgEntry
6292            (p_business_method_code    => l_bflow_method_code
6293            ,p_business_class_code     => l_bflow_class_code
6294            ,p_balance_type            => l_balance_type_code);
6295    ELSE
6296       NULL;
6297 -- No business flow processing for business flow method of NONE.
6298    END IF;
6299 
6300    --
6301    -- call analytical criteria
6302    --
6303    
6304    --
6305    -- call description
6306    --
6307    -- No description or it is inherited.
6308    --
6309    -- call ADRs
6310    -- Bug 4922099
6311    --
6312    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6313         (NVL(l_actual_upg_option, 'N') = 'O') OR
6314         (NVL(l_enc_upg_option, 'N') = 'O')
6315       )
6316    THEN
6317    NULL;
6318    --
6319    --
6320    
6321   l_ccid := AcctDerRule_1(
6322            p_application_id           => p_application_id
6323          , p_ae_header_id             => l_ae_header_id 
6324 , p_source_1 => p_source_1
6325 , p_source_2 => p_source_2
6326          , x_transaction_coa_id       => l_adr_transaction_coa_id
6327          , x_accounting_coa_id        => l_adr_accounting_coa_id
6328          , x_value_type_code          => l_adr_value_type_code
6329          , p_side                     => 'NA'
6330    );
6331 
6332    xla_ae_lines_pkg.set_ccid(
6333     p_code_combination_id          => l_ccid
6334   , p_value_type_code              => l_adr_value_type_code
6335   , p_transaction_coa_id           => l_adr_transaction_coa_id
6336   , p_accounting_coa_id            => l_adr_accounting_coa_id
6337   , p_adr_code                     => 'AAC'
6338   , p_adr_type_code                => 'S'
6342   , p_component_appl_id            => l_component_appl_id
6339   , p_component_type               => l_component_type
6340   , p_component_code               => l_component_code
6341   , p_component_type_code          => l_component_type_code
6343   , p_amb_context_code             => l_amb_context_code
6344   , p_side                         => 'NA'
6345   );
6346 
6347 
6348    --
6349    --
6350    END IF;
6351    --
6352    -- Bug 4922099
6353    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6354           (NVL(l_enc_upg_option, 'N') = 'O')
6355         ) AND
6356         (l_bflow_method_code = 'PRIOR_ENTRY')
6357       )
6358    THEN
6359       IF
6360       --
6361       1 = 2
6362       --
6363       THEN
6364       xla_accounting_err_pkg.build_message
6365                                     (p_appli_s_name            => 'XLA'
6366                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6367                                     ,p_token_1                 => 'LINE_NUMBER'
6368                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6369                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6370                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6371                                                                              l_component_type
6372                                                                             ,l_component_code
6373                                                                             ,l_component_type_code
6374                                                                             ,l_component_appl_id
6375                                                                             ,l_amb_context_code
6376                                                                             ,l_entity_code
6377                                                                             ,l_event_class_code
6378                                                                            )
6379                                     ,p_token_3                 => 'OWNER'
6380                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6381                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6382                                                                           ,p_lookup_code    => l_component_type_code
6383                                                                          )
6384                                     ,p_token_4                 => 'PRODUCT_NAME'
6385                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6386                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6387                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6388                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6389                                     ,p_ae_header_id            =>  NULL
6390                                        );
6391 
6392         IF (C_LEVEL_ERROR>= g_log_level) THEN
6393                  trace
6394                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6395                       ,p_level    => C_LEVEL_ERROR
6396                       ,p_module   => l_log_module);
6397         END IF;
6398       END IF;
6399    END IF;
6400    --
6401    --
6402    ------------------------------------------------------------------------------------------------
6403    -- 4219869 Business Flow
6404    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6405    -- Prior Entry.  Currently, the following code is always generated.
6406    ------------------------------------------------------------------------------------------------
6407    XLA_AE_LINES_PKG.ValidateCurrentLine;
6408 
6409    ------------------------------------------------------------------------------------
6410    -- 4219869 Business Flow
6411    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6412    ------------------------------------------------------------------------------------
6413    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6414 
6415    ----------------------------------------------------------------------------------
6416    -- 4219869 Business Flow
6417    -- Update journal entry status -- Need to generate this within IF <condition>
6418    ----------------------------------------------------------------------------------
6419    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6420          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6421          ,p_balance_type_code => l_balance_type_code
6422          );
6423 
6424    -------------------------------------------------------------------------------------------
6425    -- 4262811 - Generate the Accrual Reversal lines
6426    -------------------------------------------------------------------------------------------
6427    BEGIN
6428       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6429                               (g_array_event(p_event_id).array_value_num('header_index'));
6430       IF l_acc_rev_flag IS NULL THEN
6431          l_acc_rev_flag := 'N';
6432       END IF;
6433    EXCEPTION
6434       WHEN OTHERS THEN
6435          l_acc_rev_flag := 'N';
6436    END;
6440        -- 4645092  ------------------------------------------------------------------------------
6437    --
6438    IF (l_acc_rev_flag = 'Y') THEN
6439 
6441        -- To allow MPA report to determine if it should generate report process
6442        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6443        ------------------------------------------------------------------------------------------
6444 
6445        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6446        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6447    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
6448    -- call ADRs
6449    -- Bug 4922099
6450    --
6451    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6452         (NVL(l_actual_upg_option, 'N') = 'O') OR
6453         (NVL(l_enc_upg_option, 'N') = 'O')
6454       )
6455    THEN
6456    NULL;
6457    --
6458    --
6459    
6460   l_ccid := AcctDerRule_1(
6461            p_application_id           => p_application_id
6462          , p_ae_header_id             => l_ae_header_id 
6463 , p_source_1 => p_source_1
6464 , p_source_2 => p_source_2
6465          , x_transaction_coa_id       => l_adr_transaction_coa_id
6466          , x_accounting_coa_id        => l_adr_accounting_coa_id
6467          , x_value_type_code          => l_adr_value_type_code
6468          , p_side                     => 'NA'
6469    );
6470 
6471    xla_ae_lines_pkg.set_ccid(
6472     p_code_combination_id          => l_ccid
6473   , p_value_type_code              => l_adr_value_type_code
6474   , p_transaction_coa_id           => l_adr_transaction_coa_id
6475   , p_accounting_coa_id            => l_adr_accounting_coa_id
6476   , p_adr_code                     => 'AAC'
6477   , p_adr_type_code                => 'S'
6478   , p_component_type               => l_component_type
6479   , p_component_code               => l_component_code
6480   , p_component_type_code          => l_component_type_code
6481   , p_component_appl_id            => l_component_appl_id
6482   , p_amb_context_code             => l_amb_context_code
6483   , p_side                         => 'NA'
6484   );
6485 
6486 
6487    --
6488    --
6489    END IF;
6490 
6491        --
6492        -- Update the line information that should be overwritten
6493        --
6494        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6495                                          p_header_num   => 1);
6496        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6497 
6498        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6499 
6500        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6501           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6502        END IF;
6503 
6504       --
6505       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6506       --
6507       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6508           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6509       ELSE
6510           ---------------------------------------------------------------------------------------------------
6511           -- 4262811a Switch Sign
6512           ---------------------------------------------------------------------------------------------------
6513           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6514           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6515                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6516           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6517                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6518           -- 5132302
6519           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6520                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6521 
6522       END IF;
6523 
6524       -- 4955764
6525       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6526       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6527 
6528 
6529       XLA_AE_LINES_PKG.ValidateCurrentLine;
6530       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6531 
6532       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6533                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6534                ,p_balance_type_code => l_balance_type_code);
6535 
6536    END IF;
6537 
6538    -----------------------------------------------------------------------------------------
6539    -- 4262811 Multiperiod Accounting
6540    -----------------------------------------------------------------------------------------
6541      -- No MPA option is assigned.
6542 
6543 
6544 END IF;
6545 END IF;
6546 --
6547 
6548 --
6549 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6550    trace
6551       (p_msg      => 'END of AcctLineType_44'
6552       ,p_level    => C_LEVEL_PROCEDURE
6553       ,p_module   => l_log_module);
6554 END IF;
6558       RAISE;
6555 --
6556 EXCEPTION
6557   WHEN xla_exceptions_pkg.application_exception THEN
6559   WHEN OTHERS THEN
6560        xla_exceptions_pkg.raise_message
6561            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_44');
6562 END AcctLineType_44;
6563 --
6564 
6565 ---------------------------------------
6566 --
6567 -- PRIVATE FUNCTION
6568 --         AcctLineType_45
6569 --
6570 ---------------------------------------
6571 PROCEDURE AcctLineType_45 (
6572   p_application_id        IN NUMBER
6573  ,p_event_id              IN NUMBER
6574  ,p_calculate_acctd_flag  IN VARCHAR2
6575  ,p_calculate_g_l_flag    IN VARCHAR2
6576  ,p_actual_flag           IN OUT VARCHAR2
6577  ,p_balance_type_code     OUT VARCHAR2
6578  ,p_gain_or_loss_ref      OUT VARCHAR2
6579  
6580 --Transaction Account
6581  , p_source_1            IN NUMBER
6582 --Journal Line Type
6583  , p_source_2            IN VARCHAR2
6584 --Entered Amount
6585  , p_source_3            IN NUMBER
6586 --First Distribution Identifier
6587  , p_source_5            IN NUMBER
6588 --Distribution Type
6589  , p_source_6            IN VARCHAR2
6590 --Currency Code
6591  , p_source_7            IN VARCHAR2
6592 --Currency Conversion Date
6593  , p_source_8            IN DATE
6594 --Currency Conversion Rate
6595  , p_source_9            IN NUMBER
6596 --Currency Conversion Type
6597  , p_source_10            IN VARCHAR2
6598 --Accounted Amount
6599  , p_source_11            IN NUMBER
6600 )
6601 IS
6602 
6603 l_component_type              VARCHAR2(80);
6604 l_component_code              VARCHAR2(30);
6605 l_component_type_code         VARCHAR2(1);
6606 l_component_appl_id           INTEGER;
6607 l_amb_context_code            VARCHAR2(30);
6608 l_entity_code                 VARCHAR2(30);
6609 l_event_class_code            VARCHAR2(30);
6610 l_ae_header_id                NUMBER;
6611 l_event_type_code             VARCHAR2(30);
6612 l_line_definition_code        VARCHAR2(30);
6613 l_line_definition_owner_code  VARCHAR2(1);
6614 --
6615 -- adr variables
6616 l_segment                     VARCHAR2(30);
6617 l_ccid                        NUMBER;
6618 l_adr_transaction_coa_id      NUMBER;
6619 l_adr_accounting_coa_id       NUMBER;
6620 l_adr_flexfield_segment_code  VARCHAR2(30);
6621 l_adr_flex_value_set_id       NUMBER;
6622 l_adr_value_type_code         VARCHAR2(30);
6623 l_adr_value_combination_id    NUMBER;
6624 l_adr_value_segment_code      VARCHAR2(30);
6625 
6626 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6627 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6628 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6629 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6630 
6631 -- 4262811 Variables ------------------------------------------------------------------------------------------
6632 l_entered_amt_idx             NUMBER;
6633 l_accted_amt_idx              NUMBER;
6634 l_acc_rev_flag                VARCHAR2(1);
6635 l_accrual_line_num            NUMBER;
6636 l_tmp_amt                     NUMBER;
6637 l_acc_rev_natural_side_code   VARCHAR2(1);
6638 
6639 l_num_entries                 NUMBER;
6640 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6641 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6642 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6643 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6644 l_recog_line_1                NUMBER;
6645 l_recog_line_2                NUMBER;
6646 
6647 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6648 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6649 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6650 
6651 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6652 
6653 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6654 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6655 
6656 ---------------------------------------------------------------------------------------------------------------
6657 
6658 
6659 --
6660 -- bulk performance
6661 --
6662 l_balance_type_code           VARCHAR2(1);
6663 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6664 l_log_module                  VARCHAR2(240);
6665 
6666 --
6667 -- Upgrade strategy
6668 --
6669 l_actual_upg_option           VARCHAR2(1);
6670 l_enc_upg_option           VARCHAR2(1);
6671 
6672 --
6673 BEGIN
6674 --
6675 IF g_log_enabled THEN
6676       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_45';
6677 END IF;
6678 --
6679 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6680 
6681       trace
6682          (p_msg      => 'BEGIN of AcctLineType_45'
6683          ,p_level    => C_LEVEL_PROCEDURE
6684          ,p_module   => l_log_module);
6685 
6686 END IF;
6687 --
6688 l_component_type             := 'AMB_JLT';
6689 l_component_code             := 'AAC';
6690 l_component_type_code        := 'S';
6691 l_component_appl_id          :=  555;
6692 l_amb_context_code           := 'DEFAULT';
6693 l_entity_code                := 'PURCHASING';
6694 l_event_class_code           := 'DELIVER';
6698 --
6695 l_event_type_code            := 'PO_RECEIPT_ADJ';
6696 l_line_definition_owner_code := 'S';
6697 l_line_definition_code       := 'PO_RECEIPT_ADJ';
6699 l_balance_type_code          := 'A';
6700 l_segment                     := NULL;
6701 l_ccid                        := NULL;
6702 l_adr_transaction_coa_id      := NULL;
6703 l_adr_accounting_coa_id       := NULL;
6704 l_adr_flexfield_segment_code  := NULL;
6705 l_adr_flex_value_set_id       := NULL;
6706 l_adr_value_type_code         := NULL;
6707 l_adr_value_combination_id    := NULL;
6708 l_adr_value_segment_code      := NULL;
6709 
6710 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
6711 l_bflow_class_code           := '';    -- 4219869 Business Flow
6712 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
6713 l_budgetary_control_flag     := 'N';
6714 
6715 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6716 l_bflow_applied_to_amt       := NULL; -- 5132302
6717 l_entered_amt_idx            := NULL;          -- 4262811
6718 l_accted_amt_idx             := NULL;          -- 4262811
6719 l_acc_rev_flag               := NULL;          -- 4262811
6720 l_accrual_line_num           := NULL;          -- 4262811
6721 l_tmp_amt                    := NULL;          -- 4262811
6722 --
6723  
6724 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6725     l_balance_type_code <> 'B' THEN
6726 IF NVL(p_source_2,'
6727 ') =  'AAC'
6728  THEN 
6729 
6730    --
6731    XLA_AE_LINES_PKG.SetNewLine;
6732 
6733    p_balance_type_code          := l_balance_type_code;
6734    -- set the flag so later we will know whether the gain loss line needs to be created
6735    
6736    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6737      p_actual_flag :='A';
6738    END IF;
6739 
6740    --
6741    -- bulk performance
6742    --
6743    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6744                                       p_header_num   => 0); -- 4262811
6745    --
6746    -- set accounting line options
6747    --
6748    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6749            p_natural_side_code          => 'D'
6750          , p_gain_or_loss_flag          => 'N'
6751          , p_gl_transfer_mode_code      => 'D'
6752          , p_acct_entry_type_code       => 'A'
6753          , p_switch_side_flag           => 'Y'
6754          , p_merge_duplicate_code       => 'W'
6755          );
6756    --
6757    l_acc_rev_natural_side_code := 'C';  -- 4262811
6758    -- 
6759    --
6760    -- set accounting line type info
6761    --
6762    xla_ae_lines_pkg.SetAcctLineType
6763       (p_component_type             => l_component_type
6764       ,p_event_type_code            => l_event_type_code
6765       ,p_line_definition_owner_code => l_line_definition_owner_code
6766       ,p_line_definition_code       => l_line_definition_code
6767       ,p_accounting_line_code       => l_component_code
6768       ,p_accounting_line_type_code  => l_component_type_code
6769       ,p_accounting_line_appl_id    => l_component_appl_id
6770       ,p_amb_context_code           => l_amb_context_code
6771       ,p_entity_code                => l_entity_code
6772       ,p_event_class_code           => l_event_class_code);
6773    --
6774    -- set accounting class
6775    --
6776    xla_ae_lines_pkg.SetAcctClass(
6777            p_accounting_class_code  => 'AAC'
6778          , p_ae_header_id           => l_ae_header_id
6779          );
6780 
6781    --
6782    -- set rounding class
6783    --
6784    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6785                       'AAC';
6786 
6787    --
6788    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6789    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6790    --
6791    -- bulk performance
6792    --
6793    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6794 
6795    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6796       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6797 
6798    -- 4955764
6799    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6800       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6801 
6802    -- 4458381 Public Sector Enh
6803    
6804    --
6805    -- set accounting attributes for the line type
6806    --
6807    l_entered_amt_idx := 3;
6808    l_accted_amt_idx  := 8;
6809    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
6810    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
6811    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
6812    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
6813    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
6814    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
6815    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
6816    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
6817    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
6818    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
6822    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
6819    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
6820    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
6821    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
6823    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
6824    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
6825    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
6826 
6827    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6828    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6829 
6830    ---------------------------------------------------------------------------------------------------------------
6831    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6832    ---------------------------------------------------------------------------------------------------------------
6833    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6834 
6835    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6836    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6837 
6838    IF xla_accounting_cache_pkg.GetValueChar
6839          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6840          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6841    AND l_bflow_method_code = 'PRIOR_ENTRY'
6842 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6843    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6844          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6845        )
6846    THEN
6847          xla_ae_lines_pkg.BflowUpgEntry
6848            (p_business_method_code    => l_bflow_method_code
6849            ,p_business_class_code     => l_bflow_class_code
6850            ,p_balance_type            => l_balance_type_code);
6851    ELSE
6852       NULL;
6853 -- No business flow processing for business flow method of NONE.
6854    END IF;
6855 
6856    --
6857    -- call analytical criteria
6858    --
6859    
6860    --
6861    -- call description
6862    --
6863    -- No description or it is inherited.
6864    --
6865    -- call ADRs
6866    -- Bug 4922099
6867    --
6868    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6869         (NVL(l_actual_upg_option, 'N') = 'O') OR
6870         (NVL(l_enc_upg_option, 'N') = 'O')
6871       )
6872    THEN
6873    NULL;
6874    --
6875    --
6876    
6877   l_ccid := AcctDerRule_1(
6878            p_application_id           => p_application_id
6879          , p_ae_header_id             => l_ae_header_id 
6880 , p_source_1 => p_source_1
6881 , p_source_2 => p_source_2
6882          , x_transaction_coa_id       => l_adr_transaction_coa_id
6883          , x_accounting_coa_id        => l_adr_accounting_coa_id
6884          , x_value_type_code          => l_adr_value_type_code
6885          , p_side                     => 'NA'
6886    );
6887 
6888    xla_ae_lines_pkg.set_ccid(
6889     p_code_combination_id          => l_ccid
6890   , p_value_type_code              => l_adr_value_type_code
6891   , p_transaction_coa_id           => l_adr_transaction_coa_id
6892   , p_accounting_coa_id            => l_adr_accounting_coa_id
6893   , p_adr_code                     => 'AAC'
6894   , p_adr_type_code                => 'S'
6895   , p_component_type               => l_component_type
6896   , p_component_code               => l_component_code
6897   , p_component_type_code          => l_component_type_code
6898   , p_component_appl_id            => l_component_appl_id
6899   , p_amb_context_code             => l_amb_context_code
6900   , p_side                         => 'NA'
6901   );
6902 
6903 
6904    --
6905    --
6906    END IF;
6907    --
6908    -- Bug 4922099
6909    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6910           (NVL(l_enc_upg_option, 'N') = 'O')
6911         ) AND
6912         (l_bflow_method_code = 'PRIOR_ENTRY')
6913       )
6914    THEN
6915       IF
6916       --
6917       1 = 2
6918       --
6919       THEN
6920       xla_accounting_err_pkg.build_message
6921                                     (p_appli_s_name            => 'XLA'
6922                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6923                                     ,p_token_1                 => 'LINE_NUMBER'
6924                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6925                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6926                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6927                                                                              l_component_type
6928                                                                             ,l_component_code
6929                                                                             ,l_component_type_code
6930                                                                             ,l_component_appl_id
6931                                                                             ,l_amb_context_code
6935                                     ,p_token_3                 => 'OWNER'
6932                                                                             ,l_entity_code
6933                                                                             ,l_event_class_code
6934                                                                            )
6936                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6937                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6938                                                                           ,p_lookup_code    => l_component_type_code
6939                                                                          )
6940                                     ,p_token_4                 => 'PRODUCT_NAME'
6941                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6942                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6943                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6944                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6945                                     ,p_ae_header_id            =>  NULL
6946                                        );
6947 
6948         IF (C_LEVEL_ERROR>= g_log_level) THEN
6949                  trace
6950                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6951                       ,p_level    => C_LEVEL_ERROR
6952                       ,p_module   => l_log_module);
6953         END IF;
6954       END IF;
6955    END IF;
6956    --
6957    --
6958    ------------------------------------------------------------------------------------------------
6959    -- 4219869 Business Flow
6960    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6961    -- Prior Entry.  Currently, the following code is always generated.
6962    ------------------------------------------------------------------------------------------------
6963    XLA_AE_LINES_PKG.ValidateCurrentLine;
6964 
6965    ------------------------------------------------------------------------------------
6966    -- 4219869 Business Flow
6967    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6968    ------------------------------------------------------------------------------------
6969    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6970 
6971    ----------------------------------------------------------------------------------
6972    -- 4219869 Business Flow
6973    -- Update journal entry status -- Need to generate this within IF <condition>
6974    ----------------------------------------------------------------------------------
6975    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6976          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6977          ,p_balance_type_code => l_balance_type_code
6978          );
6979 
6980    -------------------------------------------------------------------------------------------
6981    -- 4262811 - Generate the Accrual Reversal lines
6982    -------------------------------------------------------------------------------------------
6983    BEGIN
6984       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6985                               (g_array_event(p_event_id).array_value_num('header_index'));
6986       IF l_acc_rev_flag IS NULL THEN
6987          l_acc_rev_flag := 'N';
6988       END IF;
6989    EXCEPTION
6990       WHEN OTHERS THEN
6991          l_acc_rev_flag := 'N';
6992    END;
6993    --
6994    IF (l_acc_rev_flag = 'Y') THEN
6995 
6996        -- 4645092  ------------------------------------------------------------------------------
6997        -- To allow MPA report to determine if it should generate report process
6998        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6999        ------------------------------------------------------------------------------------------
7000 
7001        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7002        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7003    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
7004    -- call ADRs
7005    -- Bug 4922099
7006    --
7007    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7008         (NVL(l_actual_upg_option, 'N') = 'O') OR
7009         (NVL(l_enc_upg_option, 'N') = 'O')
7010       )
7011    THEN
7012    NULL;
7013    --
7014    --
7015    
7016   l_ccid := AcctDerRule_1(
7017            p_application_id           => p_application_id
7018          , p_ae_header_id             => l_ae_header_id 
7019 , p_source_1 => p_source_1
7020 , p_source_2 => p_source_2
7021          , x_transaction_coa_id       => l_adr_transaction_coa_id
7022          , x_accounting_coa_id        => l_adr_accounting_coa_id
7023          , x_value_type_code          => l_adr_value_type_code
7024          , p_side                     => 'NA'
7025    );
7026 
7027    xla_ae_lines_pkg.set_ccid(
7028     p_code_combination_id          => l_ccid
7029   , p_value_type_code              => l_adr_value_type_code
7030   , p_transaction_coa_id           => l_adr_transaction_coa_id
7031   , p_accounting_coa_id            => l_adr_accounting_coa_id
7032   , p_adr_code                     => 'AAC'
7033   , p_adr_type_code                => 'S'
7034   , p_component_type               => l_component_type
7038   , p_amb_context_code             => l_amb_context_code
7035   , p_component_code               => l_component_code
7036   , p_component_type_code          => l_component_type_code
7037   , p_component_appl_id            => l_component_appl_id
7039   , p_side                         => 'NA'
7040   );
7041 
7042 
7043    --
7044    --
7045    END IF;
7046 
7047        --
7048        -- Update the line information that should be overwritten
7049        --
7050        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7051                                          p_header_num   => 1);
7052        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7053 
7054        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7055 
7056        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7057           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7058        END IF;
7059 
7060       --
7061       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7062       --
7063       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7064           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7065       ELSE
7066           ---------------------------------------------------------------------------------------------------
7067           -- 4262811a Switch Sign
7068           ---------------------------------------------------------------------------------------------------
7069           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7070           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7071                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7072           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7073                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7074           -- 5132302
7075           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7076                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7077 
7078       END IF;
7079 
7080       -- 4955764
7081       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7082       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7083 
7084 
7085       XLA_AE_LINES_PKG.ValidateCurrentLine;
7086       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7087 
7088       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7089                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7090                ,p_balance_type_code => l_balance_type_code);
7091 
7092    END IF;
7093 
7094    -----------------------------------------------------------------------------------------
7095    -- 4262811 Multiperiod Accounting
7096    -----------------------------------------------------------------------------------------
7097      -- No MPA option is assigned.
7098 
7099 
7100 END IF;
7101 END IF;
7102 --
7103 
7104 --
7105 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7106    trace
7107       (p_msg      => 'END of AcctLineType_45'
7108       ,p_level    => C_LEVEL_PROCEDURE
7109       ,p_module   => l_log_module);
7110 END IF;
7111 --
7112 EXCEPTION
7113   WHEN xla_exceptions_pkg.application_exception THEN
7114       RAISE;
7115   WHEN OTHERS THEN
7116        xla_exceptions_pkg.raise_message
7117            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_45');
7118 END AcctLineType_45;
7119 --
7120 
7121 ---------------------------------------
7122 --
7123 -- PRIVATE FUNCTION
7124 --         AcctLineType_46
7125 --
7126 ---------------------------------------
7127 PROCEDURE AcctLineType_46 (
7128   p_application_id        IN NUMBER
7129  ,p_event_id              IN NUMBER
7130  ,p_calculate_acctd_flag  IN VARCHAR2
7131  ,p_calculate_g_l_flag    IN VARCHAR2
7132  ,p_actual_flag           IN OUT VARCHAR2
7133  ,p_balance_type_code     OUT VARCHAR2
7134  ,p_gain_or_loss_ref      OUT VARCHAR2
7135  
7136 --Transaction Account
7137  , p_source_1            IN NUMBER
7138 --Journal Line Type
7139  , p_source_2            IN VARCHAR2
7140 --Entered Amount
7141  , p_source_3            IN NUMBER
7142 --First Distribution Identifier
7143  , p_source_5            IN NUMBER
7144 --Distribution Type
7145  , p_source_6            IN VARCHAR2
7146 --Currency Code
7147  , p_source_7            IN VARCHAR2
7148 --Currency Conversion Date
7149  , p_source_8            IN DATE
7150 --Currency Conversion Rate
7151  , p_source_9            IN NUMBER
7152 --Currency Conversion Type
7153  , p_source_10            IN VARCHAR2
7154 --Accounted Amount
7155  , p_source_11            IN NUMBER
7156 )
7157 IS
7158 
7159 l_component_type              VARCHAR2(80);
7160 l_component_code              VARCHAR2(30);
7161 l_component_type_code         VARCHAR2(1);
7162 l_component_appl_id           INTEGER;
7163 l_amb_context_code            VARCHAR2(30);
7167 l_event_type_code             VARCHAR2(30);
7164 l_entity_code                 VARCHAR2(30);
7165 l_event_class_code            VARCHAR2(30);
7166 l_ae_header_id                NUMBER;
7168 l_line_definition_code        VARCHAR2(30);
7169 l_line_definition_owner_code  VARCHAR2(1);
7170 --
7171 -- adr variables
7172 l_segment                     VARCHAR2(30);
7173 l_ccid                        NUMBER;
7174 l_adr_transaction_coa_id      NUMBER;
7175 l_adr_accounting_coa_id       NUMBER;
7176 l_adr_flexfield_segment_code  VARCHAR2(30);
7177 l_adr_flex_value_set_id       NUMBER;
7178 l_adr_value_type_code         VARCHAR2(30);
7179 l_adr_value_combination_id    NUMBER;
7180 l_adr_value_segment_code      VARCHAR2(30);
7181 
7182 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7183 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7184 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7185 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7186 
7187 -- 4262811 Variables ------------------------------------------------------------------------------------------
7188 l_entered_amt_idx             NUMBER;
7189 l_accted_amt_idx              NUMBER;
7190 l_acc_rev_flag                VARCHAR2(1);
7191 l_accrual_line_num            NUMBER;
7192 l_tmp_amt                     NUMBER;
7193 l_acc_rev_natural_side_code   VARCHAR2(1);
7194 
7195 l_num_entries                 NUMBER;
7196 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7197 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7198 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7199 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7200 l_recog_line_1                NUMBER;
7201 l_recog_line_2                NUMBER;
7202 
7203 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7204 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7205 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7206 
7207 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7208 
7209 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7210 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7211 
7212 ---------------------------------------------------------------------------------------------------------------
7213 
7214 
7215 --
7216 -- bulk performance
7217 --
7218 l_balance_type_code           VARCHAR2(1);
7219 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7220 l_log_module                  VARCHAR2(240);
7221 
7222 --
7223 -- Upgrade strategy
7224 --
7225 l_actual_upg_option           VARCHAR2(1);
7226 l_enc_upg_option           VARCHAR2(1);
7227 
7228 --
7229 BEGIN
7230 --
7231 IF g_log_enabled THEN
7232       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_46';
7233 END IF;
7234 --
7235 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7236 
7237       trace
7238          (p_msg      => 'BEGIN of AcctLineType_46'
7239          ,p_level    => C_LEVEL_PROCEDURE
7240          ,p_module   => l_log_module);
7241 
7242 END IF;
7243 --
7244 l_component_type             := 'AMB_JLT';
7245 l_component_code             := 'AAP';
7246 l_component_type_code        := 'S';
7247 l_component_appl_id          :=  555;
7248 l_amb_context_code           := 'DEFAULT';
7249 l_entity_code                := 'PURCHASING';
7250 l_event_class_code           := 'RECEIVE';
7251 l_event_type_code            := 'ADJUST_RECEIVE';
7252 l_line_definition_owner_code := 'S';
7253 l_line_definition_code       := 'ADJUST_RECEIVE';
7254 --
7255 l_balance_type_code          := 'A';
7256 l_segment                     := NULL;
7257 l_ccid                        := NULL;
7258 l_adr_transaction_coa_id      := NULL;
7259 l_adr_accounting_coa_id       := NULL;
7260 l_adr_flexfield_segment_code  := NULL;
7261 l_adr_flex_value_set_id       := NULL;
7262 l_adr_value_type_code         := NULL;
7263 l_adr_value_combination_id    := NULL;
7264 l_adr_value_segment_code      := NULL;
7265 
7266 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7267 l_bflow_class_code           := '';    -- 4219869 Business Flow
7268 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7269 l_budgetary_control_flag     := 'N';
7270 
7271 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7272 l_bflow_applied_to_amt       := NULL; -- 5132302
7273 l_entered_amt_idx            := NULL;          -- 4262811
7274 l_accted_amt_idx             := NULL;          -- 4262811
7275 l_acc_rev_flag               := NULL;          -- 4262811
7276 l_accrual_line_num           := NULL;          -- 4262811
7277 l_tmp_amt                    := NULL;          -- 4262811
7278 --
7279  
7280 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7281     l_balance_type_code <> 'B' THEN
7282 IF NVL(p_source_2,'
7283 ') =  'AAP'
7284  THEN 
7285 
7286    --
7287    XLA_AE_LINES_PKG.SetNewLine;
7288 
7289    p_balance_type_code          := l_balance_type_code;
7290    -- set the flag so later we will know whether the gain loss line needs to be created
7291    
7292    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7296    --
7293      p_actual_flag :='A';
7294    END IF;
7295 
7297    -- bulk performance
7298    --
7299    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7300                                       p_header_num   => 0); -- 4262811
7301    --
7302    -- set accounting line options
7303    --
7304    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7305            p_natural_side_code          => 'D'
7306          , p_gain_or_loss_flag          => 'N'
7307          , p_gl_transfer_mode_code      => 'D'
7308          , p_acct_entry_type_code       => 'A'
7309          , p_switch_side_flag           => 'Y'
7310          , p_merge_duplicate_code       => 'W'
7311          );
7312    --
7313    l_acc_rev_natural_side_code := 'C';  -- 4262811
7314    -- 
7315    --
7316    -- set accounting line type info
7317    --
7318    xla_ae_lines_pkg.SetAcctLineType
7319       (p_component_type             => l_component_type
7320       ,p_event_type_code            => l_event_type_code
7321       ,p_line_definition_owner_code => l_line_definition_owner_code
7322       ,p_line_definition_code       => l_line_definition_code
7323       ,p_accounting_line_code       => l_component_code
7324       ,p_accounting_line_type_code  => l_component_type_code
7325       ,p_accounting_line_appl_id    => l_component_appl_id
7326       ,p_amb_context_code           => l_amb_context_code
7327       ,p_entity_code                => l_entity_code
7328       ,p_event_class_code           => l_event_class_code);
7329    --
7330    -- set accounting class
7331    --
7332    xla_ae_lines_pkg.SetAcctClass(
7333            p_accounting_class_code  => 'AAP'
7334          , p_ae_header_id           => l_ae_header_id
7335          );
7336 
7337    --
7338    -- set rounding class
7339    --
7340    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7341                       'AAP';
7342 
7343    --
7344    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7345    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7346    --
7347    -- bulk performance
7348    --
7349    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7350 
7351    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7352       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7353 
7354    -- 4955764
7355    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7356       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7357 
7358    -- 4458381 Public Sector Enh
7359    
7360    --
7361    -- set accounting attributes for the line type
7362    --
7363    l_entered_amt_idx := 3;
7364    l_accted_amt_idx  := 8;
7365    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7366    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7367    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
7368    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7369    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
7370    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7371    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
7372    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7373    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
7374    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7375    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
7376    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7377    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
7378    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7379    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
7380    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
7381    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
7382 
7383    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7384    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7385 
7386    ---------------------------------------------------------------------------------------------------------------
7387    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7388    ---------------------------------------------------------------------------------------------------------------
7389    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7390 
7391    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7392    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7393 
7394    IF xla_accounting_cache_pkg.GetValueChar
7395          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7396          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7397    AND l_bflow_method_code = 'PRIOR_ENTRY'
7398 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7399    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7400          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7401        )
7402    THEN
7403          xla_ae_lines_pkg.BflowUpgEntry
7404            (p_business_method_code    => l_bflow_method_code
7408       NULL;
7405            ,p_business_class_code     => l_bflow_class_code
7406            ,p_balance_type            => l_balance_type_code);
7407    ELSE
7409 -- No business flow processing for business flow method of NONE.
7410    END IF;
7411 
7412    --
7413    -- call analytical criteria
7414    --
7415    
7416    --
7417    -- call description
7418    --
7419    -- No description or it is inherited.
7420    --
7421    -- call ADRs
7422    -- Bug 4922099
7423    --
7424    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7425         (NVL(l_actual_upg_option, 'N') = 'O') OR
7426         (NVL(l_enc_upg_option, 'N') = 'O')
7427       )
7428    THEN
7429    NULL;
7430    --
7431    --
7432    
7433   l_ccid := AcctDerRule_2(
7434            p_application_id           => p_application_id
7435          , p_ae_header_id             => l_ae_header_id 
7436 , p_source_1 => p_source_1
7437 , p_source_2 => p_source_2
7438          , x_transaction_coa_id       => l_adr_transaction_coa_id
7439          , x_accounting_coa_id        => l_adr_accounting_coa_id
7440          , x_value_type_code          => l_adr_value_type_code
7441          , p_side                     => 'NA'
7442    );
7443 
7444    xla_ae_lines_pkg.set_ccid(
7445     p_code_combination_id          => l_ccid
7446   , p_value_type_code              => l_adr_value_type_code
7447   , p_transaction_coa_id           => l_adr_transaction_coa_id
7448   , p_accounting_coa_id            => l_adr_accounting_coa_id
7449   , p_adr_code                     => 'AAP'
7450   , p_adr_type_code                => 'S'
7451   , p_component_type               => l_component_type
7452   , p_component_code               => l_component_code
7453   , p_component_type_code          => l_component_type_code
7454   , p_component_appl_id            => l_component_appl_id
7455   , p_amb_context_code             => l_amb_context_code
7456   , p_side                         => 'NA'
7457   );
7458 
7459 
7460    --
7461    --
7462    END IF;
7463    --
7464    -- Bug 4922099
7465    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7466           (NVL(l_enc_upg_option, 'N') = 'O')
7467         ) AND
7468         (l_bflow_method_code = 'PRIOR_ENTRY')
7469       )
7470    THEN
7471       IF
7472       --
7473       1 = 2
7474       --
7475       THEN
7476       xla_accounting_err_pkg.build_message
7477                                     (p_appli_s_name            => 'XLA'
7478                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7479                                     ,p_token_1                 => 'LINE_NUMBER'
7480                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7481                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7482                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7483                                                                              l_component_type
7484                                                                             ,l_component_code
7485                                                                             ,l_component_type_code
7486                                                                             ,l_component_appl_id
7487                                                                             ,l_amb_context_code
7488                                                                             ,l_entity_code
7489                                                                             ,l_event_class_code
7490                                                                            )
7491                                     ,p_token_3                 => 'OWNER'
7492                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7493                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7494                                                                           ,p_lookup_code    => l_component_type_code
7495                                                                          )
7496                                     ,p_token_4                 => 'PRODUCT_NAME'
7497                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7498                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7499                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7500                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7501                                     ,p_ae_header_id            =>  NULL
7502                                        );
7503 
7504         IF (C_LEVEL_ERROR>= g_log_level) THEN
7505                  trace
7506                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7507                       ,p_level    => C_LEVEL_ERROR
7508                       ,p_module   => l_log_module);
7509         END IF;
7510       END IF;
7511    END IF;
7512    --
7513    --
7514    ------------------------------------------------------------------------------------------------
7515    -- 4219869 Business Flow
7516    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7517    -- Prior Entry.  Currently, the following code is always generated.
7521    ------------------------------------------------------------------------------------
7518    ------------------------------------------------------------------------------------------------
7519    XLA_AE_LINES_PKG.ValidateCurrentLine;
7520 
7522    -- 4219869 Business Flow
7523    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7524    ------------------------------------------------------------------------------------
7525    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7526 
7527    ----------------------------------------------------------------------------------
7528    -- 4219869 Business Flow
7529    -- Update journal entry status -- Need to generate this within IF <condition>
7530    ----------------------------------------------------------------------------------
7531    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7532          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7533          ,p_balance_type_code => l_balance_type_code
7534          );
7535 
7536    -------------------------------------------------------------------------------------------
7537    -- 4262811 - Generate the Accrual Reversal lines
7538    -------------------------------------------------------------------------------------------
7539    BEGIN
7540       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7541                               (g_array_event(p_event_id).array_value_num('header_index'));
7542       IF l_acc_rev_flag IS NULL THEN
7543          l_acc_rev_flag := 'N';
7544       END IF;
7545    EXCEPTION
7546       WHEN OTHERS THEN
7547          l_acc_rev_flag := 'N';
7548    END;
7549    --
7550    IF (l_acc_rev_flag = 'Y') THEN
7551 
7552        -- 4645092  ------------------------------------------------------------------------------
7553        -- To allow MPA report to determine if it should generate report process
7554        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7555        ------------------------------------------------------------------------------------------
7556 
7557        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7558        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7559    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
7560    -- call ADRs
7561    -- Bug 4922099
7562    --
7563    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7564         (NVL(l_actual_upg_option, 'N') = 'O') OR
7565         (NVL(l_enc_upg_option, 'N') = 'O')
7566       )
7567    THEN
7568    NULL;
7569    --
7570    --
7571    
7572   l_ccid := AcctDerRule_2(
7573            p_application_id           => p_application_id
7574          , p_ae_header_id             => l_ae_header_id 
7575 , p_source_1 => p_source_1
7576 , p_source_2 => p_source_2
7577          , x_transaction_coa_id       => l_adr_transaction_coa_id
7578          , x_accounting_coa_id        => l_adr_accounting_coa_id
7579          , x_value_type_code          => l_adr_value_type_code
7580          , p_side                     => 'NA'
7581    );
7582 
7583    xla_ae_lines_pkg.set_ccid(
7584     p_code_combination_id          => l_ccid
7585   , p_value_type_code              => l_adr_value_type_code
7586   , p_transaction_coa_id           => l_adr_transaction_coa_id
7587   , p_accounting_coa_id            => l_adr_accounting_coa_id
7588   , p_adr_code                     => 'AAP'
7589   , p_adr_type_code                => 'S'
7590   , p_component_type               => l_component_type
7591   , p_component_code               => l_component_code
7592   , p_component_type_code          => l_component_type_code
7593   , p_component_appl_id            => l_component_appl_id
7594   , p_amb_context_code             => l_amb_context_code
7595   , p_side                         => 'NA'
7596   );
7597 
7598 
7599    --
7600    --
7601    END IF;
7602 
7603        --
7604        -- Update the line information that should be overwritten
7605        --
7606        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7607                                          p_header_num   => 1);
7608        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7609 
7610        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7611 
7612        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7613           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7614        END IF;
7615 
7616       --
7617       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7618       --
7619       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7620           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7621       ELSE
7622           ---------------------------------------------------------------------------------------------------
7623           -- 4262811a Switch Sign
7624           ---------------------------------------------------------------------------------------------------
7625           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7626           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7627                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7631           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7628           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7629                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7630           -- 5132302
7632                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7633 
7634       END IF;
7635 
7636       -- 4955764
7637       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7638       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7639 
7640 
7641       XLA_AE_LINES_PKG.ValidateCurrentLine;
7642       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7643 
7644       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7645                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7646                ,p_balance_type_code => l_balance_type_code);
7647 
7648    END IF;
7649 
7650    -----------------------------------------------------------------------------------------
7651    -- 4262811 Multiperiod Accounting
7652    -----------------------------------------------------------------------------------------
7653      -- No MPA option is assigned.
7654 
7655 
7656 END IF;
7657 END IF;
7658 --
7659 
7660 --
7661 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7662    trace
7663       (p_msg      => 'END of AcctLineType_46'
7664       ,p_level    => C_LEVEL_PROCEDURE
7665       ,p_module   => l_log_module);
7666 END IF;
7667 --
7668 EXCEPTION
7669   WHEN xla_exceptions_pkg.application_exception THEN
7670       RAISE;
7671   WHEN OTHERS THEN
7672        xla_exceptions_pkg.raise_message
7673            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_46');
7674 END AcctLineType_46;
7675 --
7676 
7677 ---------------------------------------
7678 --
7679 -- PRIVATE FUNCTION
7680 --         AcctLineType_47
7681 --
7682 ---------------------------------------
7683 PROCEDURE AcctLineType_47 (
7684   p_application_id        IN NUMBER
7685  ,p_event_id              IN NUMBER
7686  ,p_calculate_acctd_flag  IN VARCHAR2
7687  ,p_calculate_g_l_flag    IN VARCHAR2
7688  ,p_actual_flag           IN OUT VARCHAR2
7689  ,p_balance_type_code     OUT VARCHAR2
7690  ,p_gain_or_loss_ref      OUT VARCHAR2
7691  
7692 --Transaction Account
7693  , p_source_1            IN NUMBER
7694 --Journal Line Type
7695  , p_source_2            IN VARCHAR2
7696 --Entered Amount
7697  , p_source_3            IN NUMBER
7698 --First Distribution Identifier
7699  , p_source_5            IN NUMBER
7700 --Distribution Type
7701  , p_source_6            IN VARCHAR2
7702 --Currency Code
7703  , p_source_7            IN VARCHAR2
7704 --Currency Conversion Date
7705  , p_source_8            IN DATE
7706 --Currency Conversion Rate
7707  , p_source_9            IN NUMBER
7708 --Currency Conversion Type
7709  , p_source_10            IN VARCHAR2
7710 --Accounted Amount
7711  , p_source_11            IN NUMBER
7712 )
7713 IS
7714 
7715 l_component_type              VARCHAR2(80);
7716 l_component_code              VARCHAR2(30);
7717 l_component_type_code         VARCHAR2(1);
7718 l_component_appl_id           INTEGER;
7719 l_amb_context_code            VARCHAR2(30);
7720 l_entity_code                 VARCHAR2(30);
7721 l_event_class_code            VARCHAR2(30);
7722 l_ae_header_id                NUMBER;
7723 l_event_type_code             VARCHAR2(30);
7724 l_line_definition_code        VARCHAR2(30);
7725 l_line_definition_owner_code  VARCHAR2(1);
7726 --
7727 -- adr variables
7728 l_segment                     VARCHAR2(30);
7729 l_ccid                        NUMBER;
7730 l_adr_transaction_coa_id      NUMBER;
7731 l_adr_accounting_coa_id       NUMBER;
7732 l_adr_flexfield_segment_code  VARCHAR2(30);
7733 l_adr_flex_value_set_id       NUMBER;
7734 l_adr_value_type_code         VARCHAR2(30);
7735 l_adr_value_combination_id    NUMBER;
7736 l_adr_value_segment_code      VARCHAR2(30);
7737 
7738 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7739 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7740 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7741 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7742 
7743 -- 4262811 Variables ------------------------------------------------------------------------------------------
7744 l_entered_amt_idx             NUMBER;
7745 l_accted_amt_idx              NUMBER;
7746 l_acc_rev_flag                VARCHAR2(1);
7747 l_accrual_line_num            NUMBER;
7748 l_tmp_amt                     NUMBER;
7749 l_acc_rev_natural_side_code   VARCHAR2(1);
7750 
7751 l_num_entries                 NUMBER;
7752 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7753 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7754 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7755 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7756 l_recog_line_1                NUMBER;
7757 l_recog_line_2                NUMBER;
7758 
7759 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7763 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7760 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7761 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7762 
7764 
7765 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7766 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7767 
7768 ---------------------------------------------------------------------------------------------------------------
7769 
7770 
7771 --
7772 -- bulk performance
7773 --
7774 l_balance_type_code           VARCHAR2(1);
7775 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7776 l_log_module                  VARCHAR2(240);
7777 
7778 --
7779 -- Upgrade strategy
7780 --
7781 l_actual_upg_option           VARCHAR2(1);
7782 l_enc_upg_option           VARCHAR2(1);
7783 
7784 --
7785 BEGIN
7786 --
7787 IF g_log_enabled THEN
7788       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_47';
7789 END IF;
7790 --
7791 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7792 
7793       trace
7794          (p_msg      => 'BEGIN of AcctLineType_47'
7795          ,p_level    => C_LEVEL_PROCEDURE
7796          ,p_module   => l_log_module);
7797 
7798 END IF;
7799 --
7800 l_component_type             := 'AMB_JLT';
7801 l_component_code             := 'AAP';
7802 l_component_type_code        := 'S';
7803 l_component_appl_id          :=  555;
7804 l_amb_context_code           := 'DEFAULT';
7805 l_entity_code                := 'PURCHASING';
7806 l_event_class_code           := 'RECEIVE';
7807 l_event_type_code            := 'RECEIVE';
7808 l_line_definition_owner_code := 'S';
7809 l_line_definition_code       := 'RECEIVE';
7810 --
7811 l_balance_type_code          := 'A';
7812 l_segment                     := NULL;
7813 l_ccid                        := NULL;
7814 l_adr_transaction_coa_id      := NULL;
7815 l_adr_accounting_coa_id       := NULL;
7816 l_adr_flexfield_segment_code  := NULL;
7817 l_adr_flex_value_set_id       := NULL;
7818 l_adr_value_type_code         := NULL;
7819 l_adr_value_combination_id    := NULL;
7820 l_adr_value_segment_code      := NULL;
7821 
7822 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7823 l_bflow_class_code           := '';    -- 4219869 Business Flow
7824 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7825 l_budgetary_control_flag     := 'N';
7826 
7827 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7828 l_bflow_applied_to_amt       := NULL; -- 5132302
7829 l_entered_amt_idx            := NULL;          -- 4262811
7830 l_accted_amt_idx             := NULL;          -- 4262811
7831 l_acc_rev_flag               := NULL;          -- 4262811
7832 l_accrual_line_num           := NULL;          -- 4262811
7833 l_tmp_amt                    := NULL;          -- 4262811
7834 --
7835  
7836 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7837     l_balance_type_code <> 'B' THEN
7838 IF NVL(p_source_2,'
7839 ') =  'AAP'
7840  THEN 
7841 
7842    --
7843    XLA_AE_LINES_PKG.SetNewLine;
7844 
7845    p_balance_type_code          := l_balance_type_code;
7846    -- set the flag so later we will know whether the gain loss line needs to be created
7847    
7848    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7849      p_actual_flag :='A';
7850    END IF;
7851 
7852    --
7853    -- bulk performance
7854    --
7855    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7856                                       p_header_num   => 0); -- 4262811
7857    --
7858    -- set accounting line options
7859    --
7860    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7861            p_natural_side_code          => 'D'
7862          , p_gain_or_loss_flag          => 'N'
7863          , p_gl_transfer_mode_code      => 'D'
7864          , p_acct_entry_type_code       => 'A'
7865          , p_switch_side_flag           => 'Y'
7866          , p_merge_duplicate_code       => 'W'
7867          );
7868    --
7869    l_acc_rev_natural_side_code := 'C';  -- 4262811
7870    -- 
7871    --
7872    -- set accounting line type info
7873    --
7874    xla_ae_lines_pkg.SetAcctLineType
7875       (p_component_type             => l_component_type
7876       ,p_event_type_code            => l_event_type_code
7877       ,p_line_definition_owner_code => l_line_definition_owner_code
7878       ,p_line_definition_code       => l_line_definition_code
7879       ,p_accounting_line_code       => l_component_code
7880       ,p_accounting_line_type_code  => l_component_type_code
7881       ,p_accounting_line_appl_id    => l_component_appl_id
7882       ,p_amb_context_code           => l_amb_context_code
7883       ,p_entity_code                => l_entity_code
7884       ,p_event_class_code           => l_event_class_code);
7885    --
7886    -- set accounting class
7887    --
7888    xla_ae_lines_pkg.SetAcctClass(
7889            p_accounting_class_code  => 'AAP'
7890          , p_ae_header_id           => l_ae_header_id
7891          );
7892 
7893    --
7894    -- set rounding class
7895    --
7899    --
7896    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7897                       'AAP';
7898 
7900    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7901    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7902    --
7903    -- bulk performance
7904    --
7905    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7906 
7907    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7908       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7909 
7910    -- 4955764
7911    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7912       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7913 
7914    -- 4458381 Public Sector Enh
7915    
7916    --
7917    -- set accounting attributes for the line type
7918    --
7919    l_entered_amt_idx := 3;
7920    l_accted_amt_idx  := 8;
7921    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7922    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7923    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
7924    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7925    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
7926    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7927    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
7928    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7929    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
7930    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7931    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
7932    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7933    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
7934    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7935    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
7936    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
7937    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
7938 
7939    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7940    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7941 
7942    ---------------------------------------------------------------------------------------------------------------
7943    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7944    ---------------------------------------------------------------------------------------------------------------
7945    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7946 
7947    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7948    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7949 
7950    IF xla_accounting_cache_pkg.GetValueChar
7951          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7952          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7953    AND l_bflow_method_code = 'PRIOR_ENTRY'
7954 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7955    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7956          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7957        )
7958    THEN
7959          xla_ae_lines_pkg.BflowUpgEntry
7960            (p_business_method_code    => l_bflow_method_code
7961            ,p_business_class_code     => l_bflow_class_code
7962            ,p_balance_type            => l_balance_type_code);
7963    ELSE
7964       NULL;
7965 -- No business flow processing for business flow method of NONE.
7966    END IF;
7967 
7968    --
7969    -- call analytical criteria
7970    --
7971    
7972    --
7973    -- call description
7974    --
7975    -- No description or it is inherited.
7976    --
7977    -- call ADRs
7978    -- Bug 4922099
7979    --
7980    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7981         (NVL(l_actual_upg_option, 'N') = 'O') OR
7982         (NVL(l_enc_upg_option, 'N') = 'O')
7983       )
7984    THEN
7985    NULL;
7986    --
7987    --
7988    
7989   l_ccid := AcctDerRule_2(
7990            p_application_id           => p_application_id
7991          , p_ae_header_id             => l_ae_header_id 
7992 , p_source_1 => p_source_1
7993 , p_source_2 => p_source_2
7994          , x_transaction_coa_id       => l_adr_transaction_coa_id
7995          , x_accounting_coa_id        => l_adr_accounting_coa_id
7996          , x_value_type_code          => l_adr_value_type_code
7997          , p_side                     => 'NA'
7998    );
7999 
8000    xla_ae_lines_pkg.set_ccid(
8001     p_code_combination_id          => l_ccid
8002   , p_value_type_code              => l_adr_value_type_code
8003   , p_transaction_coa_id           => l_adr_transaction_coa_id
8004   , p_accounting_coa_id            => l_adr_accounting_coa_id
8005   , p_adr_code                     => 'AAP'
8006   , p_adr_type_code                => 'S'
8007   , p_component_type               => l_component_type
8008   , p_component_code               => l_component_code
8012   , p_side                         => 'NA'
8009   , p_component_type_code          => l_component_type_code
8010   , p_component_appl_id            => l_component_appl_id
8011   , p_amb_context_code             => l_amb_context_code
8013   );
8014 
8015 
8016    --
8017    --
8018    END IF;
8019    --
8020    -- Bug 4922099
8021    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8022           (NVL(l_enc_upg_option, 'N') = 'O')
8023         ) AND
8024         (l_bflow_method_code = 'PRIOR_ENTRY')
8025       )
8026    THEN
8027       IF
8028       --
8029       1 = 2
8030       --
8031       THEN
8032       xla_accounting_err_pkg.build_message
8033                                     (p_appli_s_name            => 'XLA'
8034                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8035                                     ,p_token_1                 => 'LINE_NUMBER'
8036                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8037                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8038                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8039                                                                              l_component_type
8040                                                                             ,l_component_code
8041                                                                             ,l_component_type_code
8042                                                                             ,l_component_appl_id
8043                                                                             ,l_amb_context_code
8044                                                                             ,l_entity_code
8045                                                                             ,l_event_class_code
8046                                                                            )
8047                                     ,p_token_3                 => 'OWNER'
8048                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8049                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8050                                                                           ,p_lookup_code    => l_component_type_code
8051                                                                          )
8052                                     ,p_token_4                 => 'PRODUCT_NAME'
8053                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8054                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8055                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8056                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8057                                     ,p_ae_header_id            =>  NULL
8058                                        );
8059 
8060         IF (C_LEVEL_ERROR>= g_log_level) THEN
8061                  trace
8062                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8063                       ,p_level    => C_LEVEL_ERROR
8064                       ,p_module   => l_log_module);
8065         END IF;
8066       END IF;
8067    END IF;
8068    --
8069    --
8070    ------------------------------------------------------------------------------------------------
8071    -- 4219869 Business Flow
8072    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8073    -- Prior Entry.  Currently, the following code is always generated.
8074    ------------------------------------------------------------------------------------------------
8075    XLA_AE_LINES_PKG.ValidateCurrentLine;
8076 
8077    ------------------------------------------------------------------------------------
8078    -- 4219869 Business Flow
8079    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8080    ------------------------------------------------------------------------------------
8081    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8082 
8083    ----------------------------------------------------------------------------------
8084    -- 4219869 Business Flow
8085    -- Update journal entry status -- Need to generate this within IF <condition>
8086    ----------------------------------------------------------------------------------
8087    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8088          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8089          ,p_balance_type_code => l_balance_type_code
8090          );
8091 
8092    -------------------------------------------------------------------------------------------
8093    -- 4262811 - Generate the Accrual Reversal lines
8094    -------------------------------------------------------------------------------------------
8095    BEGIN
8096       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8097                               (g_array_event(p_event_id).array_value_num('header_index'));
8098       IF l_acc_rev_flag IS NULL THEN
8099          l_acc_rev_flag := 'N';
8100       END IF;
8101    EXCEPTION
8102       WHEN OTHERS THEN
8103          l_acc_rev_flag := 'N';
8104    END;
8105    --
8106    IF (l_acc_rev_flag = 'Y') THEN
8107 
8108        -- 4645092  ------------------------------------------------------------------------------
8112 
8109        -- To allow MPA report to determine if it should generate report process
8110        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8111        ------------------------------------------------------------------------------------------
8113        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8114        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8115    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
8116    -- call ADRs
8117    -- Bug 4922099
8118    --
8119    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8120         (NVL(l_actual_upg_option, 'N') = 'O') OR
8121         (NVL(l_enc_upg_option, 'N') = 'O')
8122       )
8123    THEN
8124    NULL;
8125    --
8126    --
8127    
8128   l_ccid := AcctDerRule_2(
8129            p_application_id           => p_application_id
8130          , p_ae_header_id             => l_ae_header_id 
8131 , p_source_1 => p_source_1
8132 , p_source_2 => p_source_2
8133          , x_transaction_coa_id       => l_adr_transaction_coa_id
8134          , x_accounting_coa_id        => l_adr_accounting_coa_id
8135          , x_value_type_code          => l_adr_value_type_code
8136          , p_side                     => 'NA'
8137    );
8138 
8139    xla_ae_lines_pkg.set_ccid(
8140     p_code_combination_id          => l_ccid
8141   , p_value_type_code              => l_adr_value_type_code
8142   , p_transaction_coa_id           => l_adr_transaction_coa_id
8143   , p_accounting_coa_id            => l_adr_accounting_coa_id
8144   , p_adr_code                     => 'AAP'
8145   , p_adr_type_code                => 'S'
8146   , p_component_type               => l_component_type
8147   , p_component_code               => l_component_code
8148   , p_component_type_code          => l_component_type_code
8149   , p_component_appl_id            => l_component_appl_id
8150   , p_amb_context_code             => l_amb_context_code
8151   , p_side                         => 'NA'
8152   );
8153 
8154 
8155    --
8156    --
8157    END IF;
8158 
8159        --
8160        -- Update the line information that should be overwritten
8161        --
8162        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8163                                          p_header_num   => 1);
8164        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8165 
8166        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8167 
8168        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8169           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8170        END IF;
8171 
8172       --
8173       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8174       --
8175       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8176           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8177       ELSE
8178           ---------------------------------------------------------------------------------------------------
8179           -- 4262811a Switch Sign
8180           ---------------------------------------------------------------------------------------------------
8181           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8182           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8183                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8184           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8185                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8186           -- 5132302
8187           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8188                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8189 
8190       END IF;
8191 
8192       -- 4955764
8193       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8194       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8195 
8196 
8197       XLA_AE_LINES_PKG.ValidateCurrentLine;
8198       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8199 
8200       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8201                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8202                ,p_balance_type_code => l_balance_type_code);
8203 
8204    END IF;
8205 
8206    -----------------------------------------------------------------------------------------
8207    -- 4262811 Multiperiod Accounting
8208    -----------------------------------------------------------------------------------------
8209      -- No MPA option is assigned.
8210 
8211 
8212 END IF;
8213 END IF;
8214 --
8215 
8216 --
8217 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8218    trace
8219       (p_msg      => 'END of AcctLineType_47'
8220       ,p_level    => C_LEVEL_PROCEDURE
8221       ,p_module   => l_log_module);
8222 END IF;
8223 --
8224 EXCEPTION
8225   WHEN xla_exceptions_pkg.application_exception THEN
8226       RAISE;
8227   WHEN OTHERS THEN
8231 --
8228        xla_exceptions_pkg.raise_message
8229            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_47');
8230 END AcctLineType_47;
8232 
8233 ---------------------------------------
8234 --
8235 -- PRIVATE FUNCTION
8236 --         AcctLineType_48
8237 --
8238 ---------------------------------------
8239 PROCEDURE AcctLineType_48 (
8240   p_application_id        IN NUMBER
8241  ,p_event_id              IN NUMBER
8242  ,p_calculate_acctd_flag  IN VARCHAR2
8243  ,p_calculate_g_l_flag    IN VARCHAR2
8244  ,p_actual_flag           IN OUT VARCHAR2
8245  ,p_balance_type_code     OUT VARCHAR2
8246  ,p_gain_or_loss_ref      OUT VARCHAR2
8247  
8248 --Transaction Account
8249  , p_source_1            IN NUMBER
8250 --Journal Line Type
8251  , p_source_2            IN VARCHAR2
8252 --Entered Amount
8253  , p_source_3            IN NUMBER
8254 --First Distribution Identifier
8255  , p_source_5            IN NUMBER
8256 --Distribution Type
8257  , p_source_6            IN VARCHAR2
8258 --Currency Code
8259  , p_source_7            IN VARCHAR2
8260 --Currency Conversion Date
8261  , p_source_8            IN DATE
8262 --Currency Conversion Rate
8263  , p_source_9            IN NUMBER
8264 --Currency Conversion Type
8265  , p_source_10            IN VARCHAR2
8266 --Accounted Amount
8267  , p_source_11            IN NUMBER
8268 )
8269 IS
8270 
8271 l_component_type              VARCHAR2(80);
8272 l_component_code              VARCHAR2(30);
8273 l_component_type_code         VARCHAR2(1);
8274 l_component_appl_id           INTEGER;
8275 l_amb_context_code            VARCHAR2(30);
8276 l_entity_code                 VARCHAR2(30);
8277 l_event_class_code            VARCHAR2(30);
8278 l_ae_header_id                NUMBER;
8279 l_event_type_code             VARCHAR2(30);
8280 l_line_definition_code        VARCHAR2(30);
8281 l_line_definition_owner_code  VARCHAR2(1);
8282 --
8283 -- adr variables
8284 l_segment                     VARCHAR2(30);
8285 l_ccid                        NUMBER;
8286 l_adr_transaction_coa_id      NUMBER;
8287 l_adr_accounting_coa_id       NUMBER;
8288 l_adr_flexfield_segment_code  VARCHAR2(30);
8289 l_adr_flex_value_set_id       NUMBER;
8290 l_adr_value_type_code         VARCHAR2(30);
8291 l_adr_value_combination_id    NUMBER;
8292 l_adr_value_segment_code      VARCHAR2(30);
8293 
8294 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8295 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8296 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8297 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8298 
8299 -- 4262811 Variables ------------------------------------------------------------------------------------------
8300 l_entered_amt_idx             NUMBER;
8301 l_accted_amt_idx              NUMBER;
8302 l_acc_rev_flag                VARCHAR2(1);
8303 l_accrual_line_num            NUMBER;
8304 l_tmp_amt                     NUMBER;
8305 l_acc_rev_natural_side_code   VARCHAR2(1);
8306 
8307 l_num_entries                 NUMBER;
8308 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8309 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8310 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8311 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8312 l_recog_line_1                NUMBER;
8313 l_recog_line_2                NUMBER;
8314 
8315 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8316 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8317 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8318 
8319 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8320 
8321 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8322 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8323 
8324 ---------------------------------------------------------------------------------------------------------------
8325 
8326 
8327 --
8328 -- bulk performance
8329 --
8330 l_balance_type_code           VARCHAR2(1);
8331 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8332 l_log_module                  VARCHAR2(240);
8333 
8334 --
8335 -- Upgrade strategy
8336 --
8337 l_actual_upg_option           VARCHAR2(1);
8338 l_enc_upg_option           VARCHAR2(1);
8339 
8340 --
8341 BEGIN
8342 --
8343 IF g_log_enabled THEN
8344       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_48';
8345 END IF;
8346 --
8347 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8348 
8349       trace
8350          (p_msg      => 'BEGIN of AcctLineType_48'
8351          ,p_level    => C_LEVEL_PROCEDURE
8352          ,p_module   => l_log_module);
8353 
8354 END IF;
8355 --
8356 l_component_type             := 'AMB_JLT';
8357 l_component_code             := 'AAP';
8358 l_component_type_code        := 'S';
8359 l_component_appl_id          :=  555;
8360 l_amb_context_code           := 'DEFAULT';
8361 l_entity_code                := 'PURCHASING';
8362 l_event_class_code           := 'RECEIVE';
8363 l_event_type_code            := 'LOG_RECEIVE';
8364 l_line_definition_owner_code := 'S';
8368 l_segment                     := NULL;
8365 l_line_definition_code       := 'LOG_RECEIVE';
8366 --
8367 l_balance_type_code          := 'A';
8369 l_ccid                        := NULL;
8370 l_adr_transaction_coa_id      := NULL;
8371 l_adr_accounting_coa_id       := NULL;
8372 l_adr_flexfield_segment_code  := NULL;
8373 l_adr_flex_value_set_id       := NULL;
8374 l_adr_value_type_code         := NULL;
8375 l_adr_value_combination_id    := NULL;
8376 l_adr_value_segment_code      := NULL;
8377 
8378 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8379 l_bflow_class_code           := '';    -- 4219869 Business Flow
8380 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8381 l_budgetary_control_flag     := 'N';
8382 
8383 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8384 l_bflow_applied_to_amt       := NULL; -- 5132302
8385 l_entered_amt_idx            := NULL;          -- 4262811
8386 l_accted_amt_idx             := NULL;          -- 4262811
8387 l_acc_rev_flag               := NULL;          -- 4262811
8388 l_accrual_line_num           := NULL;          -- 4262811
8389 l_tmp_amt                    := NULL;          -- 4262811
8390 --
8391  
8392 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8393     l_balance_type_code <> 'B' THEN
8394 IF NVL(p_source_2,'
8395 ') =  'AAP'
8396  THEN 
8397 
8398    --
8399    XLA_AE_LINES_PKG.SetNewLine;
8400 
8401    p_balance_type_code          := l_balance_type_code;
8402    -- set the flag so later we will know whether the gain loss line needs to be created
8403    
8404    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8405      p_actual_flag :='A';
8406    END IF;
8407 
8408    --
8409    -- bulk performance
8410    --
8411    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8412                                       p_header_num   => 0); -- 4262811
8413    --
8414    -- set accounting line options
8415    --
8416    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8417            p_natural_side_code          => 'D'
8418          , p_gain_or_loss_flag          => 'N'
8419          , p_gl_transfer_mode_code      => 'D'
8420          , p_acct_entry_type_code       => 'A'
8421          , p_switch_side_flag           => 'Y'
8422          , p_merge_duplicate_code       => 'W'
8423          );
8424    --
8425    l_acc_rev_natural_side_code := 'C';  -- 4262811
8426    -- 
8427    --
8428    -- set accounting line type info
8429    --
8430    xla_ae_lines_pkg.SetAcctLineType
8431       (p_component_type             => l_component_type
8432       ,p_event_type_code            => l_event_type_code
8433       ,p_line_definition_owner_code => l_line_definition_owner_code
8434       ,p_line_definition_code       => l_line_definition_code
8435       ,p_accounting_line_code       => l_component_code
8436       ,p_accounting_line_type_code  => l_component_type_code
8437       ,p_accounting_line_appl_id    => l_component_appl_id
8438       ,p_amb_context_code           => l_amb_context_code
8439       ,p_entity_code                => l_entity_code
8440       ,p_event_class_code           => l_event_class_code);
8441    --
8442    -- set accounting class
8443    --
8444    xla_ae_lines_pkg.SetAcctClass(
8445            p_accounting_class_code  => 'AAP'
8446          , p_ae_header_id           => l_ae_header_id
8447          );
8448 
8449    --
8450    -- set rounding class
8451    --
8452    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8453                       'AAP';
8454 
8455    --
8456    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8457    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8458    --
8459    -- bulk performance
8460    --
8461    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8462 
8463    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8464       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8465 
8466    -- 4955764
8467    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8468       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8469 
8470    -- 4458381 Public Sector Enh
8471    
8472    --
8473    -- set accounting attributes for the line type
8474    --
8475    l_entered_amt_idx := 3;
8476    l_accted_amt_idx  := 8;
8477    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
8478    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
8479    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
8480    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
8481    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
8482    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
8483    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
8484    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
8485    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
8486    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
8487    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
8488    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
8492    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
8489    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
8490    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
8491    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
8493    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
8494 
8495    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8496    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8497 
8498    ---------------------------------------------------------------------------------------------------------------
8499    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8500    ---------------------------------------------------------------------------------------------------------------
8501    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8502 
8503    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8504    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8505 
8506    IF xla_accounting_cache_pkg.GetValueChar
8507          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8508          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8509    AND l_bflow_method_code = 'PRIOR_ENTRY'
8510 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8511    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8512          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8513        )
8514    THEN
8515          xla_ae_lines_pkg.BflowUpgEntry
8516            (p_business_method_code    => l_bflow_method_code
8517            ,p_business_class_code     => l_bflow_class_code
8518            ,p_balance_type            => l_balance_type_code);
8519    ELSE
8520       NULL;
8521 -- No business flow processing for business flow method of NONE.
8522    END IF;
8523 
8524    --
8525    -- call analytical criteria
8526    --
8527    
8528    --
8529    -- call description
8530    --
8531    -- No description or it is inherited.
8532    --
8533    -- call ADRs
8534    -- Bug 4922099
8535    --
8536    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8537         (NVL(l_actual_upg_option, 'N') = 'O') OR
8538         (NVL(l_enc_upg_option, 'N') = 'O')
8539       )
8540    THEN
8541    NULL;
8542    --
8543    --
8544    
8545   l_ccid := AcctDerRule_2(
8546            p_application_id           => p_application_id
8547          , p_ae_header_id             => l_ae_header_id 
8548 , p_source_1 => p_source_1
8549 , p_source_2 => p_source_2
8550          , x_transaction_coa_id       => l_adr_transaction_coa_id
8551          , x_accounting_coa_id        => l_adr_accounting_coa_id
8552          , x_value_type_code          => l_adr_value_type_code
8553          , p_side                     => 'NA'
8554    );
8555 
8556    xla_ae_lines_pkg.set_ccid(
8557     p_code_combination_id          => l_ccid
8558   , p_value_type_code              => l_adr_value_type_code
8559   , p_transaction_coa_id           => l_adr_transaction_coa_id
8560   , p_accounting_coa_id            => l_adr_accounting_coa_id
8561   , p_adr_code                     => 'AAP'
8562   , p_adr_type_code                => 'S'
8563   , p_component_type               => l_component_type
8564   , p_component_code               => l_component_code
8565   , p_component_type_code          => l_component_type_code
8566   , p_component_appl_id            => l_component_appl_id
8567   , p_amb_context_code             => l_amb_context_code
8568   , p_side                         => 'NA'
8569   );
8570 
8571 
8572    --
8573    --
8574    END IF;
8575    --
8576    -- Bug 4922099
8577    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8578           (NVL(l_enc_upg_option, 'N') = 'O')
8579         ) AND
8580         (l_bflow_method_code = 'PRIOR_ENTRY')
8581       )
8582    THEN
8583       IF
8584       --
8585       1 = 2
8586       --
8587       THEN
8588       xla_accounting_err_pkg.build_message
8589                                     (p_appli_s_name            => 'XLA'
8590                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8591                                     ,p_token_1                 => 'LINE_NUMBER'
8592                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8593                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8594                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8595                                                                              l_component_type
8596                                                                             ,l_component_code
8597                                                                             ,l_component_type_code
8598                                                                             ,l_component_appl_id
8599                                                                             ,l_amb_context_code
8600                                                                             ,l_entity_code
8601                                                                             ,l_event_class_code
8602                                                                            )
8603                                     ,p_token_3                 => 'OWNER'
8607                                                                          )
8604                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8605                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8606                                                                           ,p_lookup_code    => l_component_type_code
8608                                     ,p_token_4                 => 'PRODUCT_NAME'
8609                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8610                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8611                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8612                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8613                                     ,p_ae_header_id            =>  NULL
8614                                        );
8615 
8616         IF (C_LEVEL_ERROR>= g_log_level) THEN
8617                  trace
8618                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8619                       ,p_level    => C_LEVEL_ERROR
8620                       ,p_module   => l_log_module);
8621         END IF;
8622       END IF;
8623    END IF;
8624    --
8625    --
8626    ------------------------------------------------------------------------------------------------
8627    -- 4219869 Business Flow
8628    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8629    -- Prior Entry.  Currently, the following code is always generated.
8630    ------------------------------------------------------------------------------------------------
8631    XLA_AE_LINES_PKG.ValidateCurrentLine;
8632 
8633    ------------------------------------------------------------------------------------
8634    -- 4219869 Business Flow
8635    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8636    ------------------------------------------------------------------------------------
8637    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8638 
8639    ----------------------------------------------------------------------------------
8640    -- 4219869 Business Flow
8641    -- Update journal entry status -- Need to generate this within IF <condition>
8642    ----------------------------------------------------------------------------------
8643    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8644          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8645          ,p_balance_type_code => l_balance_type_code
8646          );
8647 
8648    -------------------------------------------------------------------------------------------
8649    -- 4262811 - Generate the Accrual Reversal lines
8650    -------------------------------------------------------------------------------------------
8651    BEGIN
8652       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8653                               (g_array_event(p_event_id).array_value_num('header_index'));
8654       IF l_acc_rev_flag IS NULL THEN
8655          l_acc_rev_flag := 'N';
8656       END IF;
8657    EXCEPTION
8658       WHEN OTHERS THEN
8659          l_acc_rev_flag := 'N';
8660    END;
8661    --
8662    IF (l_acc_rev_flag = 'Y') THEN
8663 
8664        -- 4645092  ------------------------------------------------------------------------------
8665        -- To allow MPA report to determine if it should generate report process
8666        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8667        ------------------------------------------------------------------------------------------
8668 
8669        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8670        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8671    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
8672    -- call ADRs
8673    -- Bug 4922099
8674    --
8675    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8676         (NVL(l_actual_upg_option, 'N') = 'O') OR
8677         (NVL(l_enc_upg_option, 'N') = 'O')
8678       )
8679    THEN
8680    NULL;
8681    --
8682    --
8683    
8684   l_ccid := AcctDerRule_2(
8685            p_application_id           => p_application_id
8686          , p_ae_header_id             => l_ae_header_id 
8687 , p_source_1 => p_source_1
8688 , p_source_2 => p_source_2
8689          , x_transaction_coa_id       => l_adr_transaction_coa_id
8690          , x_accounting_coa_id        => l_adr_accounting_coa_id
8691          , x_value_type_code          => l_adr_value_type_code
8692          , p_side                     => 'NA'
8693    );
8694 
8695    xla_ae_lines_pkg.set_ccid(
8696     p_code_combination_id          => l_ccid
8697   , p_value_type_code              => l_adr_value_type_code
8698   , p_transaction_coa_id           => l_adr_transaction_coa_id
8699   , p_accounting_coa_id            => l_adr_accounting_coa_id
8700   , p_adr_code                     => 'AAP'
8701   , p_adr_type_code                => 'S'
8702   , p_component_type               => l_component_type
8703   , p_component_code               => l_component_code
8704   , p_component_type_code          => l_component_type_code
8705   , p_component_appl_id            => l_component_appl_id
8706   , p_amb_context_code             => l_amb_context_code
8710 
8707   , p_side                         => 'NA'
8708   );
8709 
8711    --
8712    --
8713    END IF;
8714 
8715        --
8716        -- Update the line information that should be overwritten
8717        --
8718        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8719                                          p_header_num   => 1);
8720        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8721 
8722        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8723 
8724        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8725           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8726        END IF;
8727 
8728       --
8729       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8730       --
8731       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8732           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8733       ELSE
8734           ---------------------------------------------------------------------------------------------------
8735           -- 4262811a Switch Sign
8736           ---------------------------------------------------------------------------------------------------
8737           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8738           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8739                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8740           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8741                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8742           -- 5132302
8743           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8744                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8745 
8746       END IF;
8747 
8748       -- 4955764
8749       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8750       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8751 
8752 
8753       XLA_AE_LINES_PKG.ValidateCurrentLine;
8754       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8755 
8756       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8757                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8758                ,p_balance_type_code => l_balance_type_code);
8759 
8760    END IF;
8761 
8762    -----------------------------------------------------------------------------------------
8763    -- 4262811 Multiperiod Accounting
8764    -----------------------------------------------------------------------------------------
8765      -- No MPA option is assigned.
8766 
8767 
8768 END IF;
8769 END IF;
8770 --
8771 
8772 --
8773 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8774    trace
8775       (p_msg      => 'END of AcctLineType_48'
8776       ,p_level    => C_LEVEL_PROCEDURE
8777       ,p_module   => l_log_module);
8778 END IF;
8779 --
8780 EXCEPTION
8781   WHEN xla_exceptions_pkg.application_exception THEN
8782       RAISE;
8783   WHEN OTHERS THEN
8784        xla_exceptions_pkg.raise_message
8785            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_48');
8786 END AcctLineType_48;
8787 --
8788 
8789 ---------------------------------------
8790 --
8791 -- PRIVATE FUNCTION
8792 --         AcctLineType_49
8793 --
8794 ---------------------------------------
8795 PROCEDURE AcctLineType_49 (
8796   p_application_id        IN NUMBER
8797  ,p_event_id              IN NUMBER
8798  ,p_calculate_acctd_flag  IN VARCHAR2
8799  ,p_calculate_g_l_flag    IN VARCHAR2
8800  ,p_actual_flag           IN OUT VARCHAR2
8801  ,p_balance_type_code     OUT VARCHAR2
8802  ,p_gain_or_loss_ref      OUT VARCHAR2
8803  
8804 --Transaction Account
8805  , p_source_1            IN NUMBER
8806 --Journal Line Type
8807  , p_source_2            IN VARCHAR2
8808 --Entered Amount
8809  , p_source_3            IN NUMBER
8810 --First Distribution Identifier
8811  , p_source_5            IN NUMBER
8812 --Distribution Type
8813  , p_source_6            IN VARCHAR2
8814 --Currency Code
8815  , p_source_7            IN VARCHAR2
8816 --Currency Conversion Date
8817  , p_source_8            IN DATE
8818 --Currency Conversion Rate
8819  , p_source_9            IN NUMBER
8820 --Currency Conversion Type
8821  , p_source_10            IN VARCHAR2
8822 --Accounted Amount
8823  , p_source_11            IN NUMBER
8824 )
8825 IS
8826 
8827 l_component_type              VARCHAR2(80);
8828 l_component_code              VARCHAR2(30);
8829 l_component_type_code         VARCHAR2(1);
8830 l_component_appl_id           INTEGER;
8831 l_amb_context_code            VARCHAR2(30);
8832 l_entity_code                 VARCHAR2(30);
8833 l_event_class_code            VARCHAR2(30);
8834 l_ae_header_id                NUMBER;
8835 l_event_type_code             VARCHAR2(30);
8839 -- adr variables
8836 l_line_definition_code        VARCHAR2(30);
8837 l_line_definition_owner_code  VARCHAR2(1);
8838 --
8840 l_segment                     VARCHAR2(30);
8841 l_ccid                        NUMBER;
8842 l_adr_transaction_coa_id      NUMBER;
8843 l_adr_accounting_coa_id       NUMBER;
8844 l_adr_flexfield_segment_code  VARCHAR2(30);
8845 l_adr_flex_value_set_id       NUMBER;
8846 l_adr_value_type_code         VARCHAR2(30);
8847 l_adr_value_combination_id    NUMBER;
8848 l_adr_value_segment_code      VARCHAR2(30);
8849 
8850 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8851 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8852 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8853 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8854 
8855 -- 4262811 Variables ------------------------------------------------------------------------------------------
8856 l_entered_amt_idx             NUMBER;
8857 l_accted_amt_idx              NUMBER;
8858 l_acc_rev_flag                VARCHAR2(1);
8859 l_accrual_line_num            NUMBER;
8860 l_tmp_amt                     NUMBER;
8861 l_acc_rev_natural_side_code   VARCHAR2(1);
8862 
8863 l_num_entries                 NUMBER;
8864 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8865 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8866 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8867 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8868 l_recog_line_1                NUMBER;
8869 l_recog_line_2                NUMBER;
8870 
8871 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8872 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8873 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8874 
8875 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8876 
8877 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8878 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8879 
8880 ---------------------------------------------------------------------------------------------------------------
8881 
8882 
8883 --
8884 -- bulk performance
8885 --
8886 l_balance_type_code           VARCHAR2(1);
8887 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8888 l_log_module                  VARCHAR2(240);
8889 
8890 --
8891 -- Upgrade strategy
8892 --
8893 l_actual_upg_option           VARCHAR2(1);
8894 l_enc_upg_option           VARCHAR2(1);
8895 
8896 --
8897 BEGIN
8898 --
8899 IF g_log_enabled THEN
8900       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_49';
8901 END IF;
8902 --
8903 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8904 
8905       trace
8906          (p_msg      => 'BEGIN of AcctLineType_49'
8907          ,p_level    => C_LEVEL_PROCEDURE
8908          ,p_module   => l_log_module);
8909 
8910 END IF;
8911 --
8912 l_component_type             := 'AMB_JLT';
8913 l_component_code             := 'AAP';
8914 l_component_type_code        := 'S';
8915 l_component_appl_id          :=  555;
8916 l_amb_context_code           := 'DEFAULT';
8917 l_entity_code                := 'PURCHASING';
8918 l_event_class_code           := 'DELIVER';
8919 l_event_type_code            := 'XFER_TO_CONSIGNED';
8920 l_line_definition_owner_code := 'S';
8921 l_line_definition_code       := 'XFER_TO_CONSIGN';
8922 --
8923 l_balance_type_code          := 'A';
8924 l_segment                     := NULL;
8925 l_ccid                        := NULL;
8926 l_adr_transaction_coa_id      := NULL;
8927 l_adr_accounting_coa_id       := NULL;
8928 l_adr_flexfield_segment_code  := NULL;
8929 l_adr_flex_value_set_id       := NULL;
8930 l_adr_value_type_code         := NULL;
8931 l_adr_value_combination_id    := NULL;
8932 l_adr_value_segment_code      := NULL;
8933 
8934 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8935 l_bflow_class_code           := '';    -- 4219869 Business Flow
8936 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8937 l_budgetary_control_flag     := 'N';
8938 
8939 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8940 l_bflow_applied_to_amt       := NULL; -- 5132302
8941 l_entered_amt_idx            := NULL;          -- 4262811
8942 l_accted_amt_idx             := NULL;          -- 4262811
8943 l_acc_rev_flag               := NULL;          -- 4262811
8944 l_accrual_line_num           := NULL;          -- 4262811
8945 l_tmp_amt                    := NULL;          -- 4262811
8946 --
8947  
8948 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8949     l_balance_type_code <> 'B' THEN
8950 IF NVL(p_source_2,'
8951 ') =  'AAP'
8952  THEN 
8953 
8954    --
8955    XLA_AE_LINES_PKG.SetNewLine;
8956 
8957    p_balance_type_code          := l_balance_type_code;
8958    -- set the flag so later we will know whether the gain loss line needs to be created
8959    
8960    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8961      p_actual_flag :='A';
8962    END IF;
8963 
8964    --
8965    -- bulk performance
8966    --
8970    -- set accounting line options
8967    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8968                                       p_header_num   => 0); -- 4262811
8969    --
8971    --
8972    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8973            p_natural_side_code          => 'D'
8974          , p_gain_or_loss_flag          => 'N'
8975          , p_gl_transfer_mode_code      => 'D'
8976          , p_acct_entry_type_code       => 'A'
8977          , p_switch_side_flag           => 'Y'
8978          , p_merge_duplicate_code       => 'W'
8979          );
8980    --
8981    l_acc_rev_natural_side_code := 'C';  -- 4262811
8982    -- 
8983    --
8984    -- set accounting line type info
8985    --
8986    xla_ae_lines_pkg.SetAcctLineType
8987       (p_component_type             => l_component_type
8988       ,p_event_type_code            => l_event_type_code
8989       ,p_line_definition_owner_code => l_line_definition_owner_code
8990       ,p_line_definition_code       => l_line_definition_code
8991       ,p_accounting_line_code       => l_component_code
8992       ,p_accounting_line_type_code  => l_component_type_code
8993       ,p_accounting_line_appl_id    => l_component_appl_id
8994       ,p_amb_context_code           => l_amb_context_code
8995       ,p_entity_code                => l_entity_code
8996       ,p_event_class_code           => l_event_class_code);
8997    --
8998    -- set accounting class
8999    --
9000    xla_ae_lines_pkg.SetAcctClass(
9001            p_accounting_class_code  => 'AAP'
9002          , p_ae_header_id           => l_ae_header_id
9003          );
9004 
9005    --
9006    -- set rounding class
9007    --
9008    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9009                       'AAP';
9010 
9011    --
9012    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9013    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9014    --
9015    -- bulk performance
9016    --
9017    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9018 
9019    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9020       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9021 
9022    -- 4955764
9023    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9024       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9025 
9026    -- 4458381 Public Sector Enh
9027    
9028    --
9029    -- set accounting attributes for the line type
9030    --
9031    l_entered_amt_idx := 3;
9032    l_accted_amt_idx  := 8;
9033    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9034    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
9035    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
9036    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
9037    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
9038    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
9039    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
9040    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
9041    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
9042    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
9043    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
9044    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
9045    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
9046    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
9047    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
9048    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
9049    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
9050 
9051    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9052    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9053 
9054    ---------------------------------------------------------------------------------------------------------------
9055    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9056    ---------------------------------------------------------------------------------------------------------------
9057    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9058 
9059    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9060    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9061 
9062    IF xla_accounting_cache_pkg.GetValueChar
9063          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9064          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9065    AND l_bflow_method_code = 'PRIOR_ENTRY'
9066 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9067    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9068          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9069        )
9070    THEN
9071          xla_ae_lines_pkg.BflowUpgEntry
9072            (p_business_method_code    => l_bflow_method_code
9073            ,p_business_class_code     => l_bflow_class_code
9074            ,p_balance_type            => l_balance_type_code);
9075    ELSE
9079 
9076       NULL;
9077 -- No business flow processing for business flow method of NONE.
9078    END IF;
9080    --
9081    -- call analytical criteria
9082    --
9083    
9084    --
9085    -- call description
9086    --
9087    -- No description or it is inherited.
9088    --
9089    -- call ADRs
9090    -- Bug 4922099
9091    --
9092    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9093         (NVL(l_actual_upg_option, 'N') = 'O') OR
9094         (NVL(l_enc_upg_option, 'N') = 'O')
9095       )
9096    THEN
9097    NULL;
9098    --
9099    --
9100    
9101   l_ccid := AcctDerRule_2(
9102            p_application_id           => p_application_id
9103          , p_ae_header_id             => l_ae_header_id 
9104 , p_source_1 => p_source_1
9105 , p_source_2 => p_source_2
9106          , x_transaction_coa_id       => l_adr_transaction_coa_id
9107          , x_accounting_coa_id        => l_adr_accounting_coa_id
9108          , x_value_type_code          => l_adr_value_type_code
9109          , p_side                     => 'NA'
9110    );
9111 
9112    xla_ae_lines_pkg.set_ccid(
9113     p_code_combination_id          => l_ccid
9114   , p_value_type_code              => l_adr_value_type_code
9115   , p_transaction_coa_id           => l_adr_transaction_coa_id
9116   , p_accounting_coa_id            => l_adr_accounting_coa_id
9117   , p_adr_code                     => 'AAP'
9118   , p_adr_type_code                => 'S'
9119   , p_component_type               => l_component_type
9120   , p_component_code               => l_component_code
9121   , p_component_type_code          => l_component_type_code
9122   , p_component_appl_id            => l_component_appl_id
9123   , p_amb_context_code             => l_amb_context_code
9124   , p_side                         => 'NA'
9125   );
9126 
9127 
9128    --
9129    --
9130    END IF;
9131    --
9132    -- Bug 4922099
9133    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9134           (NVL(l_enc_upg_option, 'N') = 'O')
9135         ) AND
9136         (l_bflow_method_code = 'PRIOR_ENTRY')
9137       )
9138    THEN
9139       IF
9140       --
9141       1 = 2
9142       --
9143       THEN
9144       xla_accounting_err_pkg.build_message
9145                                     (p_appli_s_name            => 'XLA'
9146                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9147                                     ,p_token_1                 => 'LINE_NUMBER'
9148                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9149                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9150                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9151                                                                              l_component_type
9152                                                                             ,l_component_code
9153                                                                             ,l_component_type_code
9154                                                                             ,l_component_appl_id
9155                                                                             ,l_amb_context_code
9156                                                                             ,l_entity_code
9157                                                                             ,l_event_class_code
9158                                                                            )
9159                                     ,p_token_3                 => 'OWNER'
9160                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9161                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9162                                                                           ,p_lookup_code    => l_component_type_code
9163                                                                          )
9164                                     ,p_token_4                 => 'PRODUCT_NAME'
9165                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9166                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9167                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9168                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9169                                     ,p_ae_header_id            =>  NULL
9170                                        );
9171 
9172         IF (C_LEVEL_ERROR>= g_log_level) THEN
9173                  trace
9174                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9175                       ,p_level    => C_LEVEL_ERROR
9176                       ,p_module   => l_log_module);
9177         END IF;
9178       END IF;
9179    END IF;
9180    --
9181    --
9182    ------------------------------------------------------------------------------------------------
9183    -- 4219869 Business Flow
9184    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9185    -- Prior Entry.  Currently, the following code is always generated.
9186    ------------------------------------------------------------------------------------------------
9187    XLA_AE_LINES_PKG.ValidateCurrentLine;
9191    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9188 
9189    ------------------------------------------------------------------------------------
9190    -- 4219869 Business Flow
9192    ------------------------------------------------------------------------------------
9193    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9194 
9195    ----------------------------------------------------------------------------------
9196    -- 4219869 Business Flow
9197    -- Update journal entry status -- Need to generate this within IF <condition>
9198    ----------------------------------------------------------------------------------
9199    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9200          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9201          ,p_balance_type_code => l_balance_type_code
9202          );
9203 
9204    -------------------------------------------------------------------------------------------
9205    -- 4262811 - Generate the Accrual Reversal lines
9206    -------------------------------------------------------------------------------------------
9207    BEGIN
9208       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9209                               (g_array_event(p_event_id).array_value_num('header_index'));
9210       IF l_acc_rev_flag IS NULL THEN
9211          l_acc_rev_flag := 'N';
9212       END IF;
9213    EXCEPTION
9214       WHEN OTHERS THEN
9215          l_acc_rev_flag := 'N';
9216    END;
9217    --
9218    IF (l_acc_rev_flag = 'Y') THEN
9219 
9220        -- 4645092  ------------------------------------------------------------------------------
9221        -- To allow MPA report to determine if it should generate report process
9222        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9223        ------------------------------------------------------------------------------------------
9224 
9225        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9226        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9227    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
9228    -- call ADRs
9229    -- Bug 4922099
9230    --
9231    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9232         (NVL(l_actual_upg_option, 'N') = 'O') OR
9233         (NVL(l_enc_upg_option, 'N') = 'O')
9234       )
9235    THEN
9236    NULL;
9237    --
9238    --
9239    
9240   l_ccid := AcctDerRule_2(
9241            p_application_id           => p_application_id
9242          , p_ae_header_id             => l_ae_header_id 
9243 , p_source_1 => p_source_1
9244 , p_source_2 => p_source_2
9245          , x_transaction_coa_id       => l_adr_transaction_coa_id
9246          , x_accounting_coa_id        => l_adr_accounting_coa_id
9247          , x_value_type_code          => l_adr_value_type_code
9248          , p_side                     => 'NA'
9249    );
9250 
9251    xla_ae_lines_pkg.set_ccid(
9252     p_code_combination_id          => l_ccid
9253   , p_value_type_code              => l_adr_value_type_code
9254   , p_transaction_coa_id           => l_adr_transaction_coa_id
9255   , p_accounting_coa_id            => l_adr_accounting_coa_id
9256   , p_adr_code                     => 'AAP'
9257   , p_adr_type_code                => 'S'
9258   , p_component_type               => l_component_type
9259   , p_component_code               => l_component_code
9260   , p_component_type_code          => l_component_type_code
9261   , p_component_appl_id            => l_component_appl_id
9262   , p_amb_context_code             => l_amb_context_code
9263   , p_side                         => 'NA'
9264   );
9265 
9266 
9267    --
9268    --
9269    END IF;
9270 
9271        --
9272        -- Update the line information that should be overwritten
9273        --
9274        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9275                                          p_header_num   => 1);
9276        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9277 
9278        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9279 
9280        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9281           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9282        END IF;
9283 
9284       --
9285       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9286       --
9287       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9288           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9289       ELSE
9290           ---------------------------------------------------------------------------------------------------
9291           -- 4262811a Switch Sign
9292           ---------------------------------------------------------------------------------------------------
9293           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9294           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9295                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9296           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9300                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9297                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9298           -- 5132302
9299           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9301 
9302       END IF;
9303 
9304       -- 4955764
9305       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9306       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9307 
9308 
9309       XLA_AE_LINES_PKG.ValidateCurrentLine;
9310       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9311 
9312       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9313                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9314                ,p_balance_type_code => l_balance_type_code);
9315 
9316    END IF;
9317 
9318    -----------------------------------------------------------------------------------------
9319    -- 4262811 Multiperiod Accounting
9320    -----------------------------------------------------------------------------------------
9321      -- No MPA option is assigned.
9322 
9323 
9324 END IF;
9325 END IF;
9326 --
9327 
9328 --
9329 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9330    trace
9331       (p_msg      => 'END of AcctLineType_49'
9332       ,p_level    => C_LEVEL_PROCEDURE
9333       ,p_module   => l_log_module);
9334 END IF;
9335 --
9336 EXCEPTION
9337   WHEN xla_exceptions_pkg.application_exception THEN
9338       RAISE;
9339   WHEN OTHERS THEN
9340        xla_exceptions_pkg.raise_message
9341            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_49');
9342 END AcctLineType_49;
9343 --
9344 
9345 ---------------------------------------
9346 --
9347 -- PRIVATE FUNCTION
9348 --         AcctLineType_50
9349 --
9350 ---------------------------------------
9351 PROCEDURE AcctLineType_50 (
9352   p_application_id        IN NUMBER
9353  ,p_event_id              IN NUMBER
9354  ,p_calculate_acctd_flag  IN VARCHAR2
9355  ,p_calculate_g_l_flag    IN VARCHAR2
9356  ,p_actual_flag           IN OUT VARCHAR2
9357  ,p_balance_type_code     OUT VARCHAR2
9358  ,p_gain_or_loss_ref      OUT VARCHAR2
9359  
9360 --Transaction Account
9361  , p_source_1            IN NUMBER
9362 --Journal Line Type
9363  , p_source_2            IN VARCHAR2
9364 --Entered Amount
9365  , p_source_3            IN NUMBER
9366 --First Distribution Identifier
9367  , p_source_5            IN NUMBER
9368 --Distribution Type
9369  , p_source_6            IN VARCHAR2
9370 --Currency Code
9371  , p_source_7            IN VARCHAR2
9372 --Currency Conversion Date
9373  , p_source_8            IN DATE
9374 --Currency Conversion Rate
9375  , p_source_9            IN NUMBER
9376 --Currency Conversion Type
9377  , p_source_10            IN VARCHAR2
9378 --Accounted Amount
9379  , p_source_11            IN NUMBER
9380 )
9381 IS
9382 
9383 l_component_type              VARCHAR2(80);
9384 l_component_code              VARCHAR2(30);
9385 l_component_type_code         VARCHAR2(1);
9386 l_component_appl_id           INTEGER;
9387 l_amb_context_code            VARCHAR2(30);
9388 l_entity_code                 VARCHAR2(30);
9389 l_event_class_code            VARCHAR2(30);
9390 l_ae_header_id                NUMBER;
9391 l_event_type_code             VARCHAR2(30);
9392 l_line_definition_code        VARCHAR2(30);
9393 l_line_definition_owner_code  VARCHAR2(1);
9394 --
9395 -- adr variables
9396 l_segment                     VARCHAR2(30);
9397 l_ccid                        NUMBER;
9398 l_adr_transaction_coa_id      NUMBER;
9399 l_adr_accounting_coa_id       NUMBER;
9400 l_adr_flexfield_segment_code  VARCHAR2(30);
9401 l_adr_flex_value_set_id       NUMBER;
9402 l_adr_value_type_code         VARCHAR2(30);
9403 l_adr_value_combination_id    NUMBER;
9404 l_adr_value_segment_code      VARCHAR2(30);
9405 
9406 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9407 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9408 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9409 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9410 
9411 -- 4262811 Variables ------------------------------------------------------------------------------------------
9412 l_entered_amt_idx             NUMBER;
9413 l_accted_amt_idx              NUMBER;
9414 l_acc_rev_flag                VARCHAR2(1);
9415 l_accrual_line_num            NUMBER;
9416 l_tmp_amt                     NUMBER;
9417 l_acc_rev_natural_side_code   VARCHAR2(1);
9418 
9419 l_num_entries                 NUMBER;
9420 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9421 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9422 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9423 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9424 l_recog_line_1                NUMBER;
9425 l_recog_line_2                NUMBER;
9426 
9427 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9428 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9432 
9429 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9430 
9431 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9433 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9434 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9435 
9436 ---------------------------------------------------------------------------------------------------------------
9437 
9438 
9439 --
9440 -- bulk performance
9441 --
9442 l_balance_type_code           VARCHAR2(1);
9443 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9444 l_log_module                  VARCHAR2(240);
9445 
9446 --
9447 -- Upgrade strategy
9448 --
9449 l_actual_upg_option           VARCHAR2(1);
9450 l_enc_upg_option           VARCHAR2(1);
9451 
9452 --
9453 BEGIN
9454 --
9455 IF g_log_enabled THEN
9456       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_50';
9457 END IF;
9458 --
9459 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9460 
9461       trace
9462          (p_msg      => 'BEGIN of AcctLineType_50'
9463          ,p_level    => C_LEVEL_PROCEDURE
9464          ,p_module   => l_log_module);
9465 
9466 END IF;
9467 --
9468 l_component_type             := 'AMB_JLT';
9469 l_component_code             := 'AAP';
9470 l_component_type_code        := 'S';
9471 l_component_appl_id          :=  555;
9472 l_amb_context_code           := 'DEFAULT';
9473 l_entity_code                := 'PURCHASING';
9474 l_event_class_code           := 'DELIVER';
9475 l_event_type_code            := 'XFER_TO_REGULAR';
9476 l_line_definition_owner_code := 'S';
9477 l_line_definition_code       := 'XFER_TO_REG';
9478 --
9479 l_balance_type_code          := 'A';
9480 l_segment                     := NULL;
9481 l_ccid                        := NULL;
9482 l_adr_transaction_coa_id      := NULL;
9483 l_adr_accounting_coa_id       := NULL;
9484 l_adr_flexfield_segment_code  := NULL;
9485 l_adr_flex_value_set_id       := NULL;
9486 l_adr_value_type_code         := NULL;
9487 l_adr_value_combination_id    := NULL;
9488 l_adr_value_segment_code      := NULL;
9489 
9490 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
9491 l_bflow_class_code           := '';    -- 4219869 Business Flow
9492 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
9493 l_budgetary_control_flag     := 'N';
9494 
9495 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9496 l_bflow_applied_to_amt       := NULL; -- 5132302
9497 l_entered_amt_idx            := NULL;          -- 4262811
9498 l_accted_amt_idx             := NULL;          -- 4262811
9499 l_acc_rev_flag               := NULL;          -- 4262811
9500 l_accrual_line_num           := NULL;          -- 4262811
9501 l_tmp_amt                    := NULL;          -- 4262811
9502 --
9503  
9504 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9505     l_balance_type_code <> 'B' THEN
9506 IF NVL(p_source_2,'
9507 ') =  'AAP'
9508  THEN 
9509 
9510    --
9511    XLA_AE_LINES_PKG.SetNewLine;
9512 
9513    p_balance_type_code          := l_balance_type_code;
9514    -- set the flag so later we will know whether the gain loss line needs to be created
9515    
9516    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9517      p_actual_flag :='A';
9518    END IF;
9519 
9520    --
9521    -- bulk performance
9522    --
9523    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9524                                       p_header_num   => 0); -- 4262811
9525    --
9526    -- set accounting line options
9527    --
9528    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9529            p_natural_side_code          => 'D'
9530          , p_gain_or_loss_flag          => 'N'
9531          , p_gl_transfer_mode_code      => 'D'
9532          , p_acct_entry_type_code       => 'A'
9533          , p_switch_side_flag           => 'Y'
9534          , p_merge_duplicate_code       => 'W'
9535          );
9536    --
9537    l_acc_rev_natural_side_code := 'C';  -- 4262811
9538    -- 
9539    --
9540    -- set accounting line type info
9541    --
9542    xla_ae_lines_pkg.SetAcctLineType
9543       (p_component_type             => l_component_type
9544       ,p_event_type_code            => l_event_type_code
9545       ,p_line_definition_owner_code => l_line_definition_owner_code
9546       ,p_line_definition_code       => l_line_definition_code
9547       ,p_accounting_line_code       => l_component_code
9548       ,p_accounting_line_type_code  => l_component_type_code
9549       ,p_accounting_line_appl_id    => l_component_appl_id
9550       ,p_amb_context_code           => l_amb_context_code
9551       ,p_entity_code                => l_entity_code
9552       ,p_event_class_code           => l_event_class_code);
9553    --
9554    -- set accounting class
9555    --
9556    xla_ae_lines_pkg.SetAcctClass(
9557            p_accounting_class_code  => 'AAP'
9558          , p_ae_header_id           => l_ae_header_id
9559          );
9560 
9561    --
9562    -- set rounding class
9563    --
9564    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9565                       'AAP';
9566 
9567    --
9571    -- bulk performance
9568    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9569    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9570    --
9572    --
9573    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9574 
9575    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9576       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9577 
9578    -- 4955764
9579    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9580       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9581 
9582    -- 4458381 Public Sector Enh
9583    
9584    --
9585    -- set accounting attributes for the line type
9586    --
9587    l_entered_amt_idx := 3;
9588    l_accted_amt_idx  := 8;
9589    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9590    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
9591    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
9592    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
9593    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
9594    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
9595    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
9596    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
9597    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
9598    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
9599    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
9600    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
9601    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
9602    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
9603    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
9604    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
9605    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
9606 
9607    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9608    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9609 
9610    ---------------------------------------------------------------------------------------------------------------
9611    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9612    ---------------------------------------------------------------------------------------------------------------
9613    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9614 
9615    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9616    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9617 
9618    IF xla_accounting_cache_pkg.GetValueChar
9619          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9620          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9621    AND l_bflow_method_code = 'PRIOR_ENTRY'
9622 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9623    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9624          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9625        )
9626    THEN
9627          xla_ae_lines_pkg.BflowUpgEntry
9628            (p_business_method_code    => l_bflow_method_code
9629            ,p_business_class_code     => l_bflow_class_code
9630            ,p_balance_type            => l_balance_type_code);
9631    ELSE
9632       NULL;
9633 -- No business flow processing for business flow method of NONE.
9634    END IF;
9635 
9636    --
9637    -- call analytical criteria
9638    --
9639    
9640    --
9641    -- call description
9642    --
9643    -- No description or it is inherited.
9644    --
9645    -- call ADRs
9646    -- Bug 4922099
9647    --
9648    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9649         (NVL(l_actual_upg_option, 'N') = 'O') OR
9650         (NVL(l_enc_upg_option, 'N') = 'O')
9651       )
9652    THEN
9653    NULL;
9654    --
9655    --
9656    
9657   l_ccid := AcctDerRule_2(
9658            p_application_id           => p_application_id
9659          , p_ae_header_id             => l_ae_header_id 
9660 , p_source_1 => p_source_1
9661 , p_source_2 => p_source_2
9662          , x_transaction_coa_id       => l_adr_transaction_coa_id
9663          , x_accounting_coa_id        => l_adr_accounting_coa_id
9664          , x_value_type_code          => l_adr_value_type_code
9665          , p_side                     => 'NA'
9666    );
9667 
9668    xla_ae_lines_pkg.set_ccid(
9669     p_code_combination_id          => l_ccid
9670   , p_value_type_code              => l_adr_value_type_code
9671   , p_transaction_coa_id           => l_adr_transaction_coa_id
9672   , p_accounting_coa_id            => l_adr_accounting_coa_id
9673   , p_adr_code                     => 'AAP'
9674   , p_adr_type_code                => 'S'
9675   , p_component_type               => l_component_type
9676   , p_component_code               => l_component_code
9677   , p_component_type_code          => l_component_type_code
9678   , p_component_appl_id            => l_component_appl_id
9679   , p_amb_context_code             => l_amb_context_code
9680   , p_side                         => 'NA'
9681   );
9682 
9683 
9684    --
9688    -- Bug 4922099
9685    --
9686    END IF;
9687    --
9689    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9690           (NVL(l_enc_upg_option, 'N') = 'O')
9691         ) AND
9692         (l_bflow_method_code = 'PRIOR_ENTRY')
9693       )
9694    THEN
9695       IF
9696       --
9697       1 = 2
9698       --
9699       THEN
9700       xla_accounting_err_pkg.build_message
9701                                     (p_appli_s_name            => 'XLA'
9702                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9703                                     ,p_token_1                 => 'LINE_NUMBER'
9704                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9705                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9706                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9707                                                                              l_component_type
9708                                                                             ,l_component_code
9709                                                                             ,l_component_type_code
9710                                                                             ,l_component_appl_id
9711                                                                             ,l_amb_context_code
9712                                                                             ,l_entity_code
9713                                                                             ,l_event_class_code
9714                                                                            )
9715                                     ,p_token_3                 => 'OWNER'
9716                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9717                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9718                                                                           ,p_lookup_code    => l_component_type_code
9719                                                                          )
9720                                     ,p_token_4                 => 'PRODUCT_NAME'
9721                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9722                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9723                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9724                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9725                                     ,p_ae_header_id            =>  NULL
9726                                        );
9727 
9728         IF (C_LEVEL_ERROR>= g_log_level) THEN
9729                  trace
9730                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9731                       ,p_level    => C_LEVEL_ERROR
9732                       ,p_module   => l_log_module);
9733         END IF;
9734       END IF;
9735    END IF;
9736    --
9737    --
9738    ------------------------------------------------------------------------------------------------
9739    -- 4219869 Business Flow
9740    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9741    -- Prior Entry.  Currently, the following code is always generated.
9742    ------------------------------------------------------------------------------------------------
9743    XLA_AE_LINES_PKG.ValidateCurrentLine;
9744 
9745    ------------------------------------------------------------------------------------
9746    -- 4219869 Business Flow
9747    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9748    ------------------------------------------------------------------------------------
9749    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9750 
9751    ----------------------------------------------------------------------------------
9752    -- 4219869 Business Flow
9753    -- Update journal entry status -- Need to generate this within IF <condition>
9754    ----------------------------------------------------------------------------------
9755    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9756          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9757          ,p_balance_type_code => l_balance_type_code
9758          );
9759 
9760    -------------------------------------------------------------------------------------------
9761    -- 4262811 - Generate the Accrual Reversal lines
9762    -------------------------------------------------------------------------------------------
9763    BEGIN
9764       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9765                               (g_array_event(p_event_id).array_value_num('header_index'));
9766       IF l_acc_rev_flag IS NULL THEN
9767          l_acc_rev_flag := 'N';
9768       END IF;
9769    EXCEPTION
9770       WHEN OTHERS THEN
9771          l_acc_rev_flag := 'N';
9772    END;
9773    --
9774    IF (l_acc_rev_flag = 'Y') THEN
9775 
9776        -- 4645092  ------------------------------------------------------------------------------
9777        -- To allow MPA report to determine if it should generate report process
9778        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9779        ------------------------------------------------------------------------------------------
9780 
9784    -- call ADRs
9781        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9782        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9783    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
9785    -- Bug 4922099
9786    --
9787    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9788         (NVL(l_actual_upg_option, 'N') = 'O') OR
9789         (NVL(l_enc_upg_option, 'N') = 'O')
9790       )
9791    THEN
9792    NULL;
9793    --
9794    --
9795    
9796   l_ccid := AcctDerRule_2(
9797            p_application_id           => p_application_id
9798          , p_ae_header_id             => l_ae_header_id 
9799 , p_source_1 => p_source_1
9800 , p_source_2 => p_source_2
9801          , x_transaction_coa_id       => l_adr_transaction_coa_id
9802          , x_accounting_coa_id        => l_adr_accounting_coa_id
9803          , x_value_type_code          => l_adr_value_type_code
9804          , p_side                     => 'NA'
9805    );
9806 
9807    xla_ae_lines_pkg.set_ccid(
9808     p_code_combination_id          => l_ccid
9809   , p_value_type_code              => l_adr_value_type_code
9810   , p_transaction_coa_id           => l_adr_transaction_coa_id
9811   , p_accounting_coa_id            => l_adr_accounting_coa_id
9812   , p_adr_code                     => 'AAP'
9813   , p_adr_type_code                => 'S'
9814   , p_component_type               => l_component_type
9815   , p_component_code               => l_component_code
9816   , p_component_type_code          => l_component_type_code
9817   , p_component_appl_id            => l_component_appl_id
9818   , p_amb_context_code             => l_amb_context_code
9819   , p_side                         => 'NA'
9820   );
9821 
9822 
9823    --
9824    --
9825    END IF;
9826 
9827        --
9828        -- Update the line information that should be overwritten
9829        --
9830        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9831                                          p_header_num   => 1);
9832        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9833 
9834        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9835 
9836        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9837           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9838        END IF;
9839 
9840       --
9841       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9842       --
9843       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9844           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9845       ELSE
9846           ---------------------------------------------------------------------------------------------------
9847           -- 4262811a Switch Sign
9848           ---------------------------------------------------------------------------------------------------
9849           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9850           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9851                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9852           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9853                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9854           -- 5132302
9855           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9856                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9857 
9858       END IF;
9859 
9860       -- 4955764
9861       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9862       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9863 
9864 
9865       XLA_AE_LINES_PKG.ValidateCurrentLine;
9866       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9867 
9868       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9869                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9870                ,p_balance_type_code => l_balance_type_code);
9871 
9872    END IF;
9873 
9874    -----------------------------------------------------------------------------------------
9875    -- 4262811 Multiperiod Accounting
9876    -----------------------------------------------------------------------------------------
9877      -- No MPA option is assigned.
9878 
9879 
9880 END IF;
9881 END IF;
9882 --
9883 
9884 --
9885 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9886    trace
9887       (p_msg      => 'END of AcctLineType_50'
9888       ,p_level    => C_LEVEL_PROCEDURE
9889       ,p_module   => l_log_module);
9890 END IF;
9891 --
9892 EXCEPTION
9893   WHEN xla_exceptions_pkg.application_exception THEN
9894       RAISE;
9895   WHEN OTHERS THEN
9896        xla_exceptions_pkg.raise_message
9897            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_50');
9898 END AcctLineType_50;
9899 --
9900 
9904 --         AcctLineType_51
9901 ---------------------------------------
9902 --
9903 -- PRIVATE FUNCTION
9905 --
9906 ---------------------------------------
9907 PROCEDURE AcctLineType_51 (
9908   p_application_id        IN NUMBER
9909  ,p_event_id              IN NUMBER
9910  ,p_calculate_acctd_flag  IN VARCHAR2
9911  ,p_calculate_g_l_flag    IN VARCHAR2
9912  ,p_actual_flag           IN OUT VARCHAR2
9913  ,p_balance_type_code     OUT VARCHAR2
9914  ,p_gain_or_loss_ref      OUT VARCHAR2
9915  
9916 --Transaction Account
9917  , p_source_1            IN NUMBER
9918 --Journal Line Type
9919  , p_source_2            IN VARCHAR2
9920 --Entered Amount
9921  , p_source_3            IN NUMBER
9922 --First Distribution Identifier
9923  , p_source_5            IN NUMBER
9924 --Distribution Type
9925  , p_source_6            IN VARCHAR2
9926 --Currency Code
9927  , p_source_7            IN VARCHAR2
9928 --Currency Conversion Date
9929  , p_source_8            IN DATE
9930 --Currency Conversion Rate
9931  , p_source_9            IN NUMBER
9932 --Currency Conversion Type
9933  , p_source_10            IN VARCHAR2
9934 --Accounted Amount
9935  , p_source_11            IN NUMBER
9936 )
9937 IS
9938 
9939 l_component_type              VARCHAR2(80);
9940 l_component_code              VARCHAR2(30);
9941 l_component_type_code         VARCHAR2(1);
9942 l_component_appl_id           INTEGER;
9943 l_amb_context_code            VARCHAR2(30);
9944 l_entity_code                 VARCHAR2(30);
9945 l_event_class_code            VARCHAR2(30);
9946 l_ae_header_id                NUMBER;
9947 l_event_type_code             VARCHAR2(30);
9948 l_line_definition_code        VARCHAR2(30);
9949 l_line_definition_owner_code  VARCHAR2(1);
9950 --
9951 -- adr variables
9952 l_segment                     VARCHAR2(30);
9953 l_ccid                        NUMBER;
9954 l_adr_transaction_coa_id      NUMBER;
9955 l_adr_accounting_coa_id       NUMBER;
9956 l_adr_flexfield_segment_code  VARCHAR2(30);
9957 l_adr_flex_value_set_id       NUMBER;
9958 l_adr_value_type_code         VARCHAR2(30);
9959 l_adr_value_combination_id    NUMBER;
9960 l_adr_value_segment_code      VARCHAR2(30);
9961 
9962 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9963 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9964 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9965 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9966 
9967 -- 4262811 Variables ------------------------------------------------------------------------------------------
9968 l_entered_amt_idx             NUMBER;
9969 l_accted_amt_idx              NUMBER;
9970 l_acc_rev_flag                VARCHAR2(1);
9971 l_accrual_line_num            NUMBER;
9972 l_tmp_amt                     NUMBER;
9973 l_acc_rev_natural_side_code   VARCHAR2(1);
9974 
9975 l_num_entries                 NUMBER;
9976 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9977 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9978 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9979 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9980 l_recog_line_1                NUMBER;
9981 l_recog_line_2                NUMBER;
9982 
9983 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9984 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9985 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9986 
9987 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9988 
9989 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9990 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9991 
9992 ---------------------------------------------------------------------------------------------------------------
9993 
9994 
9995 --
9996 -- bulk performance
9997 --
9998 l_balance_type_code           VARCHAR2(1);
9999 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
10000 l_log_module                  VARCHAR2(240);
10001 
10002 --
10003 -- Upgrade strategy
10004 --
10005 l_actual_upg_option           VARCHAR2(1);
10006 l_enc_upg_option           VARCHAR2(1);
10007 
10008 --
10009 BEGIN
10010 --
10011 IF g_log_enabled THEN
10012       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_51';
10013 END IF;
10014 --
10015 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10016 
10017       trace
10018          (p_msg      => 'BEGIN of AcctLineType_51'
10019          ,p_level    => C_LEVEL_PROCEDURE
10020          ,p_module   => l_log_module);
10021 
10022 END IF;
10023 --
10024 l_component_type             := 'AMB_JLT';
10025 l_component_code             := 'AAP';
10026 l_component_type_code        := 'S';
10027 l_component_appl_id          :=  555;
10028 l_amb_context_code           := 'DEFAULT';
10029 l_entity_code                := 'PURCHASING';
10030 l_event_class_code           := 'DELIVER';
10031 l_event_type_code            := 'RETRO_PRICE_UPD';
10032 l_line_definition_owner_code := 'S';
10033 l_line_definition_code       := 'RETRO_PRICE_UPD';
10034 --
10035 l_balance_type_code          := 'A';
10036 l_segment                     := NULL;
10040 l_adr_flexfield_segment_code  := NULL;
10037 l_ccid                        := NULL;
10038 l_adr_transaction_coa_id      := NULL;
10039 l_adr_accounting_coa_id       := NULL;
10041 l_adr_flex_value_set_id       := NULL;
10042 l_adr_value_type_code         := NULL;
10043 l_adr_value_combination_id    := NULL;
10044 l_adr_value_segment_code      := NULL;
10045 
10046 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
10047 l_bflow_class_code           := '';    -- 4219869 Business Flow
10048 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
10049 l_budgetary_control_flag     := 'N';
10050 
10051 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10052 l_bflow_applied_to_amt       := NULL; -- 5132302
10053 l_entered_amt_idx            := NULL;          -- 4262811
10054 l_accted_amt_idx             := NULL;          -- 4262811
10055 l_acc_rev_flag               := NULL;          -- 4262811
10056 l_accrual_line_num           := NULL;          -- 4262811
10057 l_tmp_amt                    := NULL;          -- 4262811
10058 --
10059  
10060 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10061     l_balance_type_code <> 'B' THEN
10062 IF NVL(p_source_2,'
10063 ') =  'AAP'
10064  THEN 
10065 
10066    --
10067    XLA_AE_LINES_PKG.SetNewLine;
10068 
10069    p_balance_type_code          := l_balance_type_code;
10070    -- set the flag so later we will know whether the gain loss line needs to be created
10071    
10072    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10073      p_actual_flag :='A';
10074    END IF;
10075 
10076    --
10077    -- bulk performance
10078    --
10079    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10080                                       p_header_num   => 0); -- 4262811
10081    --
10082    -- set accounting line options
10083    --
10084    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10085            p_natural_side_code          => 'D'
10086          , p_gain_or_loss_flag          => 'N'
10087          , p_gl_transfer_mode_code      => 'D'
10088          , p_acct_entry_type_code       => 'A'
10089          , p_switch_side_flag           => 'Y'
10090          , p_merge_duplicate_code       => 'W'
10091          );
10092    --
10093    l_acc_rev_natural_side_code := 'C';  -- 4262811
10094    -- 
10095    --
10096    -- set accounting line type info
10097    --
10098    xla_ae_lines_pkg.SetAcctLineType
10099       (p_component_type             => l_component_type
10100       ,p_event_type_code            => l_event_type_code
10101       ,p_line_definition_owner_code => l_line_definition_owner_code
10102       ,p_line_definition_code       => l_line_definition_code
10103       ,p_accounting_line_code       => l_component_code
10104       ,p_accounting_line_type_code  => l_component_type_code
10105       ,p_accounting_line_appl_id    => l_component_appl_id
10106       ,p_amb_context_code           => l_amb_context_code
10107       ,p_entity_code                => l_entity_code
10108       ,p_event_class_code           => l_event_class_code);
10109    --
10110    -- set accounting class
10111    --
10112    xla_ae_lines_pkg.SetAcctClass(
10113            p_accounting_class_code  => 'AAP'
10114          , p_ae_header_id           => l_ae_header_id
10115          );
10116 
10117    --
10118    -- set rounding class
10119    --
10120    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10121                       'AAP';
10122 
10123    --
10124    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10125    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10126    --
10127    -- bulk performance
10128    --
10129    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10130 
10131    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10132       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10133 
10134    -- 4955764
10135    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10136       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10137 
10138    -- 4458381 Public Sector Enh
10139    
10140    --
10141    -- set accounting attributes for the line type
10142    --
10143    l_entered_amt_idx := 3;
10144    l_accted_amt_idx  := 8;
10145    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
10146    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
10147    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
10148    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
10149    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
10150    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
10151    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
10152    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
10153    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
10154    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
10155    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
10156    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
10157    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
10161    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
10158    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
10159    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
10160    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
10162 
10163    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10164    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10165 
10166    ---------------------------------------------------------------------------------------------------------------
10167    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10168    ---------------------------------------------------------------------------------------------------------------
10169    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10170 
10171    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10172    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10173 
10174    IF xla_accounting_cache_pkg.GetValueChar
10175          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10176          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10177    AND l_bflow_method_code = 'PRIOR_ENTRY'
10178 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10179    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10180          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10181        )
10182    THEN
10183          xla_ae_lines_pkg.BflowUpgEntry
10184            (p_business_method_code    => l_bflow_method_code
10185            ,p_business_class_code     => l_bflow_class_code
10186            ,p_balance_type            => l_balance_type_code);
10187    ELSE
10188       NULL;
10189 -- No business flow processing for business flow method of NONE.
10190    END IF;
10191 
10192    --
10193    -- call analytical criteria
10194    --
10195    
10196    --
10197    -- call description
10198    --
10199    -- No description or it is inherited.
10200    --
10201    -- call ADRs
10202    -- Bug 4922099
10203    --
10204    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10205         (NVL(l_actual_upg_option, 'N') = 'O') OR
10206         (NVL(l_enc_upg_option, 'N') = 'O')
10207       )
10208    THEN
10209    NULL;
10210    --
10211    --
10212    
10213   l_ccid := AcctDerRule_2(
10214            p_application_id           => p_application_id
10215          , p_ae_header_id             => l_ae_header_id 
10216 , p_source_1 => p_source_1
10217 , p_source_2 => p_source_2
10218          , x_transaction_coa_id       => l_adr_transaction_coa_id
10219          , x_accounting_coa_id        => l_adr_accounting_coa_id
10220          , x_value_type_code          => l_adr_value_type_code
10221          , p_side                     => 'NA'
10222    );
10223 
10224    xla_ae_lines_pkg.set_ccid(
10225     p_code_combination_id          => l_ccid
10226   , p_value_type_code              => l_adr_value_type_code
10227   , p_transaction_coa_id           => l_adr_transaction_coa_id
10228   , p_accounting_coa_id            => l_adr_accounting_coa_id
10229   , p_adr_code                     => 'AAP'
10230   , p_adr_type_code                => 'S'
10231   , p_component_type               => l_component_type
10232   , p_component_code               => l_component_code
10233   , p_component_type_code          => l_component_type_code
10234   , p_component_appl_id            => l_component_appl_id
10235   , p_amb_context_code             => l_amb_context_code
10236   , p_side                         => 'NA'
10237   );
10238 
10239 
10240    --
10241    --
10242    END IF;
10243    --
10244    -- Bug 4922099
10245    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10246           (NVL(l_enc_upg_option, 'N') = 'O')
10247         ) AND
10248         (l_bflow_method_code = 'PRIOR_ENTRY')
10249       )
10250    THEN
10251       IF
10252       --
10253       1 = 2
10254       --
10255       THEN
10256       xla_accounting_err_pkg.build_message
10257                                     (p_appli_s_name            => 'XLA'
10258                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10259                                     ,p_token_1                 => 'LINE_NUMBER'
10260                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10261                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10262                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10263                                                                              l_component_type
10264                                                                             ,l_component_code
10265                                                                             ,l_component_type_code
10266                                                                             ,l_component_appl_id
10267                                                                             ,l_amb_context_code
10268                                                                             ,l_entity_code
10269                                                                             ,l_event_class_code
10270                                                                            )
10274                                                                           ,p_lookup_code    => l_component_type_code
10271                                     ,p_token_3                 => 'OWNER'
10272                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10273                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10275                                                                          )
10276                                     ,p_token_4                 => 'PRODUCT_NAME'
10277                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10278                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10279                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10280                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10281                                     ,p_ae_header_id            =>  NULL
10282                                        );
10283 
10284         IF (C_LEVEL_ERROR>= g_log_level) THEN
10285                  trace
10286                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10287                       ,p_level    => C_LEVEL_ERROR
10288                       ,p_module   => l_log_module);
10289         END IF;
10290       END IF;
10291    END IF;
10292    --
10293    --
10294    ------------------------------------------------------------------------------------------------
10295    -- 4219869 Business Flow
10296    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10297    -- Prior Entry.  Currently, the following code is always generated.
10298    ------------------------------------------------------------------------------------------------
10299    XLA_AE_LINES_PKG.ValidateCurrentLine;
10300 
10301    ------------------------------------------------------------------------------------
10302    -- 4219869 Business Flow
10303    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10304    ------------------------------------------------------------------------------------
10305    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10306 
10307    ----------------------------------------------------------------------------------
10308    -- 4219869 Business Flow
10309    -- Update journal entry status -- Need to generate this within IF <condition>
10310    ----------------------------------------------------------------------------------
10311    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10312          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10313          ,p_balance_type_code => l_balance_type_code
10314          );
10315 
10316    -------------------------------------------------------------------------------------------
10317    -- 4262811 - Generate the Accrual Reversal lines
10318    -------------------------------------------------------------------------------------------
10319    BEGIN
10320       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10321                               (g_array_event(p_event_id).array_value_num('header_index'));
10322       IF l_acc_rev_flag IS NULL THEN
10323          l_acc_rev_flag := 'N';
10324       END IF;
10325    EXCEPTION
10326       WHEN OTHERS THEN
10327          l_acc_rev_flag := 'N';
10328    END;
10329    --
10330    IF (l_acc_rev_flag = 'Y') THEN
10331 
10332        -- 4645092  ------------------------------------------------------------------------------
10333        -- To allow MPA report to determine if it should generate report process
10334        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10335        ------------------------------------------------------------------------------------------
10336 
10337        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10338        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10339    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
10340    -- call ADRs
10341    -- Bug 4922099
10342    --
10343    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10344         (NVL(l_actual_upg_option, 'N') = 'O') OR
10345         (NVL(l_enc_upg_option, 'N') = 'O')
10346       )
10347    THEN
10348    NULL;
10349    --
10350    --
10351    
10352   l_ccid := AcctDerRule_2(
10353            p_application_id           => p_application_id
10354          , p_ae_header_id             => l_ae_header_id 
10355 , p_source_1 => p_source_1
10356 , p_source_2 => p_source_2
10357          , x_transaction_coa_id       => l_adr_transaction_coa_id
10358          , x_accounting_coa_id        => l_adr_accounting_coa_id
10359          , x_value_type_code          => l_adr_value_type_code
10360          , p_side                     => 'NA'
10361    );
10362 
10363    xla_ae_lines_pkg.set_ccid(
10364     p_code_combination_id          => l_ccid
10365   , p_value_type_code              => l_adr_value_type_code
10366   , p_transaction_coa_id           => l_adr_transaction_coa_id
10367   , p_accounting_coa_id            => l_adr_accounting_coa_id
10368   , p_adr_code                     => 'AAP'
10369   , p_adr_type_code                => 'S'
10370   , p_component_type               => l_component_type
10371   , p_component_code               => l_component_code
10372   , p_component_type_code          => l_component_type_code
10376   );
10373   , p_component_appl_id            => l_component_appl_id
10374   , p_amb_context_code             => l_amb_context_code
10375   , p_side                         => 'NA'
10377 
10378 
10379    --
10380    --
10381    END IF;
10382 
10383        --
10384        -- Update the line information that should be overwritten
10385        --
10386        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10387                                          p_header_num   => 1);
10388        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10389 
10390        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10391 
10392        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10393           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10394        END IF;
10395 
10396       --
10397       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10398       --
10399       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10400           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10401       ELSE
10402           ---------------------------------------------------------------------------------------------------
10403           -- 4262811a Switch Sign
10404           ---------------------------------------------------------------------------------------------------
10405           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10406           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10407                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10408           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10409                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10410           -- 5132302
10411           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10412                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10413 
10414       END IF;
10415 
10416       -- 4955764
10417       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10418       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10419 
10420 
10421       XLA_AE_LINES_PKG.ValidateCurrentLine;
10422       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10423 
10424       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10425                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10426                ,p_balance_type_code => l_balance_type_code);
10427 
10428    END IF;
10429 
10430    -----------------------------------------------------------------------------------------
10431    -- 4262811 Multiperiod Accounting
10432    -----------------------------------------------------------------------------------------
10433      -- No MPA option is assigned.
10434 
10435 
10436 END IF;
10437 END IF;
10438 --
10439 
10440 --
10441 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10442    trace
10443       (p_msg      => 'END of AcctLineType_51'
10444       ,p_level    => C_LEVEL_PROCEDURE
10445       ,p_module   => l_log_module);
10446 END IF;
10447 --
10448 EXCEPTION
10449   WHEN xla_exceptions_pkg.application_exception THEN
10450       RAISE;
10451   WHEN OTHERS THEN
10452        xla_exceptions_pkg.raise_message
10453            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_51');
10454 END AcctLineType_51;
10455 --
10456 
10457 ---------------------------------------
10458 --
10459 -- PRIVATE FUNCTION
10460 --         AcctLineType_52
10461 --
10462 ---------------------------------------
10463 PROCEDURE AcctLineType_52 (
10464   p_application_id        IN NUMBER
10465  ,p_event_id              IN NUMBER
10466  ,p_calculate_acctd_flag  IN VARCHAR2
10467  ,p_calculate_g_l_flag    IN VARCHAR2
10468  ,p_actual_flag           IN OUT VARCHAR2
10469  ,p_balance_type_code     OUT VARCHAR2
10470  ,p_gain_or_loss_ref      OUT VARCHAR2
10471  
10472 --Transaction Account
10473  , p_source_1            IN NUMBER
10474 --Journal Line Type
10475  , p_source_2            IN VARCHAR2
10476 --Entered Amount
10477  , p_source_3            IN NUMBER
10478 --First Distribution Identifier
10479  , p_source_5            IN NUMBER
10480 --Distribution Type
10481  , p_source_6            IN VARCHAR2
10482 --Currency Code
10483  , p_source_7            IN VARCHAR2
10484 --Currency Conversion Date
10485  , p_source_8            IN DATE
10486 --Currency Conversion Rate
10487  , p_source_9            IN NUMBER
10488 --Currency Conversion Type
10489  , p_source_10            IN VARCHAR2
10490 --Accounted Amount
10491  , p_source_11            IN NUMBER
10492 )
10493 IS
10494 
10495 l_component_type              VARCHAR2(80);
10496 l_component_code              VARCHAR2(30);
10497 l_component_type_code         VARCHAR2(1);
10498 l_component_appl_id           INTEGER;
10499 l_amb_context_code            VARCHAR2(30);
10503 l_event_type_code             VARCHAR2(30);
10500 l_entity_code                 VARCHAR2(30);
10501 l_event_class_code            VARCHAR2(30);
10502 l_ae_header_id                NUMBER;
10504 l_line_definition_code        VARCHAR2(30);
10505 l_line_definition_owner_code  VARCHAR2(1);
10506 --
10507 -- adr variables
10508 l_segment                     VARCHAR2(30);
10509 l_ccid                        NUMBER;
10510 l_adr_transaction_coa_id      NUMBER;
10511 l_adr_accounting_coa_id       NUMBER;
10512 l_adr_flexfield_segment_code  VARCHAR2(30);
10513 l_adr_flex_value_set_id       NUMBER;
10514 l_adr_value_type_code         VARCHAR2(30);
10515 l_adr_value_combination_id    NUMBER;
10516 l_adr_value_segment_code      VARCHAR2(30);
10517 
10518 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
10519 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
10520 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
10521 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
10522 
10523 -- 4262811 Variables ------------------------------------------------------------------------------------------
10524 l_entered_amt_idx             NUMBER;
10525 l_accted_amt_idx              NUMBER;
10526 l_acc_rev_flag                VARCHAR2(1);
10527 l_accrual_line_num            NUMBER;
10528 l_tmp_amt                     NUMBER;
10529 l_acc_rev_natural_side_code   VARCHAR2(1);
10530 
10531 l_num_entries                 NUMBER;
10532 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
10533 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
10534 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
10535 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
10536 l_recog_line_1                NUMBER;
10537 l_recog_line_2                NUMBER;
10538 
10539 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
10540 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
10541 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
10542 
10543 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10544 
10545 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
10546 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
10547 
10548 ---------------------------------------------------------------------------------------------------------------
10549 
10550 
10551 --
10552 -- bulk performance
10553 --
10554 l_balance_type_code           VARCHAR2(1);
10555 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
10556 l_log_module                  VARCHAR2(240);
10557 
10558 --
10559 -- Upgrade strategy
10560 --
10561 l_actual_upg_option           VARCHAR2(1);
10562 l_enc_upg_option           VARCHAR2(1);
10563 
10564 --
10565 BEGIN
10566 --
10567 IF g_log_enabled THEN
10568       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_52';
10569 END IF;
10570 --
10571 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10572 
10573       trace
10574          (p_msg      => 'BEGIN of AcctLineType_52'
10575          ,p_level    => C_LEVEL_PROCEDURE
10576          ,p_module   => l_log_module);
10577 
10578 END IF;
10579 --
10580 l_component_type             := 'AMB_JLT';
10581 l_component_code             := 'AAP';
10582 l_component_type_code        := 'S';
10583 l_component_appl_id          :=  555;
10584 l_amb_context_code           := 'DEFAULT';
10585 l_entity_code                := 'PURCHASING';
10586 l_event_class_code           := 'RECEIVE';
10587 l_event_type_code            := 'CORRECTION_RECEIVE';
10588 l_line_definition_owner_code := 'S';
10589 l_line_definition_code       := 'CORRECTION_RECEIVE';
10590 --
10591 l_balance_type_code          := 'A';
10592 l_segment                     := NULL;
10593 l_ccid                        := NULL;
10594 l_adr_transaction_coa_id      := NULL;
10595 l_adr_accounting_coa_id       := NULL;
10596 l_adr_flexfield_segment_code  := NULL;
10597 l_adr_flex_value_set_id       := NULL;
10598 l_adr_value_type_code         := NULL;
10599 l_adr_value_combination_id    := NULL;
10600 l_adr_value_segment_code      := NULL;
10601 
10602 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
10603 l_bflow_class_code           := '';    -- 4219869 Business Flow
10604 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
10605 l_budgetary_control_flag     := 'N';
10606 
10607 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10608 l_bflow_applied_to_amt       := NULL; -- 5132302
10609 l_entered_amt_idx            := NULL;          -- 4262811
10610 l_accted_amt_idx             := NULL;          -- 4262811
10611 l_acc_rev_flag               := NULL;          -- 4262811
10612 l_accrual_line_num           := NULL;          -- 4262811
10613 l_tmp_amt                    := NULL;          -- 4262811
10614 --
10615  
10616 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10617     l_balance_type_code <> 'B' THEN
10618 IF NVL(p_source_2,'
10619 ') =  'AAP'
10620  THEN 
10621 
10622    --
10623    XLA_AE_LINES_PKG.SetNewLine;
10624 
10625    p_balance_type_code          := l_balance_type_code;
10626    -- set the flag so later we will know whether the gain loss line needs to be created
10627    
10631 
10628    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10629      p_actual_flag :='A';
10630    END IF;
10632    --
10633    -- bulk performance
10634    --
10635    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10636                                       p_header_num   => 0); -- 4262811
10637    --
10638    -- set accounting line options
10639    --
10640    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10641            p_natural_side_code          => 'D'
10642          , p_gain_or_loss_flag          => 'N'
10643          , p_gl_transfer_mode_code      => 'D'
10644          , p_acct_entry_type_code       => 'A'
10645          , p_switch_side_flag           => 'Y'
10646          , p_merge_duplicate_code       => 'W'
10647          );
10648    --
10649    l_acc_rev_natural_side_code := 'C';  -- 4262811
10650    -- 
10651    --
10652    -- set accounting line type info
10653    --
10654    xla_ae_lines_pkg.SetAcctLineType
10655       (p_component_type             => l_component_type
10656       ,p_event_type_code            => l_event_type_code
10657       ,p_line_definition_owner_code => l_line_definition_owner_code
10658       ,p_line_definition_code       => l_line_definition_code
10659       ,p_accounting_line_code       => l_component_code
10660       ,p_accounting_line_type_code  => l_component_type_code
10661       ,p_accounting_line_appl_id    => l_component_appl_id
10662       ,p_amb_context_code           => l_amb_context_code
10663       ,p_entity_code                => l_entity_code
10664       ,p_event_class_code           => l_event_class_code);
10665    --
10666    -- set accounting class
10667    --
10668    xla_ae_lines_pkg.SetAcctClass(
10669            p_accounting_class_code  => 'AAP'
10670          , p_ae_header_id           => l_ae_header_id
10671          );
10672 
10673    --
10674    -- set rounding class
10675    --
10676    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10677                       'AAP';
10678 
10679    --
10680    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10681    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10682    --
10683    -- bulk performance
10684    --
10685    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10686 
10687    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10688       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10689 
10690    -- 4955764
10691    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10692       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10693 
10694    -- 4458381 Public Sector Enh
10695    
10696    --
10697    -- set accounting attributes for the line type
10698    --
10699    l_entered_amt_idx := 3;
10700    l_accted_amt_idx  := 8;
10701    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
10702    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
10703    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
10704    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
10705    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
10706    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
10707    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
10708    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
10709    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
10710    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
10711    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
10712    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
10713    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
10714    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
10715    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
10716    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
10717    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
10718 
10719    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10720    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10721 
10722    ---------------------------------------------------------------------------------------------------------------
10723    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10724    ---------------------------------------------------------------------------------------------------------------
10725    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10726 
10727    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10728    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10729 
10730    IF xla_accounting_cache_pkg.GetValueChar
10731          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10732          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10733    AND l_bflow_method_code = 'PRIOR_ENTRY'
10734 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10735    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10739          xla_ae_lines_pkg.BflowUpgEntry
10736          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10737        )
10738    THEN
10740            (p_business_method_code    => l_bflow_method_code
10741            ,p_business_class_code     => l_bflow_class_code
10742            ,p_balance_type            => l_balance_type_code);
10743    ELSE
10744       NULL;
10745 -- No business flow processing for business flow method of NONE.
10746    END IF;
10747 
10748    --
10749    -- call analytical criteria
10750    --
10751    
10752    --
10753    -- call description
10754    --
10755    -- No description or it is inherited.
10756    --
10757    -- call ADRs
10758    -- Bug 4922099
10759    --
10760    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10761         (NVL(l_actual_upg_option, 'N') = 'O') OR
10762         (NVL(l_enc_upg_option, 'N') = 'O')
10763       )
10764    THEN
10765    NULL;
10766    --
10767    --
10768    
10769   l_ccid := AcctDerRule_2(
10770            p_application_id           => p_application_id
10771          , p_ae_header_id             => l_ae_header_id 
10772 , p_source_1 => p_source_1
10773 , p_source_2 => p_source_2
10774          , x_transaction_coa_id       => l_adr_transaction_coa_id
10775          , x_accounting_coa_id        => l_adr_accounting_coa_id
10776          , x_value_type_code          => l_adr_value_type_code
10777          , p_side                     => 'NA'
10778    );
10779 
10780    xla_ae_lines_pkg.set_ccid(
10781     p_code_combination_id          => l_ccid
10782   , p_value_type_code              => l_adr_value_type_code
10783   , p_transaction_coa_id           => l_adr_transaction_coa_id
10784   , p_accounting_coa_id            => l_adr_accounting_coa_id
10785   , p_adr_code                     => 'AAP'
10786   , p_adr_type_code                => 'S'
10787   , p_component_type               => l_component_type
10788   , p_component_code               => l_component_code
10789   , p_component_type_code          => l_component_type_code
10790   , p_component_appl_id            => l_component_appl_id
10791   , p_amb_context_code             => l_amb_context_code
10792   , p_side                         => 'NA'
10793   );
10794 
10795 
10796    --
10797    --
10798    END IF;
10799    --
10800    -- Bug 4922099
10801    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10802           (NVL(l_enc_upg_option, 'N') = 'O')
10803         ) AND
10804         (l_bflow_method_code = 'PRIOR_ENTRY')
10805       )
10806    THEN
10807       IF
10808       --
10809       1 = 2
10810       --
10811       THEN
10812       xla_accounting_err_pkg.build_message
10813                                     (p_appli_s_name            => 'XLA'
10814                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10815                                     ,p_token_1                 => 'LINE_NUMBER'
10816                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10817                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10818                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10819                                                                              l_component_type
10820                                                                             ,l_component_code
10821                                                                             ,l_component_type_code
10822                                                                             ,l_component_appl_id
10823                                                                             ,l_amb_context_code
10824                                                                             ,l_entity_code
10825                                                                             ,l_event_class_code
10826                                                                            )
10827                                     ,p_token_3                 => 'OWNER'
10828                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10829                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10830                                                                           ,p_lookup_code    => l_component_type_code
10831                                                                          )
10832                                     ,p_token_4                 => 'PRODUCT_NAME'
10833                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10834                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10835                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10836                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10837                                     ,p_ae_header_id            =>  NULL
10838                                        );
10839 
10840         IF (C_LEVEL_ERROR>= g_log_level) THEN
10841                  trace
10842                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10843                       ,p_level    => C_LEVEL_ERROR
10844                       ,p_module   => l_log_module);
10845         END IF;
10846       END IF;
10850    ------------------------------------------------------------------------------------------------
10847    END IF;
10848    --
10849    --
10851    -- 4219869 Business Flow
10852    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10853    -- Prior Entry.  Currently, the following code is always generated.
10854    ------------------------------------------------------------------------------------------------
10855    XLA_AE_LINES_PKG.ValidateCurrentLine;
10856 
10857    ------------------------------------------------------------------------------------
10858    -- 4219869 Business Flow
10859    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10860    ------------------------------------------------------------------------------------
10861    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10862 
10863    ----------------------------------------------------------------------------------
10864    -- 4219869 Business Flow
10865    -- Update journal entry status -- Need to generate this within IF <condition>
10866    ----------------------------------------------------------------------------------
10867    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10868          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10869          ,p_balance_type_code => l_balance_type_code
10870          );
10871 
10872    -------------------------------------------------------------------------------------------
10873    -- 4262811 - Generate the Accrual Reversal lines
10874    -------------------------------------------------------------------------------------------
10875    BEGIN
10876       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10877                               (g_array_event(p_event_id).array_value_num('header_index'));
10878       IF l_acc_rev_flag IS NULL THEN
10879          l_acc_rev_flag := 'N';
10880       END IF;
10881    EXCEPTION
10882       WHEN OTHERS THEN
10883          l_acc_rev_flag := 'N';
10884    END;
10885    --
10886    IF (l_acc_rev_flag = 'Y') THEN
10887 
10888        -- 4645092  ------------------------------------------------------------------------------
10889        -- To allow MPA report to determine if it should generate report process
10890        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10891        ------------------------------------------------------------------------------------------
10892 
10893        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10894        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10895    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
10896    -- call ADRs
10897    -- Bug 4922099
10898    --
10899    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10900         (NVL(l_actual_upg_option, 'N') = 'O') OR
10901         (NVL(l_enc_upg_option, 'N') = 'O')
10902       )
10903    THEN
10904    NULL;
10905    --
10906    --
10907    
10908   l_ccid := AcctDerRule_2(
10909            p_application_id           => p_application_id
10910          , p_ae_header_id             => l_ae_header_id 
10911 , p_source_1 => p_source_1
10912 , p_source_2 => p_source_2
10913          , x_transaction_coa_id       => l_adr_transaction_coa_id
10914          , x_accounting_coa_id        => l_adr_accounting_coa_id
10915          , x_value_type_code          => l_adr_value_type_code
10916          , p_side                     => 'NA'
10917    );
10918 
10919    xla_ae_lines_pkg.set_ccid(
10920     p_code_combination_id          => l_ccid
10921   , p_value_type_code              => l_adr_value_type_code
10922   , p_transaction_coa_id           => l_adr_transaction_coa_id
10923   , p_accounting_coa_id            => l_adr_accounting_coa_id
10924   , p_adr_code                     => 'AAP'
10925   , p_adr_type_code                => 'S'
10926   , p_component_type               => l_component_type
10927   , p_component_code               => l_component_code
10928   , p_component_type_code          => l_component_type_code
10929   , p_component_appl_id            => l_component_appl_id
10930   , p_amb_context_code             => l_amb_context_code
10931   , p_side                         => 'NA'
10932   );
10933 
10934 
10935    --
10936    --
10937    END IF;
10938 
10939        --
10940        -- Update the line information that should be overwritten
10941        --
10942        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10943                                          p_header_num   => 1);
10944        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10945 
10946        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10947 
10948        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10949           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10950        END IF;
10951 
10952       --
10953       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10954       --
10955       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10956           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10957       ELSE
10958           ---------------------------------------------------------------------------------------------------
10962           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10959           -- 4262811a Switch Sign
10960           ---------------------------------------------------------------------------------------------------
10961           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10963                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10964           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10965                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10966           -- 5132302
10967           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10968                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10969 
10970       END IF;
10971 
10972       -- 4955764
10973       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10974       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10975 
10976 
10977       XLA_AE_LINES_PKG.ValidateCurrentLine;
10978       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10979 
10980       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10981                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10982                ,p_balance_type_code => l_balance_type_code);
10983 
10984    END IF;
10985 
10986    -----------------------------------------------------------------------------------------
10987    -- 4262811 Multiperiod Accounting
10988    -----------------------------------------------------------------------------------------
10989      -- No MPA option is assigned.
10990 
10991 
10992 END IF;
10993 END IF;
10994 --
10995 
10996 --
10997 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10998    trace
10999       (p_msg      => 'END of AcctLineType_52'
11000       ,p_level    => C_LEVEL_PROCEDURE
11001       ,p_module   => l_log_module);
11002 END IF;
11003 --
11004 EXCEPTION
11005   WHEN xla_exceptions_pkg.application_exception THEN
11006       RAISE;
11007   WHEN OTHERS THEN
11008        xla_exceptions_pkg.raise_message
11009            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_52');
11010 END AcctLineType_52;
11011 --
11012 
11013 ---------------------------------------
11014 --
11015 -- PRIVATE FUNCTION
11016 --         AcctLineType_53
11017 --
11018 ---------------------------------------
11019 PROCEDURE AcctLineType_53 (
11020   p_application_id        IN NUMBER
11021  ,p_event_id              IN NUMBER
11022  ,p_calculate_acctd_flag  IN VARCHAR2
11023  ,p_calculate_g_l_flag    IN VARCHAR2
11024  ,p_actual_flag           IN OUT VARCHAR2
11025  ,p_balance_type_code     OUT VARCHAR2
11026  ,p_gain_or_loss_ref      OUT VARCHAR2
11027  
11028 --Transaction Account
11029  , p_source_1            IN NUMBER
11030 --Journal Line Type
11031  , p_source_2            IN VARCHAR2
11032 --Entered Amount
11033  , p_source_3            IN NUMBER
11034 --First Distribution Identifier
11035  , p_source_5            IN NUMBER
11036 --Distribution Type
11037  , p_source_6            IN VARCHAR2
11038 --Currency Code
11039  , p_source_7            IN VARCHAR2
11040 --Currency Conversion Date
11041  , p_source_8            IN DATE
11042 --Currency Conversion Rate
11043  , p_source_9            IN NUMBER
11044 --Currency Conversion Type
11045  , p_source_10            IN VARCHAR2
11046 --Accounted Amount
11047  , p_source_11            IN NUMBER
11048 )
11049 IS
11050 
11051 l_component_type              VARCHAR2(80);
11052 l_component_code              VARCHAR2(30);
11053 l_component_type_code         VARCHAR2(1);
11054 l_component_appl_id           INTEGER;
11055 l_amb_context_code            VARCHAR2(30);
11056 l_entity_code                 VARCHAR2(30);
11057 l_event_class_code            VARCHAR2(30);
11058 l_ae_header_id                NUMBER;
11059 l_event_type_code             VARCHAR2(30);
11060 l_line_definition_code        VARCHAR2(30);
11061 l_line_definition_owner_code  VARCHAR2(1);
11062 --
11063 -- adr variables
11064 l_segment                     VARCHAR2(30);
11065 l_ccid                        NUMBER;
11066 l_adr_transaction_coa_id      NUMBER;
11067 l_adr_accounting_coa_id       NUMBER;
11068 l_adr_flexfield_segment_code  VARCHAR2(30);
11069 l_adr_flex_value_set_id       NUMBER;
11070 l_adr_value_type_code         VARCHAR2(30);
11071 l_adr_value_combination_id    NUMBER;
11072 l_adr_value_segment_code      VARCHAR2(30);
11073 
11074 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11075 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11076 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11077 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11078 
11079 -- 4262811 Variables ------------------------------------------------------------------------------------------
11080 l_entered_amt_idx             NUMBER;
11081 l_accted_amt_idx              NUMBER;
11082 l_acc_rev_flag                VARCHAR2(1);
11083 l_accrual_line_num            NUMBER;
11084 l_tmp_amt                     NUMBER;
11085 l_acc_rev_natural_side_code   VARCHAR2(1);
11086 
11090 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11087 l_num_entries                 NUMBER;
11088 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11089 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11091 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11092 l_recog_line_1                NUMBER;
11093 l_recog_line_2                NUMBER;
11094 
11095 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11096 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11097 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11098 
11099 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11100 
11101 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11102 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11103 
11104 ---------------------------------------------------------------------------------------------------------------
11105 
11106 
11107 --
11108 -- bulk performance
11109 --
11110 l_balance_type_code           VARCHAR2(1);
11111 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11112 l_log_module                  VARCHAR2(240);
11113 
11114 --
11115 -- Upgrade strategy
11116 --
11117 l_actual_upg_option           VARCHAR2(1);
11118 l_enc_upg_option           VARCHAR2(1);
11119 
11120 --
11121 BEGIN
11122 --
11123 IF g_log_enabled THEN
11124       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_53';
11125 END IF;
11126 --
11127 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11128 
11129       trace
11130          (p_msg      => 'BEGIN of AcctLineType_53'
11131          ,p_level    => C_LEVEL_PROCEDURE
11132          ,p_module   => l_log_module);
11133 
11134 END IF;
11135 --
11136 l_component_type             := 'AMB_JLT';
11137 l_component_code             := 'AAP';
11138 l_component_type_code        := 'S';
11139 l_component_appl_id          :=  555;
11140 l_amb_context_code           := 'DEFAULT';
11141 l_entity_code                := 'PURCHASING';
11142 l_event_class_code           := 'RECEIVE';
11143 l_event_type_code            := 'RET_TO_VENDOR';
11144 l_line_definition_owner_code := 'S';
11145 l_line_definition_code       := 'RETURN';
11146 --
11147 l_balance_type_code          := 'A';
11148 l_segment                     := NULL;
11149 l_ccid                        := NULL;
11150 l_adr_transaction_coa_id      := NULL;
11151 l_adr_accounting_coa_id       := NULL;
11152 l_adr_flexfield_segment_code  := NULL;
11153 l_adr_flex_value_set_id       := NULL;
11154 l_adr_value_type_code         := NULL;
11155 l_adr_value_combination_id    := NULL;
11156 l_adr_value_segment_code      := NULL;
11157 
11158 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
11159 l_bflow_class_code           := '';    -- 4219869 Business Flow
11160 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
11161 l_budgetary_control_flag     := 'N';
11162 
11163 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11164 l_bflow_applied_to_amt       := NULL; -- 5132302
11165 l_entered_amt_idx            := NULL;          -- 4262811
11166 l_accted_amt_idx             := NULL;          -- 4262811
11167 l_acc_rev_flag               := NULL;          -- 4262811
11168 l_accrual_line_num           := NULL;          -- 4262811
11169 l_tmp_amt                    := NULL;          -- 4262811
11170 --
11171  
11172 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11173     l_balance_type_code <> 'B' THEN
11174 IF NVL(p_source_2,'
11175 ') =  'AAP'
11176  THEN 
11177 
11178    --
11179    XLA_AE_LINES_PKG.SetNewLine;
11180 
11181    p_balance_type_code          := l_balance_type_code;
11182    -- set the flag so later we will know whether the gain loss line needs to be created
11183    
11184    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11185      p_actual_flag :='A';
11186    END IF;
11187 
11188    --
11189    -- bulk performance
11190    --
11191    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11192                                       p_header_num   => 0); -- 4262811
11193    --
11194    -- set accounting line options
11195    --
11196    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11197            p_natural_side_code          => 'D'
11198          , p_gain_or_loss_flag          => 'N'
11199          , p_gl_transfer_mode_code      => 'D'
11200          , p_acct_entry_type_code       => 'A'
11201          , p_switch_side_flag           => 'Y'
11202          , p_merge_duplicate_code       => 'W'
11203          );
11204    --
11205    l_acc_rev_natural_side_code := 'C';  -- 4262811
11206    -- 
11207    --
11208    -- set accounting line type info
11209    --
11210    xla_ae_lines_pkg.SetAcctLineType
11211       (p_component_type             => l_component_type
11212       ,p_event_type_code            => l_event_type_code
11213       ,p_line_definition_owner_code => l_line_definition_owner_code
11214       ,p_line_definition_code       => l_line_definition_code
11215       ,p_accounting_line_code       => l_component_code
11216       ,p_accounting_line_type_code  => l_component_type_code
11220       ,p_event_class_code           => l_event_class_code);
11217       ,p_accounting_line_appl_id    => l_component_appl_id
11218       ,p_amb_context_code           => l_amb_context_code
11219       ,p_entity_code                => l_entity_code
11221    --
11222    -- set accounting class
11223    --
11224    xla_ae_lines_pkg.SetAcctClass(
11225            p_accounting_class_code  => 'AAP'
11226          , p_ae_header_id           => l_ae_header_id
11227          );
11228 
11229    --
11230    -- set rounding class
11231    --
11232    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11233                       'AAP';
11234 
11235    --
11236    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11237    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11238    --
11239    -- bulk performance
11240    --
11241    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11242 
11243    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11244       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11245 
11246    -- 4955764
11247    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11248       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11249 
11250    -- 4458381 Public Sector Enh
11251    
11252    --
11253    -- set accounting attributes for the line type
11254    --
11255    l_entered_amt_idx := 3;
11256    l_accted_amt_idx  := 8;
11257    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11258    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
11259    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
11260    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
11261    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
11262    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
11263    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
11264    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
11265    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
11266    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
11267    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
11268    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
11269    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
11270    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
11271    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
11272    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
11273    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
11274 
11275    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11276    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11277 
11278    ---------------------------------------------------------------------------------------------------------------
11279    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11280    ---------------------------------------------------------------------------------------------------------------
11281    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11282 
11283    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11284    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11285 
11286    IF xla_accounting_cache_pkg.GetValueChar
11287          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11288          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11289    AND l_bflow_method_code = 'PRIOR_ENTRY'
11290 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11291    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11292          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11293        )
11294    THEN
11295          xla_ae_lines_pkg.BflowUpgEntry
11296            (p_business_method_code    => l_bflow_method_code
11297            ,p_business_class_code     => l_bflow_class_code
11298            ,p_balance_type            => l_balance_type_code);
11299    ELSE
11300       NULL;
11301 -- No business flow processing for business flow method of NONE.
11302    END IF;
11303 
11304    --
11305    -- call analytical criteria
11306    --
11307    
11308    --
11309    -- call description
11310    --
11311    -- No description or it is inherited.
11312    --
11313    -- call ADRs
11314    -- Bug 4922099
11315    --
11316    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11317         (NVL(l_actual_upg_option, 'N') = 'O') OR
11318         (NVL(l_enc_upg_option, 'N') = 'O')
11319       )
11320    THEN
11321    NULL;
11322    --
11323    --
11324    
11325   l_ccid := AcctDerRule_2(
11326            p_application_id           => p_application_id
11327          , p_ae_header_id             => l_ae_header_id 
11328 , p_source_1 => p_source_1
11329 , p_source_2 => p_source_2
11330          , x_transaction_coa_id       => l_adr_transaction_coa_id
11331          , x_accounting_coa_id        => l_adr_accounting_coa_id
11335 
11332          , x_value_type_code          => l_adr_value_type_code
11333          , p_side                     => 'NA'
11334    );
11336    xla_ae_lines_pkg.set_ccid(
11337     p_code_combination_id          => l_ccid
11338   , p_value_type_code              => l_adr_value_type_code
11339   , p_transaction_coa_id           => l_adr_transaction_coa_id
11340   , p_accounting_coa_id            => l_adr_accounting_coa_id
11341   , p_adr_code                     => 'AAP'
11342   , p_adr_type_code                => 'S'
11343   , p_component_type               => l_component_type
11344   , p_component_code               => l_component_code
11345   , p_component_type_code          => l_component_type_code
11346   , p_component_appl_id            => l_component_appl_id
11347   , p_amb_context_code             => l_amb_context_code
11348   , p_side                         => 'NA'
11349   );
11350 
11351 
11352    --
11353    --
11354    END IF;
11355    --
11356    -- Bug 4922099
11357    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11358           (NVL(l_enc_upg_option, 'N') = 'O')
11359         ) AND
11360         (l_bflow_method_code = 'PRIOR_ENTRY')
11361       )
11362    THEN
11363       IF
11364       --
11365       1 = 2
11366       --
11367       THEN
11368       xla_accounting_err_pkg.build_message
11369                                     (p_appli_s_name            => 'XLA'
11370                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11371                                     ,p_token_1                 => 'LINE_NUMBER'
11372                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
11373                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11374                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11375                                                                              l_component_type
11376                                                                             ,l_component_code
11377                                                                             ,l_component_type_code
11378                                                                             ,l_component_appl_id
11379                                                                             ,l_amb_context_code
11380                                                                             ,l_entity_code
11381                                                                             ,l_event_class_code
11382                                                                            )
11383                                     ,p_token_3                 => 'OWNER'
11384                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
11385                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
11386                                                                           ,p_lookup_code    => l_component_type_code
11387                                                                          )
11388                                     ,p_token_4                 => 'PRODUCT_NAME'
11389                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11390                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11391                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11392                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11393                                     ,p_ae_header_id            =>  NULL
11394                                        );
11395 
11396         IF (C_LEVEL_ERROR>= g_log_level) THEN
11397                  trace
11398                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11399                       ,p_level    => C_LEVEL_ERROR
11400                       ,p_module   => l_log_module);
11401         END IF;
11402       END IF;
11403    END IF;
11404    --
11405    --
11406    ------------------------------------------------------------------------------------------------
11407    -- 4219869 Business Flow
11408    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11409    -- Prior Entry.  Currently, the following code is always generated.
11410    ------------------------------------------------------------------------------------------------
11411    XLA_AE_LINES_PKG.ValidateCurrentLine;
11412 
11413    ------------------------------------------------------------------------------------
11414    -- 4219869 Business Flow
11415    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11416    ------------------------------------------------------------------------------------
11417    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11418 
11419    ----------------------------------------------------------------------------------
11420    -- 4219869 Business Flow
11421    -- Update journal entry status -- Need to generate this within IF <condition>
11422    ----------------------------------------------------------------------------------
11423    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11424          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11425          ,p_balance_type_code => l_balance_type_code
11426          );
11427 
11431    BEGIN
11428    -------------------------------------------------------------------------------------------
11429    -- 4262811 - Generate the Accrual Reversal lines
11430    -------------------------------------------------------------------------------------------
11432       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11433                               (g_array_event(p_event_id).array_value_num('header_index'));
11434       IF l_acc_rev_flag IS NULL THEN
11435          l_acc_rev_flag := 'N';
11436       END IF;
11437    EXCEPTION
11438       WHEN OTHERS THEN
11439          l_acc_rev_flag := 'N';
11440    END;
11441    --
11442    IF (l_acc_rev_flag = 'Y') THEN
11443 
11444        -- 4645092  ------------------------------------------------------------------------------
11445        -- To allow MPA report to determine if it should generate report process
11446        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
11447        ------------------------------------------------------------------------------------------
11448 
11449        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
11450        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11451    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
11452    -- call ADRs
11453    -- Bug 4922099
11454    --
11455    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11456         (NVL(l_actual_upg_option, 'N') = 'O') OR
11457         (NVL(l_enc_upg_option, 'N') = 'O')
11458       )
11459    THEN
11460    NULL;
11461    --
11462    --
11463    
11464   l_ccid := AcctDerRule_2(
11465            p_application_id           => p_application_id
11466          , p_ae_header_id             => l_ae_header_id 
11467 , p_source_1 => p_source_1
11468 , p_source_2 => p_source_2
11469          , x_transaction_coa_id       => l_adr_transaction_coa_id
11470          , x_accounting_coa_id        => l_adr_accounting_coa_id
11471          , x_value_type_code          => l_adr_value_type_code
11472          , p_side                     => 'NA'
11473    );
11474 
11475    xla_ae_lines_pkg.set_ccid(
11476     p_code_combination_id          => l_ccid
11477   , p_value_type_code              => l_adr_value_type_code
11478   , p_transaction_coa_id           => l_adr_transaction_coa_id
11479   , p_accounting_coa_id            => l_adr_accounting_coa_id
11480   , p_adr_code                     => 'AAP'
11481   , p_adr_type_code                => 'S'
11482   , p_component_type               => l_component_type
11483   , p_component_code               => l_component_code
11484   , p_component_type_code          => l_component_type_code
11485   , p_component_appl_id            => l_component_appl_id
11486   , p_amb_context_code             => l_amb_context_code
11487   , p_side                         => 'NA'
11488   );
11489 
11490 
11491    --
11492    --
11493    END IF;
11494 
11495        --
11496        -- Update the line information that should be overwritten
11497        --
11498        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11499                                          p_header_num   => 1);
11500        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
11501 
11502        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11503 
11504        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
11505           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11506        END IF;
11507 
11508       --
11509       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11510       --
11511       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11512           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
11513       ELSE
11514           ---------------------------------------------------------------------------------------------------
11515           -- 4262811a Switch Sign
11516           ---------------------------------------------------------------------------------------------------
11517           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
11518           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11519                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11520           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11521                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11522           -- 5132302
11523           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11524                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11525 
11526       END IF;
11527 
11528       -- 4955764
11529       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11530       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11531 
11532 
11533       XLA_AE_LINES_PKG.ValidateCurrentLine;
11534       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11535 
11536       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11537                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11541 
11538                ,p_balance_type_code => l_balance_type_code);
11539 
11540    END IF;
11542    -----------------------------------------------------------------------------------------
11543    -- 4262811 Multiperiod Accounting
11544    -----------------------------------------------------------------------------------------
11545      -- No MPA option is assigned.
11546 
11547 
11548 END IF;
11549 END IF;
11550 --
11551 
11552 --
11553 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11554    trace
11555       (p_msg      => 'END of AcctLineType_53'
11556       ,p_level    => C_LEVEL_PROCEDURE
11557       ,p_module   => l_log_module);
11558 END IF;
11559 --
11560 EXCEPTION
11561   WHEN xla_exceptions_pkg.application_exception THEN
11562       RAISE;
11563   WHEN OTHERS THEN
11564        xla_exceptions_pkg.raise_message
11565            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_53');
11566 END AcctLineType_53;
11567 --
11568 
11569 ---------------------------------------
11570 --
11571 -- PRIVATE FUNCTION
11572 --         AcctLineType_54
11573 --
11574 ---------------------------------------
11575 PROCEDURE AcctLineType_54 (
11576   p_application_id        IN NUMBER
11577  ,p_event_id              IN NUMBER
11578  ,p_calculate_acctd_flag  IN VARCHAR2
11579  ,p_calculate_g_l_flag    IN VARCHAR2
11580  ,p_actual_flag           IN OUT VARCHAR2
11581  ,p_balance_type_code     OUT VARCHAR2
11582  ,p_gain_or_loss_ref      OUT VARCHAR2
11583  
11584 --Transaction Account
11585  , p_source_1            IN NUMBER
11586 --Journal Line Type
11587  , p_source_2            IN VARCHAR2
11588 --Entered Amount
11589  , p_source_3            IN NUMBER
11590 --First Distribution Identifier
11591  , p_source_5            IN NUMBER
11592 --Distribution Type
11593  , p_source_6            IN VARCHAR2
11594 --Currency Code
11595  , p_source_7            IN VARCHAR2
11596 --Currency Conversion Date
11597  , p_source_8            IN DATE
11598 --Currency Conversion Rate
11599  , p_source_9            IN NUMBER
11600 --Currency Conversion Type
11601  , p_source_10            IN VARCHAR2
11602 --Accounted Amount
11603  , p_source_11            IN NUMBER
11604 )
11605 IS
11606 
11607 l_component_type              VARCHAR2(80);
11608 l_component_code              VARCHAR2(30);
11609 l_component_type_code         VARCHAR2(1);
11610 l_component_appl_id           INTEGER;
11611 l_amb_context_code            VARCHAR2(30);
11612 l_entity_code                 VARCHAR2(30);
11613 l_event_class_code            VARCHAR2(30);
11614 l_ae_header_id                NUMBER;
11615 l_event_type_code             VARCHAR2(30);
11616 l_line_definition_code        VARCHAR2(30);
11617 l_line_definition_owner_code  VARCHAR2(1);
11618 --
11619 -- adr variables
11620 l_segment                     VARCHAR2(30);
11621 l_ccid                        NUMBER;
11622 l_adr_transaction_coa_id      NUMBER;
11623 l_adr_accounting_coa_id       NUMBER;
11624 l_adr_flexfield_segment_code  VARCHAR2(30);
11625 l_adr_flex_value_set_id       NUMBER;
11626 l_adr_value_type_code         VARCHAR2(30);
11627 l_adr_value_combination_id    NUMBER;
11628 l_adr_value_segment_code      VARCHAR2(30);
11629 
11630 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11631 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11632 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11633 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11634 
11635 -- 4262811 Variables ------------------------------------------------------------------------------------------
11636 l_entered_amt_idx             NUMBER;
11637 l_accted_amt_idx              NUMBER;
11638 l_acc_rev_flag                VARCHAR2(1);
11639 l_accrual_line_num            NUMBER;
11640 l_tmp_amt                     NUMBER;
11641 l_acc_rev_natural_side_code   VARCHAR2(1);
11642 
11643 l_num_entries                 NUMBER;
11644 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11645 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11646 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11647 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11648 l_recog_line_1                NUMBER;
11649 l_recog_line_2                NUMBER;
11650 
11651 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11652 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11653 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11654 
11655 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11656 
11657 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11658 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11659 
11660 ---------------------------------------------------------------------------------------------------------------
11661 
11662 
11663 --
11664 -- bulk performance
11665 --
11666 l_balance_type_code           VARCHAR2(1);
11667 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11668 l_log_module                  VARCHAR2(240);
11669 
11670 --
11671 -- Upgrade strategy
11672 --
11676 --
11673 l_actual_upg_option           VARCHAR2(1);
11674 l_enc_upg_option           VARCHAR2(1);
11675 
11677 BEGIN
11678 --
11679 IF g_log_enabled THEN
11680       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_54';
11681 END IF;
11682 --
11683 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11684 
11685       trace
11686          (p_msg      => 'BEGIN of AcctLineType_54'
11687          ,p_level    => C_LEVEL_PROCEDURE
11688          ,p_module   => l_log_module);
11689 
11690 END IF;
11691 --
11692 l_component_type             := 'AMB_JLT';
11693 l_component_code             := 'AAP';
11694 l_component_type_code        := 'S';
11695 l_component_appl_id          :=  555;
11696 l_amb_context_code           := 'DEFAULT';
11697 l_entity_code                := 'PURCHASING';
11698 l_event_class_code           := 'RECEIVE';
11699 l_event_type_code            := 'LOG_RET_TO_VENDOR';
11700 l_line_definition_owner_code := 'S';
11701 l_line_definition_code       := 'LOG_RET_TO_VENDOR';
11702 --
11703 l_balance_type_code          := 'A';
11704 l_segment                     := NULL;
11705 l_ccid                        := NULL;
11706 l_adr_transaction_coa_id      := NULL;
11707 l_adr_accounting_coa_id       := NULL;
11708 l_adr_flexfield_segment_code  := NULL;
11709 l_adr_flex_value_set_id       := NULL;
11710 l_adr_value_type_code         := NULL;
11711 l_adr_value_combination_id    := NULL;
11712 l_adr_value_segment_code      := NULL;
11713 
11714 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
11715 l_bflow_class_code           := '';    -- 4219869 Business Flow
11716 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
11717 l_budgetary_control_flag     := 'N';
11718 
11719 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11720 l_bflow_applied_to_amt       := NULL; -- 5132302
11721 l_entered_amt_idx            := NULL;          -- 4262811
11722 l_accted_amt_idx             := NULL;          -- 4262811
11723 l_acc_rev_flag               := NULL;          -- 4262811
11724 l_accrual_line_num           := NULL;          -- 4262811
11725 l_tmp_amt                    := NULL;          -- 4262811
11726 --
11727  
11728 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11729     l_balance_type_code <> 'B' THEN
11730 IF NVL(p_source_2,'
11731 ') =  'AAP'
11732  THEN 
11733 
11734    --
11735    XLA_AE_LINES_PKG.SetNewLine;
11736 
11737    p_balance_type_code          := l_balance_type_code;
11738    -- set the flag so later we will know whether the gain loss line needs to be created
11739    
11740    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11741      p_actual_flag :='A';
11742    END IF;
11743 
11744    --
11745    -- bulk performance
11746    --
11747    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11748                                       p_header_num   => 0); -- 4262811
11749    --
11750    -- set accounting line options
11751    --
11752    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11753            p_natural_side_code          => 'D'
11754          , p_gain_or_loss_flag          => 'N'
11755          , p_gl_transfer_mode_code      => 'D'
11756          , p_acct_entry_type_code       => 'A'
11757          , p_switch_side_flag           => 'Y'
11758          , p_merge_duplicate_code       => 'W'
11759          );
11760    --
11761    l_acc_rev_natural_side_code := 'C';  -- 4262811
11762    -- 
11763    --
11764    -- set accounting line type info
11765    --
11766    xla_ae_lines_pkg.SetAcctLineType
11767       (p_component_type             => l_component_type
11768       ,p_event_type_code            => l_event_type_code
11769       ,p_line_definition_owner_code => l_line_definition_owner_code
11770       ,p_line_definition_code       => l_line_definition_code
11771       ,p_accounting_line_code       => l_component_code
11772       ,p_accounting_line_type_code  => l_component_type_code
11773       ,p_accounting_line_appl_id    => l_component_appl_id
11774       ,p_amb_context_code           => l_amb_context_code
11775       ,p_entity_code                => l_entity_code
11776       ,p_event_class_code           => l_event_class_code);
11777    --
11778    -- set accounting class
11779    --
11780    xla_ae_lines_pkg.SetAcctClass(
11781            p_accounting_class_code  => 'AAP'
11782          , p_ae_header_id           => l_ae_header_id
11783          );
11784 
11785    --
11786    -- set rounding class
11787    --
11788    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11789                       'AAP';
11790 
11791    --
11792    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11793    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11794    --
11795    -- bulk performance
11796    --
11797    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11798 
11799    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11800       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11801 
11802    -- 4955764
11803    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11807    
11804       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11805 
11806    -- 4458381 Public Sector Enh
11808    --
11809    -- set accounting attributes for the line type
11810    --
11811    l_entered_amt_idx := 3;
11812    l_accted_amt_idx  := 8;
11813    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11814    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
11815    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
11816    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
11817    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
11818    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
11819    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
11820    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
11821    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
11822    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
11823    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
11824    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
11825    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
11826    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
11827    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
11828    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
11829    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
11830 
11831    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11832    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11833 
11834    ---------------------------------------------------------------------------------------------------------------
11835    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11836    ---------------------------------------------------------------------------------------------------------------
11837    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11838 
11839    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11840    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11841 
11842    IF xla_accounting_cache_pkg.GetValueChar
11843          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11844          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11845    AND l_bflow_method_code = 'PRIOR_ENTRY'
11846 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11847    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11848          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11849        )
11850    THEN
11851          xla_ae_lines_pkg.BflowUpgEntry
11852            (p_business_method_code    => l_bflow_method_code
11853            ,p_business_class_code     => l_bflow_class_code
11854            ,p_balance_type            => l_balance_type_code);
11855    ELSE
11856       NULL;
11857 -- No business flow processing for business flow method of NONE.
11858    END IF;
11859 
11860    --
11861    -- call analytical criteria
11862    --
11863    
11864    --
11865    -- call description
11866    --
11867    -- No description or it is inherited.
11868    --
11869    -- call ADRs
11870    -- Bug 4922099
11871    --
11872    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11873         (NVL(l_actual_upg_option, 'N') = 'O') OR
11874         (NVL(l_enc_upg_option, 'N') = 'O')
11875       )
11876    THEN
11877    NULL;
11878    --
11879    --
11880    
11881   l_ccid := AcctDerRule_2(
11882            p_application_id           => p_application_id
11883          , p_ae_header_id             => l_ae_header_id 
11884 , p_source_1 => p_source_1
11885 , p_source_2 => p_source_2
11886          , x_transaction_coa_id       => l_adr_transaction_coa_id
11887          , x_accounting_coa_id        => l_adr_accounting_coa_id
11888          , x_value_type_code          => l_adr_value_type_code
11889          , p_side                     => 'NA'
11890    );
11891 
11892    xla_ae_lines_pkg.set_ccid(
11893     p_code_combination_id          => l_ccid
11894   , p_value_type_code              => l_adr_value_type_code
11895   , p_transaction_coa_id           => l_adr_transaction_coa_id
11896   , p_accounting_coa_id            => l_adr_accounting_coa_id
11897   , p_adr_code                     => 'AAP'
11898   , p_adr_type_code                => 'S'
11899   , p_component_type               => l_component_type
11900   , p_component_code               => l_component_code
11901   , p_component_type_code          => l_component_type_code
11902   , p_component_appl_id            => l_component_appl_id
11903   , p_amb_context_code             => l_amb_context_code
11904   , p_side                         => 'NA'
11905   );
11906 
11907 
11908    --
11909    --
11910    END IF;
11911    --
11912    -- Bug 4922099
11913    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11914           (NVL(l_enc_upg_option, 'N') = 'O')
11915         ) AND
11916         (l_bflow_method_code = 'PRIOR_ENTRY')
11917       )
11918    THEN
11919       IF
11920       --
11921       1 = 2
11922       --
11923       THEN
11924       xla_accounting_err_pkg.build_message
11928                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
11925                                     (p_appli_s_name            => 'XLA'
11926                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11927                                     ,p_token_1                 => 'LINE_NUMBER'
11929                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11930                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11931                                                                              l_component_type
11932                                                                             ,l_component_code
11933                                                                             ,l_component_type_code
11934                                                                             ,l_component_appl_id
11935                                                                             ,l_amb_context_code
11936                                                                             ,l_entity_code
11937                                                                             ,l_event_class_code
11938                                                                            )
11939                                     ,p_token_3                 => 'OWNER'
11940                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
11941                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
11942                                                                           ,p_lookup_code    => l_component_type_code
11943                                                                          )
11944                                     ,p_token_4                 => 'PRODUCT_NAME'
11945                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11946                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11947                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11948                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11949                                     ,p_ae_header_id            =>  NULL
11950                                        );
11951 
11952         IF (C_LEVEL_ERROR>= g_log_level) THEN
11953                  trace
11954                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11955                       ,p_level    => C_LEVEL_ERROR
11956                       ,p_module   => l_log_module);
11957         END IF;
11958       END IF;
11959    END IF;
11960    --
11961    --
11962    ------------------------------------------------------------------------------------------------
11963    -- 4219869 Business Flow
11964    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11965    -- Prior Entry.  Currently, the following code is always generated.
11966    ------------------------------------------------------------------------------------------------
11967    XLA_AE_LINES_PKG.ValidateCurrentLine;
11968 
11969    ------------------------------------------------------------------------------------
11970    -- 4219869 Business Flow
11971    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11972    ------------------------------------------------------------------------------------
11973    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11974 
11975    ----------------------------------------------------------------------------------
11976    -- 4219869 Business Flow
11977    -- Update journal entry status -- Need to generate this within IF <condition>
11978    ----------------------------------------------------------------------------------
11979    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11980          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11981          ,p_balance_type_code => l_balance_type_code
11982          );
11983 
11984    -------------------------------------------------------------------------------------------
11985    -- 4262811 - Generate the Accrual Reversal lines
11986    -------------------------------------------------------------------------------------------
11987    BEGIN
11988       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11989                               (g_array_event(p_event_id).array_value_num('header_index'));
11990       IF l_acc_rev_flag IS NULL THEN
11991          l_acc_rev_flag := 'N';
11992       END IF;
11993    EXCEPTION
11994       WHEN OTHERS THEN
11995          l_acc_rev_flag := 'N';
11996    END;
11997    --
11998    IF (l_acc_rev_flag = 'Y') THEN
11999 
12000        -- 4645092  ------------------------------------------------------------------------------
12001        -- To allow MPA report to determine if it should generate report process
12002        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12003        ------------------------------------------------------------------------------------------
12004 
12005        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12006        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12007    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
12008    -- call ADRs
12009    -- Bug 4922099
12010    --
12011    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12012         (NVL(l_actual_upg_option, 'N') = 'O') OR
12013         (NVL(l_enc_upg_option, 'N') = 'O')
12014       )
12018    --
12015    THEN
12016    NULL;
12017    --
12019    
12020   l_ccid := AcctDerRule_2(
12021            p_application_id           => p_application_id
12022          , p_ae_header_id             => l_ae_header_id 
12023 , p_source_1 => p_source_1
12024 , p_source_2 => p_source_2
12025          , x_transaction_coa_id       => l_adr_transaction_coa_id
12026          , x_accounting_coa_id        => l_adr_accounting_coa_id
12027          , x_value_type_code          => l_adr_value_type_code
12028          , p_side                     => 'NA'
12029    );
12030 
12031    xla_ae_lines_pkg.set_ccid(
12032     p_code_combination_id          => l_ccid
12033   , p_value_type_code              => l_adr_value_type_code
12034   , p_transaction_coa_id           => l_adr_transaction_coa_id
12035   , p_accounting_coa_id            => l_adr_accounting_coa_id
12036   , p_adr_code                     => 'AAP'
12037   , p_adr_type_code                => 'S'
12038   , p_component_type               => l_component_type
12039   , p_component_code               => l_component_code
12040   , p_component_type_code          => l_component_type_code
12041   , p_component_appl_id            => l_component_appl_id
12042   , p_amb_context_code             => l_amb_context_code
12043   , p_side                         => 'NA'
12044   );
12045 
12046 
12047    --
12048    --
12049    END IF;
12050 
12051        --
12052        -- Update the line information that should be overwritten
12053        --
12054        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12055                                          p_header_num   => 1);
12056        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12057 
12058        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12059 
12060        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12061           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12062        END IF;
12063 
12064       --
12065       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12066       --
12067       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12068           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12069       ELSE
12070           ---------------------------------------------------------------------------------------------------
12071           -- 4262811a Switch Sign
12072           ---------------------------------------------------------------------------------------------------
12073           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12074           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12075                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12076           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12077                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12078           -- 5132302
12079           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12080                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12081 
12082       END IF;
12083 
12084       -- 4955764
12085       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12086       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12087 
12088 
12089       XLA_AE_LINES_PKG.ValidateCurrentLine;
12090       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12091 
12092       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12093                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12094                ,p_balance_type_code => l_balance_type_code);
12095 
12096    END IF;
12097 
12098    -----------------------------------------------------------------------------------------
12099    -- 4262811 Multiperiod Accounting
12100    -----------------------------------------------------------------------------------------
12101      -- No MPA option is assigned.
12102 
12103 
12104 END IF;
12105 END IF;
12106 --
12107 
12108 --
12109 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12110    trace
12111       (p_msg      => 'END of AcctLineType_54'
12112       ,p_level    => C_LEVEL_PROCEDURE
12113       ,p_module   => l_log_module);
12114 END IF;
12115 --
12116 EXCEPTION
12117   WHEN xla_exceptions_pkg.application_exception THEN
12118       RAISE;
12119   WHEN OTHERS THEN
12120        xla_exceptions_pkg.raise_message
12121            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_54');
12122 END AcctLineType_54;
12123 --
12124 
12125 ---------------------------------------
12126 --
12127 -- PRIVATE FUNCTION
12128 --         AcctLineType_55
12129 --
12130 ---------------------------------------
12131 PROCEDURE AcctLineType_55 (
12132   p_application_id        IN NUMBER
12133  ,p_event_id              IN NUMBER
12134  ,p_calculate_acctd_flag  IN VARCHAR2
12135  ,p_calculate_g_l_flag    IN VARCHAR2
12139  
12136  ,p_actual_flag           IN OUT VARCHAR2
12137  ,p_balance_type_code     OUT VARCHAR2
12138  ,p_gain_or_loss_ref      OUT VARCHAR2
12140 --Transaction Account
12141  , p_source_1            IN NUMBER
12142 --Journal Line Type
12143  , p_source_2            IN VARCHAR2
12144 --Entered Amount
12145  , p_source_3            IN NUMBER
12146 --First Distribution Identifier
12147  , p_source_5            IN NUMBER
12148 --Distribution Type
12149  , p_source_6            IN VARCHAR2
12150 --Currency Code
12151  , p_source_7            IN VARCHAR2
12152 --Currency Conversion Date
12153  , p_source_8            IN DATE
12154 --Currency Conversion Rate
12155  , p_source_9            IN NUMBER
12156 --Currency Conversion Type
12157  , p_source_10            IN VARCHAR2
12158 --Accounted Amount
12159  , p_source_11            IN NUMBER
12160 )
12161 IS
12162 
12163 l_component_type              VARCHAR2(80);
12164 l_component_code              VARCHAR2(30);
12165 l_component_type_code         VARCHAR2(1);
12166 l_component_appl_id           INTEGER;
12167 l_amb_context_code            VARCHAR2(30);
12168 l_entity_code                 VARCHAR2(30);
12169 l_event_class_code            VARCHAR2(30);
12170 l_ae_header_id                NUMBER;
12171 l_event_type_code             VARCHAR2(30);
12172 l_line_definition_code        VARCHAR2(30);
12173 l_line_definition_owner_code  VARCHAR2(1);
12174 --
12175 -- adr variables
12176 l_segment                     VARCHAR2(30);
12177 l_ccid                        NUMBER;
12178 l_adr_transaction_coa_id      NUMBER;
12179 l_adr_accounting_coa_id       NUMBER;
12180 l_adr_flexfield_segment_code  VARCHAR2(30);
12181 l_adr_flex_value_set_id       NUMBER;
12182 l_adr_value_type_code         VARCHAR2(30);
12183 l_adr_value_combination_id    NUMBER;
12184 l_adr_value_segment_code      VARCHAR2(30);
12185 
12186 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12187 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12188 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12189 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12190 
12191 -- 4262811 Variables ------------------------------------------------------------------------------------------
12192 l_entered_amt_idx             NUMBER;
12193 l_accted_amt_idx              NUMBER;
12194 l_acc_rev_flag                VARCHAR2(1);
12195 l_accrual_line_num            NUMBER;
12196 l_tmp_amt                     NUMBER;
12197 l_acc_rev_natural_side_code   VARCHAR2(1);
12198 
12199 l_num_entries                 NUMBER;
12200 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12201 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12202 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12203 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12204 l_recog_line_1                NUMBER;
12205 l_recog_line_2                NUMBER;
12206 
12207 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12208 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12209 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12210 
12211 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12212 
12213 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12214 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12215 
12216 ---------------------------------------------------------------------------------------------------------------
12217 
12218 
12219 --
12220 -- bulk performance
12221 --
12222 l_balance_type_code           VARCHAR2(1);
12223 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12224 l_log_module                  VARCHAR2(240);
12225 
12226 --
12227 -- Upgrade strategy
12228 --
12229 l_actual_upg_option           VARCHAR2(1);
12230 l_enc_upg_option           VARCHAR2(1);
12231 
12232 --
12233 BEGIN
12234 --
12235 IF g_log_enabled THEN
12236       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_55';
12237 END IF;
12238 --
12239 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12240 
12241       trace
12242          (p_msg      => 'BEGIN of AcctLineType_55'
12243          ,p_level    => C_LEVEL_PROCEDURE
12244          ,p_module   => l_log_module);
12245 
12246 END IF;
12247 --
12248 l_component_type             := 'AMB_JLT';
12249 l_component_code             := 'ACV';
12250 l_component_type_code        := 'S';
12251 l_component_appl_id          :=  555;
12252 l_amb_context_code           := 'DEFAULT';
12253 l_entity_code                := 'PURCHASING';
12254 l_event_class_code           := 'DELIVER';
12255 l_event_type_code            := 'PO_RECEIPT_ADJ';
12256 l_line_definition_owner_code := 'S';
12257 l_line_definition_code       := 'PO_RECEIPT_ADJ';
12258 --
12259 l_balance_type_code          := 'A';
12260 l_segment                     := NULL;
12261 l_ccid                        := NULL;
12262 l_adr_transaction_coa_id      := NULL;
12263 l_adr_accounting_coa_id       := NULL;
12264 l_adr_flexfield_segment_code  := NULL;
12265 l_adr_flex_value_set_id       := NULL;
12266 l_adr_value_type_code         := NULL;
12267 l_adr_value_combination_id    := NULL;
12268 l_adr_value_segment_code      := NULL;
12269 
12273 l_budgetary_control_flag     := 'N';
12270 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
12271 l_bflow_class_code           := '';    -- 4219869 Business Flow
12272 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
12274 
12275 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
12276 l_bflow_applied_to_amt       := NULL; -- 5132302
12277 l_entered_amt_idx            := NULL;          -- 4262811
12278 l_accted_amt_idx             := NULL;          -- 4262811
12279 l_acc_rev_flag               := NULL;          -- 4262811
12280 l_accrual_line_num           := NULL;          -- 4262811
12281 l_tmp_amt                    := NULL;          -- 4262811
12282 --
12283  
12284 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12285     l_balance_type_code <> 'B' THEN
12286 IF NVL(p_source_2,'
12287 ') =  'ACV'
12288  THEN 
12289 
12290    --
12291    XLA_AE_LINES_PKG.SetNewLine;
12292 
12293    p_balance_type_code          := l_balance_type_code;
12294    -- set the flag so later we will know whether the gain loss line needs to be created
12295    
12296    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12297      p_actual_flag :='A';
12298    END IF;
12299 
12300    --
12301    -- bulk performance
12302    --
12303    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12304                                       p_header_num   => 0); -- 4262811
12305    --
12306    -- set accounting line options
12307    --
12308    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12309            p_natural_side_code          => 'D'
12310          , p_gain_or_loss_flag          => 'N'
12311          , p_gl_transfer_mode_code      => 'D'
12312          , p_acct_entry_type_code       => 'A'
12313          , p_switch_side_flag           => 'Y'
12314          , p_merge_duplicate_code       => 'W'
12315          );
12316    --
12317    l_acc_rev_natural_side_code := 'C';  -- 4262811
12318    -- 
12319    --
12320    -- set accounting line type info
12321    --
12322    xla_ae_lines_pkg.SetAcctLineType
12323       (p_component_type             => l_component_type
12324       ,p_event_type_code            => l_event_type_code
12325       ,p_line_definition_owner_code => l_line_definition_owner_code
12326       ,p_line_definition_code       => l_line_definition_code
12327       ,p_accounting_line_code       => l_component_code
12328       ,p_accounting_line_type_code  => l_component_type_code
12329       ,p_accounting_line_appl_id    => l_component_appl_id
12330       ,p_amb_context_code           => l_amb_context_code
12331       ,p_entity_code                => l_entity_code
12332       ,p_event_class_code           => l_event_class_code);
12333    --
12334    -- set accounting class
12335    --
12336    xla_ae_lines_pkg.SetAcctClass(
12337            p_accounting_class_code  => 'ACV'
12338          , p_ae_header_id           => l_ae_header_id
12339          );
12340 
12341    --
12342    -- set rounding class
12343    --
12344    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12345                       'ACV';
12346 
12347    --
12348    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12349    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12350    --
12351    -- bulk performance
12352    --
12353    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12354 
12355    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12356       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12357 
12358    -- 4955764
12359    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12360       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12361 
12362    -- 4458381 Public Sector Enh
12363    
12364    --
12365    -- set accounting attributes for the line type
12366    --
12367    l_entered_amt_idx := 3;
12368    l_accted_amt_idx  := 8;
12369    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12370    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
12371    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
12372    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
12373    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
12374    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
12375    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
12376    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
12377    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
12378    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
12379    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
12380    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
12381    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
12382    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
12383    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
12384    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
12385    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
12386 
12390    ---------------------------------------------------------------------------------------------------------------
12387    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12388    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12389 
12391    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12392    ---------------------------------------------------------------------------------------------------------------
12393    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12394 
12395    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12396    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12397 
12398    IF xla_accounting_cache_pkg.GetValueChar
12399          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12400          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12401    AND l_bflow_method_code = 'PRIOR_ENTRY'
12402 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12403    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12404          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12405        )
12406    THEN
12407          xla_ae_lines_pkg.BflowUpgEntry
12408            (p_business_method_code    => l_bflow_method_code
12409            ,p_business_class_code     => l_bflow_class_code
12410            ,p_balance_type            => l_balance_type_code);
12411    ELSE
12412       NULL;
12413 -- No business flow processing for business flow method of NONE.
12414    END IF;
12415 
12416    --
12417    -- call analytical criteria
12418    --
12419    
12420    --
12421    -- call description
12422    --
12423    -- No description or it is inherited.
12424    --
12425    -- call ADRs
12426    -- Bug 4922099
12427    --
12428    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12429         (NVL(l_actual_upg_option, 'N') = 'O') OR
12430         (NVL(l_enc_upg_option, 'N') = 'O')
12431       )
12432    THEN
12433    NULL;
12434    --
12435    --
12436    
12437   l_ccid := AcctDerRule_3(
12438            p_application_id           => p_application_id
12439          , p_ae_header_id             => l_ae_header_id 
12440 , p_source_1 => p_source_1
12441 , p_source_2 => p_source_2
12442          , x_transaction_coa_id       => l_adr_transaction_coa_id
12443          , x_accounting_coa_id        => l_adr_accounting_coa_id
12444          , x_value_type_code          => l_adr_value_type_code
12445          , p_side                     => 'NA'
12446    );
12447 
12448    xla_ae_lines_pkg.set_ccid(
12449     p_code_combination_id          => l_ccid
12450   , p_value_type_code              => l_adr_value_type_code
12451   , p_transaction_coa_id           => l_adr_transaction_coa_id
12452   , p_accounting_coa_id            => l_adr_accounting_coa_id
12453   , p_adr_code                     => 'ACV'
12454   , p_adr_type_code                => 'S'
12455   , p_component_type               => l_component_type
12456   , p_component_code               => l_component_code
12457   , p_component_type_code          => l_component_type_code
12458   , p_component_appl_id            => l_component_appl_id
12459   , p_amb_context_code             => l_amb_context_code
12460   , p_side                         => 'NA'
12461   );
12462 
12463 
12464    --
12465    --
12466    END IF;
12467    --
12468    -- Bug 4922099
12469    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12470           (NVL(l_enc_upg_option, 'N') = 'O')
12471         ) AND
12472         (l_bflow_method_code = 'PRIOR_ENTRY')
12473       )
12474    THEN
12475       IF
12476       --
12477       1 = 2
12478       --
12479       THEN
12480       xla_accounting_err_pkg.build_message
12481                                     (p_appli_s_name            => 'XLA'
12482                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12483                                     ,p_token_1                 => 'LINE_NUMBER'
12484                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12485                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12486                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12487                                                                              l_component_type
12488                                                                             ,l_component_code
12489                                                                             ,l_component_type_code
12490                                                                             ,l_component_appl_id
12491                                                                             ,l_amb_context_code
12492                                                                             ,l_entity_code
12493                                                                             ,l_event_class_code
12494                                                                            )
12495                                     ,p_token_3                 => 'OWNER'
12496                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12497                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12501                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12498                                                                           ,p_lookup_code    => l_component_type_code
12499                                                                          )
12500                                     ,p_token_4                 => 'PRODUCT_NAME'
12502                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12503                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12504                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12505                                     ,p_ae_header_id            =>  NULL
12506                                        );
12507 
12508         IF (C_LEVEL_ERROR>= g_log_level) THEN
12509                  trace
12510                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12511                       ,p_level    => C_LEVEL_ERROR
12512                       ,p_module   => l_log_module);
12513         END IF;
12514       END IF;
12515    END IF;
12516    --
12517    --
12518    ------------------------------------------------------------------------------------------------
12519    -- 4219869 Business Flow
12520    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12521    -- Prior Entry.  Currently, the following code is always generated.
12522    ------------------------------------------------------------------------------------------------
12523    XLA_AE_LINES_PKG.ValidateCurrentLine;
12524 
12525    ------------------------------------------------------------------------------------
12526    -- 4219869 Business Flow
12527    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12528    ------------------------------------------------------------------------------------
12529    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12530 
12531    ----------------------------------------------------------------------------------
12532    -- 4219869 Business Flow
12533    -- Update journal entry status -- Need to generate this within IF <condition>
12534    ----------------------------------------------------------------------------------
12535    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12536          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12537          ,p_balance_type_code => l_balance_type_code
12538          );
12539 
12540    -------------------------------------------------------------------------------------------
12541    -- 4262811 - Generate the Accrual Reversal lines
12542    -------------------------------------------------------------------------------------------
12543    BEGIN
12544       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12545                               (g_array_event(p_event_id).array_value_num('header_index'));
12546       IF l_acc_rev_flag IS NULL THEN
12547          l_acc_rev_flag := 'N';
12548       END IF;
12549    EXCEPTION
12550       WHEN OTHERS THEN
12551          l_acc_rev_flag := 'N';
12552    END;
12553    --
12554    IF (l_acc_rev_flag = 'Y') THEN
12555 
12556        -- 4645092  ------------------------------------------------------------------------------
12557        -- To allow MPA report to determine if it should generate report process
12558        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12559        ------------------------------------------------------------------------------------------
12560 
12561        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12562        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12563    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
12564    -- call ADRs
12565    -- Bug 4922099
12566    --
12567    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12568         (NVL(l_actual_upg_option, 'N') = 'O') OR
12569         (NVL(l_enc_upg_option, 'N') = 'O')
12570       )
12571    THEN
12572    NULL;
12573    --
12574    --
12575    
12576   l_ccid := AcctDerRule_3(
12577            p_application_id           => p_application_id
12578          , p_ae_header_id             => l_ae_header_id 
12579 , p_source_1 => p_source_1
12580 , p_source_2 => p_source_2
12581          , x_transaction_coa_id       => l_adr_transaction_coa_id
12582          , x_accounting_coa_id        => l_adr_accounting_coa_id
12583          , x_value_type_code          => l_adr_value_type_code
12584          , p_side                     => 'NA'
12585    );
12586 
12587    xla_ae_lines_pkg.set_ccid(
12588     p_code_combination_id          => l_ccid
12589   , p_value_type_code              => l_adr_value_type_code
12590   , p_transaction_coa_id           => l_adr_transaction_coa_id
12591   , p_accounting_coa_id            => l_adr_accounting_coa_id
12592   , p_adr_code                     => 'ACV'
12593   , p_adr_type_code                => 'S'
12594   , p_component_type               => l_component_type
12595   , p_component_code               => l_component_code
12596   , p_component_type_code          => l_component_type_code
12597   , p_component_appl_id            => l_component_appl_id
12598   , p_amb_context_code             => l_amb_context_code
12599   , p_side                         => 'NA'
12600   );
12601 
12602 
12603    --
12604    --
12608        -- Update the line information that should be overwritten
12605    END IF;
12606 
12607        --
12609        --
12610        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12611                                          p_header_num   => 1);
12612        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12613 
12614        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12615 
12616        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12617           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12618        END IF;
12619 
12620       --
12621       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12622       --
12623       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12624           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12625       ELSE
12626           ---------------------------------------------------------------------------------------------------
12627           -- 4262811a Switch Sign
12628           ---------------------------------------------------------------------------------------------------
12629           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12630           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12631                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12632           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12633                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12634           -- 5132302
12635           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12636                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12637 
12638       END IF;
12639 
12640       -- 4955764
12641       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12642       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12643 
12644 
12645       XLA_AE_LINES_PKG.ValidateCurrentLine;
12646       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12647 
12648       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12649                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12650                ,p_balance_type_code => l_balance_type_code);
12651 
12652    END IF;
12653 
12654    -----------------------------------------------------------------------------------------
12655    -- 4262811 Multiperiod Accounting
12656    -----------------------------------------------------------------------------------------
12657      -- No MPA option is assigned.
12658 
12659 
12660 END IF;
12661 END IF;
12662 --
12663 
12664 --
12665 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12666    trace
12667       (p_msg      => 'END of AcctLineType_55'
12668       ,p_level    => C_LEVEL_PROCEDURE
12669       ,p_module   => l_log_module);
12670 END IF;
12671 --
12672 EXCEPTION
12673   WHEN xla_exceptions_pkg.application_exception THEN
12674       RAISE;
12675   WHEN OTHERS THEN
12676        xla_exceptions_pkg.raise_message
12677            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_55');
12678 END AcctLineType_55;
12679 --
12680 
12681 ---------------------------------------
12682 --
12683 -- PRIVATE FUNCTION
12684 --         AcctLineType_56
12685 --
12686 ---------------------------------------
12687 PROCEDURE AcctLineType_56 (
12688   p_application_id        IN NUMBER
12689  ,p_event_id              IN NUMBER
12690  ,p_calculate_acctd_flag  IN VARCHAR2
12691  ,p_calculate_g_l_flag    IN VARCHAR2
12692  ,p_actual_flag           IN OUT VARCHAR2
12693  ,p_balance_type_code     OUT VARCHAR2
12694  ,p_gain_or_loss_ref      OUT VARCHAR2
12695  
12696 --Transaction Account
12697  , p_source_1            IN NUMBER
12698 --Journal Line Type
12699  , p_source_2            IN VARCHAR2
12700 --Entered Amount
12701  , p_source_3            IN NUMBER
12702 --First Distribution Identifier
12703  , p_source_5            IN NUMBER
12704 --Distribution Type
12705  , p_source_6            IN VARCHAR2
12706 --Currency Code
12707  , p_source_7            IN VARCHAR2
12708 --Currency Conversion Date
12709  , p_source_8            IN DATE
12710 --Currency Conversion Rate
12711  , p_source_9            IN NUMBER
12712 --Currency Conversion Type
12713  , p_source_10            IN VARCHAR2
12714 --Accounted Amount
12715  , p_source_11            IN NUMBER
12716 )
12717 IS
12718 
12719 l_component_type              VARCHAR2(80);
12720 l_component_code              VARCHAR2(30);
12721 l_component_type_code         VARCHAR2(1);
12722 l_component_appl_id           INTEGER;
12723 l_amb_context_code            VARCHAR2(30);
12724 l_entity_code                 VARCHAR2(30);
12725 l_event_class_code            VARCHAR2(30);
12726 l_ae_header_id                NUMBER;
12727 l_event_type_code             VARCHAR2(30);
12728 l_line_definition_code        VARCHAR2(30);
12732 l_segment                     VARCHAR2(30);
12729 l_line_definition_owner_code  VARCHAR2(1);
12730 --
12731 -- adr variables
12733 l_ccid                        NUMBER;
12734 l_adr_transaction_coa_id      NUMBER;
12735 l_adr_accounting_coa_id       NUMBER;
12736 l_adr_flexfield_segment_code  VARCHAR2(30);
12737 l_adr_flex_value_set_id       NUMBER;
12738 l_adr_value_type_code         VARCHAR2(30);
12739 l_adr_value_combination_id    NUMBER;
12740 l_adr_value_segment_code      VARCHAR2(30);
12741 
12742 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12743 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12744 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12745 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12746 
12747 -- 4262811 Variables ------------------------------------------------------------------------------------------
12748 l_entered_amt_idx             NUMBER;
12749 l_accted_amt_idx              NUMBER;
12750 l_acc_rev_flag                VARCHAR2(1);
12751 l_accrual_line_num            NUMBER;
12752 l_tmp_amt                     NUMBER;
12753 l_acc_rev_natural_side_code   VARCHAR2(1);
12754 
12755 l_num_entries                 NUMBER;
12756 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12757 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12758 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12759 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12760 l_recog_line_1                NUMBER;
12761 l_recog_line_2                NUMBER;
12762 
12763 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12764 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12765 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12766 
12767 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12768 
12769 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12770 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12771 
12772 ---------------------------------------------------------------------------------------------------------------
12773 
12774 
12775 --
12776 -- bulk performance
12777 --
12778 l_balance_type_code           VARCHAR2(1);
12779 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12780 l_log_module                  VARCHAR2(240);
12781 
12782 --
12783 -- Upgrade strategy
12784 --
12785 l_actual_upg_option           VARCHAR2(1);
12786 l_enc_upg_option           VARCHAR2(1);
12787 
12788 --
12789 BEGIN
12790 --
12791 IF g_log_enabled THEN
12792       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_56';
12793 END IF;
12794 --
12795 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12796 
12797       trace
12798          (p_msg      => 'BEGIN of AcctLineType_56'
12799          ,p_level    => C_LEVEL_PROCEDURE
12800          ,p_module   => l_log_module);
12801 
12802 END IF;
12803 --
12804 l_component_type             := 'AMB_JLT';
12805 l_component_code             := 'ACV';
12806 l_component_type_code        := 'S';
12807 l_component_appl_id          :=  555;
12808 l_amb_context_code           := 'DEFAULT';
12809 l_entity_code                := 'PURCHASING';
12810 l_event_class_code           := 'DELIVER';
12811 l_event_type_code            := 'RET_TO_RECEIVING';
12812 l_line_definition_owner_code := 'S';
12813 l_line_definition_code       := 'PO_RETURN';
12814 --
12815 l_balance_type_code          := 'A';
12816 l_segment                     := NULL;
12817 l_ccid                        := NULL;
12818 l_adr_transaction_coa_id      := NULL;
12819 l_adr_accounting_coa_id       := NULL;
12820 l_adr_flexfield_segment_code  := NULL;
12821 l_adr_flex_value_set_id       := NULL;
12822 l_adr_value_type_code         := NULL;
12823 l_adr_value_combination_id    := NULL;
12824 l_adr_value_segment_code      := NULL;
12825 
12826 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
12827 l_bflow_class_code           := '';    -- 4219869 Business Flow
12828 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
12829 l_budgetary_control_flag     := 'N';
12830 
12831 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
12832 l_bflow_applied_to_amt       := NULL; -- 5132302
12833 l_entered_amt_idx            := NULL;          -- 4262811
12834 l_accted_amt_idx             := NULL;          -- 4262811
12835 l_acc_rev_flag               := NULL;          -- 4262811
12836 l_accrual_line_num           := NULL;          -- 4262811
12837 l_tmp_amt                    := NULL;          -- 4262811
12838 --
12839  
12840 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12841     l_balance_type_code <> 'B' THEN
12842 IF NVL(p_source_2,'
12843 ') =  'ACV'
12844  THEN 
12845 
12846    --
12847    XLA_AE_LINES_PKG.SetNewLine;
12848 
12849    p_balance_type_code          := l_balance_type_code;
12850    -- set the flag so later we will know whether the gain loss line needs to be created
12851    
12852    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12853      p_actual_flag :='A';
12854    END IF;
12855 
12856    --
12860                                       p_header_num   => 0); -- 4262811
12857    -- bulk performance
12858    --
12859    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12861    --
12862    -- set accounting line options
12863    --
12864    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12865            p_natural_side_code          => 'D'
12866          , p_gain_or_loss_flag          => 'N'
12867          , p_gl_transfer_mode_code      => 'D'
12868          , p_acct_entry_type_code       => 'A'
12869          , p_switch_side_flag           => 'Y'
12870          , p_merge_duplicate_code       => 'W'
12871          );
12872    --
12873    l_acc_rev_natural_side_code := 'C';  -- 4262811
12874    -- 
12875    --
12876    -- set accounting line type info
12877    --
12878    xla_ae_lines_pkg.SetAcctLineType
12879       (p_component_type             => l_component_type
12880       ,p_event_type_code            => l_event_type_code
12881       ,p_line_definition_owner_code => l_line_definition_owner_code
12882       ,p_line_definition_code       => l_line_definition_code
12883       ,p_accounting_line_code       => l_component_code
12884       ,p_accounting_line_type_code  => l_component_type_code
12885       ,p_accounting_line_appl_id    => l_component_appl_id
12886       ,p_amb_context_code           => l_amb_context_code
12887       ,p_entity_code                => l_entity_code
12888       ,p_event_class_code           => l_event_class_code);
12889    --
12890    -- set accounting class
12891    --
12892    xla_ae_lines_pkg.SetAcctClass(
12893            p_accounting_class_code  => 'ACV'
12894          , p_ae_header_id           => l_ae_header_id
12895          );
12896 
12897    --
12898    -- set rounding class
12899    --
12900    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12901                       'ACV';
12902 
12903    --
12904    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12905    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12906    --
12907    -- bulk performance
12908    --
12909    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12910 
12911    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12912       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12913 
12914    -- 4955764
12915    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12916       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12917 
12918    -- 4458381 Public Sector Enh
12919    
12920    --
12921    -- set accounting attributes for the line type
12922    --
12923    l_entered_amt_idx := 3;
12924    l_accted_amt_idx  := 8;
12925    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12926    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
12927    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
12928    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
12929    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
12930    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
12931    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
12932    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
12933    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
12934    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
12935    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
12936    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
12937    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
12938    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
12939    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
12940    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
12941    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
12942 
12943    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12944    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12945 
12946    ---------------------------------------------------------------------------------------------------------------
12947    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12948    ---------------------------------------------------------------------------------------------------------------
12949    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12950 
12951    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12952    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12953 
12954    IF xla_accounting_cache_pkg.GetValueChar
12955          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12956          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12957    AND l_bflow_method_code = 'PRIOR_ENTRY'
12958 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12959    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12960          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12961        )
12962    THEN
12963          xla_ae_lines_pkg.BflowUpgEntry
12964            (p_business_method_code    => l_bflow_method_code
12968       NULL;
12965            ,p_business_class_code     => l_bflow_class_code
12966            ,p_balance_type            => l_balance_type_code);
12967    ELSE
12969 -- No business flow processing for business flow method of NONE.
12970    END IF;
12971 
12972    --
12973    -- call analytical criteria
12974    --
12975    
12976    --
12977    -- call description
12978    --
12979    -- No description or it is inherited.
12980    --
12981    -- call ADRs
12982    -- Bug 4922099
12983    --
12984    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12985         (NVL(l_actual_upg_option, 'N') = 'O') OR
12986         (NVL(l_enc_upg_option, 'N') = 'O')
12987       )
12988    THEN
12989    NULL;
12990    --
12991    --
12992    
12993   l_ccid := AcctDerRule_3(
12994            p_application_id           => p_application_id
12995          , p_ae_header_id             => l_ae_header_id 
12996 , p_source_1 => p_source_1
12997 , p_source_2 => p_source_2
12998          , x_transaction_coa_id       => l_adr_transaction_coa_id
12999          , x_accounting_coa_id        => l_adr_accounting_coa_id
13000          , x_value_type_code          => l_adr_value_type_code
13001          , p_side                     => 'NA'
13002    );
13003 
13004    xla_ae_lines_pkg.set_ccid(
13005     p_code_combination_id          => l_ccid
13006   , p_value_type_code              => l_adr_value_type_code
13007   , p_transaction_coa_id           => l_adr_transaction_coa_id
13008   , p_accounting_coa_id            => l_adr_accounting_coa_id
13009   , p_adr_code                     => 'ACV'
13010   , p_adr_type_code                => 'S'
13011   , p_component_type               => l_component_type
13012   , p_component_code               => l_component_code
13013   , p_component_type_code          => l_component_type_code
13014   , p_component_appl_id            => l_component_appl_id
13015   , p_amb_context_code             => l_amb_context_code
13016   , p_side                         => 'NA'
13017   );
13018 
13019 
13020    --
13021    --
13022    END IF;
13023    --
13024    -- Bug 4922099
13025    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13026           (NVL(l_enc_upg_option, 'N') = 'O')
13027         ) AND
13028         (l_bflow_method_code = 'PRIOR_ENTRY')
13029       )
13030    THEN
13031       IF
13032       --
13033       1 = 2
13034       --
13035       THEN
13036       xla_accounting_err_pkg.build_message
13037                                     (p_appli_s_name            => 'XLA'
13038                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13039                                     ,p_token_1                 => 'LINE_NUMBER'
13040                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13041                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13042                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13043                                                                              l_component_type
13044                                                                             ,l_component_code
13045                                                                             ,l_component_type_code
13046                                                                             ,l_component_appl_id
13047                                                                             ,l_amb_context_code
13048                                                                             ,l_entity_code
13049                                                                             ,l_event_class_code
13050                                                                            )
13051                                     ,p_token_3                 => 'OWNER'
13052                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13053                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13054                                                                           ,p_lookup_code    => l_component_type_code
13055                                                                          )
13056                                     ,p_token_4                 => 'PRODUCT_NAME'
13057                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13058                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13059                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13060                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13061                                     ,p_ae_header_id            =>  NULL
13062                                        );
13063 
13064         IF (C_LEVEL_ERROR>= g_log_level) THEN
13065                  trace
13066                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13067                       ,p_level    => C_LEVEL_ERROR
13068                       ,p_module   => l_log_module);
13069         END IF;
13070       END IF;
13071    END IF;
13072    --
13073    --
13074    ------------------------------------------------------------------------------------------------
13075    -- 4219869 Business Flow
13076    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13080 
13077    -- Prior Entry.  Currently, the following code is always generated.
13078    ------------------------------------------------------------------------------------------------
13079    XLA_AE_LINES_PKG.ValidateCurrentLine;
13081    ------------------------------------------------------------------------------------
13082    -- 4219869 Business Flow
13083    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13084    ------------------------------------------------------------------------------------
13085    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13086 
13087    ----------------------------------------------------------------------------------
13088    -- 4219869 Business Flow
13089    -- Update journal entry status -- Need to generate this within IF <condition>
13090    ----------------------------------------------------------------------------------
13091    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13092          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13093          ,p_balance_type_code => l_balance_type_code
13094          );
13095 
13096    -------------------------------------------------------------------------------------------
13097    -- 4262811 - Generate the Accrual Reversal lines
13098    -------------------------------------------------------------------------------------------
13099    BEGIN
13100       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13101                               (g_array_event(p_event_id).array_value_num('header_index'));
13102       IF l_acc_rev_flag IS NULL THEN
13103          l_acc_rev_flag := 'N';
13104       END IF;
13105    EXCEPTION
13106       WHEN OTHERS THEN
13107          l_acc_rev_flag := 'N';
13108    END;
13109    --
13110    IF (l_acc_rev_flag = 'Y') THEN
13111 
13112        -- 4645092  ------------------------------------------------------------------------------
13113        -- To allow MPA report to determine if it should generate report process
13114        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13115        ------------------------------------------------------------------------------------------
13116 
13117        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13118        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13119    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
13120    -- call ADRs
13121    -- Bug 4922099
13122    --
13123    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13124         (NVL(l_actual_upg_option, 'N') = 'O') OR
13125         (NVL(l_enc_upg_option, 'N') = 'O')
13126       )
13127    THEN
13128    NULL;
13129    --
13130    --
13131    
13132   l_ccid := AcctDerRule_3(
13133            p_application_id           => p_application_id
13134          , p_ae_header_id             => l_ae_header_id 
13135 , p_source_1 => p_source_1
13136 , p_source_2 => p_source_2
13137          , x_transaction_coa_id       => l_adr_transaction_coa_id
13138          , x_accounting_coa_id        => l_adr_accounting_coa_id
13139          , x_value_type_code          => l_adr_value_type_code
13140          , p_side                     => 'NA'
13141    );
13142 
13143    xla_ae_lines_pkg.set_ccid(
13144     p_code_combination_id          => l_ccid
13145   , p_value_type_code              => l_adr_value_type_code
13146   , p_transaction_coa_id           => l_adr_transaction_coa_id
13147   , p_accounting_coa_id            => l_adr_accounting_coa_id
13148   , p_adr_code                     => 'ACV'
13149   , p_adr_type_code                => 'S'
13150   , p_component_type               => l_component_type
13151   , p_component_code               => l_component_code
13152   , p_component_type_code          => l_component_type_code
13153   , p_component_appl_id            => l_component_appl_id
13154   , p_amb_context_code             => l_amb_context_code
13155   , p_side                         => 'NA'
13156   );
13157 
13158 
13159    --
13160    --
13161    END IF;
13162 
13163        --
13164        -- Update the line information that should be overwritten
13165        --
13166        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13167                                          p_header_num   => 1);
13168        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
13169 
13170        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13171 
13172        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
13173           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13174        END IF;
13175 
13176       --
13177       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13178       --
13179       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13180           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
13181       ELSE
13182           ---------------------------------------------------------------------------------------------------
13183           -- 4262811a Switch Sign
13184           ---------------------------------------------------------------------------------------------------
13185           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13189                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13186           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13187                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13188           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13190           -- 5132302
13191           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13192                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13193 
13194       END IF;
13195 
13196       -- 4955764
13197       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13198       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13199 
13200 
13201       XLA_AE_LINES_PKG.ValidateCurrentLine;
13202       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13203 
13204       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13205                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13206                ,p_balance_type_code => l_balance_type_code);
13207 
13208    END IF;
13209 
13210    -----------------------------------------------------------------------------------------
13211    -- 4262811 Multiperiod Accounting
13212    -----------------------------------------------------------------------------------------
13213      -- No MPA option is assigned.
13214 
13215 
13216 END IF;
13217 END IF;
13218 --
13219 
13220 --
13221 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13222    trace
13223       (p_msg      => 'END of AcctLineType_56'
13224       ,p_level    => C_LEVEL_PROCEDURE
13225       ,p_module   => l_log_module);
13226 END IF;
13227 --
13228 EXCEPTION
13229   WHEN xla_exceptions_pkg.application_exception THEN
13230       RAISE;
13231   WHEN OTHERS THEN
13232        xla_exceptions_pkg.raise_message
13233            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_56');
13234 END AcctLineType_56;
13235 --
13236 
13237 ---------------------------------------
13238 --
13239 -- PRIVATE FUNCTION
13240 --         AcctLineType_57
13241 --
13242 ---------------------------------------
13243 PROCEDURE AcctLineType_57 (
13244   p_application_id        IN NUMBER
13245  ,p_event_id              IN NUMBER
13246  ,p_calculate_acctd_flag  IN VARCHAR2
13247  ,p_calculate_g_l_flag    IN VARCHAR2
13248  ,p_actual_flag           IN OUT VARCHAR2
13249  ,p_balance_type_code     OUT VARCHAR2
13250  ,p_gain_or_loss_ref      OUT VARCHAR2
13251  
13252 --Transaction Account
13253  , p_source_1            IN NUMBER
13254 --Journal Line Type
13255  , p_source_2            IN VARCHAR2
13256 --Entered Amount
13257  , p_source_3            IN NUMBER
13258 --First Distribution Identifier
13259  , p_source_5            IN NUMBER
13260 --Distribution Type
13261  , p_source_6            IN VARCHAR2
13262 --Currency Code
13263  , p_source_7            IN VARCHAR2
13264 --Currency Conversion Date
13265  , p_source_8            IN DATE
13266 --Currency Conversion Rate
13267  , p_source_9            IN NUMBER
13268 --Currency Conversion Type
13269  , p_source_10            IN VARCHAR2
13270 --Accounted Amount
13271  , p_source_11            IN NUMBER
13272 )
13273 IS
13274 
13275 l_component_type              VARCHAR2(80);
13276 l_component_code              VARCHAR2(30);
13277 l_component_type_code         VARCHAR2(1);
13278 l_component_appl_id           INTEGER;
13279 l_amb_context_code            VARCHAR2(30);
13280 l_entity_code                 VARCHAR2(30);
13281 l_event_class_code            VARCHAR2(30);
13282 l_ae_header_id                NUMBER;
13283 l_event_type_code             VARCHAR2(30);
13284 l_line_definition_code        VARCHAR2(30);
13285 l_line_definition_owner_code  VARCHAR2(1);
13286 --
13287 -- adr variables
13288 l_segment                     VARCHAR2(30);
13289 l_ccid                        NUMBER;
13290 l_adr_transaction_coa_id      NUMBER;
13291 l_adr_accounting_coa_id       NUMBER;
13292 l_adr_flexfield_segment_code  VARCHAR2(30);
13293 l_adr_flex_value_set_id       NUMBER;
13294 l_adr_value_type_code         VARCHAR2(30);
13295 l_adr_value_combination_id    NUMBER;
13296 l_adr_value_segment_code      VARCHAR2(30);
13297 
13298 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13299 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13300 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13301 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13302 
13303 -- 4262811 Variables ------------------------------------------------------------------------------------------
13304 l_entered_amt_idx             NUMBER;
13305 l_accted_amt_idx              NUMBER;
13306 l_acc_rev_flag                VARCHAR2(1);
13307 l_accrual_line_num            NUMBER;
13308 l_tmp_amt                     NUMBER;
13309 l_acc_rev_natural_side_code   VARCHAR2(1);
13310 
13311 l_num_entries                 NUMBER;
13312 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13313 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13314 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13318 
13315 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13316 l_recog_line_1                NUMBER;
13317 l_recog_line_2                NUMBER;
13319 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13320 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13321 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13322 
13323 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13324 
13325 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13326 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13327 
13328 ---------------------------------------------------------------------------------------------------------------
13329 
13330 
13331 --
13332 -- bulk performance
13333 --
13334 l_balance_type_code           VARCHAR2(1);
13335 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13336 l_log_module                  VARCHAR2(240);
13337 
13338 --
13339 -- Upgrade strategy
13340 --
13341 l_actual_upg_option           VARCHAR2(1);
13342 l_enc_upg_option           VARCHAR2(1);
13343 
13344 --
13345 BEGIN
13346 --
13347 IF g_log_enabled THEN
13348       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_57';
13349 END IF;
13350 --
13351 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13352 
13353       trace
13354          (p_msg      => 'BEGIN of AcctLineType_57'
13355          ,p_level    => C_LEVEL_PROCEDURE
13356          ,p_module   => l_log_module);
13357 
13358 END IF;
13359 --
13360 l_component_type             := 'AMB_JLT';
13361 l_component_code             := 'ACV';
13362 l_component_type_code        := 'S';
13363 l_component_appl_id          :=  555;
13364 l_amb_context_code           := 'DEFAULT';
13365 l_entity_code                := 'PURCHASING';
13366 l_event_class_code           := 'DELIVER';
13367 l_event_type_code            := 'INT_REQ_RECEIPT_ADJ';
13368 l_line_definition_owner_code := 'S';
13369 l_line_definition_code       := 'INT_REQ_RCPT_ADJ';
13370 --
13371 l_balance_type_code          := 'A';
13372 l_segment                     := NULL;
13373 l_ccid                        := NULL;
13374 l_adr_transaction_coa_id      := NULL;
13375 l_adr_accounting_coa_id       := NULL;
13376 l_adr_flexfield_segment_code  := NULL;
13377 l_adr_flex_value_set_id       := NULL;
13378 l_adr_value_type_code         := NULL;
13379 l_adr_value_combination_id    := NULL;
13380 l_adr_value_segment_code      := NULL;
13381 
13382 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13383 l_bflow_class_code           := '';    -- 4219869 Business Flow
13384 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13385 l_budgetary_control_flag     := 'N';
13386 
13387 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13388 l_bflow_applied_to_amt       := NULL; -- 5132302
13389 l_entered_amt_idx            := NULL;          -- 4262811
13390 l_accted_amt_idx             := NULL;          -- 4262811
13391 l_acc_rev_flag               := NULL;          -- 4262811
13392 l_accrual_line_num           := NULL;          -- 4262811
13393 l_tmp_amt                    := NULL;          -- 4262811
13394 --
13395  
13396 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13397     l_balance_type_code <> 'B' THEN
13398 IF NVL(p_source_2,'
13399 ') =  'ACV'
13400  THEN 
13401 
13402    --
13403    XLA_AE_LINES_PKG.SetNewLine;
13404 
13405    p_balance_type_code          := l_balance_type_code;
13406    -- set the flag so later we will know whether the gain loss line needs to be created
13407    
13408    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13409      p_actual_flag :='A';
13410    END IF;
13411 
13412    --
13413    -- bulk performance
13414    --
13415    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13416                                       p_header_num   => 0); -- 4262811
13417    --
13418    -- set accounting line options
13419    --
13420    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13421            p_natural_side_code          => 'D'
13422          , p_gain_or_loss_flag          => 'N'
13423          , p_gl_transfer_mode_code      => 'D'
13424          , p_acct_entry_type_code       => 'A'
13425          , p_switch_side_flag           => 'Y'
13426          , p_merge_duplicate_code       => 'W'
13427          );
13428    --
13429    l_acc_rev_natural_side_code := 'C';  -- 4262811
13430    -- 
13431    --
13432    -- set accounting line type info
13433    --
13434    xla_ae_lines_pkg.SetAcctLineType
13435       (p_component_type             => l_component_type
13436       ,p_event_type_code            => l_event_type_code
13437       ,p_line_definition_owner_code => l_line_definition_owner_code
13438       ,p_line_definition_code       => l_line_definition_code
13439       ,p_accounting_line_code       => l_component_code
13440       ,p_accounting_line_type_code  => l_component_type_code
13441       ,p_accounting_line_appl_id    => l_component_appl_id
13442       ,p_amb_context_code           => l_amb_context_code
13443       ,p_entity_code                => l_entity_code
13447    --
13444       ,p_event_class_code           => l_event_class_code);
13445    --
13446    -- set accounting class
13448    xla_ae_lines_pkg.SetAcctClass(
13449            p_accounting_class_code  => 'ACV'
13450          , p_ae_header_id           => l_ae_header_id
13451          );
13452 
13453    --
13454    -- set rounding class
13455    --
13456    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13457                       'ACV';
13458 
13459    --
13460    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13461    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13462    --
13463    -- bulk performance
13464    --
13465    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13466 
13467    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13468       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13469 
13470    -- 4955764
13471    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13472       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13473 
13474    -- 4458381 Public Sector Enh
13475    
13476    --
13477    -- set accounting attributes for the line type
13478    --
13479    l_entered_amt_idx := 3;
13480    l_accted_amt_idx  := 8;
13481    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13482    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
13483    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
13484    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
13485    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
13486    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
13487    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
13488    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
13489    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
13490    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
13491    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
13492    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
13493    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
13494    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
13495    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
13496    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
13497    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
13498 
13499    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13500    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13501 
13502    ---------------------------------------------------------------------------------------------------------------
13503    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13504    ---------------------------------------------------------------------------------------------------------------
13505    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13506 
13507    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13508    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13509 
13510    IF xla_accounting_cache_pkg.GetValueChar
13511          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13512          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13513    AND l_bflow_method_code = 'PRIOR_ENTRY'
13514 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13515    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13516          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13517        )
13518    THEN
13519          xla_ae_lines_pkg.BflowUpgEntry
13520            (p_business_method_code    => l_bflow_method_code
13521            ,p_business_class_code     => l_bflow_class_code
13522            ,p_balance_type            => l_balance_type_code);
13523    ELSE
13524       NULL;
13525 -- No business flow processing for business flow method of NONE.
13526    END IF;
13527 
13528    --
13529    -- call analytical criteria
13530    --
13531    
13532    --
13533    -- call description
13534    --
13535    -- No description or it is inherited.
13536    --
13537    -- call ADRs
13538    -- Bug 4922099
13539    --
13540    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13541         (NVL(l_actual_upg_option, 'N') = 'O') OR
13542         (NVL(l_enc_upg_option, 'N') = 'O')
13543       )
13544    THEN
13545    NULL;
13546    --
13547    --
13548    
13549   l_ccid := AcctDerRule_3(
13550            p_application_id           => p_application_id
13551          , p_ae_header_id             => l_ae_header_id 
13552 , p_source_1 => p_source_1
13553 , p_source_2 => p_source_2
13554          , x_transaction_coa_id       => l_adr_transaction_coa_id
13555          , x_accounting_coa_id        => l_adr_accounting_coa_id
13556          , x_value_type_code          => l_adr_value_type_code
13557          , p_side                     => 'NA'
13558    );
13559 
13560    xla_ae_lines_pkg.set_ccid(
13561     p_code_combination_id          => l_ccid
13562   , p_value_type_code              => l_adr_value_type_code
13566   , p_adr_type_code                => 'S'
13563   , p_transaction_coa_id           => l_adr_transaction_coa_id
13564   , p_accounting_coa_id            => l_adr_accounting_coa_id
13565   , p_adr_code                     => 'ACV'
13567   , p_component_type               => l_component_type
13568   , p_component_code               => l_component_code
13569   , p_component_type_code          => l_component_type_code
13570   , p_component_appl_id            => l_component_appl_id
13571   , p_amb_context_code             => l_amb_context_code
13572   , p_side                         => 'NA'
13573   );
13574 
13575 
13576    --
13577    --
13578    END IF;
13579    --
13580    -- Bug 4922099
13581    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13582           (NVL(l_enc_upg_option, 'N') = 'O')
13583         ) AND
13584         (l_bflow_method_code = 'PRIOR_ENTRY')
13585       )
13586    THEN
13587       IF
13588       --
13589       1 = 2
13590       --
13591       THEN
13592       xla_accounting_err_pkg.build_message
13593                                     (p_appli_s_name            => 'XLA'
13594                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13595                                     ,p_token_1                 => 'LINE_NUMBER'
13596                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13597                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13598                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13599                                                                              l_component_type
13600                                                                             ,l_component_code
13601                                                                             ,l_component_type_code
13602                                                                             ,l_component_appl_id
13603                                                                             ,l_amb_context_code
13604                                                                             ,l_entity_code
13605                                                                             ,l_event_class_code
13606                                                                            )
13607                                     ,p_token_3                 => 'OWNER'
13608                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13609                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13610                                                                           ,p_lookup_code    => l_component_type_code
13611                                                                          )
13612                                     ,p_token_4                 => 'PRODUCT_NAME'
13613                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13614                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13615                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13616                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13617                                     ,p_ae_header_id            =>  NULL
13618                                        );
13619 
13620         IF (C_LEVEL_ERROR>= g_log_level) THEN
13621                  trace
13622                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13623                       ,p_level    => C_LEVEL_ERROR
13624                       ,p_module   => l_log_module);
13625         END IF;
13626       END IF;
13627    END IF;
13628    --
13629    --
13630    ------------------------------------------------------------------------------------------------
13631    -- 4219869 Business Flow
13632    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13633    -- Prior Entry.  Currently, the following code is always generated.
13634    ------------------------------------------------------------------------------------------------
13635    XLA_AE_LINES_PKG.ValidateCurrentLine;
13636 
13637    ------------------------------------------------------------------------------------
13638    -- 4219869 Business Flow
13639    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13640    ------------------------------------------------------------------------------------
13641    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13642 
13643    ----------------------------------------------------------------------------------
13644    -- 4219869 Business Flow
13645    -- Update journal entry status -- Need to generate this within IF <condition>
13646    ----------------------------------------------------------------------------------
13647    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13648          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13649          ,p_balance_type_code => l_balance_type_code
13650          );
13651 
13652    -------------------------------------------------------------------------------------------
13653    -- 4262811 - Generate the Accrual Reversal lines
13654    -------------------------------------------------------------------------------------------
13655    BEGIN
13659          l_acc_rev_flag := 'N';
13656       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13657                               (g_array_event(p_event_id).array_value_num('header_index'));
13658       IF l_acc_rev_flag IS NULL THEN
13660       END IF;
13661    EXCEPTION
13662       WHEN OTHERS THEN
13663          l_acc_rev_flag := 'N';
13664    END;
13665    --
13666    IF (l_acc_rev_flag = 'Y') THEN
13667 
13668        -- 4645092  ------------------------------------------------------------------------------
13669        -- To allow MPA report to determine if it should generate report process
13670        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13671        ------------------------------------------------------------------------------------------
13672 
13673        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13674        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13675    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
13676    -- call ADRs
13677    -- Bug 4922099
13678    --
13679    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13680         (NVL(l_actual_upg_option, 'N') = 'O') OR
13681         (NVL(l_enc_upg_option, 'N') = 'O')
13682       )
13683    THEN
13684    NULL;
13685    --
13686    --
13687    
13688   l_ccid := AcctDerRule_3(
13689            p_application_id           => p_application_id
13690          , p_ae_header_id             => l_ae_header_id 
13691 , p_source_1 => p_source_1
13692 , p_source_2 => p_source_2
13693          , x_transaction_coa_id       => l_adr_transaction_coa_id
13694          , x_accounting_coa_id        => l_adr_accounting_coa_id
13695          , x_value_type_code          => l_adr_value_type_code
13696          , p_side                     => 'NA'
13697    );
13698 
13699    xla_ae_lines_pkg.set_ccid(
13700     p_code_combination_id          => l_ccid
13701   , p_value_type_code              => l_adr_value_type_code
13702   , p_transaction_coa_id           => l_adr_transaction_coa_id
13703   , p_accounting_coa_id            => l_adr_accounting_coa_id
13704   , p_adr_code                     => 'ACV'
13705   , p_adr_type_code                => 'S'
13706   , p_component_type               => l_component_type
13707   , p_component_code               => l_component_code
13708   , p_component_type_code          => l_component_type_code
13709   , p_component_appl_id            => l_component_appl_id
13710   , p_amb_context_code             => l_amb_context_code
13711   , p_side                         => 'NA'
13712   );
13713 
13714 
13715    --
13716    --
13717    END IF;
13718 
13719        --
13720        -- Update the line information that should be overwritten
13721        --
13722        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13723                                          p_header_num   => 1);
13724        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
13725 
13726        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13727 
13728        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
13729           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13730        END IF;
13731 
13732       --
13733       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13734       --
13735       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13736           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
13737       ELSE
13738           ---------------------------------------------------------------------------------------------------
13739           -- 4262811a Switch Sign
13740           ---------------------------------------------------------------------------------------------------
13741           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13742           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13743                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13744           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13745                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13746           -- 5132302
13747           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13748                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13749 
13750       END IF;
13751 
13752       -- 4955764
13753       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13754       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13755 
13756 
13757       XLA_AE_LINES_PKG.ValidateCurrentLine;
13758       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13759 
13760       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13761                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13762                ,p_balance_type_code => l_balance_type_code);
13763 
13764    END IF;
13765 
13769      -- No MPA option is assigned.
13766    -----------------------------------------------------------------------------------------
13767    -- 4262811 Multiperiod Accounting
13768    -----------------------------------------------------------------------------------------
13770 
13771 
13772 END IF;
13773 END IF;
13774 --
13775 
13776 --
13777 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13778    trace
13779       (p_msg      => 'END of AcctLineType_57'
13780       ,p_level    => C_LEVEL_PROCEDURE
13781       ,p_module   => l_log_module);
13782 END IF;
13783 --
13784 EXCEPTION
13785   WHEN xla_exceptions_pkg.application_exception THEN
13786       RAISE;
13787   WHEN OTHERS THEN
13788        xla_exceptions_pkg.raise_message
13789            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_57');
13790 END AcctLineType_57;
13791 --
13792 
13793 ---------------------------------------
13794 --
13795 -- PRIVATE FUNCTION
13796 --         AcctLineType_58
13797 --
13798 ---------------------------------------
13799 PROCEDURE AcctLineType_58 (
13800   p_application_id        IN NUMBER
13801  ,p_event_id              IN NUMBER
13802  ,p_calculate_acctd_flag  IN VARCHAR2
13803  ,p_calculate_g_l_flag    IN VARCHAR2
13804  ,p_actual_flag           IN OUT VARCHAR2
13805  ,p_balance_type_code     OUT VARCHAR2
13806  ,p_gain_or_loss_ref      OUT VARCHAR2
13807  
13808 --Transaction Account
13809  , p_source_1            IN NUMBER
13810 --Journal Line Type
13811  , p_source_2            IN VARCHAR2
13812 --Entered Amount
13813  , p_source_3            IN NUMBER
13814 --First Distribution Identifier
13815  , p_source_5            IN NUMBER
13816 --Distribution Type
13817  , p_source_6            IN VARCHAR2
13818 --Currency Code
13819  , p_source_7            IN VARCHAR2
13820 --Currency Conversion Date
13821  , p_source_8            IN DATE
13822 --Currency Conversion Rate
13823  , p_source_9            IN NUMBER
13824 --Currency Conversion Type
13825  , p_source_10            IN VARCHAR2
13826 --Accounted Amount
13827  , p_source_11            IN NUMBER
13828 )
13829 IS
13830 
13831 l_component_type              VARCHAR2(80);
13832 l_component_code              VARCHAR2(30);
13833 l_component_type_code         VARCHAR2(1);
13834 l_component_appl_id           INTEGER;
13835 l_amb_context_code            VARCHAR2(30);
13836 l_entity_code                 VARCHAR2(30);
13837 l_event_class_code            VARCHAR2(30);
13838 l_ae_header_id                NUMBER;
13839 l_event_type_code             VARCHAR2(30);
13840 l_line_definition_code        VARCHAR2(30);
13841 l_line_definition_owner_code  VARCHAR2(1);
13842 --
13843 -- adr variables
13844 l_segment                     VARCHAR2(30);
13845 l_ccid                        NUMBER;
13846 l_adr_transaction_coa_id      NUMBER;
13847 l_adr_accounting_coa_id       NUMBER;
13848 l_adr_flexfield_segment_code  VARCHAR2(30);
13849 l_adr_flex_value_set_id       NUMBER;
13850 l_adr_value_type_code         VARCHAR2(30);
13851 l_adr_value_combination_id    NUMBER;
13852 l_adr_value_segment_code      VARCHAR2(30);
13853 
13854 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13855 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13856 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13857 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13858 
13859 -- 4262811 Variables ------------------------------------------------------------------------------------------
13860 l_entered_amt_idx             NUMBER;
13861 l_accted_amt_idx              NUMBER;
13862 l_acc_rev_flag                VARCHAR2(1);
13863 l_accrual_line_num            NUMBER;
13864 l_tmp_amt                     NUMBER;
13865 l_acc_rev_natural_side_code   VARCHAR2(1);
13866 
13867 l_num_entries                 NUMBER;
13868 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13869 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13870 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13871 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13872 l_recog_line_1                NUMBER;
13873 l_recog_line_2                NUMBER;
13874 
13875 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13876 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13877 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13878 
13879 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13880 
13881 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13882 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13883 
13884 ---------------------------------------------------------------------------------------------------------------
13885 
13886 
13887 --
13888 -- bulk performance
13889 --
13890 l_balance_type_code           VARCHAR2(1);
13891 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13892 l_log_module                  VARCHAR2(240);
13893 
13894 --
13895 -- Upgrade strategy
13896 --
13897 l_actual_upg_option           VARCHAR2(1);
13898 l_enc_upg_option           VARCHAR2(1);
13899 
13903 IF g_log_enabled THEN
13900 --
13901 BEGIN
13902 --
13904       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_58';
13905 END IF;
13906 --
13907 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13908 
13909       trace
13910          (p_msg      => 'BEGIN of AcctLineType_58'
13911          ,p_level    => C_LEVEL_PROCEDURE
13912          ,p_module   => l_log_module);
13913 
13914 END IF;
13915 --
13916 l_component_type             := 'AMB_JLT';
13917 l_component_code             := 'ACV';
13918 l_component_type_code        := 'S';
13919 l_component_appl_id          :=  555;
13920 l_amb_context_code           := 'DEFAULT';
13921 l_entity_code                := 'PURCHASING';
13922 l_event_class_code           := 'DELIVER';
13923 l_event_type_code            := 'PO_RECEIPT';
13924 l_line_definition_owner_code := 'S';
13925 l_line_definition_code       := 'DELIVER';
13926 --
13927 l_balance_type_code          := 'A';
13928 l_segment                     := NULL;
13929 l_ccid                        := NULL;
13930 l_adr_transaction_coa_id      := NULL;
13931 l_adr_accounting_coa_id       := NULL;
13932 l_adr_flexfield_segment_code  := NULL;
13933 l_adr_flex_value_set_id       := NULL;
13934 l_adr_value_type_code         := NULL;
13935 l_adr_value_combination_id    := NULL;
13936 l_adr_value_segment_code      := NULL;
13937 
13938 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13939 l_bflow_class_code           := '';    -- 4219869 Business Flow
13940 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13941 l_budgetary_control_flag     := 'N';
13942 
13943 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13944 l_bflow_applied_to_amt       := NULL; -- 5132302
13945 l_entered_amt_idx            := NULL;          -- 4262811
13946 l_accted_amt_idx             := NULL;          -- 4262811
13947 l_acc_rev_flag               := NULL;          -- 4262811
13948 l_accrual_line_num           := NULL;          -- 4262811
13949 l_tmp_amt                    := NULL;          -- 4262811
13950 --
13951  
13952 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13953     l_balance_type_code <> 'B' THEN
13954 IF NVL(p_source_2,'
13955 ') =  'ACV'
13956  THEN 
13957 
13958    --
13959    XLA_AE_LINES_PKG.SetNewLine;
13960 
13961    p_balance_type_code          := l_balance_type_code;
13962    -- set the flag so later we will know whether the gain loss line needs to be created
13963    
13964    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13965      p_actual_flag :='A';
13966    END IF;
13967 
13968    --
13969    -- bulk performance
13970    --
13971    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13972                                       p_header_num   => 0); -- 4262811
13973    --
13974    -- set accounting line options
13975    --
13976    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13977            p_natural_side_code          => 'D'
13978          , p_gain_or_loss_flag          => 'N'
13979          , p_gl_transfer_mode_code      => 'D'
13980          , p_acct_entry_type_code       => 'A'
13981          , p_switch_side_flag           => 'Y'
13982          , p_merge_duplicate_code       => 'W'
13983          );
13984    --
13985    l_acc_rev_natural_side_code := 'C';  -- 4262811
13986    -- 
13987    --
13988    -- set accounting line type info
13989    --
13990    xla_ae_lines_pkg.SetAcctLineType
13991       (p_component_type             => l_component_type
13992       ,p_event_type_code            => l_event_type_code
13993       ,p_line_definition_owner_code => l_line_definition_owner_code
13994       ,p_line_definition_code       => l_line_definition_code
13995       ,p_accounting_line_code       => l_component_code
13996       ,p_accounting_line_type_code  => l_component_type_code
13997       ,p_accounting_line_appl_id    => l_component_appl_id
13998       ,p_amb_context_code           => l_amb_context_code
13999       ,p_entity_code                => l_entity_code
14000       ,p_event_class_code           => l_event_class_code);
14001    --
14002    -- set accounting class
14003    --
14004    xla_ae_lines_pkg.SetAcctClass(
14005            p_accounting_class_code  => 'ACV'
14006          , p_ae_header_id           => l_ae_header_id
14007          );
14008 
14009    --
14010    -- set rounding class
14011    --
14012    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14013                       'ACV';
14014 
14015    --
14016    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14017    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14018    --
14019    -- bulk performance
14020    --
14021    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14022 
14023    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14024       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14025 
14026    -- 4955764
14027    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14028       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14029 
14030    -- 4458381 Public Sector Enh
14034    --
14031    
14032    --
14033    -- set accounting attributes for the line type
14035    l_entered_amt_idx := 3;
14036    l_accted_amt_idx  := 8;
14037    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
14038    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
14039    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
14040    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
14041    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
14042    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
14043    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
14044    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
14045    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
14046    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
14047    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
14048    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
14049    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
14050    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
14051    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
14052    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
14053    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
14054 
14055    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14056    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14057 
14058    ---------------------------------------------------------------------------------------------------------------
14059    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14060    ---------------------------------------------------------------------------------------------------------------
14061    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14062 
14063    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14064    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14065 
14066    IF xla_accounting_cache_pkg.GetValueChar
14067          (p_source_code         => 'LEDGER_CATEGORY_CODE'
14068          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14069    AND l_bflow_method_code = 'PRIOR_ENTRY'
14070 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14071    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14072          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14073        )
14074    THEN
14075          xla_ae_lines_pkg.BflowUpgEntry
14076            (p_business_method_code    => l_bflow_method_code
14077            ,p_business_class_code     => l_bflow_class_code
14078            ,p_balance_type            => l_balance_type_code);
14079    ELSE
14080       NULL;
14081 -- No business flow processing for business flow method of NONE.
14082    END IF;
14083 
14084    --
14085    -- call analytical criteria
14086    --
14087    
14088    --
14089    -- call description
14090    --
14091    -- No description or it is inherited.
14092    --
14093    -- call ADRs
14094    -- Bug 4922099
14095    --
14096    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14097         (NVL(l_actual_upg_option, 'N') = 'O') OR
14098         (NVL(l_enc_upg_option, 'N') = 'O')
14099       )
14100    THEN
14101    NULL;
14102    --
14103    --
14104    
14105   l_ccid := AcctDerRule_3(
14106            p_application_id           => p_application_id
14107          , p_ae_header_id             => l_ae_header_id 
14108 , p_source_1 => p_source_1
14109 , p_source_2 => p_source_2
14110          , x_transaction_coa_id       => l_adr_transaction_coa_id
14111          , x_accounting_coa_id        => l_adr_accounting_coa_id
14112          , x_value_type_code          => l_adr_value_type_code
14113          , p_side                     => 'NA'
14114    );
14115 
14116    xla_ae_lines_pkg.set_ccid(
14117     p_code_combination_id          => l_ccid
14118   , p_value_type_code              => l_adr_value_type_code
14119   , p_transaction_coa_id           => l_adr_transaction_coa_id
14120   , p_accounting_coa_id            => l_adr_accounting_coa_id
14121   , p_adr_code                     => 'ACV'
14122   , p_adr_type_code                => 'S'
14123   , p_component_type               => l_component_type
14124   , p_component_code               => l_component_code
14125   , p_component_type_code          => l_component_type_code
14126   , p_component_appl_id            => l_component_appl_id
14127   , p_amb_context_code             => l_amb_context_code
14128   , p_side                         => 'NA'
14129   );
14130 
14131 
14132    --
14133    --
14134    END IF;
14135    --
14136    -- Bug 4922099
14137    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14138           (NVL(l_enc_upg_option, 'N') = 'O')
14139         ) AND
14140         (l_bflow_method_code = 'PRIOR_ENTRY')
14141       )
14142    THEN
14143       IF
14144       --
14145       1 = 2
14146       --
14147       THEN
14148       xla_accounting_err_pkg.build_message
14149                                     (p_appli_s_name            => 'XLA'
14150                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14154                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14151                                     ,p_token_1                 => 'LINE_NUMBER'
14152                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
14153                                     ,p_token_2                 => 'LINE_TYPE_NAME'
14155                                                                              l_component_type
14156                                                                             ,l_component_code
14157                                                                             ,l_component_type_code
14158                                                                             ,l_component_appl_id
14159                                                                             ,l_amb_context_code
14160                                                                             ,l_entity_code
14161                                                                             ,l_event_class_code
14162                                                                            )
14163                                     ,p_token_3                 => 'OWNER'
14164                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
14165                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
14166                                                                           ,p_lookup_code    => l_component_type_code
14167                                                                          )
14168                                     ,p_token_4                 => 'PRODUCT_NAME'
14169                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14170                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14171                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14172                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14173                                     ,p_ae_header_id            =>  NULL
14174                                        );
14175 
14176         IF (C_LEVEL_ERROR>= g_log_level) THEN
14177                  trace
14178                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14179                       ,p_level    => C_LEVEL_ERROR
14180                       ,p_module   => l_log_module);
14181         END IF;
14182       END IF;
14183    END IF;
14184    --
14185    --
14186    ------------------------------------------------------------------------------------------------
14187    -- 4219869 Business Flow
14188    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14189    -- Prior Entry.  Currently, the following code is always generated.
14190    ------------------------------------------------------------------------------------------------
14191    XLA_AE_LINES_PKG.ValidateCurrentLine;
14192 
14193    ------------------------------------------------------------------------------------
14194    -- 4219869 Business Flow
14195    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14196    ------------------------------------------------------------------------------------
14197    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14198 
14199    ----------------------------------------------------------------------------------
14200    -- 4219869 Business Flow
14201    -- Update journal entry status -- Need to generate this within IF <condition>
14202    ----------------------------------------------------------------------------------
14203    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14204          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14205          ,p_balance_type_code => l_balance_type_code
14206          );
14207 
14208    -------------------------------------------------------------------------------------------
14209    -- 4262811 - Generate the Accrual Reversal lines
14210    -------------------------------------------------------------------------------------------
14211    BEGIN
14212       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14213                               (g_array_event(p_event_id).array_value_num('header_index'));
14214       IF l_acc_rev_flag IS NULL THEN
14215          l_acc_rev_flag := 'N';
14216       END IF;
14217    EXCEPTION
14218       WHEN OTHERS THEN
14219          l_acc_rev_flag := 'N';
14220    END;
14221    --
14222    IF (l_acc_rev_flag = 'Y') THEN
14223 
14224        -- 4645092  ------------------------------------------------------------------------------
14225        -- To allow MPA report to determine if it should generate report process
14226        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14227        ------------------------------------------------------------------------------------------
14228 
14229        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14230        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14231    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
14232    -- call ADRs
14233    -- Bug 4922099
14234    --
14235    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14236         (NVL(l_actual_upg_option, 'N') = 'O') OR
14237         (NVL(l_enc_upg_option, 'N') = 'O')
14238       )
14239    THEN
14240    NULL;
14241    --
14242    --
14243    
14247 , p_source_1 => p_source_1
14244   l_ccid := AcctDerRule_3(
14245            p_application_id           => p_application_id
14246          , p_ae_header_id             => l_ae_header_id 
14248 , p_source_2 => p_source_2
14249          , x_transaction_coa_id       => l_adr_transaction_coa_id
14250          , x_accounting_coa_id        => l_adr_accounting_coa_id
14251          , x_value_type_code          => l_adr_value_type_code
14252          , p_side                     => 'NA'
14253    );
14254 
14255    xla_ae_lines_pkg.set_ccid(
14256     p_code_combination_id          => l_ccid
14257   , p_value_type_code              => l_adr_value_type_code
14258   , p_transaction_coa_id           => l_adr_transaction_coa_id
14259   , p_accounting_coa_id            => l_adr_accounting_coa_id
14260   , p_adr_code                     => 'ACV'
14261   , p_adr_type_code                => 'S'
14262   , p_component_type               => l_component_type
14263   , p_component_code               => l_component_code
14264   , p_component_type_code          => l_component_type_code
14265   , p_component_appl_id            => l_component_appl_id
14266   , p_amb_context_code             => l_amb_context_code
14267   , p_side                         => 'NA'
14268   );
14269 
14270 
14271    --
14272    --
14273    END IF;
14274 
14275        --
14276        -- Update the line information that should be overwritten
14277        --
14278        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14279                                          p_header_num   => 1);
14280        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14281 
14282        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14283 
14284        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14285           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14286        END IF;
14287 
14288       --
14289       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14290       --
14291       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14292           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14293       ELSE
14294           ---------------------------------------------------------------------------------------------------
14295           -- 4262811a Switch Sign
14296           ---------------------------------------------------------------------------------------------------
14297           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14298           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14299                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14300           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14301                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14302           -- 5132302
14303           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14304                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14305 
14306       END IF;
14307 
14308       -- 4955764
14309       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14310       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14311 
14312 
14313       XLA_AE_LINES_PKG.ValidateCurrentLine;
14314       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14315 
14316       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14317                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14318                ,p_balance_type_code => l_balance_type_code);
14319 
14320    END IF;
14321 
14322    -----------------------------------------------------------------------------------------
14323    -- 4262811 Multiperiod Accounting
14324    -----------------------------------------------------------------------------------------
14325      -- No MPA option is assigned.
14326 
14327 
14328 END IF;
14329 END IF;
14330 --
14331 
14332 --
14333 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14334    trace
14335       (p_msg      => 'END of AcctLineType_58'
14336       ,p_level    => C_LEVEL_PROCEDURE
14337       ,p_module   => l_log_module);
14338 END IF;
14339 --
14340 EXCEPTION
14341   WHEN xla_exceptions_pkg.application_exception THEN
14342       RAISE;
14343   WHEN OTHERS THEN
14344        xla_exceptions_pkg.raise_message
14345            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_58');
14346 END AcctLineType_58;
14347 --
14348 
14349 ---------------------------------------
14350 --
14351 -- PRIVATE FUNCTION
14352 --         AcctLineType_59
14353 --
14354 ---------------------------------------
14355 PROCEDURE AcctLineType_59 (
14356   p_application_id        IN NUMBER
14357  ,p_event_id              IN NUMBER
14358  ,p_calculate_acctd_flag  IN VARCHAR2
14359  ,p_calculate_g_l_flag    IN VARCHAR2
14360  ,p_actual_flag           IN OUT VARCHAR2
14361  ,p_balance_type_code     OUT VARCHAR2
14362  ,p_gain_or_loss_ref      OUT VARCHAR2
14366 --Journal Line Type
14363  
14364 --Transaction Account
14365  , p_source_1            IN NUMBER
14367  , p_source_2            IN VARCHAR2
14368 --Entered Amount
14369  , p_source_3            IN NUMBER
14370 --First Distribution Identifier
14371  , p_source_5            IN NUMBER
14372 --Distribution Type
14373  , p_source_6            IN VARCHAR2
14374 --Currency Code
14375  , p_source_7            IN VARCHAR2
14376 --Currency Conversion Date
14377  , p_source_8            IN DATE
14378 --Currency Conversion Rate
14379  , p_source_9            IN NUMBER
14380 --Currency Conversion Type
14381  , p_source_10            IN VARCHAR2
14382 --Accounted Amount
14383  , p_source_11            IN NUMBER
14384 )
14385 IS
14386 
14387 l_component_type              VARCHAR2(80);
14388 l_component_code              VARCHAR2(30);
14389 l_component_type_code         VARCHAR2(1);
14390 l_component_appl_id           INTEGER;
14391 l_amb_context_code            VARCHAR2(30);
14392 l_entity_code                 VARCHAR2(30);
14393 l_event_class_code            VARCHAR2(30);
14394 l_ae_header_id                NUMBER;
14395 l_event_type_code             VARCHAR2(30);
14396 l_line_definition_code        VARCHAR2(30);
14397 l_line_definition_owner_code  VARCHAR2(1);
14398 --
14399 -- adr variables
14400 l_segment                     VARCHAR2(30);
14401 l_ccid                        NUMBER;
14402 l_adr_transaction_coa_id      NUMBER;
14403 l_adr_accounting_coa_id       NUMBER;
14404 l_adr_flexfield_segment_code  VARCHAR2(30);
14405 l_adr_flex_value_set_id       NUMBER;
14406 l_adr_value_type_code         VARCHAR2(30);
14407 l_adr_value_combination_id    NUMBER;
14408 l_adr_value_segment_code      VARCHAR2(30);
14409 
14410 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14411 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14412 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14413 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14414 
14415 -- 4262811 Variables ------------------------------------------------------------------------------------------
14416 l_entered_amt_idx             NUMBER;
14417 l_accted_amt_idx              NUMBER;
14418 l_acc_rev_flag                VARCHAR2(1);
14419 l_accrual_line_num            NUMBER;
14420 l_tmp_amt                     NUMBER;
14421 l_acc_rev_natural_side_code   VARCHAR2(1);
14422 
14423 l_num_entries                 NUMBER;
14424 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14425 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14426 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14427 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14428 l_recog_line_1                NUMBER;
14429 l_recog_line_2                NUMBER;
14430 
14431 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14432 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14433 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14434 
14435 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14436 
14437 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14438 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14439 
14440 ---------------------------------------------------------------------------------------------------------------
14441 
14442 
14443 --
14444 -- bulk performance
14445 --
14446 l_balance_type_code           VARCHAR2(1);
14447 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14448 l_log_module                  VARCHAR2(240);
14449 
14450 --
14451 -- Upgrade strategy
14452 --
14453 l_actual_upg_option           VARCHAR2(1);
14454 l_enc_upg_option           VARCHAR2(1);
14455 
14456 --
14457 BEGIN
14458 --
14459 IF g_log_enabled THEN
14460       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_59';
14461 END IF;
14462 --
14463 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14464 
14465       trace
14466          (p_msg      => 'BEGIN of AcctLineType_59'
14467          ,p_level    => C_LEVEL_PROCEDURE
14468          ,p_module   => l_log_module);
14469 
14470 END IF;
14471 --
14472 l_component_type             := 'AMB_JLT';
14473 l_component_code             := 'ALC';
14474 l_component_type_code        := 'S';
14475 l_component_appl_id          :=  555;
14476 l_amb_context_code           := 'DEFAULT';
14477 l_entity_code                := 'PRODUCTION';
14478 l_event_class_code           := 'BATCH_MATERIAL';
14479 l_event_type_code            := 'CERT';
14480 l_line_definition_owner_code := 'S';
14481 l_line_definition_code       := 'BATCH_COMPLETION';
14482 --
14483 l_balance_type_code          := 'A';
14484 l_segment                     := NULL;
14485 l_ccid                        := NULL;
14486 l_adr_transaction_coa_id      := NULL;
14487 l_adr_accounting_coa_id       := NULL;
14488 l_adr_flexfield_segment_code  := NULL;
14489 l_adr_flex_value_set_id       := NULL;
14490 l_adr_value_type_code         := NULL;
14491 l_adr_value_combination_id    := NULL;
14492 l_adr_value_segment_code      := NULL;
14493 
14494 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
14498 
14495 l_bflow_class_code           := '';    -- 4219869 Business Flow
14496 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
14497 l_budgetary_control_flag     := 'N';
14499 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
14500 l_bflow_applied_to_amt       := NULL; -- 5132302
14501 l_entered_amt_idx            := NULL;          -- 4262811
14502 l_accted_amt_idx             := NULL;          -- 4262811
14503 l_acc_rev_flag               := NULL;          -- 4262811
14504 l_accrual_line_num           := NULL;          -- 4262811
14505 l_tmp_amt                    := NULL;          -- 4262811
14506 --
14507  
14508 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14509     l_balance_type_code <> 'B' THEN
14510 IF NVL(p_source_2,'
14511 ') =  'ALC'
14512  THEN 
14513 
14514    --
14515    XLA_AE_LINES_PKG.SetNewLine;
14516 
14517    p_balance_type_code          := l_balance_type_code;
14518    -- set the flag so later we will know whether the gain loss line needs to be created
14519    
14520    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14521      p_actual_flag :='A';
14522    END IF;
14523 
14524    --
14525    -- bulk performance
14526    --
14527    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14528                                       p_header_num   => 0); -- 4262811
14529    --
14530    -- set accounting line options
14531    --
14532    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14533            p_natural_side_code          => 'D'
14534          , p_gain_or_loss_flag          => 'N'
14535          , p_gl_transfer_mode_code      => 'D'
14536          , p_acct_entry_type_code       => 'A'
14537          , p_switch_side_flag           => 'Y'
14538          , p_merge_duplicate_code       => 'W'
14539          );
14540    --
14541    l_acc_rev_natural_side_code := 'C';  -- 4262811
14542    -- 
14543    --
14544    -- set accounting line type info
14545    --
14546    xla_ae_lines_pkg.SetAcctLineType
14547       (p_component_type             => l_component_type
14548       ,p_event_type_code            => l_event_type_code
14549       ,p_line_definition_owner_code => l_line_definition_owner_code
14550       ,p_line_definition_code       => l_line_definition_code
14551       ,p_accounting_line_code       => l_component_code
14552       ,p_accounting_line_type_code  => l_component_type_code
14553       ,p_accounting_line_appl_id    => l_component_appl_id
14554       ,p_amb_context_code           => l_amb_context_code
14555       ,p_entity_code                => l_entity_code
14556       ,p_event_class_code           => l_event_class_code);
14557    --
14558    -- set accounting class
14559    --
14560    xla_ae_lines_pkg.SetAcctClass(
14561            p_accounting_class_code  => 'ALC'
14562          , p_ae_header_id           => l_ae_header_id
14563          );
14564 
14565    --
14566    -- set rounding class
14567    --
14568    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14569                       'ALC';
14570 
14571    --
14572    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14573    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14574    --
14575    -- bulk performance
14576    --
14577    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14578 
14579    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14580       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14581 
14582    -- 4955764
14583    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14584       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14585 
14586    -- 4458381 Public Sector Enh
14587    
14588    --
14589    -- set accounting attributes for the line type
14590    --
14591    l_entered_amt_idx := 3;
14592    l_accted_amt_idx  := 8;
14593    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
14594    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
14595    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
14596    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
14597    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
14598    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
14599    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
14600    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
14601    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
14602    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
14603    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
14604    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
14605    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
14606    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
14607    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
14608    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
14609    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
14610 
14611    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14612    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14613 
14617    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14614    ---------------------------------------------------------------------------------------------------------------
14615    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14616    ---------------------------------------------------------------------------------------------------------------
14618 
14619    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14620    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14621 
14622    IF xla_accounting_cache_pkg.GetValueChar
14623          (p_source_code         => 'LEDGER_CATEGORY_CODE'
14624          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14625    AND l_bflow_method_code = 'PRIOR_ENTRY'
14626 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14627    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14628          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14629        )
14630    THEN
14631          xla_ae_lines_pkg.BflowUpgEntry
14632            (p_business_method_code    => l_bflow_method_code
14633            ,p_business_class_code     => l_bflow_class_code
14634            ,p_balance_type            => l_balance_type_code);
14635    ELSE
14636       NULL;
14637 -- No business flow processing for business flow method of NONE.
14638    END IF;
14639 
14640    --
14641    -- call analytical criteria
14642    --
14643    
14644    --
14645    -- call description
14646    --
14647    -- No description or it is inherited.
14648    --
14649    -- call ADRs
14650    -- Bug 4922099
14651    --
14652    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14653         (NVL(l_actual_upg_option, 'N') = 'O') OR
14654         (NVL(l_enc_upg_option, 'N') = 'O')
14655       )
14656    THEN
14657    NULL;
14658    --
14659    --
14660    
14661   l_ccid := AcctDerRule_4(
14662            p_application_id           => p_application_id
14663          , p_ae_header_id             => l_ae_header_id 
14664 , p_source_1 => p_source_1
14665 , p_source_2 => p_source_2
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                     => 'ALC'
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    -- Bug 4922099
14693    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14694           (NVL(l_enc_upg_option, 'N') = 'O')
14695         ) AND
14696         (l_bflow_method_code = 'PRIOR_ENTRY')
14697       )
14698    THEN
14699       IF
14700       --
14701       1 = 2
14702       --
14703       THEN
14704       xla_accounting_err_pkg.build_message
14705                                     (p_appli_s_name            => 'XLA'
14706                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14707                                     ,p_token_1                 => 'LINE_NUMBER'
14708                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
14709                                     ,p_token_2                 => 'LINE_TYPE_NAME'
14710                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14711                                                                              l_component_type
14712                                                                             ,l_component_code
14713                                                                             ,l_component_type_code
14714                                                                             ,l_component_appl_id
14715                                                                             ,l_amb_context_code
14716                                                                             ,l_entity_code
14717                                                                             ,l_event_class_code
14718                                                                            )
14719                                     ,p_token_3                 => 'OWNER'
14720                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
14721                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
14722                                                                           ,p_lookup_code    => l_component_type_code
14726                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14723                                                                          )
14724                                     ,p_token_4                 => 'PRODUCT_NAME'
14725                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14727                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14728                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14729                                     ,p_ae_header_id            =>  NULL
14730                                        );
14731 
14732         IF (C_LEVEL_ERROR>= g_log_level) THEN
14733                  trace
14734                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14735                       ,p_level    => C_LEVEL_ERROR
14736                       ,p_module   => l_log_module);
14737         END IF;
14738       END IF;
14739    END IF;
14740    --
14741    --
14742    ------------------------------------------------------------------------------------------------
14743    -- 4219869 Business Flow
14744    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14745    -- Prior Entry.  Currently, the following code is always generated.
14746    ------------------------------------------------------------------------------------------------
14747    XLA_AE_LINES_PKG.ValidateCurrentLine;
14748 
14749    ------------------------------------------------------------------------------------
14750    -- 4219869 Business Flow
14751    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14752    ------------------------------------------------------------------------------------
14753    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14754 
14755    ----------------------------------------------------------------------------------
14756    -- 4219869 Business Flow
14757    -- Update journal entry status -- Need to generate this within IF <condition>
14758    ----------------------------------------------------------------------------------
14759    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14760          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14761          ,p_balance_type_code => l_balance_type_code
14762          );
14763 
14764    -------------------------------------------------------------------------------------------
14765    -- 4262811 - Generate the Accrual Reversal lines
14766    -------------------------------------------------------------------------------------------
14767    BEGIN
14768       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14769                               (g_array_event(p_event_id).array_value_num('header_index'));
14770       IF l_acc_rev_flag IS NULL THEN
14771          l_acc_rev_flag := 'N';
14772       END IF;
14773    EXCEPTION
14774       WHEN OTHERS THEN
14775          l_acc_rev_flag := 'N';
14776    END;
14777    --
14778    IF (l_acc_rev_flag = 'Y') THEN
14779 
14780        -- 4645092  ------------------------------------------------------------------------------
14781        -- To allow MPA report to determine if it should generate report process
14782        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14783        ------------------------------------------------------------------------------------------
14784 
14785        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14786        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14787    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
14788    -- call ADRs
14789    -- Bug 4922099
14790    --
14791    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14792         (NVL(l_actual_upg_option, 'N') = 'O') OR
14793         (NVL(l_enc_upg_option, 'N') = 'O')
14794       )
14795    THEN
14796    NULL;
14797    --
14798    --
14799    
14800   l_ccid := AcctDerRule_4(
14801            p_application_id           => p_application_id
14802          , p_ae_header_id             => l_ae_header_id 
14803 , p_source_1 => p_source_1
14804 , p_source_2 => p_source_2
14805          , x_transaction_coa_id       => l_adr_transaction_coa_id
14806          , x_accounting_coa_id        => l_adr_accounting_coa_id
14807          , x_value_type_code          => l_adr_value_type_code
14808          , p_side                     => 'NA'
14809    );
14810 
14811    xla_ae_lines_pkg.set_ccid(
14812     p_code_combination_id          => l_ccid
14813   , p_value_type_code              => l_adr_value_type_code
14814   , p_transaction_coa_id           => l_adr_transaction_coa_id
14815   , p_accounting_coa_id            => l_adr_accounting_coa_id
14816   , p_adr_code                     => 'ALC'
14817   , p_adr_type_code                => 'S'
14818   , p_component_type               => l_component_type
14819   , p_component_code               => l_component_code
14820   , p_component_type_code          => l_component_type_code
14821   , p_component_appl_id            => l_component_appl_id
14822   , p_amb_context_code             => l_amb_context_code
14823   , p_side                         => 'NA'
14824   );
14825 
14826 
14827    --
14828    --
14829    END IF;
14830 
14831        --
14832        -- Update the line information that should be overwritten
14836        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14833        --
14834        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14835                                          p_header_num   => 1);
14837 
14838        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14839 
14840        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14841           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14842        END IF;
14843 
14844       --
14845       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14846       --
14847       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14848           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14849       ELSE
14850           ---------------------------------------------------------------------------------------------------
14851           -- 4262811a Switch Sign
14852           ---------------------------------------------------------------------------------------------------
14853           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14854           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14855                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14856           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14857                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14858           -- 5132302
14859           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14860                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14861 
14862       END IF;
14863 
14864       -- 4955764
14865       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14866       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14867 
14868 
14869       XLA_AE_LINES_PKG.ValidateCurrentLine;
14870       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14871 
14872       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14873                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14874                ,p_balance_type_code => l_balance_type_code);
14875 
14876    END IF;
14877 
14878    -----------------------------------------------------------------------------------------
14879    -- 4262811 Multiperiod Accounting
14880    -----------------------------------------------------------------------------------------
14881      -- No MPA option is assigned.
14882 
14883 
14884 END IF;
14885 END IF;
14886 --
14887 
14888 --
14889 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14890    trace
14891       (p_msg      => 'END of AcctLineType_59'
14892       ,p_level    => C_LEVEL_PROCEDURE
14893       ,p_module   => l_log_module);
14894 END IF;
14895 --
14896 EXCEPTION
14897   WHEN xla_exceptions_pkg.application_exception THEN
14898       RAISE;
14899   WHEN OTHERS THEN
14900        xla_exceptions_pkg.raise_message
14901            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_59');
14902 END AcctLineType_59;
14903 --
14904 
14905 ---------------------------------------
14906 --
14907 -- PRIVATE FUNCTION
14908 --         AcctLineType_60
14909 --
14910 ---------------------------------------
14911 PROCEDURE AcctLineType_60 (
14912   p_application_id        IN NUMBER
14913  ,p_event_id              IN NUMBER
14914  ,p_calculate_acctd_flag  IN VARCHAR2
14915  ,p_calculate_g_l_flag    IN VARCHAR2
14916  ,p_actual_flag           IN OUT VARCHAR2
14917  ,p_balance_type_code     OUT VARCHAR2
14918  ,p_gain_or_loss_ref      OUT VARCHAR2
14919  
14920 --Transaction Account
14921  , p_source_1            IN NUMBER
14922 --Journal Line Type
14923  , p_source_2            IN VARCHAR2
14924 --Entered Amount
14925  , p_source_3            IN NUMBER
14926 --First Distribution Identifier
14927  , p_source_5            IN NUMBER
14928 --Distribution Type
14929  , p_source_6            IN VARCHAR2
14930 --Currency Code
14931  , p_source_7            IN VARCHAR2
14932 --Currency Conversion Date
14933  , p_source_8            IN DATE
14934 --Currency Conversion Rate
14935  , p_source_9            IN NUMBER
14936 --Currency Conversion Type
14937  , p_source_10            IN VARCHAR2
14938 --Accounted Amount
14939  , p_source_11            IN NUMBER
14940 )
14941 IS
14942 
14943 l_component_type              VARCHAR2(80);
14944 l_component_code              VARCHAR2(30);
14945 l_component_type_code         VARCHAR2(1);
14946 l_component_appl_id           INTEGER;
14947 l_amb_context_code            VARCHAR2(30);
14948 l_entity_code                 VARCHAR2(30);
14949 l_event_class_code            VARCHAR2(30);
14950 l_ae_header_id                NUMBER;
14951 l_event_type_code             VARCHAR2(30);
14952 l_line_definition_code        VARCHAR2(30);
14953 l_line_definition_owner_code  VARCHAR2(1);
14954 --
14955 -- adr variables
14959 l_adr_accounting_coa_id       NUMBER;
14956 l_segment                     VARCHAR2(30);
14957 l_ccid                        NUMBER;
14958 l_adr_transaction_coa_id      NUMBER;
14960 l_adr_flexfield_segment_code  VARCHAR2(30);
14961 l_adr_flex_value_set_id       NUMBER;
14962 l_adr_value_type_code         VARCHAR2(30);
14963 l_adr_value_combination_id    NUMBER;
14964 l_adr_value_segment_code      VARCHAR2(30);
14965 
14966 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14967 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14968 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14969 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14970 
14971 -- 4262811 Variables ------------------------------------------------------------------------------------------
14972 l_entered_amt_idx             NUMBER;
14973 l_accted_amt_idx              NUMBER;
14974 l_acc_rev_flag                VARCHAR2(1);
14975 l_accrual_line_num            NUMBER;
14976 l_tmp_amt                     NUMBER;
14977 l_acc_rev_natural_side_code   VARCHAR2(1);
14978 
14979 l_num_entries                 NUMBER;
14980 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14981 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14982 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14983 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14984 l_recog_line_1                NUMBER;
14985 l_recog_line_2                NUMBER;
14986 
14987 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14988 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14989 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14990 
14991 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14992 
14993 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14994 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14995 
14996 ---------------------------------------------------------------------------------------------------------------
14997 
14998 
14999 --
15000 -- bulk performance
15001 --
15002 l_balance_type_code           VARCHAR2(1);
15003 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
15004 l_log_module                  VARCHAR2(240);
15005 
15006 --
15007 -- Upgrade strategy
15008 --
15009 l_actual_upg_option           VARCHAR2(1);
15010 l_enc_upg_option           VARCHAR2(1);
15011 
15012 --
15013 BEGIN
15014 --
15015 IF g_log_enabled THEN
15016       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_60';
15017 END IF;
15018 --
15019 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15020 
15021       trace
15022          (p_msg      => 'BEGIN of AcctLineType_60'
15023          ,p_level    => C_LEVEL_PROCEDURE
15024          ,p_module   => l_log_module);
15025 
15026 END IF;
15027 --
15028 l_component_type             := 'AMB_JLT';
15029 l_component_code             := 'ALC';
15030 l_component_type_code        := 'S';
15031 l_component_appl_id          :=  555;
15032 l_amb_context_code           := 'DEFAULT';
15033 l_entity_code                := 'REVALUATION';
15034 l_event_class_code           := 'GLCOSTALOC';
15035 l_event_type_code            := 'GLCOSTALOC';
15036 l_line_definition_owner_code := 'S';
15037 l_line_definition_code       := 'GLCOSTALOC';
15038 --
15039 l_balance_type_code          := 'A';
15040 l_segment                     := NULL;
15041 l_ccid                        := NULL;
15042 l_adr_transaction_coa_id      := NULL;
15043 l_adr_accounting_coa_id       := NULL;
15044 l_adr_flexfield_segment_code  := NULL;
15045 l_adr_flex_value_set_id       := NULL;
15046 l_adr_value_type_code         := NULL;
15047 l_adr_value_combination_id    := NULL;
15048 l_adr_value_segment_code      := NULL;
15049 
15050 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
15051 l_bflow_class_code           := '';    -- 4219869 Business Flow
15052 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
15053 l_budgetary_control_flag     := 'N';
15054 
15055 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
15056 l_bflow_applied_to_amt       := NULL; -- 5132302
15057 l_entered_amt_idx            := NULL;          -- 4262811
15058 l_accted_amt_idx             := NULL;          -- 4262811
15059 l_acc_rev_flag               := NULL;          -- 4262811
15060 l_accrual_line_num           := NULL;          -- 4262811
15061 l_tmp_amt                    := NULL;          -- 4262811
15062 --
15063  
15064 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
15065     l_balance_type_code <> 'B' THEN
15066 IF NVL(p_source_2,'
15067 ') =  'ALC'
15068  THEN 
15069 
15070    --
15071    XLA_AE_LINES_PKG.SetNewLine;
15072 
15073    p_balance_type_code          := l_balance_type_code;
15074    -- set the flag so later we will know whether the gain loss line needs to be created
15075    
15076    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
15077      p_actual_flag :='A';
15078    END IF;
15079 
15080    --
15081    -- bulk performance
15082    --
15083    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
15087    --
15084                                       p_header_num   => 0); -- 4262811
15085    --
15086    -- set accounting line options
15088    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15089            p_natural_side_code          => 'D'
15090          , p_gain_or_loss_flag          => 'N'
15091          , p_gl_transfer_mode_code      => 'D'
15092          , p_acct_entry_type_code       => 'A'
15093          , p_switch_side_flag           => 'Y'
15094          , p_merge_duplicate_code       => 'W'
15095          );
15096    --
15097    l_acc_rev_natural_side_code := 'C';  -- 4262811
15098    -- 
15099    --
15100    -- set accounting line type info
15101    --
15102    xla_ae_lines_pkg.SetAcctLineType
15103       (p_component_type             => l_component_type
15104       ,p_event_type_code            => l_event_type_code
15105       ,p_line_definition_owner_code => l_line_definition_owner_code
15106       ,p_line_definition_code       => l_line_definition_code
15107       ,p_accounting_line_code       => l_component_code
15108       ,p_accounting_line_type_code  => l_component_type_code
15109       ,p_accounting_line_appl_id    => l_component_appl_id
15110       ,p_amb_context_code           => l_amb_context_code
15111       ,p_entity_code                => l_entity_code
15112       ,p_event_class_code           => l_event_class_code);
15113    --
15114    -- set accounting class
15115    --
15116    xla_ae_lines_pkg.SetAcctClass(
15117            p_accounting_class_code  => 'ALC'
15118          , p_ae_header_id           => l_ae_header_id
15119          );
15120 
15121    --
15122    -- set rounding class
15123    --
15124    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
15125                       'ALC';
15126 
15127    --
15128    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
15129    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
15130    --
15131    -- bulk performance
15132    --
15133    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
15134 
15135    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15136       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15137 
15138    -- 4955764
15139    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15140       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15141 
15142    -- 4458381 Public Sector Enh
15143    
15144    --
15145    -- set accounting attributes for the line type
15146    --
15147    l_entered_amt_idx := 3;
15148    l_accted_amt_idx  := 8;
15149    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
15150    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
15151    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
15152    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
15153    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
15154    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
15155    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
15156    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
15157    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
15158    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
15159    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
15160    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
15161    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
15162    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
15163    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
15164    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
15165    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
15166 
15167    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15168    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15169 
15170    ---------------------------------------------------------------------------------------------------------------
15171    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15172    ---------------------------------------------------------------------------------------------------------------
15173    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15174 
15175    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15176    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15177 
15178    IF xla_accounting_cache_pkg.GetValueChar
15179          (p_source_code         => 'LEDGER_CATEGORY_CODE'
15180          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15181    AND l_bflow_method_code = 'PRIOR_ENTRY'
15182 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15183    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15184          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15185        )
15186    THEN
15187          xla_ae_lines_pkg.BflowUpgEntry
15188            (p_business_method_code    => l_bflow_method_code
15189            ,p_business_class_code     => l_bflow_class_code
15193 -- No business flow processing for business flow method of NONE.
15190            ,p_balance_type            => l_balance_type_code);
15191    ELSE
15192       NULL;
15194    END IF;
15195 
15196    --
15197    -- call analytical criteria
15198    --
15199    
15200    --
15201    -- call description
15202    --
15203    -- No description or it is inherited.
15204    --
15205    -- call ADRs
15206    -- Bug 4922099
15207    --
15208    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15209         (NVL(l_actual_upg_option, 'N') = 'O') OR
15210         (NVL(l_enc_upg_option, 'N') = 'O')
15211       )
15212    THEN
15213    NULL;
15214    --
15215    --
15216    
15217   l_ccid := AcctDerRule_4(
15218            p_application_id           => p_application_id
15219          , p_ae_header_id             => l_ae_header_id 
15220 , p_source_1 => p_source_1
15221 , p_source_2 => p_source_2
15222          , x_transaction_coa_id       => l_adr_transaction_coa_id
15223          , x_accounting_coa_id        => l_adr_accounting_coa_id
15224          , x_value_type_code          => l_adr_value_type_code
15225          , p_side                     => 'NA'
15226    );
15227 
15228    xla_ae_lines_pkg.set_ccid(
15229     p_code_combination_id          => l_ccid
15230   , p_value_type_code              => l_adr_value_type_code
15231   , p_transaction_coa_id           => l_adr_transaction_coa_id
15232   , p_accounting_coa_id            => l_adr_accounting_coa_id
15233   , p_adr_code                     => 'ALC'
15234   , p_adr_type_code                => 'S'
15235   , p_component_type               => l_component_type
15236   , p_component_code               => l_component_code
15237   , p_component_type_code          => l_component_type_code
15238   , p_component_appl_id            => l_component_appl_id
15239   , p_amb_context_code             => l_amb_context_code
15240   , p_side                         => 'NA'
15241   );
15242 
15243 
15244    --
15245    --
15246    END IF;
15247    --
15248    -- Bug 4922099
15249    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15250           (NVL(l_enc_upg_option, 'N') = 'O')
15251         ) AND
15252         (l_bflow_method_code = 'PRIOR_ENTRY')
15253       )
15254    THEN
15255       IF
15256       --
15257       1 = 2
15258       --
15259       THEN
15260       xla_accounting_err_pkg.build_message
15261                                     (p_appli_s_name            => 'XLA'
15262                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15263                                     ,p_token_1                 => 'LINE_NUMBER'
15264                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15265                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15266                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15267                                                                              l_component_type
15268                                                                             ,l_component_code
15269                                                                             ,l_component_type_code
15270                                                                             ,l_component_appl_id
15271                                                                             ,l_amb_context_code
15272                                                                             ,l_entity_code
15273                                                                             ,l_event_class_code
15274                                                                            )
15275                                     ,p_token_3                 => 'OWNER'
15276                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15277                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15278                                                                           ,p_lookup_code    => l_component_type_code
15279                                                                          )
15280                                     ,p_token_4                 => 'PRODUCT_NAME'
15281                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15282                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15283                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15284                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15285                                     ,p_ae_header_id            =>  NULL
15286                                        );
15287 
15288         IF (C_LEVEL_ERROR>= g_log_level) THEN
15289                  trace
15290                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15291                       ,p_level    => C_LEVEL_ERROR
15292                       ,p_module   => l_log_module);
15293         END IF;
15294       END IF;
15295    END IF;
15296    --
15297    --
15298    ------------------------------------------------------------------------------------------------
15299    -- 4219869 Business Flow
15300    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15301    -- Prior Entry.  Currently, the following code is always generated.
15305    ------------------------------------------------------------------------------------
15302    ------------------------------------------------------------------------------------------------
15303    XLA_AE_LINES_PKG.ValidateCurrentLine;
15304 
15306    -- 4219869 Business Flow
15307    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15308    ------------------------------------------------------------------------------------
15309    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15310 
15311    ----------------------------------------------------------------------------------
15312    -- 4219869 Business Flow
15313    -- Update journal entry status -- Need to generate this within IF <condition>
15314    ----------------------------------------------------------------------------------
15315    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15316          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15317          ,p_balance_type_code => l_balance_type_code
15318          );
15319 
15320    -------------------------------------------------------------------------------------------
15321    -- 4262811 - Generate the Accrual Reversal lines
15322    -------------------------------------------------------------------------------------------
15323    BEGIN
15324       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15325                               (g_array_event(p_event_id).array_value_num('header_index'));
15326       IF l_acc_rev_flag IS NULL THEN
15327          l_acc_rev_flag := 'N';
15328       END IF;
15329    EXCEPTION
15330       WHEN OTHERS THEN
15331          l_acc_rev_flag := 'N';
15332    END;
15333    --
15334    IF (l_acc_rev_flag = 'Y') THEN
15335 
15336        -- 4645092  ------------------------------------------------------------------------------
15337        -- To allow MPA report to determine if it should generate report process
15338        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15339        ------------------------------------------------------------------------------------------
15340 
15341        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15342        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15343    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
15344    -- call ADRs
15345    -- Bug 4922099
15346    --
15347    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15348         (NVL(l_actual_upg_option, 'N') = 'O') OR
15349         (NVL(l_enc_upg_option, 'N') = 'O')
15350       )
15351    THEN
15352    NULL;
15353    --
15354    --
15355    
15356   l_ccid := AcctDerRule_4(
15357            p_application_id           => p_application_id
15358          , p_ae_header_id             => l_ae_header_id 
15359 , p_source_1 => p_source_1
15360 , p_source_2 => p_source_2
15361          , x_transaction_coa_id       => l_adr_transaction_coa_id
15362          , x_accounting_coa_id        => l_adr_accounting_coa_id
15363          , x_value_type_code          => l_adr_value_type_code
15364          , p_side                     => 'NA'
15365    );
15366 
15367    xla_ae_lines_pkg.set_ccid(
15368     p_code_combination_id          => l_ccid
15369   , p_value_type_code              => l_adr_value_type_code
15370   , p_transaction_coa_id           => l_adr_transaction_coa_id
15371   , p_accounting_coa_id            => l_adr_accounting_coa_id
15372   , p_adr_code                     => 'ALC'
15373   , p_adr_type_code                => 'S'
15374   , p_component_type               => l_component_type
15375   , p_component_code               => l_component_code
15376   , p_component_type_code          => l_component_type_code
15377   , p_component_appl_id            => l_component_appl_id
15378   , p_amb_context_code             => l_amb_context_code
15379   , p_side                         => 'NA'
15380   );
15381 
15382 
15383    --
15384    --
15385    END IF;
15386 
15387        --
15388        -- Update the line information that should be overwritten
15389        --
15390        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15391                                          p_header_num   => 1);
15392        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
15393 
15394        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15395 
15396        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
15397           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15398        END IF;
15399 
15400       --
15401       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15402       --
15403       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15404           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
15405       ELSE
15406           ---------------------------------------------------------------------------------------------------
15407           -- 4262811a Switch Sign
15408           ---------------------------------------------------------------------------------------------------
15409           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
15410           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15414           -- 5132302
15411                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15412           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15413                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15415           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15416                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15417 
15418       END IF;
15419 
15420       -- 4955764
15421       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15422       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15423 
15424 
15425       XLA_AE_LINES_PKG.ValidateCurrentLine;
15426       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15427 
15428       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15429                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15430                ,p_balance_type_code => l_balance_type_code);
15431 
15432    END IF;
15433 
15434    -----------------------------------------------------------------------------------------
15435    -- 4262811 Multiperiod Accounting
15436    -----------------------------------------------------------------------------------------
15437      -- No MPA option is assigned.
15438 
15439 
15440 END IF;
15441 END IF;
15442 --
15443 
15444 --
15445 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15446    trace
15447       (p_msg      => 'END of AcctLineType_60'
15448       ,p_level    => C_LEVEL_PROCEDURE
15449       ,p_module   => l_log_module);
15450 END IF;
15451 --
15452 EXCEPTION
15453   WHEN xla_exceptions_pkg.application_exception THEN
15454       RAISE;
15455   WHEN OTHERS THEN
15456        xla_exceptions_pkg.raise_message
15457            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_60');
15458 END AcctLineType_60;
15459 --
15460 
15461 ---------------------------------------
15462 --
15463 -- PRIVATE FUNCTION
15464 --         AcctLineType_61
15465 --
15466 ---------------------------------------
15467 PROCEDURE AcctLineType_61 (
15468   p_application_id        IN NUMBER
15469  ,p_event_id              IN NUMBER
15470  ,p_calculate_acctd_flag  IN VARCHAR2
15471  ,p_calculate_g_l_flag    IN VARCHAR2
15472  ,p_actual_flag           IN OUT VARCHAR2
15473  ,p_balance_type_code     OUT VARCHAR2
15474  ,p_gain_or_loss_ref      OUT VARCHAR2
15475  
15476 --Transaction Account
15477  , p_source_1            IN NUMBER
15478 --Journal Line Type
15479  , p_source_2            IN VARCHAR2
15480 --Entered Amount
15481  , p_source_3            IN NUMBER
15482 --First Distribution Identifier
15483  , p_source_5            IN NUMBER
15484 --Distribution Type
15485  , p_source_6            IN VARCHAR2
15486 --Currency Code
15487  , p_source_7            IN VARCHAR2
15488 --Currency Conversion Date
15489  , p_source_8            IN DATE
15490 --Currency Conversion Rate
15491  , p_source_9            IN NUMBER
15492 --Currency Conversion Type
15493  , p_source_10            IN VARCHAR2
15494 --Accounted Amount
15495  , p_source_11            IN NUMBER
15496 )
15497 IS
15498 
15499 l_component_type              VARCHAR2(80);
15500 l_component_code              VARCHAR2(30);
15501 l_component_type_code         VARCHAR2(1);
15502 l_component_appl_id           INTEGER;
15503 l_amb_context_code            VARCHAR2(30);
15504 l_entity_code                 VARCHAR2(30);
15505 l_event_class_code            VARCHAR2(30);
15506 l_ae_header_id                NUMBER;
15507 l_event_type_code             VARCHAR2(30);
15508 l_line_definition_code        VARCHAR2(30);
15509 l_line_definition_owner_code  VARCHAR2(1);
15510 --
15511 -- adr variables
15512 l_segment                     VARCHAR2(30);
15513 l_ccid                        NUMBER;
15514 l_adr_transaction_coa_id      NUMBER;
15515 l_adr_accounting_coa_id       NUMBER;
15516 l_adr_flexfield_segment_code  VARCHAR2(30);
15517 l_adr_flex_value_set_id       NUMBER;
15518 l_adr_value_type_code         VARCHAR2(30);
15519 l_adr_value_combination_id    NUMBER;
15520 l_adr_value_segment_code      VARCHAR2(30);
15521 
15522 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
15523 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
15524 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
15525 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
15526 
15527 -- 4262811 Variables ------------------------------------------------------------------------------------------
15528 l_entered_amt_idx             NUMBER;
15529 l_accted_amt_idx              NUMBER;
15530 l_acc_rev_flag                VARCHAR2(1);
15531 l_accrual_line_num            NUMBER;
15532 l_tmp_amt                     NUMBER;
15533 l_acc_rev_natural_side_code   VARCHAR2(1);
15534 
15535 l_num_entries                 NUMBER;
15536 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
15537 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
15538 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
15539 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
15540 l_recog_line_1                NUMBER;
15544 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
15541 l_recog_line_2                NUMBER;
15542 
15543 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
15545 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
15546 
15547 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
15548 
15549 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
15550 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
15551 
15552 ---------------------------------------------------------------------------------------------------------------
15553 
15554 
15555 --
15556 -- bulk performance
15557 --
15558 l_balance_type_code           VARCHAR2(1);
15559 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
15560 l_log_module                  VARCHAR2(240);
15561 
15562 --
15563 -- Upgrade strategy
15564 --
15565 l_actual_upg_option           VARCHAR2(1);
15566 l_enc_upg_option           VARCHAR2(1);
15567 
15568 --
15569 BEGIN
15570 --
15571 IF g_log_enabled THEN
15572       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_61';
15573 END IF;
15574 --
15575 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15576 
15577       trace
15578          (p_msg      => 'BEGIN of AcctLineType_61'
15579          ,p_level    => C_LEVEL_PROCEDURE
15580          ,p_module   => l_log_module);
15581 
15582 END IF;
15583 --
15584 l_component_type             := 'AMB_JLT';
15585 l_component_code             := 'ALV';
15586 l_component_type_code        := 'S';
15587 l_component_appl_id          :=  555;
15588 l_amb_context_code           := 'DEFAULT';
15589 l_entity_code                := 'PRODUCTION';
15590 l_event_class_code           := 'BATCH_CLOSE';
15591 l_event_type_code            := 'CLOS';
15592 l_line_definition_owner_code := 'S';
15593 l_line_definition_code       := 'BATCH_CLOSE';
15594 --
15595 l_balance_type_code          := 'A';
15596 l_segment                     := NULL;
15597 l_ccid                        := NULL;
15598 l_adr_transaction_coa_id      := NULL;
15599 l_adr_accounting_coa_id       := NULL;
15600 l_adr_flexfield_segment_code  := NULL;
15601 l_adr_flex_value_set_id       := NULL;
15602 l_adr_value_type_code         := NULL;
15603 l_adr_value_combination_id    := NULL;
15604 l_adr_value_segment_code      := NULL;
15605 
15606 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
15607 l_bflow_class_code           := '';    -- 4219869 Business Flow
15608 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
15609 l_budgetary_control_flag     := 'N';
15610 
15611 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
15612 l_bflow_applied_to_amt       := NULL; -- 5132302
15613 l_entered_amt_idx            := NULL;          -- 4262811
15614 l_accted_amt_idx             := NULL;          -- 4262811
15615 l_acc_rev_flag               := NULL;          -- 4262811
15616 l_accrual_line_num           := NULL;          -- 4262811
15617 l_tmp_amt                    := NULL;          -- 4262811
15618 --
15619  
15620 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
15621     l_balance_type_code <> 'B' THEN
15622 IF NVL(p_source_2,'
15623 ') =  'ALV'
15624  THEN 
15625 
15626    --
15627    XLA_AE_LINES_PKG.SetNewLine;
15628 
15629    p_balance_type_code          := l_balance_type_code;
15630    -- set the flag so later we will know whether the gain loss line needs to be created
15631    
15632    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
15633      p_actual_flag :='A';
15634    END IF;
15635 
15636    --
15637    -- bulk performance
15638    --
15639    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
15640                                       p_header_num   => 0); -- 4262811
15641    --
15642    -- set accounting line options
15643    --
15644    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15645            p_natural_side_code          => 'D'
15646          , p_gain_or_loss_flag          => 'N'
15647          , p_gl_transfer_mode_code      => 'D'
15648          , p_acct_entry_type_code       => 'A'
15649          , p_switch_side_flag           => 'Y'
15650          , p_merge_duplicate_code       => 'W'
15651          );
15652    --
15653    l_acc_rev_natural_side_code := 'C';  -- 4262811
15654    -- 
15655    --
15656    -- set accounting line type info
15657    --
15658    xla_ae_lines_pkg.SetAcctLineType
15659       (p_component_type             => l_component_type
15660       ,p_event_type_code            => l_event_type_code
15661       ,p_line_definition_owner_code => l_line_definition_owner_code
15662       ,p_line_definition_code       => l_line_definition_code
15663       ,p_accounting_line_code       => l_component_code
15664       ,p_accounting_line_type_code  => l_component_type_code
15665       ,p_accounting_line_appl_id    => l_component_appl_id
15666       ,p_amb_context_code           => l_amb_context_code
15667       ,p_entity_code                => l_entity_code
15668       ,p_event_class_code           => l_event_class_code);
15669    --
15670    -- set accounting class
15671    --
15672    xla_ae_lines_pkg.SetAcctClass(
15676 
15673            p_accounting_class_code  => 'ALV'
15674          , p_ae_header_id           => l_ae_header_id
15675          );
15677    --
15678    -- set rounding class
15679    --
15680    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
15681                       'ALV';
15682 
15683    --
15684    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
15685    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
15686    --
15687    -- bulk performance
15688    --
15689    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
15690 
15691    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15692       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15693 
15694    -- 4955764
15695    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15696       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15697 
15698    -- 4458381 Public Sector Enh
15699    
15700    --
15701    -- set accounting attributes for the line type
15702    --
15703    l_entered_amt_idx := 3;
15704    l_accted_amt_idx  := 8;
15705    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
15706    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
15707    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
15708    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
15709    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
15710    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
15711    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
15712    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
15713    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
15714    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
15715    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
15716    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
15717    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
15718    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
15719    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
15720    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
15721    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
15722 
15723    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15724    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15725 
15726    ---------------------------------------------------------------------------------------------------------------
15727    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15728    ---------------------------------------------------------------------------------------------------------------
15729    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15730 
15731    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15732    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15733 
15734    IF xla_accounting_cache_pkg.GetValueChar
15735          (p_source_code         => 'LEDGER_CATEGORY_CODE'
15736          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15737    AND l_bflow_method_code = 'PRIOR_ENTRY'
15738 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15739    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15740          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15741        )
15742    THEN
15743          xla_ae_lines_pkg.BflowUpgEntry
15744            (p_business_method_code    => l_bflow_method_code
15745            ,p_business_class_code     => l_bflow_class_code
15746            ,p_balance_type            => l_balance_type_code);
15747    ELSE
15748       NULL;
15749 -- No business flow processing for business flow method of NONE.
15750    END IF;
15751 
15752    --
15753    -- call analytical criteria
15754    --
15755    
15756    --
15757    -- call description
15758    --
15759    -- No description or it is inherited.
15760    --
15761    -- call ADRs
15762    -- Bug 4922099
15763    --
15764    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15765         (NVL(l_actual_upg_option, 'N') = 'O') OR
15766         (NVL(l_enc_upg_option, 'N') = 'O')
15767       )
15768    THEN
15769    NULL;
15770    --
15771    --
15772    
15773   l_ccid := AcctDerRule_5(
15774            p_application_id           => p_application_id
15775          , p_ae_header_id             => l_ae_header_id 
15776 , p_source_1 => p_source_1
15777 , p_source_2 => p_source_2
15778          , x_transaction_coa_id       => l_adr_transaction_coa_id
15779          , x_accounting_coa_id        => l_adr_accounting_coa_id
15780          , x_value_type_code          => l_adr_value_type_code
15781          , p_side                     => 'NA'
15782    );
15783 
15784    xla_ae_lines_pkg.set_ccid(
15785     p_code_combination_id          => l_ccid
15786   , p_value_type_code              => l_adr_value_type_code
15787   , p_transaction_coa_id           => l_adr_transaction_coa_id
15788   , p_accounting_coa_id            => l_adr_accounting_coa_id
15789   , p_adr_code                     => 'ALV'
15790   , p_adr_type_code                => 'S'
15794   , p_component_appl_id            => l_component_appl_id
15791   , p_component_type               => l_component_type
15792   , p_component_code               => l_component_code
15793   , p_component_type_code          => l_component_type_code
15795   , p_amb_context_code             => l_amb_context_code
15796   , p_side                         => 'NA'
15797   );
15798 
15799 
15800    --
15801    --
15802    END IF;
15803    --
15804    -- Bug 4922099
15805    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15806           (NVL(l_enc_upg_option, 'N') = 'O')
15807         ) AND
15808         (l_bflow_method_code = 'PRIOR_ENTRY')
15809       )
15810    THEN
15811       IF
15812       --
15813       1 = 2
15814       --
15815       THEN
15816       xla_accounting_err_pkg.build_message
15817                                     (p_appli_s_name            => 'XLA'
15818                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15819                                     ,p_token_1                 => 'LINE_NUMBER'
15820                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15821                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15822                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15823                                                                              l_component_type
15824                                                                             ,l_component_code
15825                                                                             ,l_component_type_code
15826                                                                             ,l_component_appl_id
15827                                                                             ,l_amb_context_code
15828                                                                             ,l_entity_code
15829                                                                             ,l_event_class_code
15830                                                                            )
15831                                     ,p_token_3                 => 'OWNER'
15832                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15833                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15834                                                                           ,p_lookup_code    => l_component_type_code
15835                                                                          )
15836                                     ,p_token_4                 => 'PRODUCT_NAME'
15837                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15838                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15839                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15840                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15841                                     ,p_ae_header_id            =>  NULL
15842                                        );
15843 
15844         IF (C_LEVEL_ERROR>= g_log_level) THEN
15845                  trace
15846                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15847                       ,p_level    => C_LEVEL_ERROR
15848                       ,p_module   => l_log_module);
15849         END IF;
15850       END IF;
15851    END IF;
15852    --
15853    --
15854    ------------------------------------------------------------------------------------------------
15855    -- 4219869 Business Flow
15856    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15857    -- Prior Entry.  Currently, the following code is always generated.
15858    ------------------------------------------------------------------------------------------------
15859    XLA_AE_LINES_PKG.ValidateCurrentLine;
15860 
15861    ------------------------------------------------------------------------------------
15862    -- 4219869 Business Flow
15863    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15864    ------------------------------------------------------------------------------------
15865    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15866 
15867    ----------------------------------------------------------------------------------
15868    -- 4219869 Business Flow
15869    -- Update journal entry status -- Need to generate this within IF <condition>
15870    ----------------------------------------------------------------------------------
15871    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15872          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15873          ,p_balance_type_code => l_balance_type_code
15874          );
15875 
15876    -------------------------------------------------------------------------------------------
15877    -- 4262811 - Generate the Accrual Reversal lines
15878    -------------------------------------------------------------------------------------------
15879    BEGIN
15880       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15881                               (g_array_event(p_event_id).array_value_num('header_index'));
15882       IF l_acc_rev_flag IS NULL THEN
15883          l_acc_rev_flag := 'N';
15884       END IF;
15885    EXCEPTION
15886       WHEN OTHERS THEN
15890    IF (l_acc_rev_flag = 'Y') THEN
15887          l_acc_rev_flag := 'N';
15888    END;
15889    --
15891 
15892        -- 4645092  ------------------------------------------------------------------------------
15893        -- To allow MPA report to determine if it should generate report process
15894        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15895        ------------------------------------------------------------------------------------------
15896 
15897        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15898        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15899    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
15900    -- call ADRs
15901    -- Bug 4922099
15902    --
15903    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15904         (NVL(l_actual_upg_option, 'N') = 'O') OR
15905         (NVL(l_enc_upg_option, 'N') = 'O')
15906       )
15907    THEN
15908    NULL;
15909    --
15910    --
15911    
15912   l_ccid := AcctDerRule_5(
15913            p_application_id           => p_application_id
15914          , p_ae_header_id             => l_ae_header_id 
15915 , p_source_1 => p_source_1
15916 , p_source_2 => p_source_2
15917          , x_transaction_coa_id       => l_adr_transaction_coa_id
15918          , x_accounting_coa_id        => l_adr_accounting_coa_id
15919          , x_value_type_code          => l_adr_value_type_code
15920          , p_side                     => 'NA'
15921    );
15922 
15923    xla_ae_lines_pkg.set_ccid(
15924     p_code_combination_id          => l_ccid
15925   , p_value_type_code              => l_adr_value_type_code
15926   , p_transaction_coa_id           => l_adr_transaction_coa_id
15927   , p_accounting_coa_id            => l_adr_accounting_coa_id
15928   , p_adr_code                     => 'ALV'
15929   , p_adr_type_code                => 'S'
15930   , p_component_type               => l_component_type
15931   , p_component_code               => l_component_code
15932   , p_component_type_code          => l_component_type_code
15933   , p_component_appl_id            => l_component_appl_id
15934   , p_amb_context_code             => l_amb_context_code
15935   , p_side                         => 'NA'
15936   );
15937 
15938 
15939    --
15940    --
15941    END IF;
15942 
15943        --
15944        -- Update the line information that should be overwritten
15945        --
15946        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15947                                          p_header_num   => 1);
15948        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
15949 
15950        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15951 
15952        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
15953           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15954        END IF;
15955 
15956       --
15957       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15958       --
15959       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15960           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
15961       ELSE
15962           ---------------------------------------------------------------------------------------------------
15963           -- 4262811a Switch Sign
15964           ---------------------------------------------------------------------------------------------------
15965           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
15966           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15967                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15968           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15969                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15970           -- 5132302
15971           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15972                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15973 
15974       END IF;
15975 
15976       -- 4955764
15977       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15978       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15979 
15980 
15981       XLA_AE_LINES_PKG.ValidateCurrentLine;
15982       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15983 
15984       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15985                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15986                ,p_balance_type_code => l_balance_type_code);
15987 
15988    END IF;
15989 
15990    -----------------------------------------------------------------------------------------
15991    -- 4262811 Multiperiod Accounting
15992    -----------------------------------------------------------------------------------------
15993      -- No MPA option is assigned.
15994 
15995 
15996 END IF;
15997 END IF;
15998 --
15999 
16000 --
16001 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16002    trace
16006 END IF;
16003       (p_msg      => 'END of AcctLineType_61'
16004       ,p_level    => C_LEVEL_PROCEDURE
16005       ,p_module   => l_log_module);
16007 --
16008 EXCEPTION
16009   WHEN xla_exceptions_pkg.application_exception THEN
16010       RAISE;
16011   WHEN OTHERS THEN
16012        xla_exceptions_pkg.raise_message
16013            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_61');
16014 END AcctLineType_61;
16015 --
16016 
16017 ---------------------------------------
16018 --
16019 -- PRIVATE FUNCTION
16020 --         AcctLineType_62
16021 --
16022 ---------------------------------------
16023 PROCEDURE AcctLineType_62 (
16024   p_application_id        IN NUMBER
16025  ,p_event_id              IN NUMBER
16026  ,p_calculate_acctd_flag  IN VARCHAR2
16027  ,p_calculate_g_l_flag    IN VARCHAR2
16028  ,p_actual_flag           IN OUT VARCHAR2
16029  ,p_balance_type_code     OUT VARCHAR2
16030  ,p_gain_or_loss_ref      OUT VARCHAR2
16031  
16032 --Transaction Account
16033  , p_source_1            IN NUMBER
16034 --Journal Line Type
16035  , p_source_2            IN VARCHAR2
16036 --Entered Amount
16037  , p_source_3            IN NUMBER
16038 --First Distribution Identifier
16039  , p_source_5            IN NUMBER
16040 --Distribution Type
16041  , p_source_6            IN VARCHAR2
16042 --Currency Code
16043  , p_source_7            IN VARCHAR2
16044 --Currency Conversion Date
16045  , p_source_8            IN DATE
16046 --Currency Conversion Rate
16047  , p_source_9            IN NUMBER
16048 --Currency Conversion Type
16049  , p_source_10            IN VARCHAR2
16050 --Accounted Amount
16051  , p_source_11            IN NUMBER
16052 )
16053 IS
16054 
16055 l_component_type              VARCHAR2(80);
16056 l_component_code              VARCHAR2(30);
16057 l_component_type_code         VARCHAR2(1);
16058 l_component_appl_id           INTEGER;
16059 l_amb_context_code            VARCHAR2(30);
16060 l_entity_code                 VARCHAR2(30);
16061 l_event_class_code            VARCHAR2(30);
16062 l_ae_header_id                NUMBER;
16063 l_event_type_code             VARCHAR2(30);
16064 l_line_definition_code        VARCHAR2(30);
16065 l_line_definition_owner_code  VARCHAR2(1);
16066 --
16067 -- adr variables
16068 l_segment                     VARCHAR2(30);
16069 l_ccid                        NUMBER;
16070 l_adr_transaction_coa_id      NUMBER;
16071 l_adr_accounting_coa_id       NUMBER;
16072 l_adr_flexfield_segment_code  VARCHAR2(30);
16073 l_adr_flex_value_set_id       NUMBER;
16074 l_adr_value_type_code         VARCHAR2(30);
16075 l_adr_value_combination_id    NUMBER;
16076 l_adr_value_segment_code      VARCHAR2(30);
16077 
16078 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
16079 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
16080 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
16081 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
16082 
16083 -- 4262811 Variables ------------------------------------------------------------------------------------------
16084 l_entered_amt_idx             NUMBER;
16085 l_accted_amt_idx              NUMBER;
16086 l_acc_rev_flag                VARCHAR2(1);
16087 l_accrual_line_num            NUMBER;
16088 l_tmp_amt                     NUMBER;
16089 l_acc_rev_natural_side_code   VARCHAR2(1);
16090 
16091 l_num_entries                 NUMBER;
16092 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
16093 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
16094 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
16095 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
16096 l_recog_line_1                NUMBER;
16097 l_recog_line_2                NUMBER;
16098 
16099 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
16100 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
16101 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
16102 
16103 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16104 
16105 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
16106 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
16107 
16108 ---------------------------------------------------------------------------------------------------------------
16109 
16110 
16111 --
16112 -- bulk performance
16113 --
16114 l_balance_type_code           VARCHAR2(1);
16115 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
16116 l_log_module                  VARCHAR2(240);
16117 
16118 --
16119 -- Upgrade strategy
16120 --
16121 l_actual_upg_option           VARCHAR2(1);
16122 l_enc_upg_option           VARCHAR2(1);
16123 
16124 --
16125 BEGIN
16126 --
16127 IF g_log_enabled THEN
16128       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_62';
16129 END IF;
16130 --
16131 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16132 
16133       trace
16134          (p_msg      => 'BEGIN of AcctLineType_62'
16135          ,p_level    => C_LEVEL_PROCEDURE
16136          ,p_module   => l_log_module);
16137 
16138 END IF;
16139 --
16140 l_component_type             := 'AMB_JLT';
16144 l_amb_context_code           := 'DEFAULT';
16141 l_component_code             := 'CAD';
16142 l_component_type_code        := 'S';
16143 l_component_appl_id          :=  555;
16145 l_entity_code                := 'REVALUATION';
16146 l_event_class_code           := 'ACTCOSTADJ';
16147 l_event_type_code            := 'ACTCOSTADJ';
16148 l_line_definition_owner_code := 'S';
16149 l_line_definition_code       := 'ACTCOSTADJ';
16150 --
16151 l_balance_type_code          := 'A';
16152 l_segment                     := NULL;
16153 l_ccid                        := NULL;
16154 l_adr_transaction_coa_id      := NULL;
16155 l_adr_accounting_coa_id       := NULL;
16156 l_adr_flexfield_segment_code  := NULL;
16157 l_adr_flex_value_set_id       := NULL;
16158 l_adr_value_type_code         := NULL;
16159 l_adr_value_combination_id    := NULL;
16160 l_adr_value_segment_code      := NULL;
16161 
16162 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
16163 l_bflow_class_code           := '';    -- 4219869 Business Flow
16164 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
16165 l_budgetary_control_flag     := 'N';
16166 
16167 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
16168 l_bflow_applied_to_amt       := NULL; -- 5132302
16169 l_entered_amt_idx            := NULL;          -- 4262811
16170 l_accted_amt_idx             := NULL;          -- 4262811
16171 l_acc_rev_flag               := NULL;          -- 4262811
16172 l_accrual_line_num           := NULL;          -- 4262811
16173 l_tmp_amt                    := NULL;          -- 4262811
16174 --
16175  
16176 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16177     l_balance_type_code <> 'B' THEN
16178 IF NVL(p_source_2,'
16179 ') =  'CAD'
16180  THEN 
16181 
16182    --
16183    XLA_AE_LINES_PKG.SetNewLine;
16184 
16185    p_balance_type_code          := l_balance_type_code;
16186    -- set the flag so later we will know whether the gain loss line needs to be created
16187    
16188    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16189      p_actual_flag :='A';
16190    END IF;
16191 
16192    --
16193    -- bulk performance
16194    --
16195    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16196                                       p_header_num   => 0); -- 4262811
16197    --
16198    -- set accounting line options
16199    --
16200    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16201            p_natural_side_code          => 'D'
16202          , p_gain_or_loss_flag          => 'N'
16203          , p_gl_transfer_mode_code      => 'D'
16204          , p_acct_entry_type_code       => 'A'
16205          , p_switch_side_flag           => 'Y'
16206          , p_merge_duplicate_code       => 'W'
16207          );
16208    --
16209    l_acc_rev_natural_side_code := 'C';  -- 4262811
16210    -- 
16211    --
16212    -- set accounting line type info
16213    --
16214    xla_ae_lines_pkg.SetAcctLineType
16215       (p_component_type             => l_component_type
16216       ,p_event_type_code            => l_event_type_code
16217       ,p_line_definition_owner_code => l_line_definition_owner_code
16218       ,p_line_definition_code       => l_line_definition_code
16219       ,p_accounting_line_code       => l_component_code
16220       ,p_accounting_line_type_code  => l_component_type_code
16221       ,p_accounting_line_appl_id    => l_component_appl_id
16222       ,p_amb_context_code           => l_amb_context_code
16223       ,p_entity_code                => l_entity_code
16224       ,p_event_class_code           => l_event_class_code);
16225    --
16226    -- set accounting class
16227    --
16228    xla_ae_lines_pkg.SetAcctClass(
16229            p_accounting_class_code  => 'IRV'
16230          , p_ae_header_id           => l_ae_header_id
16231          );
16232 
16233    --
16234    -- set rounding class
16235    --
16236    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16237                       'IRV';
16238 
16239    --
16240    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16241    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16242    --
16243    -- bulk performance
16244    --
16245    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16246 
16247    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16248       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16249 
16250    -- 4955764
16251    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16252       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16253 
16254    -- 4458381 Public Sector Enh
16255    
16256    --
16257    -- set accounting attributes for the line type
16258    --
16259    l_entered_amt_idx := 3;
16260    l_accted_amt_idx  := 8;
16261    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
16262    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
16263    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
16264    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
16265    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
16269    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
16266    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
16267    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
16268    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
16270    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
16271    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
16272    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
16273    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
16274    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
16275    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
16276    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
16277    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
16278 
16279    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16280    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16281 
16282    ---------------------------------------------------------------------------------------------------------------
16283    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16284    ---------------------------------------------------------------------------------------------------------------
16285    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16286 
16287    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16288    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16289 
16290    IF xla_accounting_cache_pkg.GetValueChar
16291          (p_source_code         => 'LEDGER_CATEGORY_CODE'
16292          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16293    AND l_bflow_method_code = 'PRIOR_ENTRY'
16294 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16295    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16296          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16297        )
16298    THEN
16299          xla_ae_lines_pkg.BflowUpgEntry
16300            (p_business_method_code    => l_bflow_method_code
16301            ,p_business_class_code     => l_bflow_class_code
16302            ,p_balance_type            => l_balance_type_code);
16303    ELSE
16304       NULL;
16305 -- No business flow processing for business flow method of NONE.
16306    END IF;
16307 
16308    --
16309    -- call analytical criteria
16310    --
16311    
16312    --
16313    -- call description
16314    --
16315    -- No description or it is inherited.
16316    --
16317    -- call ADRs
16318    -- Bug 4922099
16319    --
16320    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16321         (NVL(l_actual_upg_option, 'N') = 'O') OR
16322         (NVL(l_enc_upg_option, 'N') = 'O')
16323       )
16324    THEN
16325    NULL;
16326    --
16327    --
16328    
16329   l_ccid := AcctDerRule_6(
16330            p_application_id           => p_application_id
16331          , p_ae_header_id             => l_ae_header_id 
16332 , p_source_1 => p_source_1
16333 , p_source_2 => p_source_2
16334          , x_transaction_coa_id       => l_adr_transaction_coa_id
16335          , x_accounting_coa_id        => l_adr_accounting_coa_id
16336          , x_value_type_code          => l_adr_value_type_code
16337          , p_side                     => 'NA'
16338    );
16339 
16340    xla_ae_lines_pkg.set_ccid(
16341     p_code_combination_id          => l_ccid
16342   , p_value_type_code              => l_adr_value_type_code
16343   , p_transaction_coa_id           => l_adr_transaction_coa_id
16344   , p_accounting_coa_id            => l_adr_accounting_coa_id
16345   , p_adr_code                     => 'CAD'
16346   , p_adr_type_code                => 'S'
16347   , p_component_type               => l_component_type
16348   , p_component_code               => l_component_code
16349   , p_component_type_code          => l_component_type_code
16350   , p_component_appl_id            => l_component_appl_id
16351   , p_amb_context_code             => l_amb_context_code
16352   , p_side                         => 'NA'
16353   );
16354 
16355 
16356    --
16357    --
16358    END IF;
16359    --
16360    -- Bug 4922099
16361    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16362           (NVL(l_enc_upg_option, 'N') = 'O')
16363         ) AND
16364         (l_bflow_method_code = 'PRIOR_ENTRY')
16365       )
16366    THEN
16367       IF
16368       --
16369       1 = 2
16370       --
16371       THEN
16372       xla_accounting_err_pkg.build_message
16373                                     (p_appli_s_name            => 'XLA'
16374                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16375                                     ,p_token_1                 => 'LINE_NUMBER'
16376                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
16377                                     ,p_token_2                 => 'LINE_TYPE_NAME'
16378                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
16379                                                                              l_component_type
16380                                                                             ,l_component_code
16384                                                                             ,l_entity_code
16381                                                                             ,l_component_type_code
16382                                                                             ,l_component_appl_id
16383                                                                             ,l_amb_context_code
16385                                                                             ,l_event_class_code
16386                                                                            )
16387                                     ,p_token_3                 => 'OWNER'
16388                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
16389                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
16390                                                                           ,p_lookup_code    => l_component_type_code
16391                                                                          )
16392                                     ,p_token_4                 => 'PRODUCT_NAME'
16393                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16394                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16395                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16396                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16397                                     ,p_ae_header_id            =>  NULL
16398                                        );
16399 
16400         IF (C_LEVEL_ERROR>= g_log_level) THEN
16401                  trace
16402                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16403                       ,p_level    => C_LEVEL_ERROR
16404                       ,p_module   => l_log_module);
16405         END IF;
16406       END IF;
16407    END IF;
16408    --
16409    --
16410    ------------------------------------------------------------------------------------------------
16411    -- 4219869 Business Flow
16412    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16413    -- Prior Entry.  Currently, the following code is always generated.
16414    ------------------------------------------------------------------------------------------------
16415    XLA_AE_LINES_PKG.ValidateCurrentLine;
16416 
16417    ------------------------------------------------------------------------------------
16418    -- 4219869 Business Flow
16419    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16420    ------------------------------------------------------------------------------------
16421    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16422 
16423    ----------------------------------------------------------------------------------
16424    -- 4219869 Business Flow
16425    -- Update journal entry status -- Need to generate this within IF <condition>
16426    ----------------------------------------------------------------------------------
16427    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16428          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16429          ,p_balance_type_code => l_balance_type_code
16430          );
16431 
16432    -------------------------------------------------------------------------------------------
16433    -- 4262811 - Generate the Accrual Reversal lines
16434    -------------------------------------------------------------------------------------------
16435    BEGIN
16436       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16437                               (g_array_event(p_event_id).array_value_num('header_index'));
16438       IF l_acc_rev_flag IS NULL THEN
16439          l_acc_rev_flag := 'N';
16440       END IF;
16441    EXCEPTION
16442       WHEN OTHERS THEN
16443          l_acc_rev_flag := 'N';
16444    END;
16445    --
16446    IF (l_acc_rev_flag = 'Y') THEN
16447 
16448        -- 4645092  ------------------------------------------------------------------------------
16449        -- To allow MPA report to determine if it should generate report process
16450        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
16451        ------------------------------------------------------------------------------------------
16452 
16453        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
16454        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
16455    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
16456    -- call ADRs
16457    -- Bug 4922099
16458    --
16459    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16460         (NVL(l_actual_upg_option, 'N') = 'O') OR
16461         (NVL(l_enc_upg_option, 'N') = 'O')
16462       )
16463    THEN
16464    NULL;
16465    --
16466    --
16467    
16468   l_ccid := AcctDerRule_6(
16469            p_application_id           => p_application_id
16470          , p_ae_header_id             => l_ae_header_id 
16471 , p_source_1 => p_source_1
16472 , p_source_2 => p_source_2
16473          , x_transaction_coa_id       => l_adr_transaction_coa_id
16474          , x_accounting_coa_id        => l_adr_accounting_coa_id
16475          , x_value_type_code          => l_adr_value_type_code
16476          , p_side                     => 'NA'
16477    );
16481   , p_value_type_code              => l_adr_value_type_code
16478 
16479    xla_ae_lines_pkg.set_ccid(
16480     p_code_combination_id          => l_ccid
16482   , p_transaction_coa_id           => l_adr_transaction_coa_id
16483   , p_accounting_coa_id            => l_adr_accounting_coa_id
16484   , p_adr_code                     => 'CAD'
16485   , p_adr_type_code                => 'S'
16486   , p_component_type               => l_component_type
16487   , p_component_code               => l_component_code
16488   , p_component_type_code          => l_component_type_code
16489   , p_component_appl_id            => l_component_appl_id
16490   , p_amb_context_code             => l_amb_context_code
16491   , p_side                         => 'NA'
16492   );
16493 
16494 
16495    --
16496    --
16497    END IF;
16498 
16499        --
16500        -- Update the line information that should be overwritten
16501        --
16502        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
16503                                          p_header_num   => 1);
16504        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
16505 
16506        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
16507 
16508        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
16509           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
16510        END IF;
16511 
16512       --
16513       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
16514       --
16515       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
16516           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
16517       ELSE
16518           ---------------------------------------------------------------------------------------------------
16519           -- 4262811a Switch Sign
16520           ---------------------------------------------------------------------------------------------------
16521           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
16522           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16523                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16524           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16525                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16526           -- 5132302
16527           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
16528                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16529 
16530       END IF;
16531 
16532       -- 4955764
16533       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16534       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
16535 
16536 
16537       XLA_AE_LINES_PKG.ValidateCurrentLine;
16538       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16539 
16540       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16541                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
16542                ,p_balance_type_code => l_balance_type_code);
16543 
16544    END IF;
16545 
16546    -----------------------------------------------------------------------------------------
16547    -- 4262811 Multiperiod Accounting
16548    -----------------------------------------------------------------------------------------
16549      -- No MPA option is assigned.
16550 
16551 
16552 END IF;
16553 END IF;
16554 --
16555 
16556 --
16557 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16558    trace
16559       (p_msg      => 'END of AcctLineType_62'
16560       ,p_level    => C_LEVEL_PROCEDURE
16561       ,p_module   => l_log_module);
16562 END IF;
16563 --
16564 EXCEPTION
16565   WHEN xla_exceptions_pkg.application_exception THEN
16566       RAISE;
16567   WHEN OTHERS THEN
16568        xla_exceptions_pkg.raise_message
16569            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_62');
16570 END AcctLineType_62;
16571 --
16572 
16573 ---------------------------------------
16574 --
16575 -- PRIVATE FUNCTION
16576 --         AcctLineType_63
16577 --
16578 ---------------------------------------
16579 PROCEDURE AcctLineType_63 (
16580   p_application_id        IN NUMBER
16581  ,p_event_id              IN NUMBER
16582  ,p_calculate_acctd_flag  IN VARCHAR2
16583  ,p_calculate_g_l_flag    IN VARCHAR2
16584  ,p_actual_flag           IN OUT VARCHAR2
16585  ,p_balance_type_code     OUT VARCHAR2
16586  ,p_gain_or_loss_ref      OUT VARCHAR2
16587  
16588 --Transaction Account
16589  , p_source_1            IN NUMBER
16590 --Journal Line Type
16591  , p_source_2            IN VARCHAR2
16592 --Entered Amount
16593  , p_source_3            IN NUMBER
16594 --First Distribution Identifier
16595  , p_source_5            IN NUMBER
16596 --Distribution Type
16597  , p_source_6            IN VARCHAR2
16598 --Currency Code
16599  , p_source_7            IN VARCHAR2
16600 --Currency Conversion Date
16601  , p_source_8            IN DATE
16602 --Currency Conversion Rate
16603  , p_source_9            IN NUMBER
16607  , p_source_11            IN NUMBER
16604 --Currency Conversion Type
16605  , p_source_10            IN VARCHAR2
16606 --Accounted Amount
16608 )
16609 IS
16610 
16611 l_component_type              VARCHAR2(80);
16612 l_component_code              VARCHAR2(30);
16613 l_component_type_code         VARCHAR2(1);
16614 l_component_appl_id           INTEGER;
16615 l_amb_context_code            VARCHAR2(30);
16616 l_entity_code                 VARCHAR2(30);
16617 l_event_class_code            VARCHAR2(30);
16618 l_ae_header_id                NUMBER;
16619 l_event_type_code             VARCHAR2(30);
16620 l_line_definition_code        VARCHAR2(30);
16621 l_line_definition_owner_code  VARCHAR2(1);
16622 --
16623 -- adr variables
16624 l_segment                     VARCHAR2(30);
16625 l_ccid                        NUMBER;
16626 l_adr_transaction_coa_id      NUMBER;
16627 l_adr_accounting_coa_id       NUMBER;
16628 l_adr_flexfield_segment_code  VARCHAR2(30);
16629 l_adr_flex_value_set_id       NUMBER;
16630 l_adr_value_type_code         VARCHAR2(30);
16631 l_adr_value_combination_id    NUMBER;
16632 l_adr_value_segment_code      VARCHAR2(30);
16633 
16634 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
16635 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
16636 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
16637 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
16638 
16639 -- 4262811 Variables ------------------------------------------------------------------------------------------
16640 l_entered_amt_idx             NUMBER;
16641 l_accted_amt_idx              NUMBER;
16642 l_acc_rev_flag                VARCHAR2(1);
16643 l_accrual_line_num            NUMBER;
16644 l_tmp_amt                     NUMBER;
16645 l_acc_rev_natural_side_code   VARCHAR2(1);
16646 
16647 l_num_entries                 NUMBER;
16648 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
16649 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
16650 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
16651 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
16652 l_recog_line_1                NUMBER;
16653 l_recog_line_2                NUMBER;
16654 
16655 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
16656 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
16657 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
16658 
16659 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16660 
16661 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
16662 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
16663 
16664 ---------------------------------------------------------------------------------------------------------------
16665 
16666 
16667 --
16668 -- bulk performance
16669 --
16670 l_balance_type_code           VARCHAR2(1);
16671 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
16672 l_log_module                  VARCHAR2(240);
16673 
16674 --
16675 -- Upgrade strategy
16676 --
16677 l_actual_upg_option           VARCHAR2(1);
16678 l_enc_upg_option           VARCHAR2(1);
16679 
16680 --
16681 BEGIN
16682 --
16683 IF g_log_enabled THEN
16684       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_63';
16685 END IF;
16686 --
16687 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16688 
16689       trace
16690          (p_msg      => 'BEGIN of AcctLineType_63'
16691          ,p_level    => C_LEVEL_PROCEDURE
16692          ,p_module   => l_log_module);
16693 
16694 END IF;
16695 --
16696 l_component_type             := 'AMB_JLT';
16697 l_component_code             := 'CLEARING';
16698 l_component_type_code        := 'S';
16699 l_component_appl_id          :=  555;
16700 l_amb_context_code           := 'DEFAULT';
16701 l_entity_code                := 'PURCHASING';
16702 l_event_class_code           := 'DELIVER';
16703 l_event_type_code            := 'LOG_PO_RECEIPT';
16704 l_line_definition_owner_code := 'S';
16705 l_line_definition_code       := 'LOGICAL_PO_RECEIPT';
16706 --
16707 l_balance_type_code          := 'A';
16708 l_segment                     := NULL;
16709 l_ccid                        := NULL;
16710 l_adr_transaction_coa_id      := NULL;
16711 l_adr_accounting_coa_id       := NULL;
16712 l_adr_flexfield_segment_code  := NULL;
16713 l_adr_flex_value_set_id       := NULL;
16714 l_adr_value_type_code         := NULL;
16715 l_adr_value_combination_id    := NULL;
16716 l_adr_value_segment_code      := NULL;
16717 
16718 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
16719 l_bflow_class_code           := '';    -- 4219869 Business Flow
16720 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
16721 l_budgetary_control_flag     := 'N';
16722 
16723 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
16724 l_bflow_applied_to_amt       := NULL; -- 5132302
16725 l_entered_amt_idx            := NULL;          -- 4262811
16726 l_accted_amt_idx             := NULL;          -- 4262811
16727 l_acc_rev_flag               := NULL;          -- 4262811
16728 l_accrual_line_num           := NULL;          -- 4262811
16729 l_tmp_amt                    := NULL;          -- 4262811
16733     l_balance_type_code <> 'B' THEN
16730 --
16731  
16732 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16734 IF NVL(p_source_2,'
16735 ') =  'CLR'
16736  THEN 
16737 
16738    --
16739    XLA_AE_LINES_PKG.SetNewLine;
16740 
16741    p_balance_type_code          := l_balance_type_code;
16742    -- set the flag so later we will know whether the gain loss line needs to be created
16743    
16744    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16745      p_actual_flag :='A';
16746    END IF;
16747 
16748    --
16749    -- bulk performance
16750    --
16751    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16752                                       p_header_num   => 0); -- 4262811
16753    --
16754    -- set accounting line options
16755    --
16756    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16757            p_natural_side_code          => 'D'
16758          , p_gain_or_loss_flag          => 'N'
16759          , p_gl_transfer_mode_code      => 'D'
16760          , p_acct_entry_type_code       => 'A'
16761          , p_switch_side_flag           => 'Y'
16762          , p_merge_duplicate_code       => 'W'
16763          );
16764    --
16765    l_acc_rev_natural_side_code := 'C';  -- 4262811
16766    -- 
16767    --
16768    -- set accounting line type info
16769    --
16770    xla_ae_lines_pkg.SetAcctLineType
16771       (p_component_type             => l_component_type
16772       ,p_event_type_code            => l_event_type_code
16773       ,p_line_definition_owner_code => l_line_definition_owner_code
16774       ,p_line_definition_code       => l_line_definition_code
16775       ,p_accounting_line_code       => l_component_code
16776       ,p_accounting_line_type_code  => l_component_type_code
16777       ,p_accounting_line_appl_id    => l_component_appl_id
16778       ,p_amb_context_code           => l_amb_context_code
16779       ,p_entity_code                => l_entity_code
16780       ,p_event_class_code           => l_event_class_code);
16781    --
16782    -- set accounting class
16783    --
16784    xla_ae_lines_pkg.SetAcctClass(
16785            p_accounting_class_code  => 'CLEARING'
16786          , p_ae_header_id           => l_ae_header_id
16787          );
16788 
16789    --
16790    -- set rounding class
16791    --
16792    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16793                       'CLEARING';
16794 
16795    --
16796    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16797    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16798    --
16799    -- bulk performance
16800    --
16801    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16802 
16803    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16804       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16805 
16806    -- 4955764
16807    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16808       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16809 
16810    -- 4458381 Public Sector Enh
16811    
16812    --
16813    -- set accounting attributes for the line type
16814    --
16815    l_entered_amt_idx := 3;
16816    l_accted_amt_idx  := 8;
16817    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
16818    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
16819    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
16820    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
16821    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
16822    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
16823    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
16824    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
16825    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
16826    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
16827    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
16828    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
16829    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
16830    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
16831    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
16832    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
16833    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
16834 
16835    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16836    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16837 
16838    ---------------------------------------------------------------------------------------------------------------
16839    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16840    ---------------------------------------------------------------------------------------------------------------
16841    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16842 
16843    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16847          (p_source_code         => 'LEDGER_CATEGORY_CODE'
16844    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16845 
16846    IF xla_accounting_cache_pkg.GetValueChar
16848          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16849    AND l_bflow_method_code = 'PRIOR_ENTRY'
16850 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16851    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16852          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16853        )
16854    THEN
16855          xla_ae_lines_pkg.BflowUpgEntry
16856            (p_business_method_code    => l_bflow_method_code
16857            ,p_business_class_code     => l_bflow_class_code
16858            ,p_balance_type            => l_balance_type_code);
16859    ELSE
16860       NULL;
16861 -- No business flow processing for business flow method of NONE.
16862    END IF;
16863 
16864    --
16865    -- call analytical criteria
16866    --
16867    
16868    --
16869    -- call description
16870    --
16871    -- No description or it is inherited.
16872    --
16873    -- call ADRs
16874    -- Bug 4922099
16875    --
16876    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16877         (NVL(l_actual_upg_option, 'N') = 'O') OR
16878         (NVL(l_enc_upg_option, 'N') = 'O')
16879       )
16880    THEN
16881    NULL;
16882    --
16883    --
16884    
16885   l_ccid := AcctDerRule_7(
16886            p_application_id           => p_application_id
16887          , p_ae_header_id             => l_ae_header_id 
16888 , p_source_1 => p_source_1
16889 , p_source_2 => p_source_2
16890          , x_transaction_coa_id       => l_adr_transaction_coa_id
16891          , x_accounting_coa_id        => l_adr_accounting_coa_id
16892          , x_value_type_code          => l_adr_value_type_code
16893          , p_side                     => 'NA'
16894    );
16895 
16896    xla_ae_lines_pkg.set_ccid(
16897     p_code_combination_id          => l_ccid
16898   , p_value_type_code              => l_adr_value_type_code
16899   , p_transaction_coa_id           => l_adr_transaction_coa_id
16900   , p_accounting_coa_id            => l_adr_accounting_coa_id
16901   , p_adr_code                     => 'CLEARING'
16902   , p_adr_type_code                => 'S'
16903   , p_component_type               => l_component_type
16904   , p_component_code               => l_component_code
16905   , p_component_type_code          => l_component_type_code
16906   , p_component_appl_id            => l_component_appl_id
16907   , p_amb_context_code             => l_amb_context_code
16908   , p_side                         => 'NA'
16909   );
16910 
16911 
16912    --
16913    --
16914    END IF;
16915    --
16916    -- Bug 4922099
16917    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16918           (NVL(l_enc_upg_option, 'N') = 'O')
16919         ) AND
16920         (l_bflow_method_code = 'PRIOR_ENTRY')
16921       )
16922    THEN
16923       IF
16924       --
16925       1 = 2
16926       --
16927       THEN
16928       xla_accounting_err_pkg.build_message
16929                                     (p_appli_s_name            => 'XLA'
16930                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16931                                     ,p_token_1                 => 'LINE_NUMBER'
16932                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
16933                                     ,p_token_2                 => 'LINE_TYPE_NAME'
16934                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
16935                                                                              l_component_type
16936                                                                             ,l_component_code
16937                                                                             ,l_component_type_code
16938                                                                             ,l_component_appl_id
16939                                                                             ,l_amb_context_code
16940                                                                             ,l_entity_code
16941                                                                             ,l_event_class_code
16942                                                                            )
16943                                     ,p_token_3                 => 'OWNER'
16944                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
16945                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
16946                                                                           ,p_lookup_code    => l_component_type_code
16947                                                                          )
16948                                     ,p_token_4                 => 'PRODUCT_NAME'
16949                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16950                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16951                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16955 
16952                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16953                                     ,p_ae_header_id            =>  NULL
16954                                        );
16956         IF (C_LEVEL_ERROR>= g_log_level) THEN
16957                  trace
16958                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16959                       ,p_level    => C_LEVEL_ERROR
16960                       ,p_module   => l_log_module);
16961         END IF;
16962       END IF;
16963    END IF;
16964    --
16965    --
16966    ------------------------------------------------------------------------------------------------
16967    -- 4219869 Business Flow
16968    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16969    -- Prior Entry.  Currently, the following code is always generated.
16970    ------------------------------------------------------------------------------------------------
16971    XLA_AE_LINES_PKG.ValidateCurrentLine;
16972 
16973    ------------------------------------------------------------------------------------
16974    -- 4219869 Business Flow
16975    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16976    ------------------------------------------------------------------------------------
16977    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16978 
16979    ----------------------------------------------------------------------------------
16980    -- 4219869 Business Flow
16981    -- Update journal entry status -- Need to generate this within IF <condition>
16982    ----------------------------------------------------------------------------------
16983    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16984          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16985          ,p_balance_type_code => l_balance_type_code
16986          );
16987 
16988    -------------------------------------------------------------------------------------------
16989    -- 4262811 - Generate the Accrual Reversal lines
16990    -------------------------------------------------------------------------------------------
16991    BEGIN
16992       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16993                               (g_array_event(p_event_id).array_value_num('header_index'));
16994       IF l_acc_rev_flag IS NULL THEN
16995          l_acc_rev_flag := 'N';
16996       END IF;
16997    EXCEPTION
16998       WHEN OTHERS THEN
16999          l_acc_rev_flag := 'N';
17000    END;
17001    --
17002    IF (l_acc_rev_flag = 'Y') THEN
17003 
17004        -- 4645092  ------------------------------------------------------------------------------
17005        -- To allow MPA report to determine if it should generate report process
17006        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17007        ------------------------------------------------------------------------------------------
17008 
17009        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17010        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17011    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
17012    -- call ADRs
17013    -- Bug 4922099
17014    --
17015    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17016         (NVL(l_actual_upg_option, 'N') = 'O') OR
17017         (NVL(l_enc_upg_option, 'N') = 'O')
17018       )
17019    THEN
17020    NULL;
17021    --
17022    --
17023    
17024   l_ccid := AcctDerRule_7(
17025            p_application_id           => p_application_id
17026          , p_ae_header_id             => l_ae_header_id 
17027 , p_source_1 => p_source_1
17028 , p_source_2 => p_source_2
17029          , x_transaction_coa_id       => l_adr_transaction_coa_id
17030          , x_accounting_coa_id        => l_adr_accounting_coa_id
17031          , x_value_type_code          => l_adr_value_type_code
17032          , p_side                     => 'NA'
17033    );
17034 
17035    xla_ae_lines_pkg.set_ccid(
17036     p_code_combination_id          => l_ccid
17037   , p_value_type_code              => l_adr_value_type_code
17038   , p_transaction_coa_id           => l_adr_transaction_coa_id
17039   , p_accounting_coa_id            => l_adr_accounting_coa_id
17040   , p_adr_code                     => 'CLEARING'
17041   , p_adr_type_code                => 'S'
17042   , p_component_type               => l_component_type
17043   , p_component_code               => l_component_code
17044   , p_component_type_code          => l_component_type_code
17045   , p_component_appl_id            => l_component_appl_id
17046   , p_amb_context_code             => l_amb_context_code
17047   , p_side                         => 'NA'
17048   );
17049 
17050 
17051    --
17052    --
17053    END IF;
17054 
17055        --
17056        -- Update the line information that should be overwritten
17057        --
17058        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17059                                          p_header_num   => 1);
17060        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17061 
17062        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17063 
17064        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17068       --
17065           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17066        END IF;
17067 
17069       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17070       --
17071       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17072           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17073       ELSE
17074           ---------------------------------------------------------------------------------------------------
17075           -- 4262811a Switch Sign
17076           ---------------------------------------------------------------------------------------------------
17077           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
17078           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17079                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17080           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17081                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17082           -- 5132302
17083           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17084                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17085 
17086       END IF;
17087 
17088       -- 4955764
17089       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17090       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17091 
17092 
17093       XLA_AE_LINES_PKG.ValidateCurrentLine;
17094       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17095 
17096       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17097                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17098                ,p_balance_type_code => l_balance_type_code);
17099 
17100    END IF;
17101 
17102    -----------------------------------------------------------------------------------------
17103    -- 4262811 Multiperiod Accounting
17104    -----------------------------------------------------------------------------------------
17105      -- No MPA option is assigned.
17106 
17107 
17108 END IF;
17109 END IF;
17110 --
17111 
17112 --
17113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17114    trace
17115       (p_msg      => 'END of AcctLineType_63'
17116       ,p_level    => C_LEVEL_PROCEDURE
17117       ,p_module   => l_log_module);
17118 END IF;
17119 --
17120 EXCEPTION
17121   WHEN xla_exceptions_pkg.application_exception THEN
17122       RAISE;
17123   WHEN OTHERS THEN
17124        xla_exceptions_pkg.raise_message
17125            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_63');
17126 END AcctLineType_63;
17127 --
17128 
17129 ---------------------------------------
17130 --
17131 -- PRIVATE FUNCTION
17132 --         AcctLineType_64
17133 --
17134 ---------------------------------------
17135 PROCEDURE AcctLineType_64 (
17136   p_application_id        IN NUMBER
17137  ,p_event_id              IN NUMBER
17138  ,p_calculate_acctd_flag  IN VARCHAR2
17139  ,p_calculate_g_l_flag    IN VARCHAR2
17140  ,p_actual_flag           IN OUT VARCHAR2
17141  ,p_balance_type_code     OUT VARCHAR2
17142  ,p_gain_or_loss_ref      OUT VARCHAR2
17143  
17144 --Transaction Account
17145  , p_source_1            IN NUMBER
17146 --Journal Line Type
17147  , p_source_2            IN VARCHAR2
17148 --Entered Amount
17149  , p_source_3            IN NUMBER
17150 --First Distribution Identifier
17151  , p_source_5            IN NUMBER
17152 --Distribution Type
17153  , p_source_6            IN VARCHAR2
17154 --Currency Code
17155  , p_source_7            IN VARCHAR2
17156 --Currency Conversion Date
17157  , p_source_8            IN DATE
17158 --Currency Conversion Rate
17159  , p_source_9            IN NUMBER
17160 --Currency Conversion Type
17161  , p_source_10            IN VARCHAR2
17162 --Accounted Amount
17163  , p_source_11            IN NUMBER
17164 )
17165 IS
17166 
17167 l_component_type              VARCHAR2(80);
17168 l_component_code              VARCHAR2(30);
17169 l_component_type_code         VARCHAR2(1);
17170 l_component_appl_id           INTEGER;
17171 l_amb_context_code            VARCHAR2(30);
17172 l_entity_code                 VARCHAR2(30);
17173 l_event_class_code            VARCHAR2(30);
17174 l_ae_header_id                NUMBER;
17175 l_event_type_code             VARCHAR2(30);
17176 l_line_definition_code        VARCHAR2(30);
17177 l_line_definition_owner_code  VARCHAR2(1);
17178 --
17179 -- adr variables
17180 l_segment                     VARCHAR2(30);
17181 l_ccid                        NUMBER;
17182 l_adr_transaction_coa_id      NUMBER;
17183 l_adr_accounting_coa_id       NUMBER;
17184 l_adr_flexfield_segment_code  VARCHAR2(30);
17185 l_adr_flex_value_set_id       NUMBER;
17186 l_adr_value_type_code         VARCHAR2(30);
17187 l_adr_value_combination_id    NUMBER;
17188 l_adr_value_segment_code      VARCHAR2(30);
17189 
17190 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
17194 
17191 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
17192 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
17193 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
17195 -- 4262811 Variables ------------------------------------------------------------------------------------------
17196 l_entered_amt_idx             NUMBER;
17197 l_accted_amt_idx              NUMBER;
17198 l_acc_rev_flag                VARCHAR2(1);
17199 l_accrual_line_num            NUMBER;
17200 l_tmp_amt                     NUMBER;
17201 l_acc_rev_natural_side_code   VARCHAR2(1);
17202 
17203 l_num_entries                 NUMBER;
17204 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
17205 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
17206 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
17207 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
17208 l_recog_line_1                NUMBER;
17209 l_recog_line_2                NUMBER;
17210 
17211 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
17212 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
17213 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
17214 
17215 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17216 
17217 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
17218 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
17219 
17220 ---------------------------------------------------------------------------------------------------------------
17221 
17222 
17223 --
17224 -- bulk performance
17225 --
17226 l_balance_type_code           VARCHAR2(1);
17227 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
17228 l_log_module                  VARCHAR2(240);
17229 
17230 --
17231 -- Upgrade strategy
17232 --
17233 l_actual_upg_option           VARCHAR2(1);
17234 l_enc_upg_option           VARCHAR2(1);
17235 
17236 --
17237 BEGIN
17238 --
17239 IF g_log_enabled THEN
17240       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_64';
17241 END IF;
17242 --
17243 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17244 
17245       trace
17246          (p_msg      => 'BEGIN of AcctLineType_64'
17247          ,p_level    => C_LEVEL_PROCEDURE
17248          ,p_module   => l_log_module);
17249 
17250 END IF;
17251 --
17252 l_component_type             := 'AMB_JLT';
17253 l_component_code             := 'CLEARING';
17254 l_component_type_code        := 'S';
17255 l_component_appl_id          :=  555;
17256 l_amb_context_code           := 'DEFAULT';
17257 l_entity_code                := 'PURCHASING';
17258 l_event_class_code           := 'RECEIVE';
17259 l_event_type_code            := 'LOG_RECEIVE';
17260 l_line_definition_owner_code := 'S';
17261 l_line_definition_code       := 'LOG_RECEIVE';
17262 --
17263 l_balance_type_code          := 'A';
17264 l_segment                     := NULL;
17265 l_ccid                        := NULL;
17266 l_adr_transaction_coa_id      := NULL;
17267 l_adr_accounting_coa_id       := NULL;
17268 l_adr_flexfield_segment_code  := NULL;
17269 l_adr_flex_value_set_id       := NULL;
17270 l_adr_value_type_code         := NULL;
17271 l_adr_value_combination_id    := NULL;
17272 l_adr_value_segment_code      := NULL;
17273 
17274 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
17275 l_bflow_class_code           := '';    -- 4219869 Business Flow
17276 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
17277 l_budgetary_control_flag     := 'N';
17278 
17279 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
17280 l_bflow_applied_to_amt       := NULL; -- 5132302
17281 l_entered_amt_idx            := NULL;          -- 4262811
17282 l_accted_amt_idx             := NULL;          -- 4262811
17283 l_acc_rev_flag               := NULL;          -- 4262811
17284 l_accrual_line_num           := NULL;          -- 4262811
17285 l_tmp_amt                    := NULL;          -- 4262811
17286 --
17287  
17288 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17289     l_balance_type_code <> 'B' THEN
17290 IF NVL(p_source_2,'
17291 ') =  'CLR'
17292  THEN 
17293 
17294    --
17295    XLA_AE_LINES_PKG.SetNewLine;
17296 
17297    p_balance_type_code          := l_balance_type_code;
17298    -- set the flag so later we will know whether the gain loss line needs to be created
17299    
17300    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17301      p_actual_flag :='A';
17302    END IF;
17303 
17304    --
17305    -- bulk performance
17306    --
17307    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17308                                       p_header_num   => 0); -- 4262811
17309    --
17310    -- set accounting line options
17311    --
17312    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17313            p_natural_side_code          => 'D'
17314          , p_gain_or_loss_flag          => 'N'
17315          , p_gl_transfer_mode_code      => 'D'
17316          , p_acct_entry_type_code       => 'A'
17317          , p_switch_side_flag           => 'Y'
17318          , p_merge_duplicate_code       => 'W'
17319          );
17320    --
17324    -- set accounting line type info
17321    l_acc_rev_natural_side_code := 'C';  -- 4262811
17322    -- 
17323    --
17325    --
17326    xla_ae_lines_pkg.SetAcctLineType
17327       (p_component_type             => l_component_type
17328       ,p_event_type_code            => l_event_type_code
17329       ,p_line_definition_owner_code => l_line_definition_owner_code
17330       ,p_line_definition_code       => l_line_definition_code
17331       ,p_accounting_line_code       => l_component_code
17332       ,p_accounting_line_type_code  => l_component_type_code
17333       ,p_accounting_line_appl_id    => l_component_appl_id
17334       ,p_amb_context_code           => l_amb_context_code
17335       ,p_entity_code                => l_entity_code
17336       ,p_event_class_code           => l_event_class_code);
17337    --
17338    -- set accounting class
17339    --
17340    xla_ae_lines_pkg.SetAcctClass(
17341            p_accounting_class_code  => 'CLEARING'
17342          , p_ae_header_id           => l_ae_header_id
17343          );
17344 
17345    --
17346    -- set rounding class
17347    --
17348    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17349                       'CLEARING';
17350 
17351    --
17352    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17353    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17354    --
17355    -- bulk performance
17356    --
17357    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17358 
17359    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17360       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17361 
17362    -- 4955764
17363    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17364       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17365 
17366    -- 4458381 Public Sector Enh
17367    
17368    --
17369    -- set accounting attributes for the line type
17370    --
17371    l_entered_amt_idx := 3;
17372    l_accted_amt_idx  := 8;
17373    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17374    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
17375    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
17376    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
17377    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
17378    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
17379    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
17380    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
17381    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
17382    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
17383    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
17384    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
17385    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
17386    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
17387    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
17388    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
17389    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
17390 
17391    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17392    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17393 
17394    ---------------------------------------------------------------------------------------------------------------
17395    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17396    ---------------------------------------------------------------------------------------------------------------
17397    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17398 
17399    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17400    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17401 
17402    IF xla_accounting_cache_pkg.GetValueChar
17403          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17404          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17405    AND l_bflow_method_code = 'PRIOR_ENTRY'
17406 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17407    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17408          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17409        )
17410    THEN
17411          xla_ae_lines_pkg.BflowUpgEntry
17412            (p_business_method_code    => l_bflow_method_code
17413            ,p_business_class_code     => l_bflow_class_code
17414            ,p_balance_type            => l_balance_type_code);
17415    ELSE
17416       NULL;
17417 -- No business flow processing for business flow method of NONE.
17418    END IF;
17419 
17420    --
17421    -- call analytical criteria
17422    --
17423    
17424    --
17425    -- call description
17426    --
17427    -- No description or it is inherited.
17428    --
17429    -- call ADRs
17430    -- Bug 4922099
17431    --
17432    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17436    THEN
17433         (NVL(l_actual_upg_option, 'N') = 'O') OR
17434         (NVL(l_enc_upg_option, 'N') = 'O')
17435       )
17437    NULL;
17438    --
17439    --
17440    
17441   l_ccid := AcctDerRule_7(
17442            p_application_id           => p_application_id
17443          , p_ae_header_id             => l_ae_header_id 
17444 , p_source_1 => p_source_1
17445 , p_source_2 => p_source_2
17446          , x_transaction_coa_id       => l_adr_transaction_coa_id
17447          , x_accounting_coa_id        => l_adr_accounting_coa_id
17448          , x_value_type_code          => l_adr_value_type_code
17449          , p_side                     => 'NA'
17450    );
17451 
17452    xla_ae_lines_pkg.set_ccid(
17453     p_code_combination_id          => l_ccid
17454   , p_value_type_code              => l_adr_value_type_code
17455   , p_transaction_coa_id           => l_adr_transaction_coa_id
17456   , p_accounting_coa_id            => l_adr_accounting_coa_id
17457   , p_adr_code                     => 'CLEARING'
17458   , p_adr_type_code                => 'S'
17459   , p_component_type               => l_component_type
17460   , p_component_code               => l_component_code
17461   , p_component_type_code          => l_component_type_code
17462   , p_component_appl_id            => l_component_appl_id
17463   , p_amb_context_code             => l_amb_context_code
17464   , p_side                         => 'NA'
17465   );
17466 
17467 
17468    --
17469    --
17470    END IF;
17471    --
17472    -- Bug 4922099
17473    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17474           (NVL(l_enc_upg_option, 'N') = 'O')
17475         ) AND
17476         (l_bflow_method_code = 'PRIOR_ENTRY')
17477       )
17478    THEN
17479       IF
17480       --
17481       1 = 2
17482       --
17483       THEN
17484       xla_accounting_err_pkg.build_message
17485                                     (p_appli_s_name            => 'XLA'
17486                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17487                                     ,p_token_1                 => 'LINE_NUMBER'
17488                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
17489                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17490                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17491                                                                              l_component_type
17492                                                                             ,l_component_code
17493                                                                             ,l_component_type_code
17494                                                                             ,l_component_appl_id
17495                                                                             ,l_amb_context_code
17496                                                                             ,l_entity_code
17497                                                                             ,l_event_class_code
17498                                                                            )
17499                                     ,p_token_3                 => 'OWNER'
17500                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
17501                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
17502                                                                           ,p_lookup_code    => l_component_type_code
17503                                                                          )
17504                                     ,p_token_4                 => 'PRODUCT_NAME'
17505                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17506                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17507                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17508                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17509                                     ,p_ae_header_id            =>  NULL
17510                                        );
17511 
17512         IF (C_LEVEL_ERROR>= g_log_level) THEN
17513                  trace
17514                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17515                       ,p_level    => C_LEVEL_ERROR
17516                       ,p_module   => l_log_module);
17517         END IF;
17518       END IF;
17519    END IF;
17520    --
17521    --
17522    ------------------------------------------------------------------------------------------------
17523    -- 4219869 Business Flow
17524    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17525    -- Prior Entry.  Currently, the following code is always generated.
17526    ------------------------------------------------------------------------------------------------
17527    XLA_AE_LINES_PKG.ValidateCurrentLine;
17528 
17529    ------------------------------------------------------------------------------------
17530    -- 4219869 Business Flow
17531    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17532    ------------------------------------------------------------------------------------
17533    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17537    -- Update journal entry status -- Need to generate this within IF <condition>
17534 
17535    ----------------------------------------------------------------------------------
17536    -- 4219869 Business Flow
17538    ----------------------------------------------------------------------------------
17539    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17540          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17541          ,p_balance_type_code => l_balance_type_code
17542          );
17543 
17544    -------------------------------------------------------------------------------------------
17545    -- 4262811 - Generate the Accrual Reversal lines
17546    -------------------------------------------------------------------------------------------
17547    BEGIN
17548       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17549                               (g_array_event(p_event_id).array_value_num('header_index'));
17550       IF l_acc_rev_flag IS NULL THEN
17551          l_acc_rev_flag := 'N';
17552       END IF;
17553    EXCEPTION
17554       WHEN OTHERS THEN
17555          l_acc_rev_flag := 'N';
17556    END;
17557    --
17558    IF (l_acc_rev_flag = 'Y') THEN
17559 
17560        -- 4645092  ------------------------------------------------------------------------------
17561        -- To allow MPA report to determine if it should generate report process
17562        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17563        ------------------------------------------------------------------------------------------
17564 
17565        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17566        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17567    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
17568    -- call ADRs
17569    -- Bug 4922099
17570    --
17571    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17572         (NVL(l_actual_upg_option, 'N') = 'O') OR
17573         (NVL(l_enc_upg_option, 'N') = 'O')
17574       )
17575    THEN
17576    NULL;
17577    --
17578    --
17579    
17580   l_ccid := AcctDerRule_7(
17581            p_application_id           => p_application_id
17582          , p_ae_header_id             => l_ae_header_id 
17583 , p_source_1 => p_source_1
17584 , p_source_2 => p_source_2
17585          , x_transaction_coa_id       => l_adr_transaction_coa_id
17586          , x_accounting_coa_id        => l_adr_accounting_coa_id
17587          , x_value_type_code          => l_adr_value_type_code
17588          , p_side                     => 'NA'
17589    );
17590 
17591    xla_ae_lines_pkg.set_ccid(
17592     p_code_combination_id          => l_ccid
17593   , p_value_type_code              => l_adr_value_type_code
17594   , p_transaction_coa_id           => l_adr_transaction_coa_id
17595   , p_accounting_coa_id            => l_adr_accounting_coa_id
17596   , p_adr_code                     => 'CLEARING'
17597   , p_adr_type_code                => 'S'
17598   , p_component_type               => l_component_type
17599   , p_component_code               => l_component_code
17600   , p_component_type_code          => l_component_type_code
17601   , p_component_appl_id            => l_component_appl_id
17602   , p_amb_context_code             => l_amb_context_code
17603   , p_side                         => 'NA'
17604   );
17605 
17606 
17607    --
17608    --
17609    END IF;
17610 
17611        --
17612        -- Update the line information that should be overwritten
17613        --
17614        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17615                                          p_header_num   => 1);
17616        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17617 
17618        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17619 
17620        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17621           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17622        END IF;
17623 
17624       --
17625       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17626       --
17627       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17628           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17629       ELSE
17630           ---------------------------------------------------------------------------------------------------
17631           -- 4262811a Switch Sign
17632           ---------------------------------------------------------------------------------------------------
17633           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
17634           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17635                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17636           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17637                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17638           -- 5132302
17639           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17640                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17641 
17642       END IF;
17643 
17647 
17644       -- 4955764
17645       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17646       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17648 
17649       XLA_AE_LINES_PKG.ValidateCurrentLine;
17650       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17651 
17652       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17653                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17654                ,p_balance_type_code => l_balance_type_code);
17655 
17656    END IF;
17657 
17658    -----------------------------------------------------------------------------------------
17659    -- 4262811 Multiperiod Accounting
17660    -----------------------------------------------------------------------------------------
17661      -- No MPA option is assigned.
17662 
17663 
17664 END IF;
17665 END IF;
17666 --
17667 
17668 --
17669 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17670    trace
17671       (p_msg      => 'END of AcctLineType_64'
17672       ,p_level    => C_LEVEL_PROCEDURE
17673       ,p_module   => l_log_module);
17674 END IF;
17675 --
17676 EXCEPTION
17677   WHEN xla_exceptions_pkg.application_exception THEN
17678       RAISE;
17679   WHEN OTHERS THEN
17680        xla_exceptions_pkg.raise_message
17681            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_64');
17682 END AcctLineType_64;
17683 --
17684 
17685 ---------------------------------------
17686 --
17687 -- PRIVATE FUNCTION
17688 --         AcctLineType_65
17689 --
17690 ---------------------------------------
17691 PROCEDURE AcctLineType_65 (
17692   p_application_id        IN NUMBER
17693  ,p_event_id              IN NUMBER
17694  ,p_calculate_acctd_flag  IN VARCHAR2
17695  ,p_calculate_g_l_flag    IN VARCHAR2
17696  ,p_actual_flag           IN OUT VARCHAR2
17697  ,p_balance_type_code     OUT VARCHAR2
17698  ,p_gain_or_loss_ref      OUT VARCHAR2
17699  
17700 --Transaction Account
17701  , p_source_1            IN NUMBER
17702 --Journal Line Type
17703  , p_source_2            IN VARCHAR2
17704 --Entered Amount
17705  , p_source_3            IN NUMBER
17706 --First Distribution Identifier
17707  , p_source_5            IN NUMBER
17708 --Distribution Type
17709  , p_source_6            IN VARCHAR2
17710 --Currency Code
17711  , p_source_7            IN VARCHAR2
17712 --Currency Conversion Date
17713  , p_source_8            IN DATE
17714 --Currency Conversion Rate
17715  , p_source_9            IN NUMBER
17716 --Currency Conversion Type
17717  , p_source_10            IN VARCHAR2
17718 --Accounted Amount
17719  , p_source_11            IN NUMBER
17720 )
17721 IS
17722 
17723 l_component_type              VARCHAR2(80);
17724 l_component_code              VARCHAR2(30);
17725 l_component_type_code         VARCHAR2(1);
17726 l_component_appl_id           INTEGER;
17727 l_amb_context_code            VARCHAR2(30);
17728 l_entity_code                 VARCHAR2(30);
17729 l_event_class_code            VARCHAR2(30);
17730 l_ae_header_id                NUMBER;
17731 l_event_type_code             VARCHAR2(30);
17732 l_line_definition_code        VARCHAR2(30);
17733 l_line_definition_owner_code  VARCHAR2(1);
17734 --
17735 -- adr variables
17736 l_segment                     VARCHAR2(30);
17737 l_ccid                        NUMBER;
17738 l_adr_transaction_coa_id      NUMBER;
17739 l_adr_accounting_coa_id       NUMBER;
17740 l_adr_flexfield_segment_code  VARCHAR2(30);
17741 l_adr_flex_value_set_id       NUMBER;
17742 l_adr_value_type_code         VARCHAR2(30);
17743 l_adr_value_combination_id    NUMBER;
17744 l_adr_value_segment_code      VARCHAR2(30);
17745 
17746 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
17747 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
17748 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
17749 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
17750 
17751 -- 4262811 Variables ------------------------------------------------------------------------------------------
17752 l_entered_amt_idx             NUMBER;
17753 l_accted_amt_idx              NUMBER;
17754 l_acc_rev_flag                VARCHAR2(1);
17755 l_accrual_line_num            NUMBER;
17756 l_tmp_amt                     NUMBER;
17757 l_acc_rev_natural_side_code   VARCHAR2(1);
17758 
17759 l_num_entries                 NUMBER;
17760 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
17761 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
17762 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
17763 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
17764 l_recog_line_1                NUMBER;
17765 l_recog_line_2                NUMBER;
17766 
17767 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
17768 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
17769 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
17770 
17771 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17772 
17773 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
17777 
17774 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
17775 
17776 ---------------------------------------------------------------------------------------------------------------
17778 
17779 --
17780 -- bulk performance
17781 --
17782 l_balance_type_code           VARCHAR2(1);
17783 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
17784 l_log_module                  VARCHAR2(240);
17785 
17786 --
17787 -- Upgrade strategy
17788 --
17789 l_actual_upg_option           VARCHAR2(1);
17790 l_enc_upg_option           VARCHAR2(1);
17791 
17792 --
17793 BEGIN
17794 --
17795 IF g_log_enabled THEN
17796       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_65';
17797 END IF;
17798 --
17799 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17800 
17801       trace
17802          (p_msg      => 'BEGIN of AcctLineType_65'
17803          ,p_level    => C_LEVEL_PROCEDURE
17804          ,p_module   => l_log_module);
17805 
17806 END IF;
17807 --
17808 l_component_type             := 'AMB_JLT';
17809 l_component_code             := 'CLEARING';
17810 l_component_type_code        := 'S';
17811 l_component_appl_id          :=  555;
17812 l_amb_context_code           := 'DEFAULT';
17813 l_entity_code                := 'PURCHASING';
17814 l_event_class_code           := 'RECEIVE';
17815 l_event_type_code            := 'LOG_RET_TO_VENDOR';
17816 l_line_definition_owner_code := 'S';
17817 l_line_definition_code       := 'LOG_RET_TO_VENDOR';
17818 --
17819 l_balance_type_code          := 'A';
17820 l_segment                     := NULL;
17821 l_ccid                        := NULL;
17822 l_adr_transaction_coa_id      := NULL;
17823 l_adr_accounting_coa_id       := NULL;
17824 l_adr_flexfield_segment_code  := NULL;
17825 l_adr_flex_value_set_id       := NULL;
17826 l_adr_value_type_code         := NULL;
17827 l_adr_value_combination_id    := NULL;
17828 l_adr_value_segment_code      := NULL;
17829 
17830 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
17831 l_bflow_class_code           := '';    -- 4219869 Business Flow
17832 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
17833 l_budgetary_control_flag     := 'N';
17834 
17835 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
17836 l_bflow_applied_to_amt       := NULL; -- 5132302
17837 l_entered_amt_idx            := NULL;          -- 4262811
17838 l_accted_amt_idx             := NULL;          -- 4262811
17839 l_acc_rev_flag               := NULL;          -- 4262811
17840 l_accrual_line_num           := NULL;          -- 4262811
17841 l_tmp_amt                    := NULL;          -- 4262811
17842 --
17843  
17844 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17845     l_balance_type_code <> 'B' THEN
17846 IF NVL(p_source_2,'
17847 ') =  'CLR'
17848  THEN 
17849 
17850    --
17851    XLA_AE_LINES_PKG.SetNewLine;
17852 
17853    p_balance_type_code          := l_balance_type_code;
17854    -- set the flag so later we will know whether the gain loss line needs to be created
17855    
17856    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17857      p_actual_flag :='A';
17858    END IF;
17859 
17860    --
17861    -- bulk performance
17862    --
17863    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17864                                       p_header_num   => 0); -- 4262811
17865    --
17866    -- set accounting line options
17867    --
17868    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17869            p_natural_side_code          => 'D'
17870          , p_gain_or_loss_flag          => 'N'
17871          , p_gl_transfer_mode_code      => 'D'
17872          , p_acct_entry_type_code       => 'A'
17873          , p_switch_side_flag           => 'Y'
17874          , p_merge_duplicate_code       => 'W'
17875          );
17876    --
17877    l_acc_rev_natural_side_code := 'C';  -- 4262811
17878    -- 
17879    --
17880    -- set accounting line type info
17881    --
17882    xla_ae_lines_pkg.SetAcctLineType
17883       (p_component_type             => l_component_type
17884       ,p_event_type_code            => l_event_type_code
17885       ,p_line_definition_owner_code => l_line_definition_owner_code
17886       ,p_line_definition_code       => l_line_definition_code
17887       ,p_accounting_line_code       => l_component_code
17888       ,p_accounting_line_type_code  => l_component_type_code
17889       ,p_accounting_line_appl_id    => l_component_appl_id
17890       ,p_amb_context_code           => l_amb_context_code
17891       ,p_entity_code                => l_entity_code
17892       ,p_event_class_code           => l_event_class_code);
17893    --
17894    -- set accounting class
17895    --
17896    xla_ae_lines_pkg.SetAcctClass(
17897            p_accounting_class_code  => 'CLEARING'
17898          , p_ae_header_id           => l_ae_header_id
17899          );
17900 
17901    --
17902    -- set rounding class
17903    --
17904    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17905                       'CLEARING';
17906 
17907    --
17908    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17912    --
17909    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17910    --
17911    -- bulk performance
17913    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17914 
17915    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17916       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17917 
17918    -- 4955764
17919    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17920       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17921 
17922    -- 4458381 Public Sector Enh
17923    
17924    --
17925    -- set accounting attributes for the line type
17926    --
17927    l_entered_amt_idx := 3;
17928    l_accted_amt_idx  := 8;
17929    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17930    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
17931    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
17932    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
17933    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
17934    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
17935    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
17936    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
17937    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
17938    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
17939    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
17940    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
17941    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
17942    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
17943    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
17944    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
17945    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
17946 
17947    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17948    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17949 
17950    ---------------------------------------------------------------------------------------------------------------
17951    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17952    ---------------------------------------------------------------------------------------------------------------
17953    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17954 
17955    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17956    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17957 
17958    IF xla_accounting_cache_pkg.GetValueChar
17959          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17960          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17961    AND l_bflow_method_code = 'PRIOR_ENTRY'
17962 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17963    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17964          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17965        )
17966    THEN
17967          xla_ae_lines_pkg.BflowUpgEntry
17968            (p_business_method_code    => l_bflow_method_code
17969            ,p_business_class_code     => l_bflow_class_code
17970            ,p_balance_type            => l_balance_type_code);
17971    ELSE
17972       NULL;
17973 -- No business flow processing for business flow method of NONE.
17974    END IF;
17975 
17976    --
17977    -- call analytical criteria
17978    --
17979    
17980    --
17981    -- call description
17982    --
17983    -- No description or it is inherited.
17984    --
17985    -- call ADRs
17986    -- Bug 4922099
17987    --
17988    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17989         (NVL(l_actual_upg_option, 'N') = 'O') OR
17990         (NVL(l_enc_upg_option, 'N') = 'O')
17991       )
17992    THEN
17993    NULL;
17994    --
17995    --
17996    
17997   l_ccid := AcctDerRule_7(
17998            p_application_id           => p_application_id
17999          , p_ae_header_id             => l_ae_header_id 
18000 , p_source_1 => p_source_1
18001 , p_source_2 => p_source_2
18002          , x_transaction_coa_id       => l_adr_transaction_coa_id
18003          , x_accounting_coa_id        => l_adr_accounting_coa_id
18004          , x_value_type_code          => l_adr_value_type_code
18005          , p_side                     => 'NA'
18006    );
18007 
18008    xla_ae_lines_pkg.set_ccid(
18009     p_code_combination_id          => l_ccid
18010   , p_value_type_code              => l_adr_value_type_code
18011   , p_transaction_coa_id           => l_adr_transaction_coa_id
18012   , p_accounting_coa_id            => l_adr_accounting_coa_id
18013   , p_adr_code                     => 'CLEARING'
18014   , p_adr_type_code                => 'S'
18015   , p_component_type               => l_component_type
18016   , p_component_code               => l_component_code
18017   , p_component_type_code          => l_component_type_code
18018   , p_component_appl_id            => l_component_appl_id
18019   , p_amb_context_code             => l_amb_context_code
18023 
18020   , p_side                         => 'NA'
18021   );
18022 
18024    --
18025    --
18026    END IF;
18027    --
18028    -- Bug 4922099
18029    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
18030           (NVL(l_enc_upg_option, 'N') = 'O')
18031         ) AND
18032         (l_bflow_method_code = 'PRIOR_ENTRY')
18033       )
18034    THEN
18035       IF
18036       --
18037       1 = 2
18038       --
18039       THEN
18040       xla_accounting_err_pkg.build_message
18041                                     (p_appli_s_name            => 'XLA'
18042                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18043                                     ,p_token_1                 => 'LINE_NUMBER'
18044                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
18045                                     ,p_token_2                 => 'LINE_TYPE_NAME'
18046                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
18047                                                                              l_component_type
18048                                                                             ,l_component_code
18049                                                                             ,l_component_type_code
18050                                                                             ,l_component_appl_id
18051                                                                             ,l_amb_context_code
18052                                                                             ,l_entity_code
18053                                                                             ,l_event_class_code
18054                                                                            )
18055                                     ,p_token_3                 => 'OWNER'
18056                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
18057                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
18058                                                                           ,p_lookup_code    => l_component_type_code
18059                                                                          )
18060                                     ,p_token_4                 => 'PRODUCT_NAME'
18061                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
18062                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
18063                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
18064                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
18065                                     ,p_ae_header_id            =>  NULL
18066                                        );
18067 
18068         IF (C_LEVEL_ERROR>= g_log_level) THEN
18069                  trace
18070                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18071                       ,p_level    => C_LEVEL_ERROR
18072                       ,p_module   => l_log_module);
18073         END IF;
18074       END IF;
18075    END IF;
18076    --
18077    --
18078    ------------------------------------------------------------------------------------------------
18079    -- 4219869 Business Flow
18080    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
18081    -- Prior Entry.  Currently, the following code is always generated.
18082    ------------------------------------------------------------------------------------------------
18083    XLA_AE_LINES_PKG.ValidateCurrentLine;
18084 
18085    ------------------------------------------------------------------------------------
18086    -- 4219869 Business Flow
18087    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
18088    ------------------------------------------------------------------------------------
18089    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18090 
18091    ----------------------------------------------------------------------------------
18092    -- 4219869 Business Flow
18093    -- Update journal entry status -- Need to generate this within IF <condition>
18094    ----------------------------------------------------------------------------------
18095    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18096          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
18097          ,p_balance_type_code => l_balance_type_code
18098          );
18099 
18100    -------------------------------------------------------------------------------------------
18101    -- 4262811 - Generate the Accrual Reversal lines
18102    -------------------------------------------------------------------------------------------
18103    BEGIN
18104       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18105                               (g_array_event(p_event_id).array_value_num('header_index'));
18106       IF l_acc_rev_flag IS NULL THEN
18107          l_acc_rev_flag := 'N';
18108       END IF;
18109    EXCEPTION
18110       WHEN OTHERS THEN
18111          l_acc_rev_flag := 'N';
18112    END;
18113    --
18114    IF (l_acc_rev_flag = 'Y') THEN
18115 
18116        -- 4645092  ------------------------------------------------------------------------------
18117        -- To allow MPA report to determine if it should generate report process
18121        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18118        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18119        ------------------------------------------------------------------------------------------
18120 
18122        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18123    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
18124    -- call ADRs
18125    -- Bug 4922099
18126    --
18127    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18128         (NVL(l_actual_upg_option, 'N') = 'O') OR
18129         (NVL(l_enc_upg_option, 'N') = 'O')
18130       )
18131    THEN
18132    NULL;
18133    --
18134    --
18135    
18136   l_ccid := AcctDerRule_7(
18137            p_application_id           => p_application_id
18138          , p_ae_header_id             => l_ae_header_id 
18139 , p_source_1 => p_source_1
18140 , p_source_2 => p_source_2
18141          , x_transaction_coa_id       => l_adr_transaction_coa_id
18142          , x_accounting_coa_id        => l_adr_accounting_coa_id
18143          , x_value_type_code          => l_adr_value_type_code
18144          , p_side                     => 'NA'
18145    );
18146 
18147    xla_ae_lines_pkg.set_ccid(
18148     p_code_combination_id          => l_ccid
18149   , p_value_type_code              => l_adr_value_type_code
18150   , p_transaction_coa_id           => l_adr_transaction_coa_id
18151   , p_accounting_coa_id            => l_adr_accounting_coa_id
18152   , p_adr_code                     => 'CLEARING'
18153   , p_adr_type_code                => 'S'
18154   , p_component_type               => l_component_type
18155   , p_component_code               => l_component_code
18156   , p_component_type_code          => l_component_type_code
18157   , p_component_appl_id            => l_component_appl_id
18158   , p_amb_context_code             => l_amb_context_code
18159   , p_side                         => 'NA'
18160   );
18161 
18162 
18163    --
18164    --
18165    END IF;
18166 
18167        --
18168        -- Update the line information that should be overwritten
18169        --
18170        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18171                                          p_header_num   => 1);
18172        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
18173 
18174        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18175 
18176        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
18177           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18178        END IF;
18179 
18180       --
18181       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18182       --
18183       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18184           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
18185       ELSE
18186           ---------------------------------------------------------------------------------------------------
18187           -- 4262811a Switch Sign
18188           ---------------------------------------------------------------------------------------------------
18189           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
18190           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18191                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18192           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18193                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18194           -- 5132302
18195           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18196                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18197 
18198       END IF;
18199 
18200       -- 4955764
18201       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18202       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18203 
18204 
18205       XLA_AE_LINES_PKG.ValidateCurrentLine;
18206       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18207 
18208       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18209                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18210                ,p_balance_type_code => l_balance_type_code);
18211 
18212    END IF;
18213 
18214    -----------------------------------------------------------------------------------------
18215    -- 4262811 Multiperiod Accounting
18216    -----------------------------------------------------------------------------------------
18217      -- No MPA option is assigned.
18218 
18219 
18220 END IF;
18221 END IF;
18222 --
18223 
18224 --
18225 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18226    trace
18227       (p_msg      => 'END of AcctLineType_65'
18228       ,p_level    => C_LEVEL_PROCEDURE
18229       ,p_module   => l_log_module);
18230 END IF;
18231 --
18232 EXCEPTION
18236        xla_exceptions_pkg.raise_message
18233   WHEN xla_exceptions_pkg.application_exception THEN
18234       RAISE;
18235   WHEN OTHERS THEN
18237            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_65');
18238 END AcctLineType_65;
18239 --
18240 
18241 ---------------------------------------
18242 --
18243 -- PRIVATE FUNCTION
18244 --         AcctLineType_66
18245 --
18246 ---------------------------------------
18247 PROCEDURE AcctLineType_66 (
18248   p_application_id        IN NUMBER
18249  ,p_event_id              IN NUMBER
18250  ,p_calculate_acctd_flag  IN VARCHAR2
18251  ,p_calculate_g_l_flag    IN VARCHAR2
18252  ,p_actual_flag           IN OUT VARCHAR2
18253  ,p_balance_type_code     OUT VARCHAR2
18254  ,p_gain_or_loss_ref      OUT VARCHAR2
18255  
18256 --Transaction Account
18257  , p_source_1            IN NUMBER
18258 --Journal Line Type
18259  , p_source_2            IN VARCHAR2
18260 --Entered Amount
18261  , p_source_3            IN NUMBER
18262 --First Distribution Identifier
18263  , p_source_5            IN NUMBER
18264 --Distribution Type
18265  , p_source_6            IN VARCHAR2
18266 --Currency Code
18267  , p_source_7            IN VARCHAR2
18268 --Currency Conversion Date
18269  , p_source_8            IN DATE
18270 --Currency Conversion Rate
18271  , p_source_9            IN NUMBER
18272 --Currency Conversion Type
18273  , p_source_10            IN VARCHAR2
18274 --Accounted Amount
18275  , p_source_11            IN NUMBER
18276 )
18277 IS
18278 
18279 l_component_type              VARCHAR2(80);
18280 l_component_code              VARCHAR2(30);
18281 l_component_type_code         VARCHAR2(1);
18282 l_component_appl_id           INTEGER;
18283 l_amb_context_code            VARCHAR2(30);
18284 l_entity_code                 VARCHAR2(30);
18285 l_event_class_code            VARCHAR2(30);
18286 l_ae_header_id                NUMBER;
18287 l_event_type_code             VARCHAR2(30);
18288 l_line_definition_code        VARCHAR2(30);
18289 l_line_definition_owner_code  VARCHAR2(1);
18290 --
18291 -- adr variables
18292 l_segment                     VARCHAR2(30);
18293 l_ccid                        NUMBER;
18294 l_adr_transaction_coa_id      NUMBER;
18295 l_adr_accounting_coa_id       NUMBER;
18296 l_adr_flexfield_segment_code  VARCHAR2(30);
18297 l_adr_flex_value_set_id       NUMBER;
18298 l_adr_value_type_code         VARCHAR2(30);
18299 l_adr_value_combination_id    NUMBER;
18300 l_adr_value_segment_code      VARCHAR2(30);
18301 
18302 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18303 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18304 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18305 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18306 
18307 -- 4262811 Variables ------------------------------------------------------------------------------------------
18308 l_entered_amt_idx             NUMBER;
18309 l_accted_amt_idx              NUMBER;
18310 l_acc_rev_flag                VARCHAR2(1);
18311 l_accrual_line_num            NUMBER;
18312 l_tmp_amt                     NUMBER;
18313 l_acc_rev_natural_side_code   VARCHAR2(1);
18314 
18315 l_num_entries                 NUMBER;
18316 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18317 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18318 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18319 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18320 l_recog_line_1                NUMBER;
18321 l_recog_line_2                NUMBER;
18322 
18323 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18324 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18325 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18326 
18327 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18328 
18329 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18330 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18331 
18332 ---------------------------------------------------------------------------------------------------------------
18333 
18334 
18335 --
18336 -- bulk performance
18337 --
18338 l_balance_type_code           VARCHAR2(1);
18339 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18340 l_log_module                  VARCHAR2(240);
18341 
18342 --
18343 -- Upgrade strategy
18344 --
18345 l_actual_upg_option           VARCHAR2(1);
18346 l_enc_upg_option           VARCHAR2(1);
18347 
18348 --
18349 BEGIN
18350 --
18351 IF g_log_enabled THEN
18352       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_66';
18353 END IF;
18354 --
18355 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18356 
18357       trace
18358          (p_msg      => 'BEGIN of AcctLineType_66'
18359          ,p_level    => C_LEVEL_PROCEDURE
18360          ,p_module   => l_log_module);
18361 
18362 END IF;
18363 --
18364 l_component_type             := 'AMB_JLT';
18365 l_component_code             := 'CLEARING';
18366 l_component_type_code        := 'S';
18367 l_component_appl_id          :=  555;
18368 l_amb_context_code           := 'DEFAULT';
18369 l_entity_code                := 'PURCHASING';
18370 l_event_class_code           := 'DELIVER';
18374 --
18371 l_event_type_code            := 'LOG_RET_TO_RECEIVING';
18372 l_line_definition_owner_code := 'S';
18373 l_line_definition_code       := 'LOG_RET_TO_RECEIVING';
18375 l_balance_type_code          := 'A';
18376 l_segment                     := NULL;
18377 l_ccid                        := NULL;
18378 l_adr_transaction_coa_id      := NULL;
18379 l_adr_accounting_coa_id       := NULL;
18380 l_adr_flexfield_segment_code  := NULL;
18381 l_adr_flex_value_set_id       := NULL;
18382 l_adr_value_type_code         := NULL;
18383 l_adr_value_combination_id    := NULL;
18384 l_adr_value_segment_code      := NULL;
18385 
18386 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18387 l_bflow_class_code           := '';    -- 4219869 Business Flow
18388 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18389 l_budgetary_control_flag     := 'N';
18390 
18391 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18392 l_bflow_applied_to_amt       := NULL; -- 5132302
18393 l_entered_amt_idx            := NULL;          -- 4262811
18394 l_accted_amt_idx             := NULL;          -- 4262811
18395 l_acc_rev_flag               := NULL;          -- 4262811
18396 l_accrual_line_num           := NULL;          -- 4262811
18397 l_tmp_amt                    := NULL;          -- 4262811
18398 --
18399  
18400 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18401     l_balance_type_code <> 'B' THEN
18402 IF NVL(p_source_2,'
18403 ') =  'CLR'
18404  THEN 
18405 
18406    --
18407    XLA_AE_LINES_PKG.SetNewLine;
18408 
18409    p_balance_type_code          := l_balance_type_code;
18410    -- set the flag so later we will know whether the gain loss line needs to be created
18411    
18412    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18413      p_actual_flag :='A';
18414    END IF;
18415 
18416    --
18417    -- bulk performance
18418    --
18419    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18420                                       p_header_num   => 0); -- 4262811
18421    --
18422    -- set accounting line options
18423    --
18424    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18425            p_natural_side_code          => 'D'
18426          , p_gain_or_loss_flag          => 'N'
18427          , p_gl_transfer_mode_code      => 'D'
18428          , p_acct_entry_type_code       => 'A'
18429          , p_switch_side_flag           => 'Y'
18430          , p_merge_duplicate_code       => 'W'
18431          );
18432    --
18433    l_acc_rev_natural_side_code := 'C';  -- 4262811
18434    -- 
18435    --
18436    -- set accounting line type info
18437    --
18438    xla_ae_lines_pkg.SetAcctLineType
18439       (p_component_type             => l_component_type
18440       ,p_event_type_code            => l_event_type_code
18441       ,p_line_definition_owner_code => l_line_definition_owner_code
18442       ,p_line_definition_code       => l_line_definition_code
18443       ,p_accounting_line_code       => l_component_code
18444       ,p_accounting_line_type_code  => l_component_type_code
18445       ,p_accounting_line_appl_id    => l_component_appl_id
18446       ,p_amb_context_code           => l_amb_context_code
18447       ,p_entity_code                => l_entity_code
18448       ,p_event_class_code           => l_event_class_code);
18449    --
18450    -- set accounting class
18451    --
18452    xla_ae_lines_pkg.SetAcctClass(
18453            p_accounting_class_code  => 'CLEARING'
18454          , p_ae_header_id           => l_ae_header_id
18455          );
18456 
18457    --
18458    -- set rounding class
18459    --
18460    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18461                       'CLEARING';
18462 
18463    --
18464    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18465    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18466    --
18467    -- bulk performance
18468    --
18469    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18470 
18471    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18472       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18473 
18474    -- 4955764
18475    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18476       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18477 
18478    -- 4458381 Public Sector Enh
18479    
18480    --
18481    -- set accounting attributes for the line type
18482    --
18483    l_entered_amt_idx := 3;
18484    l_accted_amt_idx  := 8;
18485    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
18486    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
18487    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
18488    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
18489    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
18490    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
18491    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
18492    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
18496    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
18493    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
18494    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
18495    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
18497    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
18498    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
18499    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
18500    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
18501    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
18502 
18503    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18504    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18505 
18506    ---------------------------------------------------------------------------------------------------------------
18507    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18508    ---------------------------------------------------------------------------------------------------------------
18509    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18510 
18511    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18512    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18513 
18514    IF xla_accounting_cache_pkg.GetValueChar
18515          (p_source_code         => 'LEDGER_CATEGORY_CODE'
18516          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18517    AND l_bflow_method_code = 'PRIOR_ENTRY'
18518 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18519    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18520          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18521        )
18522    THEN
18523          xla_ae_lines_pkg.BflowUpgEntry
18524            (p_business_method_code    => l_bflow_method_code
18525            ,p_business_class_code     => l_bflow_class_code
18526            ,p_balance_type            => l_balance_type_code);
18527    ELSE
18528       NULL;
18529 -- No business flow processing for business flow method of NONE.
18530    END IF;
18531 
18532    --
18533    -- call analytical criteria
18534    --
18535    
18536    --
18537    -- call description
18538    --
18539    -- No description or it is inherited.
18540    --
18541    -- call ADRs
18542    -- Bug 4922099
18543    --
18544    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18545         (NVL(l_actual_upg_option, 'N') = 'O') OR
18546         (NVL(l_enc_upg_option, 'N') = 'O')
18547       )
18548    THEN
18549    NULL;
18550    --
18551    --
18552    
18553   l_ccid := AcctDerRule_7(
18554            p_application_id           => p_application_id
18555          , p_ae_header_id             => l_ae_header_id 
18556 , p_source_1 => p_source_1
18557 , p_source_2 => p_source_2
18558          , x_transaction_coa_id       => l_adr_transaction_coa_id
18559          , x_accounting_coa_id        => l_adr_accounting_coa_id
18560          , x_value_type_code          => l_adr_value_type_code
18561          , p_side                     => 'NA'
18562    );
18563 
18564    xla_ae_lines_pkg.set_ccid(
18565     p_code_combination_id          => l_ccid
18566   , p_value_type_code              => l_adr_value_type_code
18567   , p_transaction_coa_id           => l_adr_transaction_coa_id
18568   , p_accounting_coa_id            => l_adr_accounting_coa_id
18569   , p_adr_code                     => 'CLEARING'
18570   , p_adr_type_code                => 'S'
18571   , p_component_type               => l_component_type
18572   , p_component_code               => l_component_code
18573   , p_component_type_code          => l_component_type_code
18574   , p_component_appl_id            => l_component_appl_id
18575   , p_amb_context_code             => l_amb_context_code
18576   , p_side                         => 'NA'
18577   );
18578 
18579 
18580    --
18581    --
18582    END IF;
18583    --
18584    -- Bug 4922099
18585    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
18586           (NVL(l_enc_upg_option, 'N') = 'O')
18587         ) AND
18588         (l_bflow_method_code = 'PRIOR_ENTRY')
18589       )
18590    THEN
18591       IF
18592       --
18593       1 = 2
18594       --
18595       THEN
18596       xla_accounting_err_pkg.build_message
18597                                     (p_appli_s_name            => 'XLA'
18598                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18599                                     ,p_token_1                 => 'LINE_NUMBER'
18600                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
18601                                     ,p_token_2                 => 'LINE_TYPE_NAME'
18602                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
18603                                                                              l_component_type
18604                                                                             ,l_component_code
18605                                                                             ,l_component_type_code
18606                                                                             ,l_component_appl_id
18610                                                                            )
18607                                                                             ,l_amb_context_code
18608                                                                             ,l_entity_code
18609                                                                             ,l_event_class_code
18611                                     ,p_token_3                 => 'OWNER'
18612                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
18613                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
18614                                                                           ,p_lookup_code    => l_component_type_code
18615                                                                          )
18616                                     ,p_token_4                 => 'PRODUCT_NAME'
18617                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
18618                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
18619                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
18620                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
18621                                     ,p_ae_header_id            =>  NULL
18622                                        );
18623 
18624         IF (C_LEVEL_ERROR>= g_log_level) THEN
18625                  trace
18626                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18627                       ,p_level    => C_LEVEL_ERROR
18628                       ,p_module   => l_log_module);
18629         END IF;
18630       END IF;
18631    END IF;
18632    --
18633    --
18634    ------------------------------------------------------------------------------------------------
18635    -- 4219869 Business Flow
18636    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
18637    -- Prior Entry.  Currently, the following code is always generated.
18638    ------------------------------------------------------------------------------------------------
18639    XLA_AE_LINES_PKG.ValidateCurrentLine;
18640 
18641    ------------------------------------------------------------------------------------
18642    -- 4219869 Business Flow
18643    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
18644    ------------------------------------------------------------------------------------
18645    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18646 
18647    ----------------------------------------------------------------------------------
18648    -- 4219869 Business Flow
18649    -- Update journal entry status -- Need to generate this within IF <condition>
18650    ----------------------------------------------------------------------------------
18651    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18652          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
18653          ,p_balance_type_code => l_balance_type_code
18654          );
18655 
18656    -------------------------------------------------------------------------------------------
18657    -- 4262811 - Generate the Accrual Reversal lines
18658    -------------------------------------------------------------------------------------------
18659    BEGIN
18660       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18661                               (g_array_event(p_event_id).array_value_num('header_index'));
18662       IF l_acc_rev_flag IS NULL THEN
18663          l_acc_rev_flag := 'N';
18664       END IF;
18665    EXCEPTION
18666       WHEN OTHERS THEN
18667          l_acc_rev_flag := 'N';
18668    END;
18669    --
18670    IF (l_acc_rev_flag = 'Y') THEN
18671 
18672        -- 4645092  ------------------------------------------------------------------------------
18673        -- To allow MPA report to determine if it should generate report process
18674        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18675        ------------------------------------------------------------------------------------------
18676 
18677        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18678        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18679    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
18680    -- call ADRs
18681    -- Bug 4922099
18682    --
18683    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18684         (NVL(l_actual_upg_option, 'N') = 'O') OR
18685         (NVL(l_enc_upg_option, 'N') = 'O')
18686       )
18687    THEN
18688    NULL;
18689    --
18690    --
18691    
18692   l_ccid := AcctDerRule_7(
18693            p_application_id           => p_application_id
18694          , p_ae_header_id             => l_ae_header_id 
18695 , p_source_1 => p_source_1
18696 , p_source_2 => p_source_2
18697          , x_transaction_coa_id       => l_adr_transaction_coa_id
18698          , x_accounting_coa_id        => l_adr_accounting_coa_id
18699          , x_value_type_code          => l_adr_value_type_code
18700          , p_side                     => 'NA'
18701    );
18702 
18703    xla_ae_lines_pkg.set_ccid(
18704     p_code_combination_id          => l_ccid
18705   , p_value_type_code              => l_adr_value_type_code
18706   , p_transaction_coa_id           => l_adr_transaction_coa_id
18710   , p_component_type               => l_component_type
18707   , p_accounting_coa_id            => l_adr_accounting_coa_id
18708   , p_adr_code                     => 'CLEARING'
18709   , p_adr_type_code                => 'S'
18711   , p_component_code               => l_component_code
18712   , p_component_type_code          => l_component_type_code
18713   , p_component_appl_id            => l_component_appl_id
18714   , p_amb_context_code             => l_amb_context_code
18715   , p_side                         => 'NA'
18716   );
18717 
18718 
18719    --
18720    --
18721    END IF;
18722 
18723        --
18724        -- Update the line information that should be overwritten
18725        --
18726        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18727                                          p_header_num   => 1);
18728        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
18729 
18730        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18731 
18732        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
18733           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18734        END IF;
18735 
18736       --
18737       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18738       --
18739       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18740           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
18741       ELSE
18742           ---------------------------------------------------------------------------------------------------
18743           -- 4262811a Switch Sign
18744           ---------------------------------------------------------------------------------------------------
18745           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
18746           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18747                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18748           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18749                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18750           -- 5132302
18751           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18752                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18753 
18754       END IF;
18755 
18756       -- 4955764
18757       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18758       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18759 
18760 
18761       XLA_AE_LINES_PKG.ValidateCurrentLine;
18762       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18763 
18764       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18765                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18766                ,p_balance_type_code => l_balance_type_code);
18767 
18768    END IF;
18769 
18770    -----------------------------------------------------------------------------------------
18771    -- 4262811 Multiperiod Accounting
18772    -----------------------------------------------------------------------------------------
18773      -- No MPA option is assigned.
18774 
18775 
18776 END IF;
18777 END IF;
18778 --
18779 
18780 --
18781 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18782    trace
18783       (p_msg      => 'END of AcctLineType_66'
18784       ,p_level    => C_LEVEL_PROCEDURE
18785       ,p_module   => l_log_module);
18786 END IF;
18787 --
18788 EXCEPTION
18789   WHEN xla_exceptions_pkg.application_exception THEN
18790       RAISE;
18791   WHEN OTHERS THEN
18792        xla_exceptions_pkg.raise_message
18793            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_66');
18794 END AcctLineType_66;
18795 --
18796 
18797 ---------------------------------------
18798 --
18799 -- PRIVATE FUNCTION
18800 --         AcctLineType_67
18801 --
18802 ---------------------------------------
18803 PROCEDURE AcctLineType_67 (
18804   p_application_id        IN NUMBER
18805  ,p_event_id              IN NUMBER
18806  ,p_calculate_acctd_flag  IN VARCHAR2
18807  ,p_calculate_g_l_flag    IN VARCHAR2
18808  ,p_actual_flag           IN OUT VARCHAR2
18809  ,p_balance_type_code     OUT VARCHAR2
18810  ,p_gain_or_loss_ref      OUT VARCHAR2
18811  
18812 --Transaction Account
18813  , p_source_1            IN NUMBER
18814 --Journal Line Type
18815  , p_source_2            IN VARCHAR2
18816 --Entered Amount
18817  , p_source_3            IN NUMBER
18818 --First Distribution Identifier
18819  , p_source_5            IN NUMBER
18820 --Distribution Type
18821  , p_source_6            IN VARCHAR2
18822 --Currency Code
18823  , p_source_7            IN VARCHAR2
18824 --Currency Conversion Date
18825  , p_source_8            IN DATE
18826 --Currency Conversion Rate
18827  , p_source_9            IN NUMBER
18828 --Currency Conversion Type
18829  , p_source_10            IN VARCHAR2
18833 IS
18830 --Accounted Amount
18831  , p_source_11            IN NUMBER
18832 )
18834 
18835 l_component_type              VARCHAR2(80);
18836 l_component_code              VARCHAR2(30);
18837 l_component_type_code         VARCHAR2(1);
18838 l_component_appl_id           INTEGER;
18839 l_amb_context_code            VARCHAR2(30);
18840 l_entity_code                 VARCHAR2(30);
18841 l_event_class_code            VARCHAR2(30);
18842 l_ae_header_id                NUMBER;
18843 l_event_type_code             VARCHAR2(30);
18844 l_line_definition_code        VARCHAR2(30);
18845 l_line_definition_owner_code  VARCHAR2(1);
18846 --
18847 -- adr variables
18848 l_segment                     VARCHAR2(30);
18849 l_ccid                        NUMBER;
18850 l_adr_transaction_coa_id      NUMBER;
18851 l_adr_accounting_coa_id       NUMBER;
18852 l_adr_flexfield_segment_code  VARCHAR2(30);
18853 l_adr_flex_value_set_id       NUMBER;
18854 l_adr_value_type_code         VARCHAR2(30);
18855 l_adr_value_combination_id    NUMBER;
18856 l_adr_value_segment_code      VARCHAR2(30);
18857 
18858 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18859 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18860 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18861 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18862 
18863 -- 4262811 Variables ------------------------------------------------------------------------------------------
18864 l_entered_amt_idx             NUMBER;
18865 l_accted_amt_idx              NUMBER;
18866 l_acc_rev_flag                VARCHAR2(1);
18867 l_accrual_line_num            NUMBER;
18868 l_tmp_amt                     NUMBER;
18869 l_acc_rev_natural_side_code   VARCHAR2(1);
18870 
18871 l_num_entries                 NUMBER;
18872 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18873 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18874 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18875 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18876 l_recog_line_1                NUMBER;
18877 l_recog_line_2                NUMBER;
18878 
18879 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18880 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18881 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18882 
18883 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18884 
18885 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18886 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18887 
18888 ---------------------------------------------------------------------------------------------------------------
18889 
18890 
18891 --
18892 -- bulk performance
18893 --
18894 l_balance_type_code           VARCHAR2(1);
18895 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18896 l_log_module                  VARCHAR2(240);
18897 
18898 --
18899 -- Upgrade strategy
18900 --
18901 l_actual_upg_option           VARCHAR2(1);
18902 l_enc_upg_option           VARCHAR2(1);
18903 
18904 --
18905 BEGIN
18906 --
18907 IF g_log_enabled THEN
18908       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_67';
18909 END IF;
18910 --
18911 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18912 
18913       trace
18914          (p_msg      => 'BEGIN of AcctLineType_67'
18915          ,p_level    => C_LEVEL_PROCEDURE
18916          ,p_module   => l_log_module);
18917 
18918 END IF;
18919 --
18920 l_component_type             := 'AMB_JLT';
18921 l_component_code             := 'CLEARING';
18922 l_component_type_code        := 'S';
18923 l_component_appl_id          :=  555;
18924 l_amb_context_code           := 'DEFAULT';
18925 l_entity_code                := 'PURCHASING';
18926 l_event_class_code           := 'DELIVER';
18927 l_event_type_code            := 'LOG_PO_RCV_ADJ';
18928 l_line_definition_owner_code := 'S';
18929 l_line_definition_code       := 'LOG_PO_RCV_ADJ';
18930 --
18931 l_balance_type_code          := 'A';
18932 l_segment                     := NULL;
18933 l_ccid                        := NULL;
18934 l_adr_transaction_coa_id      := NULL;
18935 l_adr_accounting_coa_id       := NULL;
18936 l_adr_flexfield_segment_code  := NULL;
18937 l_adr_flex_value_set_id       := NULL;
18938 l_adr_value_type_code         := NULL;
18939 l_adr_value_combination_id    := NULL;
18940 l_adr_value_segment_code      := NULL;
18941 
18942 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18943 l_bflow_class_code           := '';    -- 4219869 Business Flow
18944 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18945 l_budgetary_control_flag     := 'N';
18946 
18947 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18948 l_bflow_applied_to_amt       := NULL; -- 5132302
18949 l_entered_amt_idx            := NULL;          -- 4262811
18950 l_accted_amt_idx             := NULL;          -- 4262811
18951 l_acc_rev_flag               := NULL;          -- 4262811
18952 l_accrual_line_num           := NULL;          -- 4262811
18953 l_tmp_amt                    := NULL;          -- 4262811
18954 --
18955  
18959 ') =  'CLR'
18956 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18957     l_balance_type_code <> 'B' THEN
18958 IF NVL(p_source_2,'
18960  THEN 
18961 
18962    --
18963    XLA_AE_LINES_PKG.SetNewLine;
18964 
18965    p_balance_type_code          := l_balance_type_code;
18966    -- set the flag so later we will know whether the gain loss line needs to be created
18967    
18968    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18969      p_actual_flag :='A';
18970    END IF;
18971 
18972    --
18973    -- bulk performance
18974    --
18975    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18976                                       p_header_num   => 0); -- 4262811
18977    --
18978    -- set accounting line options
18979    --
18980    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18981            p_natural_side_code          => 'D'
18982          , p_gain_or_loss_flag          => 'N'
18983          , p_gl_transfer_mode_code      => 'D'
18984          , p_acct_entry_type_code       => 'A'
18985          , p_switch_side_flag           => 'Y'
18986          , p_merge_duplicate_code       => 'W'
18987          );
18988    --
18989    l_acc_rev_natural_side_code := 'C';  -- 4262811
18990    -- 
18991    --
18992    -- set accounting line type info
18993    --
18994    xla_ae_lines_pkg.SetAcctLineType
18995       (p_component_type             => l_component_type
18996       ,p_event_type_code            => l_event_type_code
18997       ,p_line_definition_owner_code => l_line_definition_owner_code
18998       ,p_line_definition_code       => l_line_definition_code
18999       ,p_accounting_line_code       => l_component_code
19000       ,p_accounting_line_type_code  => l_component_type_code
19001       ,p_accounting_line_appl_id    => l_component_appl_id
19002       ,p_amb_context_code           => l_amb_context_code
19003       ,p_entity_code                => l_entity_code
19004       ,p_event_class_code           => l_event_class_code);
19005    --
19006    -- set accounting class
19007    --
19008    xla_ae_lines_pkg.SetAcctClass(
19009            p_accounting_class_code  => 'CLEARING'
19010          , p_ae_header_id           => l_ae_header_id
19011          );
19012 
19013    --
19014    -- set rounding class
19015    --
19016    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19017                       'CLEARING';
19018 
19019    --
19020    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19021    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19022    --
19023    -- bulk performance
19024    --
19025    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19026 
19027    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19028       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19029 
19030    -- 4955764
19031    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19032       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19033 
19034    -- 4458381 Public Sector Enh
19035    
19036    --
19037    -- set accounting attributes for the line type
19038    --
19039    l_entered_amt_idx := 3;
19040    l_accted_amt_idx  := 8;
19041    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
19042    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
19043    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
19044    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
19045    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
19046    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
19047    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
19048    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
19049    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
19050    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
19051    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
19052    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
19053    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
19054    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
19055    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
19056    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
19057    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
19058 
19059    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19060    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19061 
19062    ---------------------------------------------------------------------------------------------------------------
19063    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19064    ---------------------------------------------------------------------------------------------------------------
19065    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19066 
19067    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19071          (p_source_code         => 'LEDGER_CATEGORY_CODE'
19068    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19069 
19070    IF xla_accounting_cache_pkg.GetValueChar
19072          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19073    AND l_bflow_method_code = 'PRIOR_ENTRY'
19074 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19075    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19076          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19077        )
19078    THEN
19079          xla_ae_lines_pkg.BflowUpgEntry
19080            (p_business_method_code    => l_bflow_method_code
19081            ,p_business_class_code     => l_bflow_class_code
19082            ,p_balance_type            => l_balance_type_code);
19083    ELSE
19084       NULL;
19085 -- No business flow processing for business flow method of NONE.
19086    END IF;
19087 
19088    --
19089    -- call analytical criteria
19090    --
19091    
19092    --
19093    -- call description
19094    --
19095    -- No description or it is inherited.
19096    --
19097    -- call ADRs
19098    -- Bug 4922099
19099    --
19100    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19101         (NVL(l_actual_upg_option, 'N') = 'O') OR
19102         (NVL(l_enc_upg_option, 'N') = 'O')
19103       )
19104    THEN
19105    NULL;
19106    --
19107    --
19108    
19109   l_ccid := AcctDerRule_7(
19110            p_application_id           => p_application_id
19111          , p_ae_header_id             => l_ae_header_id 
19112 , p_source_1 => p_source_1
19113 , p_source_2 => p_source_2
19114          , x_transaction_coa_id       => l_adr_transaction_coa_id
19115          , x_accounting_coa_id        => l_adr_accounting_coa_id
19116          , x_value_type_code          => l_adr_value_type_code
19117          , p_side                     => 'NA'
19118    );
19119 
19120    xla_ae_lines_pkg.set_ccid(
19121     p_code_combination_id          => l_ccid
19122   , p_value_type_code              => l_adr_value_type_code
19123   , p_transaction_coa_id           => l_adr_transaction_coa_id
19124   , p_accounting_coa_id            => l_adr_accounting_coa_id
19125   , p_adr_code                     => 'CLEARING'
19126   , p_adr_type_code                => 'S'
19127   , p_component_type               => l_component_type
19128   , p_component_code               => l_component_code
19129   , p_component_type_code          => l_component_type_code
19130   , p_component_appl_id            => l_component_appl_id
19131   , p_amb_context_code             => l_amb_context_code
19132   , p_side                         => 'NA'
19133   );
19134 
19135 
19136    --
19137    --
19138    END IF;
19139    --
19140    -- Bug 4922099
19141    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19142           (NVL(l_enc_upg_option, 'N') = 'O')
19143         ) AND
19144         (l_bflow_method_code = 'PRIOR_ENTRY')
19145       )
19146    THEN
19147       IF
19148       --
19149       1 = 2
19150       --
19151       THEN
19152       xla_accounting_err_pkg.build_message
19153                                     (p_appli_s_name            => 'XLA'
19154                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19155                                     ,p_token_1                 => 'LINE_NUMBER'
19156                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19157                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19158                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19159                                                                              l_component_type
19160                                                                             ,l_component_code
19161                                                                             ,l_component_type_code
19162                                                                             ,l_component_appl_id
19163                                                                             ,l_amb_context_code
19164                                                                             ,l_entity_code
19165                                                                             ,l_event_class_code
19166                                                                            )
19167                                     ,p_token_3                 => 'OWNER'
19168                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19169                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19170                                                                           ,p_lookup_code    => l_component_type_code
19171                                                                          )
19172                                     ,p_token_4                 => 'PRODUCT_NAME'
19173                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19174                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19175                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19176                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19180         IF (C_LEVEL_ERROR>= g_log_level) THEN
19177                                     ,p_ae_header_id            =>  NULL
19178                                        );
19179 
19181                  trace
19182                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19183                       ,p_level    => C_LEVEL_ERROR
19184                       ,p_module   => l_log_module);
19185         END IF;
19186       END IF;
19187    END IF;
19188    --
19189    --
19190    ------------------------------------------------------------------------------------------------
19191    -- 4219869 Business Flow
19192    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19193    -- Prior Entry.  Currently, the following code is always generated.
19194    ------------------------------------------------------------------------------------------------
19195    XLA_AE_LINES_PKG.ValidateCurrentLine;
19196 
19197    ------------------------------------------------------------------------------------
19198    -- 4219869 Business Flow
19199    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19200    ------------------------------------------------------------------------------------
19201    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19202 
19203    ----------------------------------------------------------------------------------
19204    -- 4219869 Business Flow
19205    -- Update journal entry status -- Need to generate this within IF <condition>
19206    ----------------------------------------------------------------------------------
19207    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19208          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19209          ,p_balance_type_code => l_balance_type_code
19210          );
19211 
19212    -------------------------------------------------------------------------------------------
19213    -- 4262811 - Generate the Accrual Reversal lines
19214    -------------------------------------------------------------------------------------------
19215    BEGIN
19216       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19217                               (g_array_event(p_event_id).array_value_num('header_index'));
19218       IF l_acc_rev_flag IS NULL THEN
19219          l_acc_rev_flag := 'N';
19220       END IF;
19221    EXCEPTION
19222       WHEN OTHERS THEN
19223          l_acc_rev_flag := 'N';
19224    END;
19225    --
19226    IF (l_acc_rev_flag = 'Y') THEN
19227 
19228        -- 4645092  ------------------------------------------------------------------------------
19229        -- To allow MPA report to determine if it should generate report process
19230        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19231        ------------------------------------------------------------------------------------------
19232 
19233        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19234        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19235    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
19236    -- call ADRs
19237    -- Bug 4922099
19238    --
19239    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19240         (NVL(l_actual_upg_option, 'N') = 'O') OR
19241         (NVL(l_enc_upg_option, 'N') = 'O')
19242       )
19243    THEN
19244    NULL;
19245    --
19246    --
19247    
19248   l_ccid := AcctDerRule_7(
19249            p_application_id           => p_application_id
19250          , p_ae_header_id             => l_ae_header_id 
19251 , p_source_1 => p_source_1
19252 , p_source_2 => p_source_2
19253          , x_transaction_coa_id       => l_adr_transaction_coa_id
19254          , x_accounting_coa_id        => l_adr_accounting_coa_id
19255          , x_value_type_code          => l_adr_value_type_code
19256          , p_side                     => 'NA'
19257    );
19258 
19259    xla_ae_lines_pkg.set_ccid(
19260     p_code_combination_id          => l_ccid
19261   , p_value_type_code              => l_adr_value_type_code
19262   , p_transaction_coa_id           => l_adr_transaction_coa_id
19263   , p_accounting_coa_id            => l_adr_accounting_coa_id
19264   , p_adr_code                     => 'CLEARING'
19265   , p_adr_type_code                => 'S'
19266   , p_component_type               => l_component_type
19267   , p_component_code               => l_component_code
19268   , p_component_type_code          => l_component_type_code
19269   , p_component_appl_id            => l_component_appl_id
19270   , p_amb_context_code             => l_amb_context_code
19271   , p_side                         => 'NA'
19272   );
19273 
19274 
19275    --
19276    --
19277    END IF;
19278 
19279        --
19280        -- Update the line information that should be overwritten
19281        --
19282        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19283                                          p_header_num   => 1);
19284        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19285 
19286        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19287 
19288        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19292       --
19289           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19290        END IF;
19291 
19293       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19294       --
19295       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19296           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19297       ELSE
19298           ---------------------------------------------------------------------------------------------------
19299           -- 4262811a Switch Sign
19300           ---------------------------------------------------------------------------------------------------
19301           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19302           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19303                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19304           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19305                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19306           -- 5132302
19307           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19308                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19309 
19310       END IF;
19311 
19312       -- 4955764
19313       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19314       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19315 
19316 
19317       XLA_AE_LINES_PKG.ValidateCurrentLine;
19318       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19319 
19320       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19321                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19322                ,p_balance_type_code => l_balance_type_code);
19323 
19324    END IF;
19325 
19326    -----------------------------------------------------------------------------------------
19327    -- 4262811 Multiperiod Accounting
19328    -----------------------------------------------------------------------------------------
19329      -- No MPA option is assigned.
19330 
19331 
19332 END IF;
19333 END IF;
19334 --
19335 
19336 --
19337 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19338    trace
19339       (p_msg      => 'END of AcctLineType_67'
19340       ,p_level    => C_LEVEL_PROCEDURE
19341       ,p_module   => l_log_module);
19342 END IF;
19343 --
19344 EXCEPTION
19345   WHEN xla_exceptions_pkg.application_exception THEN
19346       RAISE;
19347   WHEN OTHERS THEN
19348        xla_exceptions_pkg.raise_message
19349            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_67');
19350 END AcctLineType_67;
19351 --
19352 
19353 ---------------------------------------
19354 --
19355 -- PRIVATE FUNCTION
19356 --         AcctLineType_68
19357 --
19358 ---------------------------------------
19359 PROCEDURE AcctLineType_68 (
19360   p_application_id        IN NUMBER
19361  ,p_event_id              IN NUMBER
19362  ,p_calculate_acctd_flag  IN VARCHAR2
19363  ,p_calculate_g_l_flag    IN VARCHAR2
19364  ,p_actual_flag           IN OUT VARCHAR2
19365  ,p_balance_type_code     OUT VARCHAR2
19366  ,p_gain_or_loss_ref      OUT VARCHAR2
19367  
19368 --Transaction Account
19369  , p_source_1            IN NUMBER
19370 --Journal Line Type
19371  , p_source_2            IN VARCHAR2
19372 --Entered Amount
19373  , p_source_3            IN NUMBER
19374 --First Distribution Identifier
19375  , p_source_5            IN NUMBER
19376 --Distribution Type
19377  , p_source_6            IN VARCHAR2
19378 --Currency Code
19379  , p_source_7            IN VARCHAR2
19380 --Currency Conversion Date
19381  , p_source_8            IN DATE
19382 --Currency Conversion Rate
19383  , p_source_9            IN NUMBER
19384 --Currency Conversion Type
19385  , p_source_10            IN VARCHAR2
19386 --Accounted Amount
19387  , p_source_11            IN NUMBER
19388 )
19389 IS
19390 
19391 l_component_type              VARCHAR2(80);
19392 l_component_code              VARCHAR2(30);
19393 l_component_type_code         VARCHAR2(1);
19394 l_component_appl_id           INTEGER;
19395 l_amb_context_code            VARCHAR2(30);
19396 l_entity_code                 VARCHAR2(30);
19397 l_event_class_code            VARCHAR2(30);
19398 l_ae_header_id                NUMBER;
19399 l_event_type_code             VARCHAR2(30);
19400 l_line_definition_code        VARCHAR2(30);
19401 l_line_definition_owner_code  VARCHAR2(1);
19402 --
19403 -- adr variables
19404 l_segment                     VARCHAR2(30);
19405 l_ccid                        NUMBER;
19406 l_adr_transaction_coa_id      NUMBER;
19407 l_adr_accounting_coa_id       NUMBER;
19408 l_adr_flexfield_segment_code  VARCHAR2(30);
19409 l_adr_flex_value_set_id       NUMBER;
19410 l_adr_value_type_code         VARCHAR2(30);
19411 l_adr_value_combination_id    NUMBER;
19412 l_adr_value_segment_code      VARCHAR2(30);
19413 
19414 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19415 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19419 -- 4262811 Variables ------------------------------------------------------------------------------------------
19416 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19417 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19418 
19420 l_entered_amt_idx             NUMBER;
19421 l_accted_amt_idx              NUMBER;
19422 l_acc_rev_flag                VARCHAR2(1);
19423 l_accrual_line_num            NUMBER;
19424 l_tmp_amt                     NUMBER;
19425 l_acc_rev_natural_side_code   VARCHAR2(1);
19426 
19427 l_num_entries                 NUMBER;
19428 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19429 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19430 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19431 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19432 l_recog_line_1                NUMBER;
19433 l_recog_line_2                NUMBER;
19434 
19435 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19436 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19437 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19438 
19439 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19440 
19441 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19442 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19443 
19444 ---------------------------------------------------------------------------------------------------------------
19445 
19446 
19447 --
19448 -- bulk performance
19449 --
19450 l_balance_type_code           VARCHAR2(1);
19451 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19452 l_log_module                  VARCHAR2(240);
19453 
19454 --
19455 -- Upgrade strategy
19456 --
19457 l_actual_upg_option           VARCHAR2(1);
19458 l_enc_upg_option           VARCHAR2(1);
19459 
19460 --
19461 BEGIN
19462 --
19463 IF g_log_enabled THEN
19464       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_68';
19465 END IF;
19466 --
19467 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19468 
19469       trace
19470          (p_msg      => 'BEGIN of AcctLineType_68'
19471          ,p_level    => C_LEVEL_PROCEDURE
19472          ,p_module   => l_log_module);
19473 
19474 END IF;
19475 --
19476 l_component_type             := 'AMB_JLT';
19477 l_component_code             := 'CLS';
19478 l_component_type_code        := 'S';
19479 l_component_appl_id          :=  555;
19480 l_amb_context_code           := 'DEFAULT';
19481 l_entity_code                := 'PRODUCTION';
19482 l_event_class_code           := 'BATCH_CLOSE';
19483 l_event_type_code            := 'CLOS';
19484 l_line_definition_owner_code := 'S';
19485 l_line_definition_code       := 'BATCH_CLOSE';
19486 --
19487 l_balance_type_code          := 'A';
19488 l_segment                     := NULL;
19489 l_ccid                        := NULL;
19490 l_adr_transaction_coa_id      := NULL;
19491 l_adr_accounting_coa_id       := NULL;
19492 l_adr_flexfield_segment_code  := NULL;
19493 l_adr_flex_value_set_id       := NULL;
19494 l_adr_value_type_code         := NULL;
19495 l_adr_value_combination_id    := NULL;
19496 l_adr_value_segment_code      := NULL;
19497 
19498 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
19499 l_bflow_class_code           := '';    -- 4219869 Business Flow
19500 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
19501 l_budgetary_control_flag     := 'N';
19502 
19503 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
19504 l_bflow_applied_to_amt       := NULL; -- 5132302
19505 l_entered_amt_idx            := NULL;          -- 4262811
19506 l_accted_amt_idx             := NULL;          -- 4262811
19507 l_acc_rev_flag               := NULL;          -- 4262811
19508 l_accrual_line_num           := NULL;          -- 4262811
19509 l_tmp_amt                    := NULL;          -- 4262811
19510 --
19511  
19512 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19513     l_balance_type_code <> 'B' THEN
19514 IF NVL(p_source_2,'
19515 ') =  'CLS'
19516  THEN 
19517 
19518    --
19519    XLA_AE_LINES_PKG.SetNewLine;
19520 
19521    p_balance_type_code          := l_balance_type_code;
19522    -- set the flag so later we will know whether the gain loss line needs to be created
19523    
19524    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19525      p_actual_flag :='A';
19526    END IF;
19527 
19528    --
19529    -- bulk performance
19530    --
19531    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19532                                       p_header_num   => 0); -- 4262811
19533    --
19534    -- set accounting line options
19535    --
19536    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19537            p_natural_side_code          => 'D'
19538          , p_gain_or_loss_flag          => 'N'
19539          , p_gl_transfer_mode_code      => 'D'
19540          , p_acct_entry_type_code       => 'A'
19541          , p_switch_side_flag           => 'Y'
19542          , p_merge_duplicate_code       => 'W'
19543          );
19544    --
19548    -- set accounting line type info
19545    l_acc_rev_natural_side_code := 'C';  -- 4262811
19546    -- 
19547    --
19549    --
19550    xla_ae_lines_pkg.SetAcctLineType
19551       (p_component_type             => l_component_type
19552       ,p_event_type_code            => l_event_type_code
19553       ,p_line_definition_owner_code => l_line_definition_owner_code
19554       ,p_line_definition_code       => l_line_definition_code
19555       ,p_accounting_line_code       => l_component_code
19556       ,p_accounting_line_type_code  => l_component_type_code
19557       ,p_accounting_line_appl_id    => l_component_appl_id
19558       ,p_amb_context_code           => l_amb_context_code
19559       ,p_entity_code                => l_entity_code
19560       ,p_event_class_code           => l_event_class_code);
19561    --
19562    -- set accounting class
19563    --
19564    xla_ae_lines_pkg.SetAcctClass(
19565            p_accounting_class_code  => 'CLS'
19566          , p_ae_header_id           => l_ae_header_id
19567          );
19568 
19569    --
19570    -- set rounding class
19571    --
19572    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19573                       'CLS';
19574 
19575    --
19576    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19577    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19578    --
19579    -- bulk performance
19580    --
19581    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19582 
19583    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19584       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19585 
19586    -- 4955764
19587    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19588       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19589 
19590    -- 4458381 Public Sector Enh
19591    
19592    --
19593    -- set accounting attributes for the line type
19594    --
19595    l_entered_amt_idx := 3;
19596    l_accted_amt_idx  := 8;
19597    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
19598    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
19599    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
19600    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
19601    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
19602    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
19603    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
19604    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
19605    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
19606    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
19607    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
19608    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
19609    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
19610    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
19611    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
19612    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
19613    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
19614 
19615    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19616    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19617 
19618    ---------------------------------------------------------------------------------------------------------------
19619    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19620    ---------------------------------------------------------------------------------------------------------------
19621    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19622 
19623    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19624    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19625 
19626    IF xla_accounting_cache_pkg.GetValueChar
19627          (p_source_code         => 'LEDGER_CATEGORY_CODE'
19628          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19629    AND l_bflow_method_code = 'PRIOR_ENTRY'
19630 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19631    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19632          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19633        )
19634    THEN
19635          xla_ae_lines_pkg.BflowUpgEntry
19636            (p_business_method_code    => l_bflow_method_code
19637            ,p_business_class_code     => l_bflow_class_code
19638            ,p_balance_type            => l_balance_type_code);
19639    ELSE
19640       NULL;
19641 -- No business flow processing for business flow method of NONE.
19642    END IF;
19643 
19644    --
19645    -- call analytical criteria
19646    --
19647    
19648    --
19649    -- call description
19650    --
19651    -- No description or it is inherited.
19652    --
19653    -- call ADRs
19654    -- Bug 4922099
19655    --
19656    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19657         (NVL(l_actual_upg_option, 'N') = 'O') OR
19661    NULL;
19658         (NVL(l_enc_upg_option, 'N') = 'O')
19659       )
19660    THEN
19662    --
19663    --
19664    
19665   l_ccid := AcctDerRule_8(
19666            p_application_id           => p_application_id
19667          , p_ae_header_id             => l_ae_header_id 
19668 , p_source_1 => p_source_1
19669 , p_source_2 => p_source_2
19670          , x_transaction_coa_id       => l_adr_transaction_coa_id
19671          , x_accounting_coa_id        => l_adr_accounting_coa_id
19672          , x_value_type_code          => l_adr_value_type_code
19673          , p_side                     => 'NA'
19674    );
19675 
19676    xla_ae_lines_pkg.set_ccid(
19677     p_code_combination_id          => l_ccid
19678   , p_value_type_code              => l_adr_value_type_code
19679   , p_transaction_coa_id           => l_adr_transaction_coa_id
19680   , p_accounting_coa_id            => l_adr_accounting_coa_id
19681   , p_adr_code                     => 'CLS'
19682   , p_adr_type_code                => 'S'
19683   , p_component_type               => l_component_type
19684   , p_component_code               => l_component_code
19685   , p_component_type_code          => l_component_type_code
19686   , p_component_appl_id            => l_component_appl_id
19687   , p_amb_context_code             => l_amb_context_code
19688   , p_side                         => 'NA'
19689   );
19690 
19691 
19692    --
19693    --
19694    END IF;
19695    --
19696    -- Bug 4922099
19697    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19698           (NVL(l_enc_upg_option, 'N') = 'O')
19699         ) AND
19700         (l_bflow_method_code = 'PRIOR_ENTRY')
19701       )
19702    THEN
19703       IF
19704       --
19705       1 = 2
19706       --
19707       THEN
19708       xla_accounting_err_pkg.build_message
19709                                     (p_appli_s_name            => 'XLA'
19710                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19711                                     ,p_token_1                 => 'LINE_NUMBER'
19712                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19713                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19714                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19715                                                                              l_component_type
19716                                                                             ,l_component_code
19717                                                                             ,l_component_type_code
19718                                                                             ,l_component_appl_id
19719                                                                             ,l_amb_context_code
19720                                                                             ,l_entity_code
19721                                                                             ,l_event_class_code
19722                                                                            )
19723                                     ,p_token_3                 => 'OWNER'
19724                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19725                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19726                                                                           ,p_lookup_code    => l_component_type_code
19727                                                                          )
19728                                     ,p_token_4                 => 'PRODUCT_NAME'
19729                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19730                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19731                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19732                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19733                                     ,p_ae_header_id            =>  NULL
19734                                        );
19735 
19736         IF (C_LEVEL_ERROR>= g_log_level) THEN
19737                  trace
19738                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19739                       ,p_level    => C_LEVEL_ERROR
19740                       ,p_module   => l_log_module);
19741         END IF;
19742       END IF;
19743    END IF;
19744    --
19745    --
19746    ------------------------------------------------------------------------------------------------
19747    -- 4219869 Business Flow
19748    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19749    -- Prior Entry.  Currently, the following code is always generated.
19750    ------------------------------------------------------------------------------------------------
19751    XLA_AE_LINES_PKG.ValidateCurrentLine;
19752 
19753    ------------------------------------------------------------------------------------
19754    -- 4219869 Business Flow
19755    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19756    ------------------------------------------------------------------------------------
19757    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19758 
19759    ----------------------------------------------------------------------------------
19763    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19760    -- 4219869 Business Flow
19761    -- Update journal entry status -- Need to generate this within IF <condition>
19762    ----------------------------------------------------------------------------------
19764          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19765          ,p_balance_type_code => l_balance_type_code
19766          );
19767 
19768    -------------------------------------------------------------------------------------------
19769    -- 4262811 - Generate the Accrual Reversal lines
19770    -------------------------------------------------------------------------------------------
19771    BEGIN
19772       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19773                               (g_array_event(p_event_id).array_value_num('header_index'));
19774       IF l_acc_rev_flag IS NULL THEN
19775          l_acc_rev_flag := 'N';
19776       END IF;
19777    EXCEPTION
19778       WHEN OTHERS THEN
19779          l_acc_rev_flag := 'N';
19780    END;
19781    --
19782    IF (l_acc_rev_flag = 'Y') THEN
19783 
19784        -- 4645092  ------------------------------------------------------------------------------
19785        -- To allow MPA report to determine if it should generate report process
19786        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19787        ------------------------------------------------------------------------------------------
19788 
19789        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19790        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19791    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
19792    -- call ADRs
19793    -- Bug 4922099
19794    --
19795    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19796         (NVL(l_actual_upg_option, 'N') = 'O') OR
19797         (NVL(l_enc_upg_option, 'N') = 'O')
19798       )
19799    THEN
19800    NULL;
19801    --
19802    --
19803    
19804   l_ccid := AcctDerRule_8(
19805            p_application_id           => p_application_id
19806          , p_ae_header_id             => l_ae_header_id 
19807 , p_source_1 => p_source_1
19808 , p_source_2 => p_source_2
19809          , x_transaction_coa_id       => l_adr_transaction_coa_id
19810          , x_accounting_coa_id        => l_adr_accounting_coa_id
19811          , x_value_type_code          => l_adr_value_type_code
19812          , p_side                     => 'NA'
19813    );
19814 
19815    xla_ae_lines_pkg.set_ccid(
19816     p_code_combination_id          => l_ccid
19817   , p_value_type_code              => l_adr_value_type_code
19818   , p_transaction_coa_id           => l_adr_transaction_coa_id
19819   , p_accounting_coa_id            => l_adr_accounting_coa_id
19820   , p_adr_code                     => 'CLS'
19821   , p_adr_type_code                => 'S'
19822   , p_component_type               => l_component_type
19823   , p_component_code               => l_component_code
19824   , p_component_type_code          => l_component_type_code
19825   , p_component_appl_id            => l_component_appl_id
19826   , p_amb_context_code             => l_amb_context_code
19827   , p_side                         => 'NA'
19828   );
19829 
19830 
19831    --
19832    --
19833    END IF;
19834 
19835        --
19836        -- Update the line information that should be overwritten
19837        --
19838        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19839                                          p_header_num   => 1);
19840        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19841 
19842        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19843 
19844        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19845           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19846        END IF;
19847 
19848       --
19849       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19850       --
19851       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19852           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19853       ELSE
19854           ---------------------------------------------------------------------------------------------------
19855           -- 4262811a Switch Sign
19856           ---------------------------------------------------------------------------------------------------
19857           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19858           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19859                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19860           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19861                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19862           -- 5132302
19863           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19864                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19865 
19866       END IF;
19867 
19871 
19868       -- 4955764
19869       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19870       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19872 
19873       XLA_AE_LINES_PKG.ValidateCurrentLine;
19874       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19875 
19876       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19877                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19878                ,p_balance_type_code => l_balance_type_code);
19879 
19880    END IF;
19881 
19882    -----------------------------------------------------------------------------------------
19883    -- 4262811 Multiperiod Accounting
19884    -----------------------------------------------------------------------------------------
19885      -- No MPA option is assigned.
19886 
19887 
19888 END IF;
19889 END IF;
19890 --
19891 
19892 --
19893 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19894    trace
19895       (p_msg      => 'END of AcctLineType_68'
19896       ,p_level    => C_LEVEL_PROCEDURE
19897       ,p_module   => l_log_module);
19898 END IF;
19899 --
19900 EXCEPTION
19901   WHEN xla_exceptions_pkg.application_exception THEN
19902       RAISE;
19903   WHEN OTHERS THEN
19904        xla_exceptions_pkg.raise_message
19905            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_68');
19906 END AcctLineType_68;
19907 --
19908 
19909 ---------------------------------------
19910 --
19911 -- PRIVATE FUNCTION
19912 --         AcctLineType_69
19913 --
19914 ---------------------------------------
19915 PROCEDURE AcctLineType_69 (
19916   p_application_id        IN NUMBER
19917  ,p_event_id              IN NUMBER
19918  ,p_calculate_acctd_flag  IN VARCHAR2
19919  ,p_calculate_g_l_flag    IN VARCHAR2
19920  ,p_actual_flag           IN OUT VARCHAR2
19921  ,p_balance_type_code     OUT VARCHAR2
19922  ,p_gain_or_loss_ref      OUT VARCHAR2
19923  
19924 --Transaction Account
19925  , p_source_1            IN NUMBER
19926 --Journal Line Type
19927  , p_source_2            IN VARCHAR2
19928 --Entered Amount
19929  , p_source_3            IN NUMBER
19930 --First Distribution Identifier
19931  , p_source_5            IN NUMBER
19932 --Distribution Type
19933  , p_source_6            IN VARCHAR2
19934 --Currency Code
19935  , p_source_7            IN VARCHAR2
19936 --Currency Conversion Date
19937  , p_source_8            IN DATE
19938 --Currency Conversion Rate
19939  , p_source_9            IN NUMBER
19940 --Currency Conversion Type
19941  , p_source_10            IN VARCHAR2
19942 --Accounted Amount
19943  , p_source_11            IN NUMBER
19944 )
19945 IS
19946 
19947 l_component_type              VARCHAR2(80);
19948 l_component_code              VARCHAR2(30);
19949 l_component_type_code         VARCHAR2(1);
19950 l_component_appl_id           INTEGER;
19951 l_amb_context_code            VARCHAR2(30);
19952 l_entity_code                 VARCHAR2(30);
19953 l_event_class_code            VARCHAR2(30);
19954 l_ae_header_id                NUMBER;
19955 l_event_type_code             VARCHAR2(30);
19956 l_line_definition_code        VARCHAR2(30);
19957 l_line_definition_owner_code  VARCHAR2(1);
19958 --
19959 -- adr variables
19960 l_segment                     VARCHAR2(30);
19961 l_ccid                        NUMBER;
19962 l_adr_transaction_coa_id      NUMBER;
19963 l_adr_accounting_coa_id       NUMBER;
19964 l_adr_flexfield_segment_code  VARCHAR2(30);
19965 l_adr_flex_value_set_id       NUMBER;
19966 l_adr_value_type_code         VARCHAR2(30);
19967 l_adr_value_combination_id    NUMBER;
19968 l_adr_value_segment_code      VARCHAR2(30);
19969 
19970 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19971 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19972 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19973 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19974 
19975 -- 4262811 Variables ------------------------------------------------------------------------------------------
19976 l_entered_amt_idx             NUMBER;
19977 l_accted_amt_idx              NUMBER;
19978 l_acc_rev_flag                VARCHAR2(1);
19979 l_accrual_line_num            NUMBER;
19980 l_tmp_amt                     NUMBER;
19981 l_acc_rev_natural_side_code   VARCHAR2(1);
19982 
19983 l_num_entries                 NUMBER;
19984 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19985 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19986 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19987 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19988 l_recog_line_1                NUMBER;
19989 l_recog_line_2                NUMBER;
19990 
19991 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19992 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19993 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19994 
19995 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19996 
19997 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
20001 
19998 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19999 
20000 ---------------------------------------------------------------------------------------------------------------
20002 
20003 --
20004 -- bulk performance
20005 --
20006 l_balance_type_code           VARCHAR2(1);
20007 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
20008 l_log_module                  VARCHAR2(240);
20009 
20010 --
20011 -- Upgrade strategy
20012 --
20013 l_actual_upg_option           VARCHAR2(1);
20014 l_enc_upg_option           VARCHAR2(1);
20015 
20016 --
20017 BEGIN
20018 --
20019 IF g_log_enabled THEN
20020       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_69';
20021 END IF;
20022 --
20023 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20024 
20025       trace
20026          (p_msg      => 'BEGIN of AcctLineType_69'
20027          ,p_level    => C_LEVEL_PROCEDURE
20028          ,p_module   => l_log_module);
20029 
20030 END IF;
20031 --
20032 l_component_type             := 'AMB_JLT';
20033 l_component_code             := 'COGS';
20034 l_component_type_code        := 'S';
20035 l_component_appl_id          :=  555;
20036 l_amb_context_code           := 'DEFAULT';
20037 l_entity_code                := 'ORDERMANAGEMENT';
20038 l_event_class_code           := 'SHIPPING';
20039 l_event_type_code            := 'COGS_RECOGNITION_ADJ';
20040 l_line_definition_owner_code := 'S';
20041 l_line_definition_code       := 'COGS_RECOGNITION_ADJ';
20042 --
20043 l_balance_type_code          := 'A';
20044 l_segment                     := NULL;
20045 l_ccid                        := NULL;
20046 l_adr_transaction_coa_id      := NULL;
20047 l_adr_accounting_coa_id       := NULL;
20048 l_adr_flexfield_segment_code  := NULL;
20049 l_adr_flex_value_set_id       := NULL;
20050 l_adr_value_type_code         := NULL;
20051 l_adr_value_combination_id    := NULL;
20052 l_adr_value_segment_code      := NULL;
20053 
20054 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
20055 l_bflow_class_code           := '';    -- 4219869 Business Flow
20056 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
20057 l_budgetary_control_flag     := 'N';
20058 
20059 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
20060 l_bflow_applied_to_amt       := NULL; -- 5132302
20061 l_entered_amt_idx            := NULL;          -- 4262811
20062 l_accted_amt_idx             := NULL;          -- 4262811
20063 l_acc_rev_flag               := NULL;          -- 4262811
20064 l_accrual_line_num           := NULL;          -- 4262811
20065 l_tmp_amt                    := NULL;          -- 4262811
20066 --
20067  
20068 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20069     l_balance_type_code <> 'B' THEN
20070 IF NVL(p_source_2,'
20071 ') =  'COGS'
20072  THEN 
20073 
20074    --
20075    XLA_AE_LINES_PKG.SetNewLine;
20076 
20077    p_balance_type_code          := l_balance_type_code;
20078    -- set the flag so later we will know whether the gain loss line needs to be created
20079    
20080    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20081      p_actual_flag :='A';
20082    END IF;
20083 
20084    --
20085    -- bulk performance
20086    --
20087    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20088                                       p_header_num   => 0); -- 4262811
20089    --
20090    -- set accounting line options
20091    --
20092    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20093            p_natural_side_code          => 'D'
20094          , p_gain_or_loss_flag          => 'N'
20095          , p_gl_transfer_mode_code      => 'D'
20096          , p_acct_entry_type_code       => 'A'
20097          , p_switch_side_flag           => 'Y'
20098          , p_merge_duplicate_code       => 'W'
20099          );
20100    --
20101    l_acc_rev_natural_side_code := 'C';  -- 4262811
20102    -- 
20103    --
20104    -- set accounting line type info
20105    --
20106    xla_ae_lines_pkg.SetAcctLineType
20107       (p_component_type             => l_component_type
20108       ,p_event_type_code            => l_event_type_code
20109       ,p_line_definition_owner_code => l_line_definition_owner_code
20110       ,p_line_definition_code       => l_line_definition_code
20111       ,p_accounting_line_code       => l_component_code
20112       ,p_accounting_line_type_code  => l_component_type_code
20113       ,p_accounting_line_appl_id    => l_component_appl_id
20114       ,p_amb_context_code           => l_amb_context_code
20115       ,p_entity_code                => l_entity_code
20116       ,p_event_class_code           => l_event_class_code);
20117    --
20118    -- set accounting class
20119    --
20120    xla_ae_lines_pkg.SetAcctClass(
20121            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
20122          , p_ae_header_id           => l_ae_header_id
20123          );
20124 
20125    --
20126    -- set rounding class
20127    --
20128    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20129                       'COST_OF_GOODS_SOLD';
20130 
20131    --
20132    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20136    --
20133    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20134    --
20135    -- bulk performance
20137    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20138 
20139    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20140       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20141 
20142    -- 4955764
20143    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20144       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20145 
20146    -- 4458381 Public Sector Enh
20147    
20148    --
20149    -- set accounting attributes for the line type
20150    --
20151    l_entered_amt_idx := 3;
20152    l_accted_amt_idx  := 8;
20153    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20154    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
20155    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
20156    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
20157    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
20158    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
20159    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
20160    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
20161    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
20162    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
20163    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
20164    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
20165    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
20166    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
20167    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
20168    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
20169    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
20170 
20171    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20172    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20173 
20174    ---------------------------------------------------------------------------------------------------------------
20175    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20176    ---------------------------------------------------------------------------------------------------------------
20177    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20178 
20179    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20180    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20181 
20182    IF xla_accounting_cache_pkg.GetValueChar
20183          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20184          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20185    AND l_bflow_method_code = 'PRIOR_ENTRY'
20186 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20187    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20188          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20189        )
20190    THEN
20191          xla_ae_lines_pkg.BflowUpgEntry
20192            (p_business_method_code    => l_bflow_method_code
20193            ,p_business_class_code     => l_bflow_class_code
20194            ,p_balance_type            => l_balance_type_code);
20195    ELSE
20196       NULL;
20197 -- No business flow processing for business flow method of NONE.
20198    END IF;
20199 
20200    --
20201    -- call analytical criteria
20202    --
20203    
20204    --
20205    -- call description
20206    --
20207    -- No description or it is inherited.
20208    --
20209    -- call ADRs
20210    -- Bug 4922099
20211    --
20212    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20213         (NVL(l_actual_upg_option, 'N') = 'O') OR
20214         (NVL(l_enc_upg_option, 'N') = 'O')
20215       )
20216    THEN
20217    NULL;
20218    --
20219    --
20220    
20221   l_ccid := AcctDerRule_9(
20222            p_application_id           => p_application_id
20223          , p_ae_header_id             => l_ae_header_id 
20224 , p_source_1 => p_source_1
20225 , p_source_2 => p_source_2
20226          , x_transaction_coa_id       => l_adr_transaction_coa_id
20227          , x_accounting_coa_id        => l_adr_accounting_coa_id
20228          , x_value_type_code          => l_adr_value_type_code
20229          , p_side                     => 'NA'
20230    );
20231 
20232    xla_ae_lines_pkg.set_ccid(
20233     p_code_combination_id          => l_ccid
20234   , p_value_type_code              => l_adr_value_type_code
20235   , p_transaction_coa_id           => l_adr_transaction_coa_id
20236   , p_accounting_coa_id            => l_adr_accounting_coa_id
20237   , p_adr_code                     => 'COGS'
20238   , p_adr_type_code                => 'S'
20239   , p_component_type               => l_component_type
20240   , p_component_code               => l_component_code
20241   , p_component_type_code          => l_component_type_code
20242   , p_component_appl_id            => l_component_appl_id
20243   , p_amb_context_code             => l_amb_context_code
20244   , p_side                         => 'NA'
20245   );
20246 
20247 
20248    --
20249    --
20253    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20250    END IF;
20251    --
20252    -- Bug 4922099
20254           (NVL(l_enc_upg_option, 'N') = 'O')
20255         ) AND
20256         (l_bflow_method_code = 'PRIOR_ENTRY')
20257       )
20258    THEN
20259       IF
20260       --
20261       1 = 2
20262       --
20263       THEN
20264       xla_accounting_err_pkg.build_message
20265                                     (p_appli_s_name            => 'XLA'
20266                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20267                                     ,p_token_1                 => 'LINE_NUMBER'
20268                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20269                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20270                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20271                                                                              l_component_type
20272                                                                             ,l_component_code
20273                                                                             ,l_component_type_code
20274                                                                             ,l_component_appl_id
20275                                                                             ,l_amb_context_code
20276                                                                             ,l_entity_code
20277                                                                             ,l_event_class_code
20278                                                                            )
20279                                     ,p_token_3                 => 'OWNER'
20280                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20281                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20282                                                                           ,p_lookup_code    => l_component_type_code
20283                                                                          )
20284                                     ,p_token_4                 => 'PRODUCT_NAME'
20285                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20286                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20287                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20288                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20289                                     ,p_ae_header_id            =>  NULL
20290                                        );
20291 
20292         IF (C_LEVEL_ERROR>= g_log_level) THEN
20293                  trace
20294                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20295                       ,p_level    => C_LEVEL_ERROR
20296                       ,p_module   => l_log_module);
20297         END IF;
20298       END IF;
20299    END IF;
20300    --
20301    --
20302    ------------------------------------------------------------------------------------------------
20303    -- 4219869 Business Flow
20304    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20305    -- Prior Entry.  Currently, the following code is always generated.
20306    ------------------------------------------------------------------------------------------------
20307    XLA_AE_LINES_PKG.ValidateCurrentLine;
20308 
20309    ------------------------------------------------------------------------------------
20310    -- 4219869 Business Flow
20311    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20312    ------------------------------------------------------------------------------------
20313    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20314 
20315    ----------------------------------------------------------------------------------
20316    -- 4219869 Business Flow
20317    -- Update journal entry status -- Need to generate this within IF <condition>
20318    ----------------------------------------------------------------------------------
20319    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20320          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20321          ,p_balance_type_code => l_balance_type_code
20322          );
20323 
20324    -------------------------------------------------------------------------------------------
20325    -- 4262811 - Generate the Accrual Reversal lines
20326    -------------------------------------------------------------------------------------------
20327    BEGIN
20328       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20329                               (g_array_event(p_event_id).array_value_num('header_index'));
20330       IF l_acc_rev_flag IS NULL THEN
20331          l_acc_rev_flag := 'N';
20332       END IF;
20333    EXCEPTION
20334       WHEN OTHERS THEN
20335          l_acc_rev_flag := 'N';
20336    END;
20337    --
20338    IF (l_acc_rev_flag = 'Y') THEN
20339 
20340        -- 4645092  ------------------------------------------------------------------------------
20341        -- To allow MPA report to determine if it should generate report process
20342        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20346        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20343        ------------------------------------------------------------------------------------------
20344 
20345        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20347    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
20348    -- call ADRs
20349    -- Bug 4922099
20350    --
20351    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20352         (NVL(l_actual_upg_option, 'N') = 'O') OR
20353         (NVL(l_enc_upg_option, 'N') = 'O')
20354       )
20355    THEN
20356    NULL;
20357    --
20358    --
20359    
20360   l_ccid := AcctDerRule_9(
20361            p_application_id           => p_application_id
20362          , p_ae_header_id             => l_ae_header_id 
20363 , p_source_1 => p_source_1
20364 , p_source_2 => p_source_2
20365          , x_transaction_coa_id       => l_adr_transaction_coa_id
20366          , x_accounting_coa_id        => l_adr_accounting_coa_id
20367          , x_value_type_code          => l_adr_value_type_code
20368          , p_side                     => 'NA'
20369    );
20370 
20371    xla_ae_lines_pkg.set_ccid(
20372     p_code_combination_id          => l_ccid
20373   , p_value_type_code              => l_adr_value_type_code
20374   , p_transaction_coa_id           => l_adr_transaction_coa_id
20375   , p_accounting_coa_id            => l_adr_accounting_coa_id
20376   , p_adr_code                     => 'COGS'
20377   , p_adr_type_code                => 'S'
20378   , p_component_type               => l_component_type
20379   , p_component_code               => l_component_code
20380   , p_component_type_code          => l_component_type_code
20381   , p_component_appl_id            => l_component_appl_id
20382   , p_amb_context_code             => l_amb_context_code
20383   , p_side                         => 'NA'
20384   );
20385 
20386 
20387    --
20388    --
20389    END IF;
20390 
20391        --
20392        -- Update the line information that should be overwritten
20393        --
20394        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20395                                          p_header_num   => 1);
20396        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
20397 
20398        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20399 
20400        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
20401           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20402        END IF;
20403 
20404       --
20405       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20406       --
20407       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20408           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
20409       ELSE
20410           ---------------------------------------------------------------------------------------------------
20411           -- 4262811a Switch Sign
20412           ---------------------------------------------------------------------------------------------------
20413           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
20414           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20415                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20416           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20417                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20418           -- 5132302
20419           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20420                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20421 
20422       END IF;
20423 
20424       -- 4955764
20425       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20426       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20427 
20428 
20429       XLA_AE_LINES_PKG.ValidateCurrentLine;
20430       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20431 
20432       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20433                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20434                ,p_balance_type_code => l_balance_type_code);
20435 
20436    END IF;
20437 
20438    -----------------------------------------------------------------------------------------
20439    -- 4262811 Multiperiod Accounting
20440    -----------------------------------------------------------------------------------------
20441      -- No MPA option is assigned.
20442 
20443 
20444 END IF;
20445 END IF;
20446 --
20447 
20448 --
20449 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20450    trace
20451       (p_msg      => 'END of AcctLineType_69'
20452       ,p_level    => C_LEVEL_PROCEDURE
20453       ,p_module   => l_log_module);
20454 END IF;
20455 --
20456 EXCEPTION
20457   WHEN xla_exceptions_pkg.application_exception THEN
20458       RAISE;
20459   WHEN OTHERS THEN
20460        xla_exceptions_pkg.raise_message
20461            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_69');
20465 ---------------------------------------
20462 END AcctLineType_69;
20463 --
20464 
20466 --
20467 -- PRIVATE FUNCTION
20468 --         AcctLineType_70
20469 --
20470 ---------------------------------------
20471 PROCEDURE AcctLineType_70 (
20472   p_application_id        IN NUMBER
20473  ,p_event_id              IN NUMBER
20474  ,p_calculate_acctd_flag  IN VARCHAR2
20475  ,p_calculate_g_l_flag    IN VARCHAR2
20476  ,p_actual_flag           IN OUT VARCHAR2
20477  ,p_balance_type_code     OUT VARCHAR2
20478  ,p_gain_or_loss_ref      OUT VARCHAR2
20479  
20480 --Transaction Account
20481  , p_source_1            IN NUMBER
20482 --Journal Line Type
20483  , p_source_2            IN VARCHAR2
20484 --Entered Amount
20485  , p_source_3            IN NUMBER
20486 --First Distribution Identifier
20487  , p_source_5            IN NUMBER
20488 --Distribution Type
20489  , p_source_6            IN VARCHAR2
20490 --Currency Code
20491  , p_source_7            IN VARCHAR2
20492 --Currency Conversion Date
20493  , p_source_8            IN DATE
20494 --Currency Conversion Rate
20495  , p_source_9            IN NUMBER
20496 --Currency Conversion Type
20497  , p_source_10            IN VARCHAR2
20498 --Accounted Amount
20499  , p_source_11            IN NUMBER
20500 )
20501 IS
20502 
20503 l_component_type              VARCHAR2(80);
20504 l_component_code              VARCHAR2(30);
20505 l_component_type_code         VARCHAR2(1);
20506 l_component_appl_id           INTEGER;
20507 l_amb_context_code            VARCHAR2(30);
20508 l_entity_code                 VARCHAR2(30);
20509 l_event_class_code            VARCHAR2(30);
20510 l_ae_header_id                NUMBER;
20511 l_event_type_code             VARCHAR2(30);
20512 l_line_definition_code        VARCHAR2(30);
20513 l_line_definition_owner_code  VARCHAR2(1);
20514 --
20515 -- adr variables
20516 l_segment                     VARCHAR2(30);
20517 l_ccid                        NUMBER;
20518 l_adr_transaction_coa_id      NUMBER;
20519 l_adr_accounting_coa_id       NUMBER;
20520 l_adr_flexfield_segment_code  VARCHAR2(30);
20521 l_adr_flex_value_set_id       NUMBER;
20522 l_adr_value_type_code         VARCHAR2(30);
20523 l_adr_value_combination_id    NUMBER;
20524 l_adr_value_segment_code      VARCHAR2(30);
20525 
20526 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
20527 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
20528 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
20529 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
20530 
20531 -- 4262811 Variables ------------------------------------------------------------------------------------------
20532 l_entered_amt_idx             NUMBER;
20533 l_accted_amt_idx              NUMBER;
20534 l_acc_rev_flag                VARCHAR2(1);
20535 l_accrual_line_num            NUMBER;
20536 l_tmp_amt                     NUMBER;
20537 l_acc_rev_natural_side_code   VARCHAR2(1);
20538 
20539 l_num_entries                 NUMBER;
20540 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
20541 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
20542 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
20543 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
20544 l_recog_line_1                NUMBER;
20545 l_recog_line_2                NUMBER;
20546 
20547 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
20548 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
20549 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
20550 
20551 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
20552 
20553 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
20554 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
20555 
20556 ---------------------------------------------------------------------------------------------------------------
20557 
20558 
20559 --
20560 -- bulk performance
20561 --
20562 l_balance_type_code           VARCHAR2(1);
20563 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
20564 l_log_module                  VARCHAR2(240);
20565 
20566 --
20567 -- Upgrade strategy
20568 --
20569 l_actual_upg_option           VARCHAR2(1);
20570 l_enc_upg_option           VARCHAR2(1);
20571 
20572 --
20573 BEGIN
20574 --
20575 IF g_log_enabled THEN
20576       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_70';
20577 END IF;
20578 --
20579 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20580 
20581       trace
20582          (p_msg      => 'BEGIN of AcctLineType_70'
20583          ,p_level    => C_LEVEL_PROCEDURE
20584          ,p_module   => l_log_module);
20585 
20586 END IF;
20587 --
20588 l_component_type             := 'AMB_JLT';
20589 l_component_code             := 'COGS';
20590 l_component_type_code        := 'S';
20591 l_component_appl_id          :=  555;
20592 l_amb_context_code           := 'DEFAULT';
20593 l_entity_code                := 'INVENTORY';
20594 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
20595 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_TP';
20599 l_balance_type_code          := 'A';
20596 l_line_definition_owner_code := 'S';
20597 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT_TP';
20598 --
20600 l_segment                     := NULL;
20601 l_ccid                        := NULL;
20602 l_adr_transaction_coa_id      := NULL;
20603 l_adr_accounting_coa_id       := NULL;
20604 l_adr_flexfield_segment_code  := NULL;
20605 l_adr_flex_value_set_id       := NULL;
20606 l_adr_value_type_code         := NULL;
20607 l_adr_value_combination_id    := NULL;
20608 l_adr_value_segment_code      := NULL;
20609 
20610 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
20611 l_bflow_class_code           := '';    -- 4219869 Business Flow
20612 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
20613 l_budgetary_control_flag     := 'N';
20614 
20615 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
20616 l_bflow_applied_to_amt       := NULL; -- 5132302
20617 l_entered_amt_idx            := NULL;          -- 4262811
20618 l_accted_amt_idx             := NULL;          -- 4262811
20619 l_acc_rev_flag               := NULL;          -- 4262811
20620 l_accrual_line_num           := NULL;          -- 4262811
20621 l_tmp_amt                    := NULL;          -- 4262811
20622 --
20623  
20624 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20625     l_balance_type_code <> 'B' THEN
20626 IF NVL(p_source_2,'
20627 ') =  'COGS'
20628  THEN 
20629 
20630    --
20631    XLA_AE_LINES_PKG.SetNewLine;
20632 
20633    p_balance_type_code          := l_balance_type_code;
20634    -- set the flag so later we will know whether the gain loss line needs to be created
20635    
20636    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20637      p_actual_flag :='A';
20638    END IF;
20639 
20640    --
20641    -- bulk performance
20642    --
20643    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20644                                       p_header_num   => 0); -- 4262811
20645    --
20646    -- set accounting line options
20647    --
20648    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20649            p_natural_side_code          => 'D'
20650          , p_gain_or_loss_flag          => 'N'
20651          , p_gl_transfer_mode_code      => 'D'
20652          , p_acct_entry_type_code       => 'A'
20653          , p_switch_side_flag           => 'Y'
20654          , p_merge_duplicate_code       => 'W'
20655          );
20656    --
20657    l_acc_rev_natural_side_code := 'C';  -- 4262811
20658    -- 
20659    --
20660    -- set accounting line type info
20661    --
20662    xla_ae_lines_pkg.SetAcctLineType
20663       (p_component_type             => l_component_type
20664       ,p_event_type_code            => l_event_type_code
20665       ,p_line_definition_owner_code => l_line_definition_owner_code
20666       ,p_line_definition_code       => l_line_definition_code
20667       ,p_accounting_line_code       => l_component_code
20668       ,p_accounting_line_type_code  => l_component_type_code
20669       ,p_accounting_line_appl_id    => l_component_appl_id
20670       ,p_amb_context_code           => l_amb_context_code
20671       ,p_entity_code                => l_entity_code
20672       ,p_event_class_code           => l_event_class_code);
20673    --
20674    -- set accounting class
20675    --
20676    xla_ae_lines_pkg.SetAcctClass(
20677            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
20678          , p_ae_header_id           => l_ae_header_id
20679          );
20680 
20681    --
20682    -- set rounding class
20683    --
20684    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20685                       'COST_OF_GOODS_SOLD';
20686 
20687    --
20688    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20689    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20690    --
20691    -- bulk performance
20692    --
20693    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20694 
20695    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20696       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20697 
20698    -- 4955764
20699    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20700       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20701 
20702    -- 4458381 Public Sector Enh
20703    
20704    --
20705    -- set accounting attributes for the line type
20706    --
20707    l_entered_amt_idx := 3;
20708    l_accted_amt_idx  := 8;
20709    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20710    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
20711    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
20712    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
20713    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
20714    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
20715    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
20716    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
20717    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
20718    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
20722    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
20719    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
20720    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
20721    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
20723    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
20724    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
20725    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
20726 
20727    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20728    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20729 
20730    ---------------------------------------------------------------------------------------------------------------
20731    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20732    ---------------------------------------------------------------------------------------------------------------
20733    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20734 
20735    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20736    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20737 
20738    IF xla_accounting_cache_pkg.GetValueChar
20739          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20740          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20741    AND l_bflow_method_code = 'PRIOR_ENTRY'
20742 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20743    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20744          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20745        )
20746    THEN
20747          xla_ae_lines_pkg.BflowUpgEntry
20748            (p_business_method_code    => l_bflow_method_code
20749            ,p_business_class_code     => l_bflow_class_code
20750            ,p_balance_type            => l_balance_type_code);
20751    ELSE
20752       NULL;
20753 -- No business flow processing for business flow method of NONE.
20754    END IF;
20755 
20756    --
20757    -- call analytical criteria
20758    --
20759    
20760    --
20761    -- call description
20762    --
20763    -- No description or it is inherited.
20764    --
20765    -- call ADRs
20766    -- Bug 4922099
20767    --
20768    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20769         (NVL(l_actual_upg_option, 'N') = 'O') OR
20770         (NVL(l_enc_upg_option, 'N') = 'O')
20771       )
20772    THEN
20773    NULL;
20774    --
20775    --
20776    
20777   l_ccid := AcctDerRule_9(
20778            p_application_id           => p_application_id
20779          , p_ae_header_id             => l_ae_header_id 
20780 , p_source_1 => p_source_1
20781 , p_source_2 => p_source_2
20782          , x_transaction_coa_id       => l_adr_transaction_coa_id
20783          , x_accounting_coa_id        => l_adr_accounting_coa_id
20784          , x_value_type_code          => l_adr_value_type_code
20785          , p_side                     => 'NA'
20786    );
20787 
20788    xla_ae_lines_pkg.set_ccid(
20789     p_code_combination_id          => l_ccid
20790   , p_value_type_code              => l_adr_value_type_code
20791   , p_transaction_coa_id           => l_adr_transaction_coa_id
20792   , p_accounting_coa_id            => l_adr_accounting_coa_id
20793   , p_adr_code                     => 'COGS'
20794   , p_adr_type_code                => 'S'
20795   , p_component_type               => l_component_type
20796   , p_component_code               => l_component_code
20797   , p_component_type_code          => l_component_type_code
20798   , p_component_appl_id            => l_component_appl_id
20799   , p_amb_context_code             => l_amb_context_code
20800   , p_side                         => 'NA'
20801   );
20802 
20803 
20804    --
20805    --
20806    END IF;
20807    --
20808    -- Bug 4922099
20809    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20810           (NVL(l_enc_upg_option, 'N') = 'O')
20811         ) AND
20812         (l_bflow_method_code = 'PRIOR_ENTRY')
20813       )
20814    THEN
20815       IF
20816       --
20817       1 = 2
20818       --
20819       THEN
20820       xla_accounting_err_pkg.build_message
20821                                     (p_appli_s_name            => 'XLA'
20822                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20823                                     ,p_token_1                 => 'LINE_NUMBER'
20824                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20825                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20826                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20827                                                                              l_component_type
20828                                                                             ,l_component_code
20829                                                                             ,l_component_type_code
20830                                                                             ,l_component_appl_id
20831                                                                             ,l_amb_context_code
20832                                                                             ,l_entity_code
20836                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20833                                                                             ,l_event_class_code
20834                                                                            )
20835                                     ,p_token_3                 => 'OWNER'
20837                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20838                                                                           ,p_lookup_code    => l_component_type_code
20839                                                                          )
20840                                     ,p_token_4                 => 'PRODUCT_NAME'
20841                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20842                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20843                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20844                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20845                                     ,p_ae_header_id            =>  NULL
20846                                        );
20847 
20848         IF (C_LEVEL_ERROR>= g_log_level) THEN
20849                  trace
20850                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20851                       ,p_level    => C_LEVEL_ERROR
20852                       ,p_module   => l_log_module);
20853         END IF;
20854       END IF;
20855    END IF;
20856    --
20857    --
20858    ------------------------------------------------------------------------------------------------
20859    -- 4219869 Business Flow
20860    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20861    -- Prior Entry.  Currently, the following code is always generated.
20862    ------------------------------------------------------------------------------------------------
20863    XLA_AE_LINES_PKG.ValidateCurrentLine;
20864 
20865    ------------------------------------------------------------------------------------
20866    -- 4219869 Business Flow
20867    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20868    ------------------------------------------------------------------------------------
20869    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20870 
20871    ----------------------------------------------------------------------------------
20872    -- 4219869 Business Flow
20873    -- Update journal entry status -- Need to generate this within IF <condition>
20874    ----------------------------------------------------------------------------------
20875    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20876          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20877          ,p_balance_type_code => l_balance_type_code
20878          );
20879 
20880    -------------------------------------------------------------------------------------------
20881    -- 4262811 - Generate the Accrual Reversal lines
20882    -------------------------------------------------------------------------------------------
20883    BEGIN
20884       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20885                               (g_array_event(p_event_id).array_value_num('header_index'));
20886       IF l_acc_rev_flag IS NULL THEN
20887          l_acc_rev_flag := 'N';
20888       END IF;
20889    EXCEPTION
20890       WHEN OTHERS THEN
20891          l_acc_rev_flag := 'N';
20892    END;
20893    --
20894    IF (l_acc_rev_flag = 'Y') THEN
20895 
20896        -- 4645092  ------------------------------------------------------------------------------
20897        -- To allow MPA report to determine if it should generate report process
20898        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20899        ------------------------------------------------------------------------------------------
20900 
20901        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20902        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20903    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
20904    -- call ADRs
20905    -- Bug 4922099
20906    --
20907    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20908         (NVL(l_actual_upg_option, 'N') = 'O') OR
20909         (NVL(l_enc_upg_option, 'N') = 'O')
20910       )
20911    THEN
20912    NULL;
20913    --
20914    --
20915    
20916   l_ccid := AcctDerRule_9(
20917            p_application_id           => p_application_id
20918          , p_ae_header_id             => l_ae_header_id 
20919 , p_source_1 => p_source_1
20920 , p_source_2 => p_source_2
20921          , x_transaction_coa_id       => l_adr_transaction_coa_id
20922          , x_accounting_coa_id        => l_adr_accounting_coa_id
20923          , x_value_type_code          => l_adr_value_type_code
20924          , p_side                     => 'NA'
20925    );
20926 
20927    xla_ae_lines_pkg.set_ccid(
20928     p_code_combination_id          => l_ccid
20929   , p_value_type_code              => l_adr_value_type_code
20930   , p_transaction_coa_id           => l_adr_transaction_coa_id
20931   , p_accounting_coa_id            => l_adr_accounting_coa_id
20932   , p_adr_code                     => 'COGS'
20936   , p_component_type_code          => l_component_type_code
20933   , p_adr_type_code                => 'S'
20934   , p_component_type               => l_component_type
20935   , p_component_code               => l_component_code
20937   , p_component_appl_id            => l_component_appl_id
20938   , p_amb_context_code             => l_amb_context_code
20939   , p_side                         => 'NA'
20940   );
20941 
20942 
20943    --
20944    --
20945    END IF;
20946 
20947        --
20948        -- Update the line information that should be overwritten
20949        --
20950        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20951                                          p_header_num   => 1);
20952        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
20953 
20954        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20955 
20956        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
20957           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20958        END IF;
20959 
20960       --
20961       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20962       --
20963       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20964           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
20965       ELSE
20966           ---------------------------------------------------------------------------------------------------
20967           -- 4262811a Switch Sign
20968           ---------------------------------------------------------------------------------------------------
20969           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
20970           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20971                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20972           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20973                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20974           -- 5132302
20975           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20976                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20977 
20978       END IF;
20979 
20980       -- 4955764
20981       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20982       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20983 
20984 
20985       XLA_AE_LINES_PKG.ValidateCurrentLine;
20986       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20987 
20988       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20989                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20990                ,p_balance_type_code => l_balance_type_code);
20991 
20992    END IF;
20993 
20994    -----------------------------------------------------------------------------------------
20995    -- 4262811 Multiperiod Accounting
20996    -----------------------------------------------------------------------------------------
20997      -- No MPA option is assigned.
20998 
20999 
21000 END IF;
21001 END IF;
21002 --
21003 
21004 --
21005 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21006    trace
21007       (p_msg      => 'END of AcctLineType_70'
21008       ,p_level    => C_LEVEL_PROCEDURE
21009       ,p_module   => l_log_module);
21010 END IF;
21011 --
21012 EXCEPTION
21013   WHEN xla_exceptions_pkg.application_exception THEN
21014       RAISE;
21015   WHEN OTHERS THEN
21016        xla_exceptions_pkg.raise_message
21017            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_70');
21018 END AcctLineType_70;
21019 --
21020 
21021 ---------------------------------------
21022 --
21023 -- PRIVATE FUNCTION
21024 --         AcctLineType_71
21025 --
21026 ---------------------------------------
21027 PROCEDURE AcctLineType_71 (
21028   p_application_id        IN NUMBER
21029  ,p_event_id              IN NUMBER
21030  ,p_calculate_acctd_flag  IN VARCHAR2
21031  ,p_calculate_g_l_flag    IN VARCHAR2
21032  ,p_actual_flag           IN OUT VARCHAR2
21033  ,p_balance_type_code     OUT VARCHAR2
21034  ,p_gain_or_loss_ref      OUT VARCHAR2
21035  
21036 --Transaction Account
21037  , p_source_1            IN NUMBER
21038 --Journal Line Type
21039  , p_source_2            IN VARCHAR2
21040 --Entered Amount
21041  , p_source_3            IN NUMBER
21042 --First Distribution Identifier
21043  , p_source_5            IN NUMBER
21044 --Distribution Type
21045  , p_source_6            IN VARCHAR2
21046 --Currency Code
21047  , p_source_7            IN VARCHAR2
21048 --Currency Conversion Date
21049  , p_source_8            IN DATE
21050 --Currency Conversion Rate
21051  , p_source_9            IN NUMBER
21052 --Currency Conversion Type
21053  , p_source_10            IN VARCHAR2
21054 --Accounted Amount
21055  , p_source_11            IN NUMBER
21059 l_component_type              VARCHAR2(80);
21056 )
21057 IS
21058 
21060 l_component_code              VARCHAR2(30);
21061 l_component_type_code         VARCHAR2(1);
21062 l_component_appl_id           INTEGER;
21063 l_amb_context_code            VARCHAR2(30);
21064 l_entity_code                 VARCHAR2(30);
21065 l_event_class_code            VARCHAR2(30);
21066 l_ae_header_id                NUMBER;
21067 l_event_type_code             VARCHAR2(30);
21068 l_line_definition_code        VARCHAR2(30);
21069 l_line_definition_owner_code  VARCHAR2(1);
21070 --
21071 -- adr variables
21072 l_segment                     VARCHAR2(30);
21073 l_ccid                        NUMBER;
21074 l_adr_transaction_coa_id      NUMBER;
21075 l_adr_accounting_coa_id       NUMBER;
21076 l_adr_flexfield_segment_code  VARCHAR2(30);
21077 l_adr_flex_value_set_id       NUMBER;
21078 l_adr_value_type_code         VARCHAR2(30);
21079 l_adr_value_combination_id    NUMBER;
21080 l_adr_value_segment_code      VARCHAR2(30);
21081 
21082 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
21083 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
21084 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
21085 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
21086 
21087 -- 4262811 Variables ------------------------------------------------------------------------------------------
21088 l_entered_amt_idx             NUMBER;
21089 l_accted_amt_idx              NUMBER;
21090 l_acc_rev_flag                VARCHAR2(1);
21091 l_accrual_line_num            NUMBER;
21092 l_tmp_amt                     NUMBER;
21093 l_acc_rev_natural_side_code   VARCHAR2(1);
21094 
21095 l_num_entries                 NUMBER;
21096 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
21097 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
21098 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
21099 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21100 l_recog_line_1                NUMBER;
21101 l_recog_line_2                NUMBER;
21102 
21103 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21104 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21105 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21106 
21107 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21108 
21109 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21110 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21111 
21112 ---------------------------------------------------------------------------------------------------------------
21113 
21114 
21115 --
21116 -- bulk performance
21117 --
21118 l_balance_type_code           VARCHAR2(1);
21119 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21120 l_log_module                  VARCHAR2(240);
21121 
21122 --
21123 -- Upgrade strategy
21124 --
21125 l_actual_upg_option           VARCHAR2(1);
21126 l_enc_upg_option           VARCHAR2(1);
21127 
21128 --
21129 BEGIN
21130 --
21131 IF g_log_enabled THEN
21132       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_71';
21133 END IF;
21134 --
21135 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21136 
21137       trace
21138          (p_msg      => 'BEGIN of AcctLineType_71'
21139          ,p_level    => C_LEVEL_PROCEDURE
21140          ,p_module   => l_log_module);
21141 
21142 END IF;
21143 --
21144 l_component_type             := 'AMB_JLT';
21145 l_component_code             := 'COGS';
21146 l_component_type_code        := 'S';
21147 l_component_appl_id          :=  555;
21148 l_amb_context_code           := 'DEFAULT';
21149 l_entity_code                := 'ORDERMANAGEMENT';
21150 l_event_class_code           := 'SHIPPING';
21151 l_event_type_code            := 'COGS_RECOGNITION';
21152 l_line_definition_owner_code := 'S';
21153 l_line_definition_code       := 'COGS_RECOGNITION';
21154 --
21155 l_balance_type_code          := 'A';
21156 l_segment                     := NULL;
21157 l_ccid                        := NULL;
21158 l_adr_transaction_coa_id      := NULL;
21159 l_adr_accounting_coa_id       := NULL;
21160 l_adr_flexfield_segment_code  := NULL;
21161 l_adr_flex_value_set_id       := NULL;
21162 l_adr_value_type_code         := NULL;
21163 l_adr_value_combination_id    := NULL;
21164 l_adr_value_segment_code      := NULL;
21165 
21166 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
21167 l_bflow_class_code           := '';    -- 4219869 Business Flow
21168 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21169 l_budgetary_control_flag     := 'N';
21170 
21171 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21172 l_bflow_applied_to_amt       := NULL; -- 5132302
21173 l_entered_amt_idx            := NULL;          -- 4262811
21174 l_accted_amt_idx             := NULL;          -- 4262811
21175 l_acc_rev_flag               := NULL;          -- 4262811
21176 l_accrual_line_num           := NULL;          -- 4262811
21177 l_tmp_amt                    := NULL;          -- 4262811
21178 --
21179  
21180 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21181     l_balance_type_code <> 'B' THEN
21185 
21182 IF NVL(p_source_2,'
21183 ') =  'COGS'
21184  THEN 
21186    --
21187    XLA_AE_LINES_PKG.SetNewLine;
21188 
21189    p_balance_type_code          := l_balance_type_code;
21190    -- set the flag so later we will know whether the gain loss line needs to be created
21191    
21192    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21193      p_actual_flag :='A';
21194    END IF;
21195 
21196    --
21197    -- bulk performance
21198    --
21199    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21200                                       p_header_num   => 0); -- 4262811
21201    --
21202    -- set accounting line options
21203    --
21204    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21205            p_natural_side_code          => 'D'
21206          , p_gain_or_loss_flag          => 'N'
21207          , p_gl_transfer_mode_code      => 'D'
21208          , p_acct_entry_type_code       => 'A'
21209          , p_switch_side_flag           => 'Y'
21210          , p_merge_duplicate_code       => 'W'
21211          );
21212    --
21213    l_acc_rev_natural_side_code := 'C';  -- 4262811
21214    -- 
21215    --
21216    -- set accounting line type info
21217    --
21218    xla_ae_lines_pkg.SetAcctLineType
21219       (p_component_type             => l_component_type
21220       ,p_event_type_code            => l_event_type_code
21221       ,p_line_definition_owner_code => l_line_definition_owner_code
21222       ,p_line_definition_code       => l_line_definition_code
21223       ,p_accounting_line_code       => l_component_code
21224       ,p_accounting_line_type_code  => l_component_type_code
21225       ,p_accounting_line_appl_id    => l_component_appl_id
21226       ,p_amb_context_code           => l_amb_context_code
21227       ,p_entity_code                => l_entity_code
21228       ,p_event_class_code           => l_event_class_code);
21229    --
21230    -- set accounting class
21231    --
21232    xla_ae_lines_pkg.SetAcctClass(
21233            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
21234          , p_ae_header_id           => l_ae_header_id
21235          );
21236 
21237    --
21238    -- set rounding class
21239    --
21240    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21241                       'COST_OF_GOODS_SOLD';
21242 
21243    --
21244    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21245    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21246    --
21247    -- bulk performance
21248    --
21249    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21250 
21251    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21252       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21253 
21254    -- 4955764
21255    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21256       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21257 
21258    -- 4458381 Public Sector Enh
21259    
21260    --
21261    -- set accounting attributes for the line type
21262    --
21263    l_entered_amt_idx := 3;
21264    l_accted_amt_idx  := 8;
21265    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
21266    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
21267    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
21268    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
21269    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
21270    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
21271    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
21272    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
21273    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
21274    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
21275    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
21276    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
21277    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
21278    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
21279    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
21280    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
21281    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
21282 
21283    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21284    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21285 
21286    ---------------------------------------------------------------------------------------------------------------
21287    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21288    ---------------------------------------------------------------------------------------------------------------
21289    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21290 
21291    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21292    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21293 
21294    IF xla_accounting_cache_pkg.GetValueChar
21295          (p_source_code         => 'LEDGER_CATEGORY_CODE'
21299    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21296          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21297    AND l_bflow_method_code = 'PRIOR_ENTRY'
21298 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21300          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21301        )
21302    THEN
21303          xla_ae_lines_pkg.BflowUpgEntry
21304            (p_business_method_code    => l_bflow_method_code
21305            ,p_business_class_code     => l_bflow_class_code
21306            ,p_balance_type            => l_balance_type_code);
21307    ELSE
21308       NULL;
21309 -- No business flow processing for business flow method of NONE.
21310    END IF;
21311 
21312    --
21313    -- call analytical criteria
21314    --
21315    
21316    --
21317    -- call description
21318    --
21319    -- No description or it is inherited.
21320    --
21321    -- call ADRs
21322    -- Bug 4922099
21323    --
21324    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21325         (NVL(l_actual_upg_option, 'N') = 'O') OR
21326         (NVL(l_enc_upg_option, 'N') = 'O')
21327       )
21328    THEN
21329    NULL;
21330    --
21331    --
21332    
21333   l_ccid := AcctDerRule_9(
21334            p_application_id           => p_application_id
21335          , p_ae_header_id             => l_ae_header_id 
21336 , p_source_1 => p_source_1
21337 , p_source_2 => p_source_2
21338          , x_transaction_coa_id       => l_adr_transaction_coa_id
21339          , x_accounting_coa_id        => l_adr_accounting_coa_id
21340          , x_value_type_code          => l_adr_value_type_code
21341          , p_side                     => 'NA'
21342    );
21343 
21344    xla_ae_lines_pkg.set_ccid(
21345     p_code_combination_id          => l_ccid
21346   , p_value_type_code              => l_adr_value_type_code
21347   , p_transaction_coa_id           => l_adr_transaction_coa_id
21348   , p_accounting_coa_id            => l_adr_accounting_coa_id
21349   , p_adr_code                     => 'COGS'
21350   , p_adr_type_code                => 'S'
21351   , p_component_type               => l_component_type
21352   , p_component_code               => l_component_code
21353   , p_component_type_code          => l_component_type_code
21354   , p_component_appl_id            => l_component_appl_id
21355   , p_amb_context_code             => l_amb_context_code
21356   , p_side                         => 'NA'
21357   );
21358 
21359 
21360    --
21361    --
21362    END IF;
21363    --
21364    -- Bug 4922099
21365    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21366           (NVL(l_enc_upg_option, 'N') = 'O')
21367         ) AND
21368         (l_bflow_method_code = 'PRIOR_ENTRY')
21369       )
21370    THEN
21371       IF
21372       --
21373       1 = 2
21374       --
21375       THEN
21376       xla_accounting_err_pkg.build_message
21377                                     (p_appli_s_name            => 'XLA'
21378                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21379                                     ,p_token_1                 => 'LINE_NUMBER'
21380                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
21381                                     ,p_token_2                 => 'LINE_TYPE_NAME'
21382                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
21383                                                                              l_component_type
21384                                                                             ,l_component_code
21385                                                                             ,l_component_type_code
21386                                                                             ,l_component_appl_id
21387                                                                             ,l_amb_context_code
21388                                                                             ,l_entity_code
21389                                                                             ,l_event_class_code
21390                                                                            )
21391                                     ,p_token_3                 => 'OWNER'
21392                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
21393                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
21394                                                                           ,p_lookup_code    => l_component_type_code
21395                                                                          )
21396                                     ,p_token_4                 => 'PRODUCT_NAME'
21397                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21398                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21399                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21400                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21401                                     ,p_ae_header_id            =>  NULL
21402                                        );
21403 
21407                       ,p_level    => C_LEVEL_ERROR
21404         IF (C_LEVEL_ERROR>= g_log_level) THEN
21405                  trace
21406                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21408                       ,p_module   => l_log_module);
21409         END IF;
21410       END IF;
21411    END IF;
21412    --
21413    --
21414    ------------------------------------------------------------------------------------------------
21415    -- 4219869 Business Flow
21416    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21417    -- Prior Entry.  Currently, the following code is always generated.
21418    ------------------------------------------------------------------------------------------------
21419    XLA_AE_LINES_PKG.ValidateCurrentLine;
21420 
21421    ------------------------------------------------------------------------------------
21422    -- 4219869 Business Flow
21423    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21424    ------------------------------------------------------------------------------------
21425    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21426 
21427    ----------------------------------------------------------------------------------
21428    -- 4219869 Business Flow
21429    -- Update journal entry status -- Need to generate this within IF <condition>
21430    ----------------------------------------------------------------------------------
21431    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21432          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21433          ,p_balance_type_code => l_balance_type_code
21434          );
21435 
21436    -------------------------------------------------------------------------------------------
21437    -- 4262811 - Generate the Accrual Reversal lines
21438    -------------------------------------------------------------------------------------------
21439    BEGIN
21440       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21441                               (g_array_event(p_event_id).array_value_num('header_index'));
21442       IF l_acc_rev_flag IS NULL THEN
21443          l_acc_rev_flag := 'N';
21444       END IF;
21445    EXCEPTION
21446       WHEN OTHERS THEN
21447          l_acc_rev_flag := 'N';
21448    END;
21449    --
21450    IF (l_acc_rev_flag = 'Y') THEN
21451 
21452        -- 4645092  ------------------------------------------------------------------------------
21453        -- To allow MPA report to determine if it should generate report process
21454        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21455        ------------------------------------------------------------------------------------------
21456 
21457        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21458        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21459    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
21460    -- call ADRs
21461    -- Bug 4922099
21462    --
21463    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21464         (NVL(l_actual_upg_option, 'N') = 'O') OR
21465         (NVL(l_enc_upg_option, 'N') = 'O')
21466       )
21467    THEN
21468    NULL;
21469    --
21470    --
21471    
21472   l_ccid := AcctDerRule_9(
21473            p_application_id           => p_application_id
21474          , p_ae_header_id             => l_ae_header_id 
21475 , p_source_1 => p_source_1
21476 , p_source_2 => p_source_2
21477          , x_transaction_coa_id       => l_adr_transaction_coa_id
21478          , x_accounting_coa_id        => l_adr_accounting_coa_id
21479          , x_value_type_code          => l_adr_value_type_code
21480          , p_side                     => 'NA'
21481    );
21482 
21483    xla_ae_lines_pkg.set_ccid(
21484     p_code_combination_id          => l_ccid
21485   , p_value_type_code              => l_adr_value_type_code
21486   , p_transaction_coa_id           => l_adr_transaction_coa_id
21487   , p_accounting_coa_id            => l_adr_accounting_coa_id
21488   , p_adr_code                     => 'COGS'
21489   , p_adr_type_code                => 'S'
21490   , p_component_type               => l_component_type
21491   , p_component_code               => l_component_code
21492   , p_component_type_code          => l_component_type_code
21493   , p_component_appl_id            => l_component_appl_id
21494   , p_amb_context_code             => l_amb_context_code
21495   , p_side                         => 'NA'
21496   );
21497 
21498 
21499    --
21500    --
21501    END IF;
21502 
21503        --
21504        -- Update the line information that should be overwritten
21505        --
21506        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
21507                                          p_header_num   => 1);
21508        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
21509 
21510        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
21511 
21512        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
21513           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
21514        END IF;
21515 
21516       --
21517       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
21518       --
21522           ---------------------------------------------------------------------------------------------------
21519       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
21520           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
21521       ELSE
21523           -- 4262811a Switch Sign
21524           ---------------------------------------------------------------------------------------------------
21525           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
21526           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21527                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21528           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21529                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21530           -- 5132302
21531           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
21532                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21533 
21534       END IF;
21535 
21536       -- 4955764
21537       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21538       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
21539 
21540 
21541       XLA_AE_LINES_PKG.ValidateCurrentLine;
21542       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21543 
21544       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21545                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
21546                ,p_balance_type_code => l_balance_type_code);
21547 
21548    END IF;
21549 
21550    -----------------------------------------------------------------------------------------
21551    -- 4262811 Multiperiod Accounting
21552    -----------------------------------------------------------------------------------------
21553      -- No MPA option is assigned.
21554 
21555 
21556 END IF;
21557 END IF;
21558 --
21559 
21560 --
21561 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21562    trace
21563       (p_msg      => 'END of AcctLineType_71'
21564       ,p_level    => C_LEVEL_PROCEDURE
21565       ,p_module   => l_log_module);
21566 END IF;
21567 --
21568 EXCEPTION
21569   WHEN xla_exceptions_pkg.application_exception THEN
21570       RAISE;
21571   WHEN OTHERS THEN
21572        xla_exceptions_pkg.raise_message
21573            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_71');
21574 END AcctLineType_71;
21575 --
21576 
21577 ---------------------------------------
21578 --
21579 -- PRIVATE FUNCTION
21580 --         AcctLineType_72
21581 --
21582 ---------------------------------------
21583 PROCEDURE AcctLineType_72 (
21584   p_application_id        IN NUMBER
21585  ,p_event_id              IN NUMBER
21586  ,p_calculate_acctd_flag  IN VARCHAR2
21587  ,p_calculate_g_l_flag    IN VARCHAR2
21588  ,p_actual_flag           IN OUT VARCHAR2
21589  ,p_balance_type_code     OUT VARCHAR2
21590  ,p_gain_or_loss_ref      OUT VARCHAR2
21591  
21592 --Transaction Account
21593  , p_source_1            IN NUMBER
21594 --Journal Line Type
21595  , p_source_2            IN VARCHAR2
21596 --Entered Amount
21597  , p_source_3            IN NUMBER
21598 --First Distribution Identifier
21599  , p_source_5            IN NUMBER
21600 --Distribution Type
21601  , p_source_6            IN VARCHAR2
21602 --Currency Code
21603  , p_source_7            IN VARCHAR2
21604 --Currency Conversion Date
21605  , p_source_8            IN DATE
21606 --Currency Conversion Rate
21607  , p_source_9            IN NUMBER
21608 --Currency Conversion Type
21609  , p_source_10            IN VARCHAR2
21610 --Accounted Amount
21611  , p_source_11            IN NUMBER
21612 )
21613 IS
21614 
21615 l_component_type              VARCHAR2(80);
21616 l_component_code              VARCHAR2(30);
21617 l_component_type_code         VARCHAR2(1);
21618 l_component_appl_id           INTEGER;
21619 l_amb_context_code            VARCHAR2(30);
21620 l_entity_code                 VARCHAR2(30);
21621 l_event_class_code            VARCHAR2(30);
21622 l_ae_header_id                NUMBER;
21623 l_event_type_code             VARCHAR2(30);
21624 l_line_definition_code        VARCHAR2(30);
21625 l_line_definition_owner_code  VARCHAR2(1);
21626 --
21627 -- adr variables
21628 l_segment                     VARCHAR2(30);
21629 l_ccid                        NUMBER;
21630 l_adr_transaction_coa_id      NUMBER;
21631 l_adr_accounting_coa_id       NUMBER;
21632 l_adr_flexfield_segment_code  VARCHAR2(30);
21633 l_adr_flex_value_set_id       NUMBER;
21634 l_adr_value_type_code         VARCHAR2(30);
21635 l_adr_value_combination_id    NUMBER;
21636 l_adr_value_segment_code      VARCHAR2(30);
21637 
21638 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
21639 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
21640 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
21641 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
21642 
21646 l_acc_rev_flag                VARCHAR2(1);
21643 -- 4262811 Variables ------------------------------------------------------------------------------------------
21644 l_entered_amt_idx             NUMBER;
21645 l_accted_amt_idx              NUMBER;
21647 l_accrual_line_num            NUMBER;
21648 l_tmp_amt                     NUMBER;
21649 l_acc_rev_natural_side_code   VARCHAR2(1);
21650 
21651 l_num_entries                 NUMBER;
21652 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
21653 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
21654 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
21655 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21656 l_recog_line_1                NUMBER;
21657 l_recog_line_2                NUMBER;
21658 
21659 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21660 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21661 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21662 
21663 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21664 
21665 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21666 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21667 
21668 ---------------------------------------------------------------------------------------------------------------
21669 
21670 
21671 --
21672 -- bulk performance
21673 --
21674 l_balance_type_code           VARCHAR2(1);
21675 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21676 l_log_module                  VARCHAR2(240);
21677 
21678 --
21679 -- Upgrade strategy
21680 --
21681 l_actual_upg_option           VARCHAR2(1);
21682 l_enc_upg_option           VARCHAR2(1);
21683 
21684 --
21685 BEGIN
21686 --
21687 IF g_log_enabled THEN
21688       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_72';
21689 END IF;
21690 --
21691 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21692 
21693       trace
21694          (p_msg      => 'BEGIN of AcctLineType_72'
21695          ,p_level    => C_LEVEL_PROCEDURE
21696          ,p_module   => l_log_module);
21697 
21698 END IF;
21699 --
21700 l_component_type             := 'AMB_JLT';
21701 l_component_code             := 'COGS';
21702 l_component_type_code        := 'S';
21703 l_component_appl_id          :=  555;
21704 l_amb_context_code           := 'DEFAULT';
21705 l_entity_code                := 'ORDERMANAGEMENT';
21706 l_event_class_code           := 'RMA';
21707 l_event_type_code            := 'RMA_ALL';
21708 l_line_definition_owner_code := 'S';
21709 l_line_definition_code       := 'RMA';
21710 --
21711 l_balance_type_code          := 'A';
21712 l_segment                     := NULL;
21713 l_ccid                        := NULL;
21714 l_adr_transaction_coa_id      := NULL;
21715 l_adr_accounting_coa_id       := NULL;
21716 l_adr_flexfield_segment_code  := NULL;
21717 l_adr_flex_value_set_id       := NULL;
21718 l_adr_value_type_code         := NULL;
21719 l_adr_value_combination_id    := NULL;
21720 l_adr_value_segment_code      := NULL;
21721 
21722 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
21723 l_bflow_class_code           := '';    -- 4219869 Business Flow
21724 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21725 l_budgetary_control_flag     := 'N';
21726 
21727 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21728 l_bflow_applied_to_amt       := NULL; -- 5132302
21729 l_entered_amt_idx            := NULL;          -- 4262811
21730 l_accted_amt_idx             := NULL;          -- 4262811
21731 l_acc_rev_flag               := NULL;          -- 4262811
21732 l_accrual_line_num           := NULL;          -- 4262811
21733 l_tmp_amt                    := NULL;          -- 4262811
21734 --
21735  
21736 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21737     l_balance_type_code <> 'B' THEN
21738 IF NVL(p_source_2,'
21739 ') =  'COGS'
21740  THEN 
21741 
21742    --
21743    XLA_AE_LINES_PKG.SetNewLine;
21744 
21745    p_balance_type_code          := l_balance_type_code;
21746    -- set the flag so later we will know whether the gain loss line needs to be created
21747    
21748    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21749      p_actual_flag :='A';
21750    END IF;
21751 
21752    --
21753    -- bulk performance
21754    --
21755    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21756                                       p_header_num   => 0); -- 4262811
21757    --
21758    -- set accounting line options
21759    --
21760    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21761            p_natural_side_code          => 'D'
21762          , p_gain_or_loss_flag          => 'N'
21763          , p_gl_transfer_mode_code      => 'D'
21764          , p_acct_entry_type_code       => 'A'
21765          , p_switch_side_flag           => 'Y'
21766          , p_merge_duplicate_code       => 'W'
21767          );
21768    --
21769    l_acc_rev_natural_side_code := 'C';  -- 4262811
21770    -- 
21771    --
21772    -- set accounting line type info
21773    --
21774    xla_ae_lines_pkg.SetAcctLineType
21775       (p_component_type             => l_component_type
21779       ,p_accounting_line_code       => l_component_code
21776       ,p_event_type_code            => l_event_type_code
21777       ,p_line_definition_owner_code => l_line_definition_owner_code
21778       ,p_line_definition_code       => l_line_definition_code
21780       ,p_accounting_line_type_code  => l_component_type_code
21781       ,p_accounting_line_appl_id    => l_component_appl_id
21782       ,p_amb_context_code           => l_amb_context_code
21783       ,p_entity_code                => l_entity_code
21784       ,p_event_class_code           => l_event_class_code);
21785    --
21786    -- set accounting class
21787    --
21788    xla_ae_lines_pkg.SetAcctClass(
21789            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
21790          , p_ae_header_id           => l_ae_header_id
21791          );
21792 
21793    --
21794    -- set rounding class
21795    --
21796    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21797                       'COST_OF_GOODS_SOLD';
21798 
21799    --
21800    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21801    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21802    --
21803    -- bulk performance
21804    --
21805    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21806 
21807    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21808       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21809 
21810    -- 4955764
21811    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21812       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21813 
21814    -- 4458381 Public Sector Enh
21815    
21816    --
21817    -- set accounting attributes for the line type
21818    --
21819    l_entered_amt_idx := 3;
21820    l_accted_amt_idx  := 8;
21821    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
21822    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
21823    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
21824    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
21825    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
21826    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
21827    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
21828    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
21829    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
21830    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
21831    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
21832    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
21833    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
21834    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
21835    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
21836    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
21837    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
21838 
21839    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21840    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21841 
21842    ---------------------------------------------------------------------------------------------------------------
21843    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21844    ---------------------------------------------------------------------------------------------------------------
21845    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21846 
21847    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21848    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21849 
21850    IF xla_accounting_cache_pkg.GetValueChar
21851          (p_source_code         => 'LEDGER_CATEGORY_CODE'
21852          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21853    AND l_bflow_method_code = 'PRIOR_ENTRY'
21854 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21855    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21856          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21857        )
21858    THEN
21859          xla_ae_lines_pkg.BflowUpgEntry
21860            (p_business_method_code    => l_bflow_method_code
21861            ,p_business_class_code     => l_bflow_class_code
21862            ,p_balance_type            => l_balance_type_code);
21863    ELSE
21864       NULL;
21865 -- No business flow processing for business flow method of NONE.
21866    END IF;
21867 
21868    --
21869    -- call analytical criteria
21870    --
21871    
21872    --
21873    -- call description
21874    --
21875    -- No description or it is inherited.
21876    --
21877    -- call ADRs
21878    -- Bug 4922099
21879    --
21880    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21881         (NVL(l_actual_upg_option, 'N') = 'O') OR
21882         (NVL(l_enc_upg_option, 'N') = 'O')
21883       )
21884    THEN
21885    NULL;
21886    --
21887    --
21888    
21889   l_ccid := AcctDerRule_9(
21893 , p_source_2 => p_source_2
21890            p_application_id           => p_application_id
21891          , p_ae_header_id             => l_ae_header_id 
21892 , p_source_1 => p_source_1
21894          , x_transaction_coa_id       => l_adr_transaction_coa_id
21895          , x_accounting_coa_id        => l_adr_accounting_coa_id
21896          , x_value_type_code          => l_adr_value_type_code
21897          , p_side                     => 'NA'
21898    );
21899 
21900    xla_ae_lines_pkg.set_ccid(
21901     p_code_combination_id          => l_ccid
21902   , p_value_type_code              => l_adr_value_type_code
21903   , p_transaction_coa_id           => l_adr_transaction_coa_id
21904   , p_accounting_coa_id            => l_adr_accounting_coa_id
21905   , p_adr_code                     => 'COGS'
21906   , p_adr_type_code                => 'S'
21907   , p_component_type               => l_component_type
21908   , p_component_code               => l_component_code
21909   , p_component_type_code          => l_component_type_code
21910   , p_component_appl_id            => l_component_appl_id
21911   , p_amb_context_code             => l_amb_context_code
21912   , p_side                         => 'NA'
21913   );
21914 
21915 
21916    --
21917    --
21918    END IF;
21919    --
21920    -- Bug 4922099
21921    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21922           (NVL(l_enc_upg_option, 'N') = 'O')
21923         ) AND
21924         (l_bflow_method_code = 'PRIOR_ENTRY')
21925       )
21926    THEN
21927       IF
21928       --
21929       1 = 2
21930       --
21931       THEN
21932       xla_accounting_err_pkg.build_message
21933                                     (p_appli_s_name            => 'XLA'
21934                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21935                                     ,p_token_1                 => 'LINE_NUMBER'
21936                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
21937                                     ,p_token_2                 => 'LINE_TYPE_NAME'
21938                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
21939                                                                              l_component_type
21940                                                                             ,l_component_code
21941                                                                             ,l_component_type_code
21942                                                                             ,l_component_appl_id
21943                                                                             ,l_amb_context_code
21944                                                                             ,l_entity_code
21945                                                                             ,l_event_class_code
21946                                                                            )
21947                                     ,p_token_3                 => 'OWNER'
21948                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
21949                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
21950                                                                           ,p_lookup_code    => l_component_type_code
21951                                                                          )
21952                                     ,p_token_4                 => 'PRODUCT_NAME'
21953                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21954                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21955                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21956                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21957                                     ,p_ae_header_id            =>  NULL
21958                                        );
21959 
21960         IF (C_LEVEL_ERROR>= g_log_level) THEN
21961                  trace
21962                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21963                       ,p_level    => C_LEVEL_ERROR
21964                       ,p_module   => l_log_module);
21965         END IF;
21966       END IF;
21967    END IF;
21968    --
21969    --
21970    ------------------------------------------------------------------------------------------------
21971    -- 4219869 Business Flow
21972    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21973    -- Prior Entry.  Currently, the following code is always generated.
21974    ------------------------------------------------------------------------------------------------
21975    XLA_AE_LINES_PKG.ValidateCurrentLine;
21976 
21977    ------------------------------------------------------------------------------------
21978    -- 4219869 Business Flow
21979    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21980    ------------------------------------------------------------------------------------
21981    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21982 
21983    ----------------------------------------------------------------------------------
21984    -- 4219869 Business Flow
21985    -- Update journal entry status -- Need to generate this within IF <condition>
21989          ,p_balance_type_code => l_balance_type_code
21986    ----------------------------------------------------------------------------------
21987    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21988          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21990          );
21991 
21992    -------------------------------------------------------------------------------------------
21993    -- 4262811 - Generate the Accrual Reversal lines
21994    -------------------------------------------------------------------------------------------
21995    BEGIN
21996       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21997                               (g_array_event(p_event_id).array_value_num('header_index'));
21998       IF l_acc_rev_flag IS NULL THEN
21999          l_acc_rev_flag := 'N';
22000       END IF;
22001    EXCEPTION
22002       WHEN OTHERS THEN
22003          l_acc_rev_flag := 'N';
22004    END;
22005    --
22006    IF (l_acc_rev_flag = 'Y') THEN
22007 
22008        -- 4645092  ------------------------------------------------------------------------------
22009        -- To allow MPA report to determine if it should generate report process
22010        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22011        ------------------------------------------------------------------------------------------
22012 
22013        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22014        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22015    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
22016    -- call ADRs
22017    -- Bug 4922099
22018    --
22019    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22020         (NVL(l_actual_upg_option, 'N') = 'O') OR
22021         (NVL(l_enc_upg_option, 'N') = 'O')
22022       )
22023    THEN
22024    NULL;
22025    --
22026    --
22027    
22028   l_ccid := AcctDerRule_9(
22029            p_application_id           => p_application_id
22030          , p_ae_header_id             => l_ae_header_id 
22031 , p_source_1 => p_source_1
22032 , p_source_2 => p_source_2
22033          , x_transaction_coa_id       => l_adr_transaction_coa_id
22034          , x_accounting_coa_id        => l_adr_accounting_coa_id
22035          , x_value_type_code          => l_adr_value_type_code
22036          , p_side                     => 'NA'
22037    );
22038 
22039    xla_ae_lines_pkg.set_ccid(
22040     p_code_combination_id          => l_ccid
22041   , p_value_type_code              => l_adr_value_type_code
22042   , p_transaction_coa_id           => l_adr_transaction_coa_id
22043   , p_accounting_coa_id            => l_adr_accounting_coa_id
22044   , p_adr_code                     => 'COGS'
22045   , p_adr_type_code                => 'S'
22046   , p_component_type               => l_component_type
22047   , p_component_code               => l_component_code
22048   , p_component_type_code          => l_component_type_code
22049   , p_component_appl_id            => l_component_appl_id
22050   , p_amb_context_code             => l_amb_context_code
22051   , p_side                         => 'NA'
22052   );
22053 
22054 
22055    --
22056    --
22057    END IF;
22058 
22059        --
22060        -- Update the line information that should be overwritten
22061        --
22062        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22063                                          p_header_num   => 1);
22064        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22065 
22066        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22067 
22068        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22069           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22070        END IF;
22071 
22072       --
22073       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22074       --
22075       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22076           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22077       ELSE
22078           ---------------------------------------------------------------------------------------------------
22079           -- 4262811a Switch Sign
22080           ---------------------------------------------------------------------------------------------------
22081           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22082           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22083                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22084           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22085                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22086           -- 5132302
22087           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22088                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22089 
22090       END IF;
22091 
22092       -- 4955764
22096 
22093       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22094       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22095 
22097       XLA_AE_LINES_PKG.ValidateCurrentLine;
22098       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22099 
22100       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22101                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22102                ,p_balance_type_code => l_balance_type_code);
22103 
22104    END IF;
22105 
22106    -----------------------------------------------------------------------------------------
22107    -- 4262811 Multiperiod Accounting
22108    -----------------------------------------------------------------------------------------
22109      -- No MPA option is assigned.
22110 
22111 
22112 END IF;
22113 END IF;
22114 --
22115 
22116 --
22117 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22118    trace
22119       (p_msg      => 'END of AcctLineType_72'
22120       ,p_level    => C_LEVEL_PROCEDURE
22121       ,p_module   => l_log_module);
22122 END IF;
22123 --
22124 EXCEPTION
22125   WHEN xla_exceptions_pkg.application_exception THEN
22126       RAISE;
22127   WHEN OTHERS THEN
22128        xla_exceptions_pkg.raise_message
22129            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_72');
22130 END AcctLineType_72;
22131 --
22132 
22133 ---------------------------------------
22134 --
22135 -- PRIVATE FUNCTION
22136 --         AcctLineType_73
22137 --
22138 ---------------------------------------
22139 PROCEDURE AcctLineType_73 (
22140   p_application_id        IN NUMBER
22141  ,p_event_id              IN NUMBER
22142  ,p_calculate_acctd_flag  IN VARCHAR2
22143  ,p_calculate_g_l_flag    IN VARCHAR2
22144  ,p_actual_flag           IN OUT VARCHAR2
22145  ,p_balance_type_code     OUT VARCHAR2
22146  ,p_gain_or_loss_ref      OUT VARCHAR2
22147  
22148 --Transaction Account
22149  , p_source_1            IN NUMBER
22150 --Journal Line Type
22151  , p_source_2            IN VARCHAR2
22152 --Entered Amount
22153  , p_source_3            IN NUMBER
22154 --First Distribution Identifier
22155  , p_source_5            IN NUMBER
22156 --Distribution Type
22157  , p_source_6            IN VARCHAR2
22158 --Currency Code
22159  , p_source_7            IN VARCHAR2
22160 --Currency Conversion Date
22161  , p_source_8            IN DATE
22162 --Currency Conversion Rate
22163  , p_source_9            IN NUMBER
22164 --Currency Conversion Type
22165  , p_source_10            IN VARCHAR2
22166 --Accounted Amount
22167  , p_source_11            IN NUMBER
22168 )
22169 IS
22170 
22171 l_component_type              VARCHAR2(80);
22172 l_component_code              VARCHAR2(30);
22173 l_component_type_code         VARCHAR2(1);
22174 l_component_appl_id           INTEGER;
22175 l_amb_context_code            VARCHAR2(30);
22176 l_entity_code                 VARCHAR2(30);
22177 l_event_class_code            VARCHAR2(30);
22178 l_ae_header_id                NUMBER;
22179 l_event_type_code             VARCHAR2(30);
22180 l_line_definition_code        VARCHAR2(30);
22181 l_line_definition_owner_code  VARCHAR2(1);
22182 --
22183 -- adr variables
22184 l_segment                     VARCHAR2(30);
22185 l_ccid                        NUMBER;
22186 l_adr_transaction_coa_id      NUMBER;
22187 l_adr_accounting_coa_id       NUMBER;
22188 l_adr_flexfield_segment_code  VARCHAR2(30);
22189 l_adr_flex_value_set_id       NUMBER;
22190 l_adr_value_type_code         VARCHAR2(30);
22191 l_adr_value_combination_id    NUMBER;
22192 l_adr_value_segment_code      VARCHAR2(30);
22193 
22194 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22195 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22196 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22197 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22198 
22199 -- 4262811 Variables ------------------------------------------------------------------------------------------
22200 l_entered_amt_idx             NUMBER;
22201 l_accted_amt_idx              NUMBER;
22202 l_acc_rev_flag                VARCHAR2(1);
22203 l_accrual_line_num            NUMBER;
22204 l_tmp_amt                     NUMBER;
22205 l_acc_rev_natural_side_code   VARCHAR2(1);
22206 
22207 l_num_entries                 NUMBER;
22208 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22209 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22210 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22211 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22212 l_recog_line_1                NUMBER;
22213 l_recog_line_2                NUMBER;
22214 
22215 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22216 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22217 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22218 
22219 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22220 
22221 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22222 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22223 
22227 --
22224 ---------------------------------------------------------------------------------------------------------------
22225 
22226 
22228 -- bulk performance
22229 --
22230 l_balance_type_code           VARCHAR2(1);
22231 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22232 l_log_module                  VARCHAR2(240);
22233 
22234 --
22235 -- Upgrade strategy
22236 --
22237 l_actual_upg_option           VARCHAR2(1);
22238 l_enc_upg_option           VARCHAR2(1);
22239 
22240 --
22241 BEGIN
22242 --
22243 IF g_log_enabled THEN
22244       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_73';
22245 END IF;
22246 --
22247 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22248 
22249       trace
22250          (p_msg      => 'BEGIN of AcctLineType_73'
22251          ,p_level    => C_LEVEL_PROCEDURE
22252          ,p_module   => l_log_module);
22253 
22254 END IF;
22255 --
22256 l_component_type             := 'AMB_JLT';
22257 l_component_code             := 'COGS';
22258 l_component_type_code        := 'S';
22259 l_component_appl_id          :=  555;
22260 l_amb_context_code           := 'DEFAULT';
22261 l_entity_code                := 'INVENTORY';
22262 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
22263 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_TP';
22264 l_line_definition_owner_code := 'S';
22265 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP_TP';
22266 --
22267 l_balance_type_code          := 'A';
22268 l_segment                     := NULL;
22269 l_ccid                        := NULL;
22270 l_adr_transaction_coa_id      := NULL;
22271 l_adr_accounting_coa_id       := NULL;
22272 l_adr_flexfield_segment_code  := NULL;
22273 l_adr_flex_value_set_id       := NULL;
22274 l_adr_value_type_code         := NULL;
22275 l_adr_value_combination_id    := NULL;
22276 l_adr_value_segment_code      := NULL;
22277 
22278 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
22279 l_bflow_class_code           := '';    -- 4219869 Business Flow
22280 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
22281 l_budgetary_control_flag     := 'N';
22282 
22283 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
22284 l_bflow_applied_to_amt       := NULL; -- 5132302
22285 l_entered_amt_idx            := NULL;          -- 4262811
22286 l_accted_amt_idx             := NULL;          -- 4262811
22287 l_acc_rev_flag               := NULL;          -- 4262811
22288 l_accrual_line_num           := NULL;          -- 4262811
22289 l_tmp_amt                    := NULL;          -- 4262811
22290 --
22291  
22292 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22293     l_balance_type_code <> 'B' THEN
22294 IF NVL(p_source_2,'
22295 ') =  'COGS'
22296  THEN 
22297 
22298    --
22299    XLA_AE_LINES_PKG.SetNewLine;
22300 
22301    p_balance_type_code          := l_balance_type_code;
22302    -- set the flag so later we will know whether the gain loss line needs to be created
22303    
22304    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22305      p_actual_flag :='A';
22306    END IF;
22307 
22308    --
22309    -- bulk performance
22310    --
22311    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22312                                       p_header_num   => 0); -- 4262811
22313    --
22314    -- set accounting line options
22315    --
22316    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22317            p_natural_side_code          => 'D'
22318          , p_gain_or_loss_flag          => 'N'
22319          , p_gl_transfer_mode_code      => 'D'
22320          , p_acct_entry_type_code       => 'A'
22321          , p_switch_side_flag           => 'Y'
22322          , p_merge_duplicate_code       => 'W'
22323          );
22324    --
22325    l_acc_rev_natural_side_code := 'C';  -- 4262811
22326    -- 
22327    --
22328    -- set accounting line type info
22329    --
22330    xla_ae_lines_pkg.SetAcctLineType
22331       (p_component_type             => l_component_type
22332       ,p_event_type_code            => l_event_type_code
22333       ,p_line_definition_owner_code => l_line_definition_owner_code
22334       ,p_line_definition_code       => l_line_definition_code
22335       ,p_accounting_line_code       => l_component_code
22336       ,p_accounting_line_type_code  => l_component_type_code
22337       ,p_accounting_line_appl_id    => l_component_appl_id
22338       ,p_amb_context_code           => l_amb_context_code
22339       ,p_entity_code                => l_entity_code
22340       ,p_event_class_code           => l_event_class_code);
22341    --
22342    -- set accounting class
22343    --
22344    xla_ae_lines_pkg.SetAcctClass(
22345            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
22346          , p_ae_header_id           => l_ae_header_id
22347          );
22348 
22349    --
22350    -- set rounding class
22351    --
22352    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22353                       'COST_OF_GOODS_SOLD';
22354 
22355    --
22356    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22357    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22358    --
22359    -- bulk performance
22360    --
22364       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22361    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22362 
22363    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22365 
22366    -- 4955764
22367    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22368       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22369 
22370    -- 4458381 Public Sector Enh
22371    
22372    --
22373    -- set accounting attributes for the line type
22374    --
22375    l_entered_amt_idx := 3;
22376    l_accted_amt_idx  := 8;
22377    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
22378    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
22379    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
22380    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
22381    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
22382    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
22383    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
22384    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
22385    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
22386    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
22387    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
22388    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
22389    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
22390    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
22391    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
22392    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
22393    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
22394 
22395    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22396    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22397 
22398    ---------------------------------------------------------------------------------------------------------------
22399    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22400    ---------------------------------------------------------------------------------------------------------------
22401    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22402 
22403    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22404    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22405 
22406    IF xla_accounting_cache_pkg.GetValueChar
22407          (p_source_code         => 'LEDGER_CATEGORY_CODE'
22408          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22409    AND l_bflow_method_code = 'PRIOR_ENTRY'
22410 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22411    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22412          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22413        )
22414    THEN
22415          xla_ae_lines_pkg.BflowUpgEntry
22416            (p_business_method_code    => l_bflow_method_code
22417            ,p_business_class_code     => l_bflow_class_code
22418            ,p_balance_type            => l_balance_type_code);
22419    ELSE
22420       NULL;
22421 -- No business flow processing for business flow method of NONE.
22422    END IF;
22423 
22424    --
22425    -- call analytical criteria
22426    --
22427    
22428    --
22429    -- call description
22430    --
22431    -- No description or it is inherited.
22432    --
22433    -- call ADRs
22434    -- Bug 4922099
22435    --
22436    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22437         (NVL(l_actual_upg_option, 'N') = 'O') OR
22438         (NVL(l_enc_upg_option, 'N') = 'O')
22439       )
22440    THEN
22441    NULL;
22442    --
22443    --
22444    
22445   l_ccid := AcctDerRule_9(
22446            p_application_id           => p_application_id
22447          , p_ae_header_id             => l_ae_header_id 
22448 , p_source_1 => p_source_1
22449 , p_source_2 => p_source_2
22450          , x_transaction_coa_id       => l_adr_transaction_coa_id
22451          , x_accounting_coa_id        => l_adr_accounting_coa_id
22452          , x_value_type_code          => l_adr_value_type_code
22453          , p_side                     => 'NA'
22454    );
22455 
22456    xla_ae_lines_pkg.set_ccid(
22457     p_code_combination_id          => l_ccid
22458   , p_value_type_code              => l_adr_value_type_code
22459   , p_transaction_coa_id           => l_adr_transaction_coa_id
22460   , p_accounting_coa_id            => l_adr_accounting_coa_id
22461   , p_adr_code                     => 'COGS'
22462   , p_adr_type_code                => 'S'
22463   , p_component_type               => l_component_type
22464   , p_component_code               => l_component_code
22465   , p_component_type_code          => l_component_type_code
22466   , p_component_appl_id            => l_component_appl_id
22467   , p_amb_context_code             => l_amb_context_code
22468   , p_side                         => 'NA'
22469   );
22470 
22471 
22472    --
22473    --
22474    END IF;
22475    --
22476    -- Bug 4922099
22480         (l_bflow_method_code = 'PRIOR_ENTRY')
22477    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22478           (NVL(l_enc_upg_option, 'N') = 'O')
22479         ) AND
22481       )
22482    THEN
22483       IF
22484       --
22485       1 = 2
22486       --
22487       THEN
22488       xla_accounting_err_pkg.build_message
22489                                     (p_appli_s_name            => 'XLA'
22490                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22491                                     ,p_token_1                 => 'LINE_NUMBER'
22492                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
22493                                     ,p_token_2                 => 'LINE_TYPE_NAME'
22494                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
22495                                                                              l_component_type
22496                                                                             ,l_component_code
22497                                                                             ,l_component_type_code
22498                                                                             ,l_component_appl_id
22499                                                                             ,l_amb_context_code
22500                                                                             ,l_entity_code
22501                                                                             ,l_event_class_code
22502                                                                            )
22503                                     ,p_token_3                 => 'OWNER'
22504                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
22505                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
22506                                                                           ,p_lookup_code    => l_component_type_code
22507                                                                          )
22508                                     ,p_token_4                 => 'PRODUCT_NAME'
22509                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
22510                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
22511                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
22512                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
22513                                     ,p_ae_header_id            =>  NULL
22514                                        );
22515 
22516         IF (C_LEVEL_ERROR>= g_log_level) THEN
22517                  trace
22518                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22519                       ,p_level    => C_LEVEL_ERROR
22520                       ,p_module   => l_log_module);
22521         END IF;
22522       END IF;
22523    END IF;
22524    --
22525    --
22526    ------------------------------------------------------------------------------------------------
22527    -- 4219869 Business Flow
22528    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
22529    -- Prior Entry.  Currently, the following code is always generated.
22530    ------------------------------------------------------------------------------------------------
22531    XLA_AE_LINES_PKG.ValidateCurrentLine;
22532 
22533    ------------------------------------------------------------------------------------
22534    -- 4219869 Business Flow
22535    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
22536    ------------------------------------------------------------------------------------
22537    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22538 
22539    ----------------------------------------------------------------------------------
22540    -- 4219869 Business Flow
22541    -- Update journal entry status -- Need to generate this within IF <condition>
22542    ----------------------------------------------------------------------------------
22543    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22544          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
22545          ,p_balance_type_code => l_balance_type_code
22546          );
22547 
22548    -------------------------------------------------------------------------------------------
22549    -- 4262811 - Generate the Accrual Reversal lines
22550    -------------------------------------------------------------------------------------------
22551    BEGIN
22552       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
22553                               (g_array_event(p_event_id).array_value_num('header_index'));
22554       IF l_acc_rev_flag IS NULL THEN
22555          l_acc_rev_flag := 'N';
22556       END IF;
22557    EXCEPTION
22558       WHEN OTHERS THEN
22559          l_acc_rev_flag := 'N';
22560    END;
22561    --
22562    IF (l_acc_rev_flag = 'Y') THEN
22563 
22564        -- 4645092  ------------------------------------------------------------------------------
22565        -- To allow MPA report to determine if it should generate report process
22566        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22567        ------------------------------------------------------------------------------------------
22568 
22572    -- call ADRs
22569        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22570        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22571    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
22573    -- Bug 4922099
22574    --
22575    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22576         (NVL(l_actual_upg_option, 'N') = 'O') OR
22577         (NVL(l_enc_upg_option, 'N') = 'O')
22578       )
22579    THEN
22580    NULL;
22581    --
22582    --
22583    
22584   l_ccid := AcctDerRule_9(
22585            p_application_id           => p_application_id
22586          , p_ae_header_id             => l_ae_header_id 
22587 , p_source_1 => p_source_1
22588 , p_source_2 => p_source_2
22589          , x_transaction_coa_id       => l_adr_transaction_coa_id
22590          , x_accounting_coa_id        => l_adr_accounting_coa_id
22591          , x_value_type_code          => l_adr_value_type_code
22592          , p_side                     => 'NA'
22593    );
22594 
22595    xla_ae_lines_pkg.set_ccid(
22596     p_code_combination_id          => l_ccid
22597   , p_value_type_code              => l_adr_value_type_code
22598   , p_transaction_coa_id           => l_adr_transaction_coa_id
22599   , p_accounting_coa_id            => l_adr_accounting_coa_id
22600   , p_adr_code                     => 'COGS'
22601   , p_adr_type_code                => 'S'
22602   , p_component_type               => l_component_type
22603   , p_component_code               => l_component_code
22604   , p_component_type_code          => l_component_type_code
22605   , p_component_appl_id            => l_component_appl_id
22606   , p_amb_context_code             => l_amb_context_code
22607   , p_side                         => 'NA'
22608   );
22609 
22610 
22611    --
22612    --
22613    END IF;
22614 
22615        --
22616        -- Update the line information that should be overwritten
22617        --
22618        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22619                                          p_header_num   => 1);
22620        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22621 
22622        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22623 
22624        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22625           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22626        END IF;
22627 
22628       --
22629       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22630       --
22631       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22632           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22633       ELSE
22634           ---------------------------------------------------------------------------------------------------
22635           -- 4262811a Switch Sign
22636           ---------------------------------------------------------------------------------------------------
22637           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22638           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22639                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22640           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22641                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22642           -- 5132302
22643           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22644                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22645 
22646       END IF;
22647 
22648       -- 4955764
22649       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22650       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22651 
22652 
22653       XLA_AE_LINES_PKG.ValidateCurrentLine;
22654       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22655 
22656       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22657                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22658                ,p_balance_type_code => l_balance_type_code);
22659 
22660    END IF;
22661 
22662    -----------------------------------------------------------------------------------------
22663    -- 4262811 Multiperiod Accounting
22664    -----------------------------------------------------------------------------------------
22665      -- No MPA option is assigned.
22666 
22667 
22668 END IF;
22669 END IF;
22670 --
22671 
22672 --
22673 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22674    trace
22675       (p_msg      => 'END of AcctLineType_73'
22676       ,p_level    => C_LEVEL_PROCEDURE
22677       ,p_module   => l_log_module);
22678 END IF;
22679 --
22680 EXCEPTION
22681   WHEN xla_exceptions_pkg.application_exception THEN
22682       RAISE;
22683   WHEN OTHERS THEN
22684        xla_exceptions_pkg.raise_message
22688 
22685            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_73');
22686 END AcctLineType_73;
22687 --
22689 ---------------------------------------
22690 --
22691 -- PRIVATE FUNCTION
22692 --         AcctLineType_74
22693 --
22694 ---------------------------------------
22695 PROCEDURE AcctLineType_74 (
22696   p_application_id        IN NUMBER
22697  ,p_event_id              IN NUMBER
22698  ,p_calculate_acctd_flag  IN VARCHAR2
22699  ,p_calculate_g_l_flag    IN VARCHAR2
22700  ,p_actual_flag           IN OUT VARCHAR2
22701  ,p_balance_type_code     OUT VARCHAR2
22702  ,p_gain_or_loss_ref      OUT VARCHAR2
22703  
22704 --Transaction Account
22705  , p_source_1            IN NUMBER
22706 --Journal Line Type
22707  , p_source_2            IN VARCHAR2
22708 --Entered Amount
22709  , p_source_3            IN NUMBER
22710 --First Distribution Identifier
22711  , p_source_5            IN NUMBER
22712 --Distribution Type
22713  , p_source_6            IN VARCHAR2
22714 --Currency Code
22715  , p_source_7            IN VARCHAR2
22716 --Currency Conversion Date
22717  , p_source_8            IN DATE
22718 --Currency Conversion Rate
22719  , p_source_9            IN NUMBER
22720 --Currency Conversion Type
22721  , p_source_10            IN VARCHAR2
22722 --Accounted Amount
22723  , p_source_11            IN NUMBER
22724 )
22725 IS
22726 
22727 l_component_type              VARCHAR2(80);
22728 l_component_code              VARCHAR2(30);
22729 l_component_type_code         VARCHAR2(1);
22730 l_component_appl_id           INTEGER;
22731 l_amb_context_code            VARCHAR2(30);
22732 l_entity_code                 VARCHAR2(30);
22733 l_event_class_code            VARCHAR2(30);
22734 l_ae_header_id                NUMBER;
22735 l_event_type_code             VARCHAR2(30);
22736 l_line_definition_code        VARCHAR2(30);
22737 l_line_definition_owner_code  VARCHAR2(1);
22738 --
22739 -- adr variables
22740 l_segment                     VARCHAR2(30);
22741 l_ccid                        NUMBER;
22742 l_adr_transaction_coa_id      NUMBER;
22743 l_adr_accounting_coa_id       NUMBER;
22744 l_adr_flexfield_segment_code  VARCHAR2(30);
22745 l_adr_flex_value_set_id       NUMBER;
22746 l_adr_value_type_code         VARCHAR2(30);
22747 l_adr_value_combination_id    NUMBER;
22748 l_adr_value_segment_code      VARCHAR2(30);
22749 
22750 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22751 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22752 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22753 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22754 
22755 -- 4262811 Variables ------------------------------------------------------------------------------------------
22756 l_entered_amt_idx             NUMBER;
22757 l_accted_amt_idx              NUMBER;
22758 l_acc_rev_flag                VARCHAR2(1);
22759 l_accrual_line_num            NUMBER;
22760 l_tmp_amt                     NUMBER;
22761 l_acc_rev_natural_side_code   VARCHAR2(1);
22762 
22763 l_num_entries                 NUMBER;
22764 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22765 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22766 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22767 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22768 l_recog_line_1                NUMBER;
22769 l_recog_line_2                NUMBER;
22770 
22771 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22772 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22773 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22774 
22775 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22776 
22777 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22778 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22779 
22780 ---------------------------------------------------------------------------------------------------------------
22781 
22782 
22783 --
22784 -- bulk performance
22785 --
22786 l_balance_type_code           VARCHAR2(1);
22787 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22788 l_log_module                  VARCHAR2(240);
22789 
22790 --
22791 -- Upgrade strategy
22792 --
22793 l_actual_upg_option           VARCHAR2(1);
22794 l_enc_upg_option           VARCHAR2(1);
22795 
22796 --
22797 BEGIN
22798 --
22799 IF g_log_enabled THEN
22800       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_74';
22801 END IF;
22802 --
22803 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22804 
22805       trace
22806          (p_msg      => 'BEGIN of AcctLineType_74'
22807          ,p_level    => C_LEVEL_PROCEDURE
22808          ,p_module   => l_log_module);
22809 
22810 END IF;
22811 --
22812 l_component_type             := 'AMB_JLT';
22813 l_component_code             := 'COGS';
22814 l_component_type_code        := 'S';
22815 l_component_appl_id          :=  555;
22816 l_amb_context_code           := 'DEFAULT';
22817 l_entity_code                := 'ORDERMANAGEMENT';
22818 l_event_class_code           := 'SHIPPING';
22819 l_event_type_code            := 'LOG_SO_ISSUE';
22820 l_line_definition_owner_code := 'S';
22821 l_line_definition_code       := 'LOGICAL_SO_ISSUE';
22822 --
22826 l_adr_transaction_coa_id      := NULL;
22823 l_balance_type_code          := 'A';
22824 l_segment                     := NULL;
22825 l_ccid                        := NULL;
22827 l_adr_accounting_coa_id       := NULL;
22828 l_adr_flexfield_segment_code  := NULL;
22829 l_adr_flex_value_set_id       := NULL;
22830 l_adr_value_type_code         := NULL;
22831 l_adr_value_combination_id    := NULL;
22832 l_adr_value_segment_code      := NULL;
22833 
22834 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
22835 l_bflow_class_code           := '';    -- 4219869 Business Flow
22836 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
22837 l_budgetary_control_flag     := 'N';
22838 
22839 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
22840 l_bflow_applied_to_amt       := NULL; -- 5132302
22841 l_entered_amt_idx            := NULL;          -- 4262811
22842 l_accted_amt_idx             := NULL;          -- 4262811
22843 l_acc_rev_flag               := NULL;          -- 4262811
22844 l_accrual_line_num           := NULL;          -- 4262811
22845 l_tmp_amt                    := NULL;          -- 4262811
22846 --
22847  
22848 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22849     l_balance_type_code <> 'B' THEN
22850 IF NVL(p_source_2,'
22851 ') =  'COGS'
22852  THEN 
22853 
22854    --
22855    XLA_AE_LINES_PKG.SetNewLine;
22856 
22857    p_balance_type_code          := l_balance_type_code;
22858    -- set the flag so later we will know whether the gain loss line needs to be created
22859    
22860    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22861      p_actual_flag :='A';
22862    END IF;
22863 
22864    --
22865    -- bulk performance
22866    --
22867    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22868                                       p_header_num   => 0); -- 4262811
22869    --
22870    -- set accounting line options
22871    --
22872    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22873            p_natural_side_code          => 'D'
22874          , p_gain_or_loss_flag          => 'N'
22875          , p_gl_transfer_mode_code      => 'D'
22876          , p_acct_entry_type_code       => 'A'
22877          , p_switch_side_flag           => 'Y'
22878          , p_merge_duplicate_code       => 'W'
22879          );
22880    --
22881    l_acc_rev_natural_side_code := 'C';  -- 4262811
22882    -- 
22883    --
22884    -- set accounting line type info
22885    --
22886    xla_ae_lines_pkg.SetAcctLineType
22887       (p_component_type             => l_component_type
22888       ,p_event_type_code            => l_event_type_code
22889       ,p_line_definition_owner_code => l_line_definition_owner_code
22890       ,p_line_definition_code       => l_line_definition_code
22891       ,p_accounting_line_code       => l_component_code
22892       ,p_accounting_line_type_code  => l_component_type_code
22893       ,p_accounting_line_appl_id    => l_component_appl_id
22894       ,p_amb_context_code           => l_amb_context_code
22895       ,p_entity_code                => l_entity_code
22896       ,p_event_class_code           => l_event_class_code);
22897    --
22898    -- set accounting class
22899    --
22900    xla_ae_lines_pkg.SetAcctClass(
22901            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
22902          , p_ae_header_id           => l_ae_header_id
22903          );
22904 
22905    --
22906    -- set rounding class
22907    --
22908    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22909                       'COST_OF_GOODS_SOLD';
22910 
22911    --
22912    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22913    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22914    --
22915    -- bulk performance
22916    --
22917    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22918 
22919    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22920       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22921 
22922    -- 4955764
22923    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22924       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22925 
22926    -- 4458381 Public Sector Enh
22927    
22928    --
22929    -- set accounting attributes for the line type
22930    --
22931    l_entered_amt_idx := 3;
22932    l_accted_amt_idx  := 8;
22933    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
22934    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
22935    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
22936    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
22937    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
22938    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
22939    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
22940    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
22941    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
22942    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
22943    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
22947    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
22944    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
22945    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
22946    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
22948    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
22949    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
22950 
22951    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22952    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22953 
22954    ---------------------------------------------------------------------------------------------------------------
22955    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22956    ---------------------------------------------------------------------------------------------------------------
22957    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22958 
22959    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22960    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22961 
22962    IF xla_accounting_cache_pkg.GetValueChar
22963          (p_source_code         => 'LEDGER_CATEGORY_CODE'
22964          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22965    AND l_bflow_method_code = 'PRIOR_ENTRY'
22966 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22967    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22968          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22969        )
22970    THEN
22971          xla_ae_lines_pkg.BflowUpgEntry
22972            (p_business_method_code    => l_bflow_method_code
22973            ,p_business_class_code     => l_bflow_class_code
22974            ,p_balance_type            => l_balance_type_code);
22975    ELSE
22976       NULL;
22977 -- No business flow processing for business flow method of NONE.
22978    END IF;
22979 
22980    --
22981    -- call analytical criteria
22982    --
22983    
22984    --
22985    -- call description
22986    --
22987    -- No description or it is inherited.
22988    --
22989    -- call ADRs
22990    -- Bug 4922099
22991    --
22992    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22993         (NVL(l_actual_upg_option, 'N') = 'O') OR
22994         (NVL(l_enc_upg_option, 'N') = 'O')
22995       )
22996    THEN
22997    NULL;
22998    --
22999    --
23000    
23001   l_ccid := AcctDerRule_9(
23002            p_application_id           => p_application_id
23003          , p_ae_header_id             => l_ae_header_id 
23004 , p_source_1 => p_source_1
23005 , p_source_2 => p_source_2
23006          , x_transaction_coa_id       => l_adr_transaction_coa_id
23007          , x_accounting_coa_id        => l_adr_accounting_coa_id
23008          , x_value_type_code          => l_adr_value_type_code
23009          , p_side                     => 'NA'
23010    );
23011 
23012    xla_ae_lines_pkg.set_ccid(
23013     p_code_combination_id          => l_ccid
23014   , p_value_type_code              => l_adr_value_type_code
23015   , p_transaction_coa_id           => l_adr_transaction_coa_id
23016   , p_accounting_coa_id            => l_adr_accounting_coa_id
23017   , p_adr_code                     => 'COGS'
23018   , p_adr_type_code                => 'S'
23019   , p_component_type               => l_component_type
23020   , p_component_code               => l_component_code
23021   , p_component_type_code          => l_component_type_code
23022   , p_component_appl_id            => l_component_appl_id
23023   , p_amb_context_code             => l_amb_context_code
23024   , p_side                         => 'NA'
23025   );
23026 
23027 
23028    --
23029    --
23030    END IF;
23031    --
23032    -- Bug 4922099
23033    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23034           (NVL(l_enc_upg_option, 'N') = 'O')
23035         ) AND
23036         (l_bflow_method_code = 'PRIOR_ENTRY')
23037       )
23038    THEN
23039       IF
23040       --
23041       1 = 2
23042       --
23043       THEN
23044       xla_accounting_err_pkg.build_message
23045                                     (p_appli_s_name            => 'XLA'
23046                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23047                                     ,p_token_1                 => 'LINE_NUMBER'
23048                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
23049                                     ,p_token_2                 => 'LINE_TYPE_NAME'
23050                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
23051                                                                              l_component_type
23052                                                                             ,l_component_code
23053                                                                             ,l_component_type_code
23054                                                                             ,l_component_appl_id
23055                                                                             ,l_amb_context_code
23056                                                                             ,l_entity_code
23060                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
23057                                                                             ,l_event_class_code
23058                                                                            )
23059                                     ,p_token_3                 => 'OWNER'
23061                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
23062                                                                           ,p_lookup_code    => l_component_type_code
23063                                                                          )
23064                                     ,p_token_4                 => 'PRODUCT_NAME'
23065                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23066                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23067                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23068                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23069                                     ,p_ae_header_id            =>  NULL
23070                                        );
23071 
23072         IF (C_LEVEL_ERROR>= g_log_level) THEN
23073                  trace
23074                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23075                       ,p_level    => C_LEVEL_ERROR
23076                       ,p_module   => l_log_module);
23077         END IF;
23078       END IF;
23079    END IF;
23080    --
23081    --
23082    ------------------------------------------------------------------------------------------------
23083    -- 4219869 Business Flow
23084    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23085    -- Prior Entry.  Currently, the following code is always generated.
23086    ------------------------------------------------------------------------------------------------
23087    XLA_AE_LINES_PKG.ValidateCurrentLine;
23088 
23089    ------------------------------------------------------------------------------------
23090    -- 4219869 Business Flow
23091    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23092    ------------------------------------------------------------------------------------
23093    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23094 
23095    ----------------------------------------------------------------------------------
23096    -- 4219869 Business Flow
23097    -- Update journal entry status -- Need to generate this within IF <condition>
23098    ----------------------------------------------------------------------------------
23099    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23100          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23101          ,p_balance_type_code => l_balance_type_code
23102          );
23103 
23104    -------------------------------------------------------------------------------------------
23105    -- 4262811 - Generate the Accrual Reversal lines
23106    -------------------------------------------------------------------------------------------
23107    BEGIN
23108       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23109                               (g_array_event(p_event_id).array_value_num('header_index'));
23110       IF l_acc_rev_flag IS NULL THEN
23111          l_acc_rev_flag := 'N';
23112       END IF;
23113    EXCEPTION
23114       WHEN OTHERS THEN
23115          l_acc_rev_flag := 'N';
23116    END;
23117    --
23118    IF (l_acc_rev_flag = 'Y') THEN
23119 
23120        -- 4645092  ------------------------------------------------------------------------------
23121        -- To allow MPA report to determine if it should generate report process
23122        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23123        ------------------------------------------------------------------------------------------
23124 
23125        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23126        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23127    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
23128    -- call ADRs
23129    -- Bug 4922099
23130    --
23131    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23132         (NVL(l_actual_upg_option, 'N') = 'O') OR
23133         (NVL(l_enc_upg_option, 'N') = 'O')
23134       )
23135    THEN
23136    NULL;
23137    --
23138    --
23139    
23140   l_ccid := AcctDerRule_9(
23141            p_application_id           => p_application_id
23142          , p_ae_header_id             => l_ae_header_id 
23143 , p_source_1 => p_source_1
23144 , p_source_2 => p_source_2
23145          , x_transaction_coa_id       => l_adr_transaction_coa_id
23146          , x_accounting_coa_id        => l_adr_accounting_coa_id
23147          , x_value_type_code          => l_adr_value_type_code
23148          , p_side                     => 'NA'
23149    );
23150 
23151    xla_ae_lines_pkg.set_ccid(
23152     p_code_combination_id          => l_ccid
23153   , p_value_type_code              => l_adr_value_type_code
23154   , p_transaction_coa_id           => l_adr_transaction_coa_id
23155   , p_accounting_coa_id            => l_adr_accounting_coa_id
23156   , p_adr_code                     => 'COGS'
23160   , p_component_type_code          => l_component_type_code
23157   , p_adr_type_code                => 'S'
23158   , p_component_type               => l_component_type
23159   , p_component_code               => l_component_code
23161   , p_component_appl_id            => l_component_appl_id
23162   , p_amb_context_code             => l_amb_context_code
23163   , p_side                         => 'NA'
23164   );
23165 
23166 
23167    --
23168    --
23169    END IF;
23170 
23171        --
23172        -- Update the line information that should be overwritten
23173        --
23174        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23175                                          p_header_num   => 1);
23176        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
23177 
23178        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23179 
23180        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
23181           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23182        END IF;
23183 
23184       --
23185       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23186       --
23187       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23188           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
23189       ELSE
23190           ---------------------------------------------------------------------------------------------------
23191           -- 4262811a Switch Sign
23192           ---------------------------------------------------------------------------------------------------
23193           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
23194           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23195                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23196           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23197                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23198           -- 5132302
23199           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23200                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23201 
23202       END IF;
23203 
23204       -- 4955764
23205       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23206       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23207 
23208 
23209       XLA_AE_LINES_PKG.ValidateCurrentLine;
23210       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23211 
23212       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23213                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23214                ,p_balance_type_code => l_balance_type_code);
23215 
23216    END IF;
23217 
23218    -----------------------------------------------------------------------------------------
23219    -- 4262811 Multiperiod Accounting
23220    -----------------------------------------------------------------------------------------
23221      -- No MPA option is assigned.
23222 
23223 
23224 END IF;
23225 END IF;
23226 --
23227 
23228 --
23229 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23230    trace
23231       (p_msg      => 'END of AcctLineType_74'
23232       ,p_level    => C_LEVEL_PROCEDURE
23233       ,p_module   => l_log_module);
23234 END IF;
23235 --
23236 EXCEPTION
23237   WHEN xla_exceptions_pkg.application_exception THEN
23238       RAISE;
23239   WHEN OTHERS THEN
23240        xla_exceptions_pkg.raise_message
23241            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_74');
23242 END AcctLineType_74;
23243 --
23244 
23245 ---------------------------------------
23246 --
23247 -- PRIVATE FUNCTION
23248 --         AcctLineType_75
23249 --
23250 ---------------------------------------
23251 PROCEDURE AcctLineType_75 (
23252   p_application_id        IN NUMBER
23253  ,p_event_id              IN NUMBER
23254  ,p_calculate_acctd_flag  IN VARCHAR2
23255  ,p_calculate_g_l_flag    IN VARCHAR2
23256  ,p_actual_flag           IN OUT VARCHAR2
23257  ,p_balance_type_code     OUT VARCHAR2
23258  ,p_gain_or_loss_ref      OUT VARCHAR2
23259  
23260 --Transaction Account
23261  , p_source_1            IN NUMBER
23262 --Journal Line Type
23263  , p_source_2            IN VARCHAR2
23264 --Entered Amount
23265  , p_source_3            IN NUMBER
23266 --First Distribution Identifier
23267  , p_source_5            IN NUMBER
23268 --Distribution Type
23269  , p_source_6            IN VARCHAR2
23270 --Currency Code
23271  , p_source_7            IN VARCHAR2
23272 --Currency Conversion Date
23273  , p_source_8            IN DATE
23274 --Currency Conversion Rate
23275  , p_source_9            IN NUMBER
23276 --Currency Conversion Type
23277  , p_source_10            IN VARCHAR2
23278 --Accounted Amount
23279  , p_source_11            IN NUMBER
23280 )
23281 IS
23282 
23283 l_component_type              VARCHAR2(80);
23287 l_amb_context_code            VARCHAR2(30);
23284 l_component_code              VARCHAR2(30);
23285 l_component_type_code         VARCHAR2(1);
23286 l_component_appl_id           INTEGER;
23288 l_entity_code                 VARCHAR2(30);
23289 l_event_class_code            VARCHAR2(30);
23290 l_ae_header_id                NUMBER;
23291 l_event_type_code             VARCHAR2(30);
23292 l_line_definition_code        VARCHAR2(30);
23293 l_line_definition_owner_code  VARCHAR2(1);
23294 --
23295 -- adr variables
23296 l_segment                     VARCHAR2(30);
23297 l_ccid                        NUMBER;
23298 l_adr_transaction_coa_id      NUMBER;
23299 l_adr_accounting_coa_id       NUMBER;
23300 l_adr_flexfield_segment_code  VARCHAR2(30);
23301 l_adr_flex_value_set_id       NUMBER;
23302 l_adr_value_type_code         VARCHAR2(30);
23303 l_adr_value_combination_id    NUMBER;
23304 l_adr_value_segment_code      VARCHAR2(30);
23305 
23306 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
23307 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
23308 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
23309 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
23310 
23311 -- 4262811 Variables ------------------------------------------------------------------------------------------
23312 l_entered_amt_idx             NUMBER;
23313 l_accted_amt_idx              NUMBER;
23314 l_acc_rev_flag                VARCHAR2(1);
23315 l_accrual_line_num            NUMBER;
23316 l_tmp_amt                     NUMBER;
23317 l_acc_rev_natural_side_code   VARCHAR2(1);
23318 
23319 l_num_entries                 NUMBER;
23320 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
23321 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
23322 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
23323 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
23324 l_recog_line_1                NUMBER;
23325 l_recog_line_2                NUMBER;
23326 
23327 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
23328 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
23329 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
23330 
23331 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23332 
23333 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
23334 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
23335 
23336 ---------------------------------------------------------------------------------------------------------------
23337 
23338 
23339 --
23340 -- bulk performance
23341 --
23342 l_balance_type_code           VARCHAR2(1);
23343 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
23344 l_log_module                  VARCHAR2(240);
23345 
23346 --
23347 -- Upgrade strategy
23348 --
23349 l_actual_upg_option           VARCHAR2(1);
23350 l_enc_upg_option           VARCHAR2(1);
23351 
23352 --
23353 BEGIN
23354 --
23355 IF g_log_enabled THEN
23356       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_75';
23357 END IF;
23358 --
23359 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23360 
23361       trace
23362          (p_msg      => 'BEGIN of AcctLineType_75'
23363          ,p_level    => C_LEVEL_PROCEDURE
23364          ,p_module   => l_log_module);
23365 
23366 END IF;
23367 --
23368 l_component_type             := 'AMB_JLT';
23369 l_component_code             := 'COGS';
23370 l_component_type_code        := 'S';
23371 l_component_appl_id          :=  555;
23372 l_amb_context_code           := 'DEFAULT';
23373 l_entity_code                := 'INVENTORY';
23374 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
23375 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_NO_TP';
23376 l_line_definition_owner_code := 'S';
23377 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT_NO_TP';
23378 --
23379 l_balance_type_code          := 'A';
23380 l_segment                     := NULL;
23381 l_ccid                        := NULL;
23382 l_adr_transaction_coa_id      := NULL;
23383 l_adr_accounting_coa_id       := NULL;
23384 l_adr_flexfield_segment_code  := NULL;
23385 l_adr_flex_value_set_id       := NULL;
23386 l_adr_value_type_code         := NULL;
23387 l_adr_value_combination_id    := NULL;
23388 l_adr_value_segment_code      := NULL;
23389 
23390 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
23391 l_bflow_class_code           := '';    -- 4219869 Business Flow
23392 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
23393 l_budgetary_control_flag     := 'N';
23394 
23395 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
23396 l_bflow_applied_to_amt       := NULL; -- 5132302
23397 l_entered_amt_idx            := NULL;          -- 4262811
23398 l_accted_amt_idx             := NULL;          -- 4262811
23399 l_acc_rev_flag               := NULL;          -- 4262811
23400 l_accrual_line_num           := NULL;          -- 4262811
23401 l_tmp_amt                    := NULL;          -- 4262811
23402 --
23403  
23404 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23405     l_balance_type_code <> 'B' THEN
23406 IF NVL(p_source_2,'
23407 ') =  'COGS'
23408  THEN 
23409 
23413    p_balance_type_code          := l_balance_type_code;
23410    --
23411    XLA_AE_LINES_PKG.SetNewLine;
23412 
23414    -- set the flag so later we will know whether the gain loss line needs to be created
23415    
23416    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23417      p_actual_flag :='A';
23418    END IF;
23419 
23420    --
23421    -- bulk performance
23422    --
23423    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23424                                       p_header_num   => 0); -- 4262811
23425    --
23426    -- set accounting line options
23427    --
23428    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23429            p_natural_side_code          => 'D'
23430          , p_gain_or_loss_flag          => 'N'
23431          , p_gl_transfer_mode_code      => 'D'
23432          , p_acct_entry_type_code       => 'A'
23433          , p_switch_side_flag           => 'Y'
23434          , p_merge_duplicate_code       => 'W'
23435          );
23436    --
23437    l_acc_rev_natural_side_code := 'C';  -- 4262811
23438    -- 
23439    --
23440    -- set accounting line type info
23441    --
23442    xla_ae_lines_pkg.SetAcctLineType
23443       (p_component_type             => l_component_type
23444       ,p_event_type_code            => l_event_type_code
23445       ,p_line_definition_owner_code => l_line_definition_owner_code
23446       ,p_line_definition_code       => l_line_definition_code
23447       ,p_accounting_line_code       => l_component_code
23448       ,p_accounting_line_type_code  => l_component_type_code
23449       ,p_accounting_line_appl_id    => l_component_appl_id
23450       ,p_amb_context_code           => l_amb_context_code
23451       ,p_entity_code                => l_entity_code
23452       ,p_event_class_code           => l_event_class_code);
23453    --
23454    -- set accounting class
23455    --
23456    xla_ae_lines_pkg.SetAcctClass(
23457            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
23458          , p_ae_header_id           => l_ae_header_id
23459          );
23460 
23461    --
23462    -- set rounding class
23463    --
23464    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23465                       'COST_OF_GOODS_SOLD';
23466 
23467    --
23468    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23469    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23470    --
23471    -- bulk performance
23472    --
23473    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23474 
23475    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23476       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23477 
23478    -- 4955764
23479    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23480       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23481 
23482    -- 4458381 Public Sector Enh
23483    
23484    --
23485    -- set accounting attributes for the line type
23486    --
23487    l_entered_amt_idx := 3;
23488    l_accted_amt_idx  := 8;
23489    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
23490    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
23491    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
23492    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
23493    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
23494    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
23495    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
23496    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
23497    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
23498    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
23499    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
23500    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
23501    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
23502    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
23503    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
23504    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
23505    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
23506 
23507    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23508    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23509 
23510    ---------------------------------------------------------------------------------------------------------------
23511    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
23512    ---------------------------------------------------------------------------------------------------------------
23513    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
23514 
23515    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23516    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23517 
23518    IF xla_accounting_cache_pkg.GetValueChar
23519          (p_source_code         => 'LEDGER_CATEGORY_CODE'
23523    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
23520          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
23521    AND l_bflow_method_code = 'PRIOR_ENTRY'
23522 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
23524          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
23525        )
23526    THEN
23527          xla_ae_lines_pkg.BflowUpgEntry
23528            (p_business_method_code    => l_bflow_method_code
23529            ,p_business_class_code     => l_bflow_class_code
23530            ,p_balance_type            => l_balance_type_code);
23531    ELSE
23532       NULL;
23533 -- No business flow processing for business flow method of NONE.
23534    END IF;
23535 
23536    --
23537    -- call analytical criteria
23538    --
23539    
23540    --
23541    -- call description
23542    --
23543    -- No description or it is inherited.
23544    --
23545    -- call ADRs
23546    -- Bug 4922099
23547    --
23548    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23549         (NVL(l_actual_upg_option, 'N') = 'O') OR
23550         (NVL(l_enc_upg_option, 'N') = 'O')
23551       )
23552    THEN
23553    NULL;
23554    --
23555    --
23556    
23557   l_ccid := AcctDerRule_9(
23558            p_application_id           => p_application_id
23559          , p_ae_header_id             => l_ae_header_id 
23560 , p_source_1 => p_source_1
23561 , p_source_2 => p_source_2
23562          , x_transaction_coa_id       => l_adr_transaction_coa_id
23563          , x_accounting_coa_id        => l_adr_accounting_coa_id
23564          , x_value_type_code          => l_adr_value_type_code
23565          , p_side                     => 'NA'
23566    );
23567 
23568    xla_ae_lines_pkg.set_ccid(
23569     p_code_combination_id          => l_ccid
23570   , p_value_type_code              => l_adr_value_type_code
23571   , p_transaction_coa_id           => l_adr_transaction_coa_id
23572   , p_accounting_coa_id            => l_adr_accounting_coa_id
23573   , p_adr_code                     => 'COGS'
23574   , p_adr_type_code                => 'S'
23575   , p_component_type               => l_component_type
23576   , p_component_code               => l_component_code
23577   , p_component_type_code          => l_component_type_code
23578   , p_component_appl_id            => l_component_appl_id
23579   , p_amb_context_code             => l_amb_context_code
23580   , p_side                         => 'NA'
23581   );
23582 
23583 
23584    --
23585    --
23586    END IF;
23587    --
23588    -- Bug 4922099
23589    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23590           (NVL(l_enc_upg_option, 'N') = 'O')
23591         ) AND
23592         (l_bflow_method_code = 'PRIOR_ENTRY')
23593       )
23594    THEN
23595       IF
23596       --
23597       1 = 2
23598       --
23599       THEN
23600       xla_accounting_err_pkg.build_message
23601                                     (p_appli_s_name            => 'XLA'
23602                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23603                                     ,p_token_1                 => 'LINE_NUMBER'
23604                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
23605                                     ,p_token_2                 => 'LINE_TYPE_NAME'
23606                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
23607                                                                              l_component_type
23608                                                                             ,l_component_code
23609                                                                             ,l_component_type_code
23610                                                                             ,l_component_appl_id
23611                                                                             ,l_amb_context_code
23612                                                                             ,l_entity_code
23613                                                                             ,l_event_class_code
23614                                                                            )
23615                                     ,p_token_3                 => 'OWNER'
23616                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
23617                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
23618                                                                           ,p_lookup_code    => l_component_type_code
23619                                                                          )
23620                                     ,p_token_4                 => 'PRODUCT_NAME'
23621                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23622                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23623                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23624                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23625                                     ,p_ae_header_id            =>  NULL
23626                                        );
23627 
23628         IF (C_LEVEL_ERROR>= g_log_level) THEN
23629                  trace
23633         END IF;
23630                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23631                       ,p_level    => C_LEVEL_ERROR
23632                       ,p_module   => l_log_module);
23634       END IF;
23635    END IF;
23636    --
23637    --
23638    ------------------------------------------------------------------------------------------------
23639    -- 4219869 Business Flow
23640    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23641    -- Prior Entry.  Currently, the following code is always generated.
23642    ------------------------------------------------------------------------------------------------
23643    XLA_AE_LINES_PKG.ValidateCurrentLine;
23644 
23645    ------------------------------------------------------------------------------------
23646    -- 4219869 Business Flow
23647    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23648    ------------------------------------------------------------------------------------
23649    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23650 
23651    ----------------------------------------------------------------------------------
23652    -- 4219869 Business Flow
23653    -- Update journal entry status -- Need to generate this within IF <condition>
23654    ----------------------------------------------------------------------------------
23655    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23656          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23657          ,p_balance_type_code => l_balance_type_code
23658          );
23659 
23660    -------------------------------------------------------------------------------------------
23661    -- 4262811 - Generate the Accrual Reversal lines
23662    -------------------------------------------------------------------------------------------
23663    BEGIN
23664       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23665                               (g_array_event(p_event_id).array_value_num('header_index'));
23666       IF l_acc_rev_flag IS NULL THEN
23667          l_acc_rev_flag := 'N';
23668       END IF;
23669    EXCEPTION
23670       WHEN OTHERS THEN
23671          l_acc_rev_flag := 'N';
23672    END;
23673    --
23674    IF (l_acc_rev_flag = 'Y') THEN
23675 
23676        -- 4645092  ------------------------------------------------------------------------------
23677        -- To allow MPA report to determine if it should generate report process
23678        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23679        ------------------------------------------------------------------------------------------
23680 
23681        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23682        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23683    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
23684    -- call ADRs
23685    -- Bug 4922099
23686    --
23687    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23688         (NVL(l_actual_upg_option, 'N') = 'O') OR
23689         (NVL(l_enc_upg_option, 'N') = 'O')
23690       )
23691    THEN
23692    NULL;
23693    --
23694    --
23695    
23696   l_ccid := AcctDerRule_9(
23697            p_application_id           => p_application_id
23698          , p_ae_header_id             => l_ae_header_id 
23699 , p_source_1 => p_source_1
23700 , p_source_2 => p_source_2
23701          , x_transaction_coa_id       => l_adr_transaction_coa_id
23702          , x_accounting_coa_id        => l_adr_accounting_coa_id
23703          , x_value_type_code          => l_adr_value_type_code
23704          , p_side                     => 'NA'
23705    );
23706 
23707    xla_ae_lines_pkg.set_ccid(
23708     p_code_combination_id          => l_ccid
23709   , p_value_type_code              => l_adr_value_type_code
23710   , p_transaction_coa_id           => l_adr_transaction_coa_id
23711   , p_accounting_coa_id            => l_adr_accounting_coa_id
23712   , p_adr_code                     => 'COGS'
23713   , p_adr_type_code                => 'S'
23714   , p_component_type               => l_component_type
23715   , p_component_code               => l_component_code
23716   , p_component_type_code          => l_component_type_code
23717   , p_component_appl_id            => l_component_appl_id
23718   , p_amb_context_code             => l_amb_context_code
23719   , p_side                         => 'NA'
23720   );
23721 
23722 
23723    --
23724    --
23725    END IF;
23726 
23727        --
23728        -- Update the line information that should be overwritten
23729        --
23730        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23731                                          p_header_num   => 1);
23732        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
23733 
23734        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23735 
23736        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
23737           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23738        END IF;
23739 
23740       --
23741       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23742       --
23746           ---------------------------------------------------------------------------------------------------
23743       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23744           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
23745       ELSE
23747           -- 4262811a Switch Sign
23748           ---------------------------------------------------------------------------------------------------
23749           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
23750           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23751                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23752           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23753                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23754           -- 5132302
23755           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23756                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23757 
23758       END IF;
23759 
23760       -- 4955764
23761       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23762       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23763 
23764 
23765       XLA_AE_LINES_PKG.ValidateCurrentLine;
23766       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23767 
23768       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23769                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23770                ,p_balance_type_code => l_balance_type_code);
23771 
23772    END IF;
23773 
23774    -----------------------------------------------------------------------------------------
23775    -- 4262811 Multiperiod Accounting
23776    -----------------------------------------------------------------------------------------
23777      -- No MPA option is assigned.
23778 
23779 
23780 END IF;
23781 END IF;
23782 --
23783 
23784 --
23785 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23786    trace
23787       (p_msg      => 'END of AcctLineType_75'
23788       ,p_level    => C_LEVEL_PROCEDURE
23789       ,p_module   => l_log_module);
23790 END IF;
23791 --
23792 EXCEPTION
23793   WHEN xla_exceptions_pkg.application_exception THEN
23794       RAISE;
23795   WHEN OTHERS THEN
23796        xla_exceptions_pkg.raise_message
23797            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_75');
23798 END AcctLineType_75;
23799 --
23800 
23801 ---------------------------------------
23802 --
23803 -- PRIVATE FUNCTION
23804 --         AcctLineType_76
23805 --
23806 ---------------------------------------
23807 PROCEDURE AcctLineType_76 (
23808   p_application_id        IN NUMBER
23809  ,p_event_id              IN NUMBER
23810  ,p_calculate_acctd_flag  IN VARCHAR2
23811  ,p_calculate_g_l_flag    IN VARCHAR2
23812  ,p_actual_flag           IN OUT VARCHAR2
23813  ,p_balance_type_code     OUT VARCHAR2
23814  ,p_gain_or_loss_ref      OUT VARCHAR2
23815  
23816 --Transaction Account
23817  , p_source_1            IN NUMBER
23818 --Journal Line Type
23819  , p_source_2            IN VARCHAR2
23820 --Entered Amount
23821  , p_source_3            IN NUMBER
23822 --First Distribution Identifier
23823  , p_source_5            IN NUMBER
23824 --Distribution Type
23825  , p_source_6            IN VARCHAR2
23826 --Currency Code
23827  , p_source_7            IN VARCHAR2
23828 --Currency Conversion Date
23829  , p_source_8            IN DATE
23830 --Currency Conversion Rate
23831  , p_source_9            IN NUMBER
23832 --Currency Conversion Type
23833  , p_source_10            IN VARCHAR2
23834 --Accounted Amount
23835  , p_source_11            IN NUMBER
23836 )
23837 IS
23838 
23839 l_component_type              VARCHAR2(80);
23840 l_component_code              VARCHAR2(30);
23841 l_component_type_code         VARCHAR2(1);
23842 l_component_appl_id           INTEGER;
23843 l_amb_context_code            VARCHAR2(30);
23844 l_entity_code                 VARCHAR2(30);
23845 l_event_class_code            VARCHAR2(30);
23846 l_ae_header_id                NUMBER;
23847 l_event_type_code             VARCHAR2(30);
23848 l_line_definition_code        VARCHAR2(30);
23849 l_line_definition_owner_code  VARCHAR2(1);
23850 --
23851 -- adr variables
23852 l_segment                     VARCHAR2(30);
23853 l_ccid                        NUMBER;
23854 l_adr_transaction_coa_id      NUMBER;
23855 l_adr_accounting_coa_id       NUMBER;
23856 l_adr_flexfield_segment_code  VARCHAR2(30);
23857 l_adr_flex_value_set_id       NUMBER;
23858 l_adr_value_type_code         VARCHAR2(30);
23859 l_adr_value_combination_id    NUMBER;
23860 l_adr_value_segment_code      VARCHAR2(30);
23861 
23862 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
23863 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
23864 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
23865 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
23866 
23867 -- 4262811 Variables ------------------------------------------------------------------------------------------
23868 l_entered_amt_idx             NUMBER;
23872 l_tmp_amt                     NUMBER;
23869 l_accted_amt_idx              NUMBER;
23870 l_acc_rev_flag                VARCHAR2(1);
23871 l_accrual_line_num            NUMBER;
23873 l_acc_rev_natural_side_code   VARCHAR2(1);
23874 
23875 l_num_entries                 NUMBER;
23876 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
23877 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
23878 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
23879 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
23880 l_recog_line_1                NUMBER;
23881 l_recog_line_2                NUMBER;
23882 
23883 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
23884 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
23885 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
23886 
23887 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23888 
23889 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
23890 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
23891 
23892 ---------------------------------------------------------------------------------------------------------------
23893 
23894 
23895 --
23896 -- bulk performance
23897 --
23898 l_balance_type_code           VARCHAR2(1);
23899 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
23900 l_log_module                  VARCHAR2(240);
23901 
23902 --
23903 -- Upgrade strategy
23904 --
23905 l_actual_upg_option           VARCHAR2(1);
23906 l_enc_upg_option           VARCHAR2(1);
23907 
23908 --
23909 BEGIN
23910 --
23911 IF g_log_enabled THEN
23912       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_76';
23913 END IF;
23914 --
23915 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23916 
23917       trace
23918          (p_msg      => 'BEGIN of AcctLineType_76'
23919          ,p_level    => C_LEVEL_PROCEDURE
23920          ,p_module   => l_log_module);
23921 
23922 END IF;
23923 --
23924 l_component_type             := 'AMB_JLT';
23925 l_component_code             := 'COGS';
23926 l_component_type_code        := 'S';
23927 l_component_appl_id          :=  555;
23928 l_amb_context_code           := 'DEFAULT';
23929 l_entity_code                := 'INVENTORY';
23930 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
23931 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_NO_TP';
23932 l_line_definition_owner_code := 'S';
23933 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP_NO_TP';
23934 --
23935 l_balance_type_code          := 'A';
23936 l_segment                     := NULL;
23937 l_ccid                        := NULL;
23938 l_adr_transaction_coa_id      := NULL;
23939 l_adr_accounting_coa_id       := NULL;
23940 l_adr_flexfield_segment_code  := NULL;
23941 l_adr_flex_value_set_id       := NULL;
23942 l_adr_value_type_code         := NULL;
23943 l_adr_value_combination_id    := NULL;
23944 l_adr_value_segment_code      := NULL;
23945 
23946 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
23947 l_bflow_class_code           := '';    -- 4219869 Business Flow
23948 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
23949 l_budgetary_control_flag     := 'N';
23950 
23951 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
23952 l_bflow_applied_to_amt       := NULL; -- 5132302
23953 l_entered_amt_idx            := NULL;          -- 4262811
23954 l_accted_amt_idx             := NULL;          -- 4262811
23955 l_acc_rev_flag               := NULL;          -- 4262811
23956 l_accrual_line_num           := NULL;          -- 4262811
23957 l_tmp_amt                    := NULL;          -- 4262811
23958 --
23959  
23960 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23961     l_balance_type_code <> 'B' THEN
23962 IF NVL(p_source_2,'
23963 ') =  'COGS'
23964  THEN 
23965 
23966    --
23967    XLA_AE_LINES_PKG.SetNewLine;
23968 
23969    p_balance_type_code          := l_balance_type_code;
23970    -- set the flag so later we will know whether the gain loss line needs to be created
23971    
23972    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23973      p_actual_flag :='A';
23974    END IF;
23975 
23976    --
23977    -- bulk performance
23978    --
23979    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23980                                       p_header_num   => 0); -- 4262811
23981    --
23982    -- set accounting line options
23983    --
23984    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23985            p_natural_side_code          => 'D'
23986          , p_gain_or_loss_flag          => 'N'
23987          , p_gl_transfer_mode_code      => 'D'
23988          , p_acct_entry_type_code       => 'A'
23989          , p_switch_side_flag           => 'Y'
23990          , p_merge_duplicate_code       => 'W'
23991          );
23992    --
23993    l_acc_rev_natural_side_code := 'C';  -- 4262811
23994    -- 
23995    --
23996    -- set accounting line type info
23997    --
23998    xla_ae_lines_pkg.SetAcctLineType
23999       (p_component_type             => l_component_type
24000       ,p_event_type_code            => l_event_type_code
24004       ,p_accounting_line_type_code  => l_component_type_code
24001       ,p_line_definition_owner_code => l_line_definition_owner_code
24002       ,p_line_definition_code       => l_line_definition_code
24003       ,p_accounting_line_code       => l_component_code
24005       ,p_accounting_line_appl_id    => l_component_appl_id
24006       ,p_amb_context_code           => l_amb_context_code
24007       ,p_entity_code                => l_entity_code
24008       ,p_event_class_code           => l_event_class_code);
24009    --
24010    -- set accounting class
24011    --
24012    xla_ae_lines_pkg.SetAcctClass(
24013            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
24014          , p_ae_header_id           => l_ae_header_id
24015          );
24016 
24017    --
24018    -- set rounding class
24019    --
24020    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24021                       'COST_OF_GOODS_SOLD';
24022 
24023    --
24024    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24025    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24026    --
24027    -- bulk performance
24028    --
24029    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24030 
24031    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24032       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24033 
24034    -- 4955764
24035    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24036       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24037 
24038    -- 4458381 Public Sector Enh
24039    
24040    --
24041    -- set accounting attributes for the line type
24042    --
24043    l_entered_amt_idx := 3;
24044    l_accted_amt_idx  := 8;
24045    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
24046    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
24047    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
24048    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
24049    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
24050    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
24051    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
24052    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
24053    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
24054    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
24055    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
24056    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
24057    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
24058    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
24059    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
24060    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
24061    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
24062 
24063    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24064    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24065 
24066    ---------------------------------------------------------------------------------------------------------------
24067    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24068    ---------------------------------------------------------------------------------------------------------------
24069    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24070 
24071    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24072    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24073 
24074    IF xla_accounting_cache_pkg.GetValueChar
24075          (p_source_code         => 'LEDGER_CATEGORY_CODE'
24076          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24077    AND l_bflow_method_code = 'PRIOR_ENTRY'
24078 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24079    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24080          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24081        )
24082    THEN
24083          xla_ae_lines_pkg.BflowUpgEntry
24084            (p_business_method_code    => l_bflow_method_code
24085            ,p_business_class_code     => l_bflow_class_code
24086            ,p_balance_type            => l_balance_type_code);
24087    ELSE
24088       NULL;
24089 -- No business flow processing for business flow method of NONE.
24090    END IF;
24091 
24092    --
24093    -- call analytical criteria
24094    --
24095    
24096    --
24097    -- call description
24098    --
24099    -- No description or it is inherited.
24100    --
24101    -- call ADRs
24102    -- Bug 4922099
24103    --
24104    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24105         (NVL(l_actual_upg_option, 'N') = 'O') OR
24106         (NVL(l_enc_upg_option, 'N') = 'O')
24107       )
24108    THEN
24109    NULL;
24110    --
24111    --
24112    
24113   l_ccid := AcctDerRule_9(
24114            p_application_id           => p_application_id
24118          , x_transaction_coa_id       => l_adr_transaction_coa_id
24115          , p_ae_header_id             => l_ae_header_id 
24116 , p_source_1 => p_source_1
24117 , p_source_2 => p_source_2
24119          , x_accounting_coa_id        => l_adr_accounting_coa_id
24120          , x_value_type_code          => l_adr_value_type_code
24121          , p_side                     => 'NA'
24122    );
24123 
24124    xla_ae_lines_pkg.set_ccid(
24125     p_code_combination_id          => l_ccid
24126   , p_value_type_code              => l_adr_value_type_code
24127   , p_transaction_coa_id           => l_adr_transaction_coa_id
24128   , p_accounting_coa_id            => l_adr_accounting_coa_id
24129   , p_adr_code                     => 'COGS'
24130   , p_adr_type_code                => 'S'
24131   , p_component_type               => l_component_type
24132   , p_component_code               => l_component_code
24133   , p_component_type_code          => l_component_type_code
24134   , p_component_appl_id            => l_component_appl_id
24135   , p_amb_context_code             => l_amb_context_code
24136   , p_side                         => 'NA'
24137   );
24138 
24139 
24140    --
24141    --
24142    END IF;
24143    --
24144    -- Bug 4922099
24145    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24146           (NVL(l_enc_upg_option, 'N') = 'O')
24147         ) AND
24148         (l_bflow_method_code = 'PRIOR_ENTRY')
24149       )
24150    THEN
24151       IF
24152       --
24153       1 = 2
24154       --
24155       THEN
24156       xla_accounting_err_pkg.build_message
24157                                     (p_appli_s_name            => 'XLA'
24158                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24159                                     ,p_token_1                 => 'LINE_NUMBER'
24160                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24161                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24162                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24163                                                                              l_component_type
24164                                                                             ,l_component_code
24165                                                                             ,l_component_type_code
24166                                                                             ,l_component_appl_id
24167                                                                             ,l_amb_context_code
24168                                                                             ,l_entity_code
24169                                                                             ,l_event_class_code
24170                                                                            )
24171                                     ,p_token_3                 => 'OWNER'
24172                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24173                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24174                                                                           ,p_lookup_code    => l_component_type_code
24175                                                                          )
24176                                     ,p_token_4                 => 'PRODUCT_NAME'
24177                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24178                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24179                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24180                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24181                                     ,p_ae_header_id            =>  NULL
24182                                        );
24183 
24184         IF (C_LEVEL_ERROR>= g_log_level) THEN
24185                  trace
24186                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24187                       ,p_level    => C_LEVEL_ERROR
24188                       ,p_module   => l_log_module);
24189         END IF;
24190       END IF;
24191    END IF;
24192    --
24193    --
24194    ------------------------------------------------------------------------------------------------
24195    -- 4219869 Business Flow
24196    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24197    -- Prior Entry.  Currently, the following code is always generated.
24198    ------------------------------------------------------------------------------------------------
24199    XLA_AE_LINES_PKG.ValidateCurrentLine;
24200 
24201    ------------------------------------------------------------------------------------
24202    -- 4219869 Business Flow
24203    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24204    ------------------------------------------------------------------------------------
24205    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24206 
24207    ----------------------------------------------------------------------------------
24208    -- 4219869 Business Flow
24209    -- Update journal entry status -- Need to generate this within IF <condition>
24213          ,p_balance_type_code => l_balance_type_code
24210    ----------------------------------------------------------------------------------
24211    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24212          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24214          );
24215 
24216    -------------------------------------------------------------------------------------------
24217    -- 4262811 - Generate the Accrual Reversal lines
24218    -------------------------------------------------------------------------------------------
24219    BEGIN
24220       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24221                               (g_array_event(p_event_id).array_value_num('header_index'));
24222       IF l_acc_rev_flag IS NULL THEN
24223          l_acc_rev_flag := 'N';
24224       END IF;
24225    EXCEPTION
24226       WHEN OTHERS THEN
24227          l_acc_rev_flag := 'N';
24228    END;
24229    --
24230    IF (l_acc_rev_flag = 'Y') THEN
24231 
24232        -- 4645092  ------------------------------------------------------------------------------
24233        -- To allow MPA report to determine if it should generate report process
24234        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24235        ------------------------------------------------------------------------------------------
24236 
24237        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24238        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24239    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
24240    -- call ADRs
24241    -- Bug 4922099
24242    --
24243    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24244         (NVL(l_actual_upg_option, 'N') = 'O') OR
24245         (NVL(l_enc_upg_option, 'N') = 'O')
24246       )
24247    THEN
24248    NULL;
24249    --
24250    --
24251    
24252   l_ccid := AcctDerRule_9(
24253            p_application_id           => p_application_id
24254          , p_ae_header_id             => l_ae_header_id 
24255 , p_source_1 => p_source_1
24256 , p_source_2 => p_source_2
24257          , x_transaction_coa_id       => l_adr_transaction_coa_id
24258          , x_accounting_coa_id        => l_adr_accounting_coa_id
24259          , x_value_type_code          => l_adr_value_type_code
24260          , p_side                     => 'NA'
24261    );
24262 
24263    xla_ae_lines_pkg.set_ccid(
24264     p_code_combination_id          => l_ccid
24265   , p_value_type_code              => l_adr_value_type_code
24266   , p_transaction_coa_id           => l_adr_transaction_coa_id
24267   , p_accounting_coa_id            => l_adr_accounting_coa_id
24268   , p_adr_code                     => 'COGS'
24269   , p_adr_type_code                => 'S'
24270   , p_component_type               => l_component_type
24271   , p_component_code               => l_component_code
24272   , p_component_type_code          => l_component_type_code
24273   , p_component_appl_id            => l_component_appl_id
24274   , p_amb_context_code             => l_amb_context_code
24275   , p_side                         => 'NA'
24276   );
24277 
24278 
24279    --
24280    --
24281    END IF;
24282 
24283        --
24284        -- Update the line information that should be overwritten
24285        --
24286        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24287                                          p_header_num   => 1);
24288        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
24289 
24290        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24291 
24292        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
24293           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24294        END IF;
24295 
24296       --
24297       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24298       --
24299       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24300           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
24301       ELSE
24302           ---------------------------------------------------------------------------------------------------
24303           -- 4262811a Switch Sign
24304           ---------------------------------------------------------------------------------------------------
24305           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
24306           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24307                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24308           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24309                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24310           -- 5132302
24311           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24312                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24313 
24314       END IF;
24315 
24316       -- 4955764
24317       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24321       XLA_AE_LINES_PKG.ValidateCurrentLine;
24318       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24319 
24320 
24322       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24323 
24324       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24325                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24326                ,p_balance_type_code => l_balance_type_code);
24327 
24328    END IF;
24329 
24330    -----------------------------------------------------------------------------------------
24331    -- 4262811 Multiperiod Accounting
24332    -----------------------------------------------------------------------------------------
24333      -- No MPA option is assigned.
24334 
24335 
24336 END IF;
24337 END IF;
24338 --
24339 
24340 --
24341 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24342    trace
24343       (p_msg      => 'END of AcctLineType_76'
24344       ,p_level    => C_LEVEL_PROCEDURE
24345       ,p_module   => l_log_module);
24346 END IF;
24347 --
24348 EXCEPTION
24349   WHEN xla_exceptions_pkg.application_exception THEN
24350       RAISE;
24351   WHEN OTHERS THEN
24352        xla_exceptions_pkg.raise_message
24353            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_76');
24354 END AcctLineType_76;
24355 --
24356 
24357 ---------------------------------------
24358 --
24359 -- PRIVATE FUNCTION
24360 --         AcctLineType_77
24361 --
24362 ---------------------------------------
24363 PROCEDURE AcctLineType_77 (
24364   p_application_id        IN NUMBER
24365  ,p_event_id              IN NUMBER
24366  ,p_calculate_acctd_flag  IN VARCHAR2
24367  ,p_calculate_g_l_flag    IN VARCHAR2
24368  ,p_actual_flag           IN OUT VARCHAR2
24369  ,p_balance_type_code     OUT VARCHAR2
24370  ,p_gain_or_loss_ref      OUT VARCHAR2
24371  
24372 --Transaction Account
24373  , p_source_1            IN NUMBER
24374 --Journal Line Type
24375  , p_source_2            IN VARCHAR2
24376 --Entered Amount
24377  , p_source_3            IN NUMBER
24378 --First Distribution Identifier
24379  , p_source_5            IN NUMBER
24380 --Distribution Type
24381  , p_source_6            IN VARCHAR2
24382 --Currency Code
24383  , p_source_7            IN VARCHAR2
24384 --Currency Conversion Date
24385  , p_source_8            IN DATE
24386 --Currency Conversion Rate
24387  , p_source_9            IN NUMBER
24388 --Currency Conversion Type
24389  , p_source_10            IN VARCHAR2
24390 --Accounted Amount
24391  , p_source_11            IN NUMBER
24392 )
24393 IS
24394 
24395 l_component_type              VARCHAR2(80);
24396 l_component_code              VARCHAR2(30);
24397 l_component_type_code         VARCHAR2(1);
24398 l_component_appl_id           INTEGER;
24399 l_amb_context_code            VARCHAR2(30);
24400 l_entity_code                 VARCHAR2(30);
24401 l_event_class_code            VARCHAR2(30);
24402 l_ae_header_id                NUMBER;
24403 l_event_type_code             VARCHAR2(30);
24404 l_line_definition_code        VARCHAR2(30);
24405 l_line_definition_owner_code  VARCHAR2(1);
24406 --
24407 -- adr variables
24408 l_segment                     VARCHAR2(30);
24409 l_ccid                        NUMBER;
24410 l_adr_transaction_coa_id      NUMBER;
24411 l_adr_accounting_coa_id       NUMBER;
24412 l_adr_flexfield_segment_code  VARCHAR2(30);
24413 l_adr_flex_value_set_id       NUMBER;
24414 l_adr_value_type_code         VARCHAR2(30);
24415 l_adr_value_combination_id    NUMBER;
24416 l_adr_value_segment_code      VARCHAR2(30);
24417 
24418 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24419 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24420 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24421 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24422 
24423 -- 4262811 Variables ------------------------------------------------------------------------------------------
24424 l_entered_amt_idx             NUMBER;
24425 l_accted_amt_idx              NUMBER;
24426 l_acc_rev_flag                VARCHAR2(1);
24427 l_accrual_line_num            NUMBER;
24428 l_tmp_amt                     NUMBER;
24429 l_acc_rev_natural_side_code   VARCHAR2(1);
24430 
24431 l_num_entries                 NUMBER;
24432 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24433 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24434 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24435 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24436 l_recog_line_1                NUMBER;
24437 l_recog_line_2                NUMBER;
24438 
24439 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24440 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24441 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24442 
24443 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24444 
24445 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
24446 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
24447 
24448 ---------------------------------------------------------------------------------------------------------------
24449 
24453 --
24450 
24451 --
24452 -- bulk performance
24454 l_balance_type_code           VARCHAR2(1);
24455 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
24456 l_log_module                  VARCHAR2(240);
24457 
24458 --
24459 -- Upgrade strategy
24460 --
24461 l_actual_upg_option           VARCHAR2(1);
24462 l_enc_upg_option           VARCHAR2(1);
24463 
24464 --
24465 BEGIN
24466 --
24467 IF g_log_enabled THEN
24468       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_77';
24469 END IF;
24470 --
24471 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24472 
24473       trace
24474          (p_msg      => 'BEGIN of AcctLineType_77'
24475          ,p_level    => C_LEVEL_PROCEDURE
24476          ,p_module   => l_log_module);
24477 
24478 END IF;
24479 --
24480 l_component_type             := 'AMB_JLT';
24481 l_component_code             := 'DCOGS';
24482 l_component_type_code        := 'S';
24483 l_component_appl_id          :=  555;
24484 l_amb_context_code           := 'DEFAULT';
24485 l_entity_code                := 'ORDERMANAGEMENT';
24486 l_event_class_code           := 'SHIPPING';
24487 l_event_type_code            := 'COGS_RECOGNITION';
24488 l_line_definition_owner_code := 'S';
24489 l_line_definition_code       := 'COGS_RECOGNITION';
24490 --
24491 l_balance_type_code          := 'A';
24492 l_segment                     := NULL;
24493 l_ccid                        := NULL;
24494 l_adr_transaction_coa_id      := NULL;
24495 l_adr_accounting_coa_id       := NULL;
24496 l_adr_flexfield_segment_code  := NULL;
24497 l_adr_flex_value_set_id       := NULL;
24498 l_adr_value_type_code         := NULL;
24499 l_adr_value_combination_id    := NULL;
24500 l_adr_value_segment_code      := NULL;
24501 
24502 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
24503 l_bflow_class_code           := '';    -- 4219869 Business Flow
24504 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
24505 l_budgetary_control_flag     := 'N';
24506 
24507 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
24508 l_bflow_applied_to_amt       := NULL; -- 5132302
24509 l_entered_amt_idx            := NULL;          -- 4262811
24510 l_accted_amt_idx             := NULL;          -- 4262811
24511 l_acc_rev_flag               := NULL;          -- 4262811
24512 l_accrual_line_num           := NULL;          -- 4262811
24513 l_tmp_amt                    := NULL;          -- 4262811
24514 --
24515  
24516 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
24517     l_balance_type_code <> 'B' THEN
24518 IF NVL(p_source_2,'
24519 ') =  'DCOGS'
24520  THEN 
24521 
24522    --
24523    XLA_AE_LINES_PKG.SetNewLine;
24524 
24525    p_balance_type_code          := l_balance_type_code;
24526    -- set the flag so later we will know whether the gain loss line needs to be created
24527    
24528    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
24529      p_actual_flag :='A';
24530    END IF;
24531 
24532    --
24533    -- bulk performance
24534    --
24535    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
24536                                       p_header_num   => 0); -- 4262811
24537    --
24538    -- set accounting line options
24539    --
24540    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
24541            p_natural_side_code          => 'D'
24542          , p_gain_or_loss_flag          => 'N'
24543          , p_gl_transfer_mode_code      => 'D'
24544          , p_acct_entry_type_code       => 'A'
24545          , p_switch_side_flag           => 'Y'
24546          , p_merge_duplicate_code       => 'W'
24547          );
24548    --
24549    l_acc_rev_natural_side_code := 'C';  -- 4262811
24550    -- 
24551    --
24552    -- set accounting line type info
24553    --
24554    xla_ae_lines_pkg.SetAcctLineType
24555       (p_component_type             => l_component_type
24556       ,p_event_type_code            => l_event_type_code
24557       ,p_line_definition_owner_code => l_line_definition_owner_code
24558       ,p_line_definition_code       => l_line_definition_code
24559       ,p_accounting_line_code       => l_component_code
24560       ,p_accounting_line_type_code  => l_component_type_code
24561       ,p_accounting_line_appl_id    => l_component_appl_id
24562       ,p_amb_context_code           => l_amb_context_code
24563       ,p_entity_code                => l_entity_code
24564       ,p_event_class_code           => l_event_class_code);
24565    --
24566    -- set accounting class
24567    --
24568    xla_ae_lines_pkg.SetAcctClass(
24569            p_accounting_class_code  => 'DEFERRED_COGS'
24570          , p_ae_header_id           => l_ae_header_id
24571          );
24572 
24573    --
24574    -- set rounding class
24575    --
24576    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24577                       'DEFERRED_COGS';
24578 
24579    --
24580    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24581    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24582    --
24583    -- bulk performance
24584    --
24588       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24585    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24586 
24587    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24589 
24590    -- 4955764
24591    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24592       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24593 
24594    -- 4458381 Public Sector Enh
24595    
24596    --
24597    -- set accounting attributes for the line type
24598    --
24599    l_entered_amt_idx := 3;
24600    l_accted_amt_idx  := 8;
24601    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
24602    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
24603    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
24604    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
24605    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
24606    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
24607    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
24608    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
24609    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
24610    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
24611    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
24612    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
24613    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
24614    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
24615    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
24616    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
24617    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
24618 
24619    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24620    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24621 
24622    ---------------------------------------------------------------------------------------------------------------
24623    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24624    ---------------------------------------------------------------------------------------------------------------
24625    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24626 
24627    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24628    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24629 
24630    IF xla_accounting_cache_pkg.GetValueChar
24631          (p_source_code         => 'LEDGER_CATEGORY_CODE'
24632          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24633    AND l_bflow_method_code = 'PRIOR_ENTRY'
24634 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24635    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24636          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24637        )
24638    THEN
24639          xla_ae_lines_pkg.BflowUpgEntry
24640            (p_business_method_code    => l_bflow_method_code
24641            ,p_business_class_code     => l_bflow_class_code
24642            ,p_balance_type            => l_balance_type_code);
24643    ELSE
24644       NULL;
24645 -- No business flow processing for business flow method of NONE.
24646    END IF;
24647 
24648    --
24649    -- call analytical criteria
24650    --
24651    
24652    --
24653    -- call description
24654    --
24655    -- No description or it is inherited.
24656    --
24657    -- call ADRs
24658    -- Bug 4922099
24659    --
24660    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24661         (NVL(l_actual_upg_option, 'N') = 'O') OR
24662         (NVL(l_enc_upg_option, 'N') = 'O')
24663       )
24664    THEN
24665    NULL;
24666    --
24667    --
24668    
24669   l_ccid := AcctDerRule_10(
24670            p_application_id           => p_application_id
24671          , p_ae_header_id             => l_ae_header_id 
24672 , p_source_1 => p_source_1
24673 , p_source_2 => p_source_2
24674          , x_transaction_coa_id       => l_adr_transaction_coa_id
24675          , x_accounting_coa_id        => l_adr_accounting_coa_id
24676          , x_value_type_code          => l_adr_value_type_code
24677          , p_side                     => 'NA'
24678    );
24679 
24680    xla_ae_lines_pkg.set_ccid(
24681     p_code_combination_id          => l_ccid
24682   , p_value_type_code              => l_adr_value_type_code
24683   , p_transaction_coa_id           => l_adr_transaction_coa_id
24684   , p_accounting_coa_id            => l_adr_accounting_coa_id
24685   , p_adr_code                     => 'DCOGS'
24686   , p_adr_type_code                => 'S'
24687   , p_component_type               => l_component_type
24688   , p_component_code               => l_component_code
24689   , p_component_type_code          => l_component_type_code
24690   , p_component_appl_id            => l_component_appl_id
24691   , p_amb_context_code             => l_amb_context_code
24692   , p_side                         => 'NA'
24693   );
24694 
24695 
24696    --
24697    --
24698    END IF;
24699    --
24700    -- Bug 4922099
24701    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24705       )
24702           (NVL(l_enc_upg_option, 'N') = 'O')
24703         ) AND
24704         (l_bflow_method_code = 'PRIOR_ENTRY')
24706    THEN
24707       IF
24708       --
24709       1 = 2
24710       --
24711       THEN
24712       xla_accounting_err_pkg.build_message
24713                                     (p_appli_s_name            => 'XLA'
24714                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24715                                     ,p_token_1                 => 'LINE_NUMBER'
24716                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24717                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24718                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24719                                                                              l_component_type
24720                                                                             ,l_component_code
24721                                                                             ,l_component_type_code
24722                                                                             ,l_component_appl_id
24723                                                                             ,l_amb_context_code
24724                                                                             ,l_entity_code
24725                                                                             ,l_event_class_code
24726                                                                            )
24727                                     ,p_token_3                 => 'OWNER'
24728                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24729                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24730                                                                           ,p_lookup_code    => l_component_type_code
24731                                                                          )
24732                                     ,p_token_4                 => 'PRODUCT_NAME'
24733                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24734                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24735                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24736                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24737                                     ,p_ae_header_id            =>  NULL
24738                                        );
24739 
24740         IF (C_LEVEL_ERROR>= g_log_level) THEN
24741                  trace
24742                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24743                       ,p_level    => C_LEVEL_ERROR
24744                       ,p_module   => l_log_module);
24745         END IF;
24746       END IF;
24747    END IF;
24748    --
24749    --
24750    ------------------------------------------------------------------------------------------------
24751    -- 4219869 Business Flow
24752    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24753    -- Prior Entry.  Currently, the following code is always generated.
24754    ------------------------------------------------------------------------------------------------
24755    XLA_AE_LINES_PKG.ValidateCurrentLine;
24756 
24757    ------------------------------------------------------------------------------------
24758    -- 4219869 Business Flow
24759    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24760    ------------------------------------------------------------------------------------
24761    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24762 
24763    ----------------------------------------------------------------------------------
24764    -- 4219869 Business Flow
24765    -- Update journal entry status -- Need to generate this within IF <condition>
24766    ----------------------------------------------------------------------------------
24767    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24768          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24769          ,p_balance_type_code => l_balance_type_code
24770          );
24771 
24772    -------------------------------------------------------------------------------------------
24773    -- 4262811 - Generate the Accrual Reversal lines
24774    -------------------------------------------------------------------------------------------
24775    BEGIN
24776       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24777                               (g_array_event(p_event_id).array_value_num('header_index'));
24778       IF l_acc_rev_flag IS NULL THEN
24779          l_acc_rev_flag := 'N';
24780       END IF;
24781    EXCEPTION
24782       WHEN OTHERS THEN
24783          l_acc_rev_flag := 'N';
24784    END;
24785    --
24786    IF (l_acc_rev_flag = 'Y') THEN
24787 
24788        -- 4645092  ------------------------------------------------------------------------------
24789        -- To allow MPA report to determine if it should generate report process
24790        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24794        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24791        ------------------------------------------------------------------------------------------
24792 
24793        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24795    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
24796    -- call ADRs
24797    -- Bug 4922099
24798    --
24799    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24800         (NVL(l_actual_upg_option, 'N') = 'O') OR
24801         (NVL(l_enc_upg_option, 'N') = 'O')
24802       )
24803    THEN
24804    NULL;
24805    --
24806    --
24807    
24808   l_ccid := AcctDerRule_10(
24809            p_application_id           => p_application_id
24810          , p_ae_header_id             => l_ae_header_id 
24811 , p_source_1 => p_source_1
24812 , p_source_2 => p_source_2
24813          , x_transaction_coa_id       => l_adr_transaction_coa_id
24814          , x_accounting_coa_id        => l_adr_accounting_coa_id
24815          , x_value_type_code          => l_adr_value_type_code
24816          , p_side                     => 'NA'
24817    );
24818 
24819    xla_ae_lines_pkg.set_ccid(
24820     p_code_combination_id          => l_ccid
24821   , p_value_type_code              => l_adr_value_type_code
24822   , p_transaction_coa_id           => l_adr_transaction_coa_id
24823   , p_accounting_coa_id            => l_adr_accounting_coa_id
24824   , p_adr_code                     => 'DCOGS'
24825   , p_adr_type_code                => 'S'
24826   , p_component_type               => l_component_type
24827   , p_component_code               => l_component_code
24828   , p_component_type_code          => l_component_type_code
24829   , p_component_appl_id            => l_component_appl_id
24830   , p_amb_context_code             => l_amb_context_code
24831   , p_side                         => 'NA'
24832   );
24833 
24834 
24835    --
24836    --
24837    END IF;
24838 
24839        --
24840        -- Update the line information that should be overwritten
24841        --
24842        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24843                                          p_header_num   => 1);
24844        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
24845 
24846        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24847 
24848        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
24849           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24850        END IF;
24851 
24852       --
24853       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24854       --
24855       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24856           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
24857       ELSE
24858           ---------------------------------------------------------------------------------------------------
24859           -- 4262811a Switch Sign
24860           ---------------------------------------------------------------------------------------------------
24861           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
24862           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24863                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24864           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24865                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24866           -- 5132302
24867           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24868                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24869 
24870       END IF;
24871 
24872       -- 4955764
24873       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24874       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24875 
24876 
24877       XLA_AE_LINES_PKG.ValidateCurrentLine;
24878       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24879 
24880       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24881                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24882                ,p_balance_type_code => l_balance_type_code);
24883 
24884    END IF;
24885 
24886    -----------------------------------------------------------------------------------------
24887    -- 4262811 Multiperiod Accounting
24888    -----------------------------------------------------------------------------------------
24889      -- No MPA option is assigned.
24890 
24891 
24892 END IF;
24893 END IF;
24894 --
24895 
24896 --
24897 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24898    trace
24899       (p_msg      => 'END of AcctLineType_77'
24900       ,p_level    => C_LEVEL_PROCEDURE
24901       ,p_module   => l_log_module);
24902 END IF;
24903 --
24904 EXCEPTION
24905   WHEN xla_exceptions_pkg.application_exception THEN
24906       RAISE;
24907   WHEN OTHERS THEN
24908        xla_exceptions_pkg.raise_message
24909            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_77');
24910 END AcctLineType_77;
24911 --
24912 
24916 --         AcctLineType_78
24913 ---------------------------------------
24914 --
24915 -- PRIVATE FUNCTION
24917 --
24918 ---------------------------------------
24919 PROCEDURE AcctLineType_78 (
24920   p_application_id        IN NUMBER
24921  ,p_event_id              IN NUMBER
24922  ,p_calculate_acctd_flag  IN VARCHAR2
24923  ,p_calculate_g_l_flag    IN VARCHAR2
24924  ,p_actual_flag           IN OUT VARCHAR2
24925  ,p_balance_type_code     OUT VARCHAR2
24926  ,p_gain_or_loss_ref      OUT VARCHAR2
24927  
24928 --Transaction Account
24929  , p_source_1            IN NUMBER
24930 --Journal Line Type
24931  , p_source_2            IN VARCHAR2
24932 --Entered Amount
24933  , p_source_3            IN NUMBER
24934 --First Distribution Identifier
24935  , p_source_5            IN NUMBER
24936 --Distribution Type
24937  , p_source_6            IN VARCHAR2
24938 --Currency Code
24939  , p_source_7            IN VARCHAR2
24940 --Currency Conversion Date
24941  , p_source_8            IN DATE
24942 --Currency Conversion Rate
24943  , p_source_9            IN NUMBER
24944 --Currency Conversion Type
24945  , p_source_10            IN VARCHAR2
24946 --Accounted Amount
24947  , p_source_11            IN NUMBER
24948 )
24949 IS
24950 
24951 l_component_type              VARCHAR2(80);
24952 l_component_code              VARCHAR2(30);
24953 l_component_type_code         VARCHAR2(1);
24954 l_component_appl_id           INTEGER;
24955 l_amb_context_code            VARCHAR2(30);
24956 l_entity_code                 VARCHAR2(30);
24957 l_event_class_code            VARCHAR2(30);
24958 l_ae_header_id                NUMBER;
24959 l_event_type_code             VARCHAR2(30);
24960 l_line_definition_code        VARCHAR2(30);
24961 l_line_definition_owner_code  VARCHAR2(1);
24962 --
24963 -- adr variables
24964 l_segment                     VARCHAR2(30);
24965 l_ccid                        NUMBER;
24966 l_adr_transaction_coa_id      NUMBER;
24967 l_adr_accounting_coa_id       NUMBER;
24968 l_adr_flexfield_segment_code  VARCHAR2(30);
24969 l_adr_flex_value_set_id       NUMBER;
24970 l_adr_value_type_code         VARCHAR2(30);
24971 l_adr_value_combination_id    NUMBER;
24972 l_adr_value_segment_code      VARCHAR2(30);
24973 
24974 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24975 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24976 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24977 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24978 
24979 -- 4262811 Variables ------------------------------------------------------------------------------------------
24980 l_entered_amt_idx             NUMBER;
24981 l_accted_amt_idx              NUMBER;
24982 l_acc_rev_flag                VARCHAR2(1);
24983 l_accrual_line_num            NUMBER;
24984 l_tmp_amt                     NUMBER;
24985 l_acc_rev_natural_side_code   VARCHAR2(1);
24986 
24987 l_num_entries                 NUMBER;
24988 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24989 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24990 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24991 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24992 l_recog_line_1                NUMBER;
24993 l_recog_line_2                NUMBER;
24994 
24995 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24996 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24997 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24998 
24999 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25000 
25001 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
25002 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
25003 
25004 ---------------------------------------------------------------------------------------------------------------
25005 
25006 
25007 --
25008 -- bulk performance
25009 --
25010 l_balance_type_code           VARCHAR2(1);
25011 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
25012 l_log_module                  VARCHAR2(240);
25013 
25014 --
25015 -- Upgrade strategy
25016 --
25017 l_actual_upg_option           VARCHAR2(1);
25018 l_enc_upg_option           VARCHAR2(1);
25019 
25020 --
25021 BEGIN
25022 --
25023 IF g_log_enabled THEN
25024       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_78';
25025 END IF;
25026 --
25027 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25028 
25029       trace
25030          (p_msg      => 'BEGIN of AcctLineType_78'
25031          ,p_level    => C_LEVEL_PROCEDURE
25032          ,p_module   => l_log_module);
25033 
25034 END IF;
25035 --
25036 l_component_type             := 'AMB_JLT';
25037 l_component_code             := 'DCOGS';
25038 l_component_type_code        := 'S';
25039 l_component_appl_id          :=  555;
25040 l_amb_context_code           := 'DEFAULT';
25041 l_entity_code                := 'ORDERMANAGEMENT';
25042 l_event_class_code           := 'SHIPPING';
25043 l_event_type_code            := 'COGS_RECOGNITION_ADJ';
25044 l_line_definition_owner_code := 'S';
25045 l_line_definition_code       := 'COGS_RECOGNITION_ADJ';
25049 l_ccid                        := NULL;
25046 --
25047 l_balance_type_code          := 'A';
25048 l_segment                     := NULL;
25050 l_adr_transaction_coa_id      := NULL;
25051 l_adr_accounting_coa_id       := NULL;
25052 l_adr_flexfield_segment_code  := NULL;
25053 l_adr_flex_value_set_id       := NULL;
25054 l_adr_value_type_code         := NULL;
25055 l_adr_value_combination_id    := NULL;
25056 l_adr_value_segment_code      := NULL;
25057 
25058 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
25059 l_bflow_class_code           := '';    -- 4219869 Business Flow
25060 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
25061 l_budgetary_control_flag     := 'N';
25062 
25063 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
25064 l_bflow_applied_to_amt       := NULL; -- 5132302
25065 l_entered_amt_idx            := NULL;          -- 4262811
25066 l_accted_amt_idx             := NULL;          -- 4262811
25067 l_acc_rev_flag               := NULL;          -- 4262811
25068 l_accrual_line_num           := NULL;          -- 4262811
25069 l_tmp_amt                    := NULL;          -- 4262811
25070 --
25071  
25072 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25073     l_balance_type_code <> 'B' THEN
25074 IF NVL(p_source_2,'
25075 ') =  'DCOGS'
25076  THEN 
25077 
25078    --
25079    XLA_AE_LINES_PKG.SetNewLine;
25080 
25081    p_balance_type_code          := l_balance_type_code;
25082    -- set the flag so later we will know whether the gain loss line needs to be created
25083    
25084    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25085      p_actual_flag :='A';
25086    END IF;
25087 
25088    --
25089    -- bulk performance
25090    --
25091    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25092                                       p_header_num   => 0); -- 4262811
25093    --
25094    -- set accounting line options
25095    --
25096    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25097            p_natural_side_code          => 'D'
25098          , p_gain_or_loss_flag          => 'N'
25099          , p_gl_transfer_mode_code      => 'D'
25100          , p_acct_entry_type_code       => 'A'
25101          , p_switch_side_flag           => 'Y'
25102          , p_merge_duplicate_code       => 'W'
25103          );
25104    --
25105    l_acc_rev_natural_side_code := 'C';  -- 4262811
25106    -- 
25107    --
25108    -- set accounting line type info
25109    --
25110    xla_ae_lines_pkg.SetAcctLineType
25111       (p_component_type             => l_component_type
25112       ,p_event_type_code            => l_event_type_code
25113       ,p_line_definition_owner_code => l_line_definition_owner_code
25114       ,p_line_definition_code       => l_line_definition_code
25115       ,p_accounting_line_code       => l_component_code
25116       ,p_accounting_line_type_code  => l_component_type_code
25117       ,p_accounting_line_appl_id    => l_component_appl_id
25118       ,p_amb_context_code           => l_amb_context_code
25119       ,p_entity_code                => l_entity_code
25120       ,p_event_class_code           => l_event_class_code);
25121    --
25122    -- set accounting class
25123    --
25124    xla_ae_lines_pkg.SetAcctClass(
25125            p_accounting_class_code  => 'DEFERRED_COGS'
25126          , p_ae_header_id           => l_ae_header_id
25127          );
25128 
25129    --
25130    -- set rounding class
25131    --
25132    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25133                       'DEFERRED_COGS';
25134 
25135    --
25136    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25137    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25138    --
25139    -- bulk performance
25140    --
25141    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25142 
25143    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25144       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25145 
25146    -- 4955764
25147    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25148       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25149 
25150    -- 4458381 Public Sector Enh
25151    
25152    --
25153    -- set accounting attributes for the line type
25154    --
25155    l_entered_amt_idx := 3;
25156    l_accted_amt_idx  := 8;
25157    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25158    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
25159    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
25160    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
25161    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
25162    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
25163    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
25164    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
25165    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
25166    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
25170    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
25167    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
25168    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
25169    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
25171    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
25172    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
25173    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
25174 
25175    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25176    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25177 
25178    ---------------------------------------------------------------------------------------------------------------
25179    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25180    ---------------------------------------------------------------------------------------------------------------
25181    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25182 
25183    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25184    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25185 
25186    IF xla_accounting_cache_pkg.GetValueChar
25187          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25188          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25189    AND l_bflow_method_code = 'PRIOR_ENTRY'
25190 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25191    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25192          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25193        )
25194    THEN
25195          xla_ae_lines_pkg.BflowUpgEntry
25196            (p_business_method_code    => l_bflow_method_code
25197            ,p_business_class_code     => l_bflow_class_code
25198            ,p_balance_type            => l_balance_type_code);
25199    ELSE
25200       NULL;
25201 -- No business flow processing for business flow method of NONE.
25202    END IF;
25203 
25204    --
25205    -- call analytical criteria
25206    --
25207    
25208    --
25209    -- call description
25210    --
25211    -- No description or it is inherited.
25212    --
25213    -- call ADRs
25214    -- Bug 4922099
25215    --
25216    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25217         (NVL(l_actual_upg_option, 'N') = 'O') OR
25218         (NVL(l_enc_upg_option, 'N') = 'O')
25219       )
25220    THEN
25221    NULL;
25222    --
25223    --
25224    
25225   l_ccid := AcctDerRule_10(
25226            p_application_id           => p_application_id
25227          , p_ae_header_id             => l_ae_header_id 
25228 , p_source_1 => p_source_1
25229 , p_source_2 => p_source_2
25230          , x_transaction_coa_id       => l_adr_transaction_coa_id
25231          , x_accounting_coa_id        => l_adr_accounting_coa_id
25232          , x_value_type_code          => l_adr_value_type_code
25233          , p_side                     => 'NA'
25234    );
25235 
25236    xla_ae_lines_pkg.set_ccid(
25237     p_code_combination_id          => l_ccid
25238   , p_value_type_code              => l_adr_value_type_code
25239   , p_transaction_coa_id           => l_adr_transaction_coa_id
25240   , p_accounting_coa_id            => l_adr_accounting_coa_id
25241   , p_adr_code                     => 'DCOGS'
25242   , p_adr_type_code                => 'S'
25243   , p_component_type               => l_component_type
25244   , p_component_code               => l_component_code
25245   , p_component_type_code          => l_component_type_code
25246   , p_component_appl_id            => l_component_appl_id
25247   , p_amb_context_code             => l_amb_context_code
25248   , p_side                         => 'NA'
25249   );
25250 
25251 
25252    --
25253    --
25254    END IF;
25255    --
25256    -- Bug 4922099
25257    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25258           (NVL(l_enc_upg_option, 'N') = 'O')
25259         ) AND
25260         (l_bflow_method_code = 'PRIOR_ENTRY')
25261       )
25262    THEN
25263       IF
25264       --
25265       1 = 2
25266       --
25267       THEN
25268       xla_accounting_err_pkg.build_message
25269                                     (p_appli_s_name            => 'XLA'
25270                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25271                                     ,p_token_1                 => 'LINE_NUMBER'
25272                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25273                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25274                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25275                                                                              l_component_type
25276                                                                             ,l_component_code
25277                                                                             ,l_component_type_code
25278                                                                             ,l_component_appl_id
25279                                                                             ,l_amb_context_code
25283                                     ,p_token_3                 => 'OWNER'
25280                                                                             ,l_entity_code
25281                                                                             ,l_event_class_code
25282                                                                            )
25284                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25285                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25286                                                                           ,p_lookup_code    => l_component_type_code
25287                                                                          )
25288                                     ,p_token_4                 => 'PRODUCT_NAME'
25289                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25290                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25291                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25292                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25293                                     ,p_ae_header_id            =>  NULL
25294                                        );
25295 
25296         IF (C_LEVEL_ERROR>= g_log_level) THEN
25297                  trace
25298                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25299                       ,p_level    => C_LEVEL_ERROR
25300                       ,p_module   => l_log_module);
25301         END IF;
25302       END IF;
25303    END IF;
25304    --
25305    --
25306    ------------------------------------------------------------------------------------------------
25307    -- 4219869 Business Flow
25308    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25309    -- Prior Entry.  Currently, the following code is always generated.
25310    ------------------------------------------------------------------------------------------------
25311    XLA_AE_LINES_PKG.ValidateCurrentLine;
25312 
25313    ------------------------------------------------------------------------------------
25314    -- 4219869 Business Flow
25315    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25316    ------------------------------------------------------------------------------------
25317    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25318 
25319    ----------------------------------------------------------------------------------
25320    -- 4219869 Business Flow
25321    -- Update journal entry status -- Need to generate this within IF <condition>
25322    ----------------------------------------------------------------------------------
25323    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25324          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25325          ,p_balance_type_code => l_balance_type_code
25326          );
25327 
25328    -------------------------------------------------------------------------------------------
25329    -- 4262811 - Generate the Accrual Reversal lines
25330    -------------------------------------------------------------------------------------------
25331    BEGIN
25332       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25333                               (g_array_event(p_event_id).array_value_num('header_index'));
25334       IF l_acc_rev_flag IS NULL THEN
25335          l_acc_rev_flag := 'N';
25336       END IF;
25337    EXCEPTION
25338       WHEN OTHERS THEN
25339          l_acc_rev_flag := 'N';
25340    END;
25341    --
25342    IF (l_acc_rev_flag = 'Y') THEN
25343 
25344        -- 4645092  ------------------------------------------------------------------------------
25345        -- To allow MPA report to determine if it should generate report process
25346        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25347        ------------------------------------------------------------------------------------------
25348 
25349        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25350        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25351    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
25352    -- call ADRs
25353    -- Bug 4922099
25354    --
25355    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25356         (NVL(l_actual_upg_option, 'N') = 'O') OR
25357         (NVL(l_enc_upg_option, 'N') = 'O')
25358       )
25359    THEN
25360    NULL;
25361    --
25362    --
25363    
25364   l_ccid := AcctDerRule_10(
25365            p_application_id           => p_application_id
25366          , p_ae_header_id             => l_ae_header_id 
25367 , p_source_1 => p_source_1
25368 , p_source_2 => p_source_2
25369          , x_transaction_coa_id       => l_adr_transaction_coa_id
25370          , x_accounting_coa_id        => l_adr_accounting_coa_id
25371          , x_value_type_code          => l_adr_value_type_code
25372          , p_side                     => 'NA'
25373    );
25374 
25375    xla_ae_lines_pkg.set_ccid(
25376     p_code_combination_id          => l_ccid
25377   , p_value_type_code              => l_adr_value_type_code
25378   , p_transaction_coa_id           => l_adr_transaction_coa_id
25379   , p_accounting_coa_id            => l_adr_accounting_coa_id
25380   , p_adr_code                     => 'DCOGS'
25384   , p_component_type_code          => l_component_type_code
25381   , p_adr_type_code                => 'S'
25382   , p_component_type               => l_component_type
25383   , p_component_code               => l_component_code
25385   , p_component_appl_id            => l_component_appl_id
25386   , p_amb_context_code             => l_amb_context_code
25387   , p_side                         => 'NA'
25388   );
25389 
25390 
25391    --
25392    --
25393    END IF;
25394 
25395        --
25396        -- Update the line information that should be overwritten
25397        --
25398        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25399                                          p_header_num   => 1);
25400        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25401 
25402        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25403 
25404        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25405           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25406        END IF;
25407 
25408       --
25409       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25410       --
25411       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25412           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25413       ELSE
25414           ---------------------------------------------------------------------------------------------------
25415           -- 4262811a Switch Sign
25416           ---------------------------------------------------------------------------------------------------
25417           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25418           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25419                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25420           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25421                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25422           -- 5132302
25423           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25424                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25425 
25426       END IF;
25427 
25428       -- 4955764
25429       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25430       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25431 
25432 
25433       XLA_AE_LINES_PKG.ValidateCurrentLine;
25434       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25435 
25436       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25437                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25438                ,p_balance_type_code => l_balance_type_code);
25439 
25440    END IF;
25441 
25442    -----------------------------------------------------------------------------------------
25443    -- 4262811 Multiperiod Accounting
25444    -----------------------------------------------------------------------------------------
25445      -- No MPA option is assigned.
25446 
25447 
25448 END IF;
25449 END IF;
25450 --
25451 
25452 --
25453 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25454    trace
25455       (p_msg      => 'END of AcctLineType_78'
25456       ,p_level    => C_LEVEL_PROCEDURE
25457       ,p_module   => l_log_module);
25458 END IF;
25459 --
25460 EXCEPTION
25461   WHEN xla_exceptions_pkg.application_exception THEN
25462       RAISE;
25463   WHEN OTHERS THEN
25464        xla_exceptions_pkg.raise_message
25465            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_78');
25466 END AcctLineType_78;
25467 --
25468 
25469 ---------------------------------------
25470 --
25471 -- PRIVATE FUNCTION
25472 --         AcctLineType_79
25473 --
25474 ---------------------------------------
25475 PROCEDURE AcctLineType_79 (
25476   p_application_id        IN NUMBER
25477  ,p_event_id              IN NUMBER
25478  ,p_calculate_acctd_flag  IN VARCHAR2
25479  ,p_calculate_g_l_flag    IN VARCHAR2
25480  ,p_actual_flag           IN OUT VARCHAR2
25481  ,p_balance_type_code     OUT VARCHAR2
25482  ,p_gain_or_loss_ref      OUT VARCHAR2
25483  
25484 --Transaction Account
25485  , p_source_1            IN NUMBER
25486 --Journal Line Type
25487  , p_source_2            IN VARCHAR2
25488 --Entered Amount
25489  , p_source_3            IN NUMBER
25490 --First Distribution Identifier
25491  , p_source_5            IN NUMBER
25492 --Distribution Type
25493  , p_source_6            IN VARCHAR2
25494 --Currency Code
25495  , p_source_7            IN VARCHAR2
25496 --Currency Conversion Date
25497  , p_source_8            IN DATE
25498 --Currency Conversion Rate
25499  , p_source_9            IN NUMBER
25500 --Currency Conversion Type
25501  , p_source_10            IN VARCHAR2
25502 --Accounted Amount
25503  , p_source_11            IN NUMBER
25504 )
25505 IS
25506 
25507 l_component_type              VARCHAR2(80);
25511 l_amb_context_code            VARCHAR2(30);
25508 l_component_code              VARCHAR2(30);
25509 l_component_type_code         VARCHAR2(1);
25510 l_component_appl_id           INTEGER;
25512 l_entity_code                 VARCHAR2(30);
25513 l_event_class_code            VARCHAR2(30);
25514 l_ae_header_id                NUMBER;
25515 l_event_type_code             VARCHAR2(30);
25516 l_line_definition_code        VARCHAR2(30);
25517 l_line_definition_owner_code  VARCHAR2(1);
25518 --
25519 -- adr variables
25520 l_segment                     VARCHAR2(30);
25521 l_ccid                        NUMBER;
25522 l_adr_transaction_coa_id      NUMBER;
25523 l_adr_accounting_coa_id       NUMBER;
25524 l_adr_flexfield_segment_code  VARCHAR2(30);
25525 l_adr_flex_value_set_id       NUMBER;
25526 l_adr_value_type_code         VARCHAR2(30);
25527 l_adr_value_combination_id    NUMBER;
25528 l_adr_value_segment_code      VARCHAR2(30);
25529 
25530 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
25531 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
25532 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
25533 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
25534 
25535 -- 4262811 Variables ------------------------------------------------------------------------------------------
25536 l_entered_amt_idx             NUMBER;
25537 l_accted_amt_idx              NUMBER;
25538 l_acc_rev_flag                VARCHAR2(1);
25539 l_accrual_line_num            NUMBER;
25540 l_tmp_amt                     NUMBER;
25541 l_acc_rev_natural_side_code   VARCHAR2(1);
25542 
25543 l_num_entries                 NUMBER;
25544 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
25545 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
25546 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
25547 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
25548 l_recog_line_1                NUMBER;
25549 l_recog_line_2                NUMBER;
25550 
25551 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
25552 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
25553 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
25554 
25555 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25556 
25557 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
25558 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
25559 
25560 ---------------------------------------------------------------------------------------------------------------
25561 
25562 
25563 --
25564 -- bulk performance
25565 --
25566 l_balance_type_code           VARCHAR2(1);
25567 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
25568 l_log_module                  VARCHAR2(240);
25569 
25570 --
25571 -- Upgrade strategy
25572 --
25573 l_actual_upg_option           VARCHAR2(1);
25574 l_enc_upg_option           VARCHAR2(1);
25575 
25576 --
25577 BEGIN
25578 --
25579 IF g_log_enabled THEN
25580       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_79';
25581 END IF;
25582 --
25583 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25584 
25585       trace
25586          (p_msg      => 'BEGIN of AcctLineType_79'
25587          ,p_level    => C_LEVEL_PROCEDURE
25588          ,p_module   => l_log_module);
25589 
25590 END IF;
25591 --
25592 l_component_type             := 'AMB_JLT';
25593 l_component_code             := 'DCOGS';
25594 l_component_type_code        := 'S';
25595 l_component_appl_id          :=  555;
25596 l_amb_context_code           := 'DEFAULT';
25597 l_entity_code                := 'ORDERMANAGEMENT';
25598 l_event_class_code           := 'SHIPPING';
25599 l_event_type_code            := 'LOG_SO_ISSUE';
25600 l_line_definition_owner_code := 'S';
25601 l_line_definition_code       := 'LOGICAL_SO_ISSUE';
25602 --
25603 l_balance_type_code          := 'A';
25604 l_segment                     := NULL;
25605 l_ccid                        := NULL;
25606 l_adr_transaction_coa_id      := NULL;
25607 l_adr_accounting_coa_id       := NULL;
25608 l_adr_flexfield_segment_code  := NULL;
25609 l_adr_flex_value_set_id       := NULL;
25610 l_adr_value_type_code         := NULL;
25611 l_adr_value_combination_id    := NULL;
25612 l_adr_value_segment_code      := NULL;
25613 
25614 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
25615 l_bflow_class_code           := '';    -- 4219869 Business Flow
25616 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
25617 l_budgetary_control_flag     := 'N';
25618 
25619 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
25620 l_bflow_applied_to_amt       := NULL; -- 5132302
25621 l_entered_amt_idx            := NULL;          -- 4262811
25622 l_accted_amt_idx             := NULL;          -- 4262811
25623 l_acc_rev_flag               := NULL;          -- 4262811
25624 l_accrual_line_num           := NULL;          -- 4262811
25625 l_tmp_amt                    := NULL;          -- 4262811
25626 --
25627  
25628 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25629     l_balance_type_code <> 'B' THEN
25630 IF NVL(p_source_2,'
25631 ') =  'DCOGS'
25632  THEN 
25633 
25634    --
25638    -- set the flag so later we will know whether the gain loss line needs to be created
25635    XLA_AE_LINES_PKG.SetNewLine;
25636 
25637    p_balance_type_code          := l_balance_type_code;
25639    
25640    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25641      p_actual_flag :='A';
25642    END IF;
25643 
25644    --
25645    -- bulk performance
25646    --
25647    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25648                                       p_header_num   => 0); -- 4262811
25649    --
25650    -- set accounting line options
25651    --
25652    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25653            p_natural_side_code          => 'D'
25654          , p_gain_or_loss_flag          => 'N'
25655          , p_gl_transfer_mode_code      => 'D'
25656          , p_acct_entry_type_code       => 'A'
25657          , p_switch_side_flag           => 'Y'
25658          , p_merge_duplicate_code       => 'W'
25659          );
25660    --
25661    l_acc_rev_natural_side_code := 'C';  -- 4262811
25662    -- 
25663    --
25664    -- set accounting line type info
25665    --
25666    xla_ae_lines_pkg.SetAcctLineType
25667       (p_component_type             => l_component_type
25668       ,p_event_type_code            => l_event_type_code
25669       ,p_line_definition_owner_code => l_line_definition_owner_code
25670       ,p_line_definition_code       => l_line_definition_code
25671       ,p_accounting_line_code       => l_component_code
25672       ,p_accounting_line_type_code  => l_component_type_code
25673       ,p_accounting_line_appl_id    => l_component_appl_id
25674       ,p_amb_context_code           => l_amb_context_code
25675       ,p_entity_code                => l_entity_code
25676       ,p_event_class_code           => l_event_class_code);
25677    --
25678    -- set accounting class
25679    --
25680    xla_ae_lines_pkg.SetAcctClass(
25681            p_accounting_class_code  => 'DEFERRED_COGS'
25682          , p_ae_header_id           => l_ae_header_id
25683          );
25684 
25685    --
25686    -- set rounding class
25687    --
25688    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25689                       'DEFERRED_COGS';
25690 
25691    --
25692    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25693    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25694    --
25695    -- bulk performance
25696    --
25697    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25698 
25699    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25700       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25701 
25702    -- 4955764
25703    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25704       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25705 
25706    -- 4458381 Public Sector Enh
25707    
25708    --
25709    -- set accounting attributes for the line type
25710    --
25711    l_entered_amt_idx := 3;
25712    l_accted_amt_idx  := 8;
25713    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25714    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
25715    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
25716    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
25717    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
25718    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
25719    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
25720    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
25721    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
25722    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
25723    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
25724    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
25725    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
25726    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
25727    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
25728    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
25729    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
25730 
25731    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25732    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25733 
25734    ---------------------------------------------------------------------------------------------------------------
25735    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25736    ---------------------------------------------------------------------------------------------------------------
25737    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25738 
25739    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25740    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25741 
25742    IF xla_accounting_cache_pkg.GetValueChar
25743          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25747    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25744          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25745    AND l_bflow_method_code = 'PRIOR_ENTRY'
25746 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25748          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25749        )
25750    THEN
25751          xla_ae_lines_pkg.BflowUpgEntry
25752            (p_business_method_code    => l_bflow_method_code
25753            ,p_business_class_code     => l_bflow_class_code
25754            ,p_balance_type            => l_balance_type_code);
25755    ELSE
25756       NULL;
25757 -- No business flow processing for business flow method of NONE.
25758    END IF;
25759 
25760    --
25761    -- call analytical criteria
25762    --
25763    
25764    --
25765    -- call description
25766    --
25767    -- No description or it is inherited.
25768    --
25769    -- call ADRs
25770    -- Bug 4922099
25771    --
25772    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25773         (NVL(l_actual_upg_option, 'N') = 'O') OR
25774         (NVL(l_enc_upg_option, 'N') = 'O')
25775       )
25776    THEN
25777    NULL;
25778    --
25779    --
25780    
25781   l_ccid := AcctDerRule_10(
25782            p_application_id           => p_application_id
25783          , p_ae_header_id             => l_ae_header_id 
25784 , p_source_1 => p_source_1
25785 , p_source_2 => p_source_2
25786          , x_transaction_coa_id       => l_adr_transaction_coa_id
25787          , x_accounting_coa_id        => l_adr_accounting_coa_id
25788          , x_value_type_code          => l_adr_value_type_code
25789          , p_side                     => 'NA'
25790    );
25791 
25792    xla_ae_lines_pkg.set_ccid(
25793     p_code_combination_id          => l_ccid
25794   , p_value_type_code              => l_adr_value_type_code
25795   , p_transaction_coa_id           => l_adr_transaction_coa_id
25796   , p_accounting_coa_id            => l_adr_accounting_coa_id
25797   , p_adr_code                     => 'DCOGS'
25798   , p_adr_type_code                => 'S'
25799   , p_component_type               => l_component_type
25800   , p_component_code               => l_component_code
25801   , p_component_type_code          => l_component_type_code
25802   , p_component_appl_id            => l_component_appl_id
25803   , p_amb_context_code             => l_amb_context_code
25804   , p_side                         => 'NA'
25805   );
25806 
25807 
25808    --
25809    --
25810    END IF;
25811    --
25812    -- Bug 4922099
25813    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25814           (NVL(l_enc_upg_option, 'N') = 'O')
25815         ) AND
25816         (l_bflow_method_code = 'PRIOR_ENTRY')
25817       )
25818    THEN
25819       IF
25820       --
25821       1 = 2
25822       --
25823       THEN
25824       xla_accounting_err_pkg.build_message
25825                                     (p_appli_s_name            => 'XLA'
25826                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25827                                     ,p_token_1                 => 'LINE_NUMBER'
25828                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25829                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25830                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25831                                                                              l_component_type
25832                                                                             ,l_component_code
25833                                                                             ,l_component_type_code
25834                                                                             ,l_component_appl_id
25835                                                                             ,l_amb_context_code
25836                                                                             ,l_entity_code
25837                                                                             ,l_event_class_code
25838                                                                            )
25839                                     ,p_token_3                 => 'OWNER'
25840                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25841                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25842                                                                           ,p_lookup_code    => l_component_type_code
25843                                                                          )
25844                                     ,p_token_4                 => 'PRODUCT_NAME'
25845                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25846                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25847                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25848                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25849                                     ,p_ae_header_id            =>  NULL
25850                                        );
25851 
25852         IF (C_LEVEL_ERROR>= g_log_level) THEN
25856                       ,p_module   => l_log_module);
25853                  trace
25854                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25855                       ,p_level    => C_LEVEL_ERROR
25857         END IF;
25858       END IF;
25859    END IF;
25860    --
25861    --
25862    ------------------------------------------------------------------------------------------------
25863    -- 4219869 Business Flow
25864    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25865    -- Prior Entry.  Currently, the following code is always generated.
25866    ------------------------------------------------------------------------------------------------
25867    XLA_AE_LINES_PKG.ValidateCurrentLine;
25868 
25869    ------------------------------------------------------------------------------------
25870    -- 4219869 Business Flow
25871    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25872    ------------------------------------------------------------------------------------
25873    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25874 
25875    ----------------------------------------------------------------------------------
25876    -- 4219869 Business Flow
25877    -- Update journal entry status -- Need to generate this within IF <condition>
25878    ----------------------------------------------------------------------------------
25879    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25880          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25881          ,p_balance_type_code => l_balance_type_code
25882          );
25883 
25884    -------------------------------------------------------------------------------------------
25885    -- 4262811 - Generate the Accrual Reversal lines
25886    -------------------------------------------------------------------------------------------
25887    BEGIN
25888       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25889                               (g_array_event(p_event_id).array_value_num('header_index'));
25890       IF l_acc_rev_flag IS NULL THEN
25891          l_acc_rev_flag := 'N';
25892       END IF;
25893    EXCEPTION
25894       WHEN OTHERS THEN
25895          l_acc_rev_flag := 'N';
25896    END;
25897    --
25898    IF (l_acc_rev_flag = 'Y') THEN
25899 
25900        -- 4645092  ------------------------------------------------------------------------------
25901        -- To allow MPA report to determine if it should generate report process
25902        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25903        ------------------------------------------------------------------------------------------
25904 
25905        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25906        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25907    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
25908    -- call ADRs
25909    -- Bug 4922099
25910    --
25911    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25912         (NVL(l_actual_upg_option, 'N') = 'O') OR
25913         (NVL(l_enc_upg_option, 'N') = 'O')
25914       )
25915    THEN
25916    NULL;
25917    --
25918    --
25919    
25920   l_ccid := AcctDerRule_10(
25921            p_application_id           => p_application_id
25922          , p_ae_header_id             => l_ae_header_id 
25923 , p_source_1 => p_source_1
25924 , p_source_2 => p_source_2
25925          , x_transaction_coa_id       => l_adr_transaction_coa_id
25926          , x_accounting_coa_id        => l_adr_accounting_coa_id
25927          , x_value_type_code          => l_adr_value_type_code
25928          , p_side                     => 'NA'
25929    );
25930 
25931    xla_ae_lines_pkg.set_ccid(
25932     p_code_combination_id          => l_ccid
25933   , p_value_type_code              => l_adr_value_type_code
25934   , p_transaction_coa_id           => l_adr_transaction_coa_id
25935   , p_accounting_coa_id            => l_adr_accounting_coa_id
25936   , p_adr_code                     => 'DCOGS'
25937   , p_adr_type_code                => 'S'
25938   , p_component_type               => l_component_type
25939   , p_component_code               => l_component_code
25940   , p_component_type_code          => l_component_type_code
25941   , p_component_appl_id            => l_component_appl_id
25942   , p_amb_context_code             => l_amb_context_code
25943   , p_side                         => 'NA'
25944   );
25945 
25946 
25947    --
25948    --
25949    END IF;
25950 
25951        --
25952        -- Update the line information that should be overwritten
25953        --
25954        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25955                                          p_header_num   => 1);
25956        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25957 
25958        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25959 
25960        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25961           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25962        END IF;
25963 
25964       --
25965       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25966       --
25967       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25971           -- 4262811a Switch Sign
25968           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25969       ELSE
25970           ---------------------------------------------------------------------------------------------------
25972           ---------------------------------------------------------------------------------------------------
25973           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25974           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25975                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25976           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25977                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25978           -- 5132302
25979           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25980                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25981 
25982       END IF;
25983 
25984       -- 4955764
25985       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25986       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25987 
25988 
25989       XLA_AE_LINES_PKG.ValidateCurrentLine;
25990       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25991 
25992       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25993                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25994                ,p_balance_type_code => l_balance_type_code);
25995 
25996    END IF;
25997 
25998    -----------------------------------------------------------------------------------------
25999    -- 4262811 Multiperiod Accounting
26000    -----------------------------------------------------------------------------------------
26001      -- No MPA option is assigned.
26002 
26003 
26004 END IF;
26005 END IF;
26006 --
26007 
26008 --
26009 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26010    trace
26011       (p_msg      => 'END of AcctLineType_79'
26012       ,p_level    => C_LEVEL_PROCEDURE
26013       ,p_module   => l_log_module);
26014 END IF;
26015 --
26016 EXCEPTION
26017   WHEN xla_exceptions_pkg.application_exception THEN
26018       RAISE;
26019   WHEN OTHERS THEN
26020        xla_exceptions_pkg.raise_message
26021            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_79');
26022 END AcctLineType_79;
26023 --
26024 
26025 ---------------------------------------
26026 --
26027 -- PRIVATE FUNCTION
26028 --         AcctLineType_80
26029 --
26030 ---------------------------------------
26031 PROCEDURE AcctLineType_80 (
26032   p_application_id        IN NUMBER
26033  ,p_event_id              IN NUMBER
26034  ,p_calculate_acctd_flag  IN VARCHAR2
26035  ,p_calculate_g_l_flag    IN VARCHAR2
26036  ,p_actual_flag           IN OUT VARCHAR2
26037  ,p_balance_type_code     OUT VARCHAR2
26038  ,p_gain_or_loss_ref      OUT VARCHAR2
26039  
26040 --Transaction Account
26041  , p_source_1            IN NUMBER
26042 --Journal Line Type
26043  , p_source_2            IN VARCHAR2
26044 --Entered Amount
26045  , p_source_3            IN NUMBER
26046 --First Distribution Identifier
26047  , p_source_5            IN NUMBER
26048 --Distribution Type
26049  , p_source_6            IN VARCHAR2
26050 --Currency Code
26051  , p_source_7            IN VARCHAR2
26052 --Currency Conversion Date
26053  , p_source_8            IN DATE
26054 --Currency Conversion Rate
26055  , p_source_9            IN NUMBER
26056 --Currency Conversion Type
26057  , p_source_10            IN VARCHAR2
26058 --Accounted Amount
26059  , p_source_11            IN NUMBER
26060 )
26061 IS
26062 
26063 l_component_type              VARCHAR2(80);
26064 l_component_code              VARCHAR2(30);
26065 l_component_type_code         VARCHAR2(1);
26066 l_component_appl_id           INTEGER;
26067 l_amb_context_code            VARCHAR2(30);
26068 l_entity_code                 VARCHAR2(30);
26069 l_event_class_code            VARCHAR2(30);
26070 l_ae_header_id                NUMBER;
26071 l_event_type_code             VARCHAR2(30);
26072 l_line_definition_code        VARCHAR2(30);
26073 l_line_definition_owner_code  VARCHAR2(1);
26074 --
26075 -- adr variables
26076 l_segment                     VARCHAR2(30);
26077 l_ccid                        NUMBER;
26078 l_adr_transaction_coa_id      NUMBER;
26079 l_adr_accounting_coa_id       NUMBER;
26080 l_adr_flexfield_segment_code  VARCHAR2(30);
26081 l_adr_flex_value_set_id       NUMBER;
26082 l_adr_value_type_code         VARCHAR2(30);
26083 l_adr_value_combination_id    NUMBER;
26084 l_adr_value_segment_code      VARCHAR2(30);
26085 
26086 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26087 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26088 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26089 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26090 
26091 -- 4262811 Variables ------------------------------------------------------------------------------------------
26095 l_accrual_line_num            NUMBER;
26092 l_entered_amt_idx             NUMBER;
26093 l_accted_amt_idx              NUMBER;
26094 l_acc_rev_flag                VARCHAR2(1);
26096 l_tmp_amt                     NUMBER;
26097 l_acc_rev_natural_side_code   VARCHAR2(1);
26098 
26099 l_num_entries                 NUMBER;
26100 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26101 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26102 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26103 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26104 l_recog_line_1                NUMBER;
26105 l_recog_line_2                NUMBER;
26106 
26107 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26108 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26109 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26110 
26111 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26112 
26113 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26114 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26115 
26116 ---------------------------------------------------------------------------------------------------------------
26117 
26118 
26119 --
26120 -- bulk performance
26121 --
26122 l_balance_type_code           VARCHAR2(1);
26123 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26124 l_log_module                  VARCHAR2(240);
26125 
26126 --
26127 -- Upgrade strategy
26128 --
26129 l_actual_upg_option           VARCHAR2(1);
26130 l_enc_upg_option           VARCHAR2(1);
26131 
26132 --
26133 BEGIN
26134 --
26135 IF g_log_enabled THEN
26136       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_80';
26137 END IF;
26138 --
26139 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26140 
26141       trace
26142          (p_msg      => 'BEGIN of AcctLineType_80'
26143          ,p_level    => C_LEVEL_PROCEDURE
26144          ,p_module   => l_log_module);
26145 
26146 END IF;
26147 --
26148 l_component_type             := 'AMB_JLT';
26149 l_component_code             := 'DCOGS';
26150 l_component_type_code        := 'S';
26151 l_component_appl_id          :=  555;
26152 l_amb_context_code           := 'DEFAULT';
26153 l_entity_code                := 'ORDERMANAGEMENT';
26154 l_event_class_code           := 'RMA';
26155 l_event_type_code            := 'RMA_ALL';
26156 l_line_definition_owner_code := 'S';
26157 l_line_definition_code       := 'RMA';
26158 --
26159 l_balance_type_code          := 'A';
26160 l_segment                     := NULL;
26161 l_ccid                        := NULL;
26162 l_adr_transaction_coa_id      := NULL;
26163 l_adr_accounting_coa_id       := NULL;
26164 l_adr_flexfield_segment_code  := NULL;
26165 l_adr_flex_value_set_id       := NULL;
26166 l_adr_value_type_code         := NULL;
26167 l_adr_value_combination_id    := NULL;
26168 l_adr_value_segment_code      := NULL;
26169 
26170 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
26171 l_bflow_class_code           := '';    -- 4219869 Business Flow
26172 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
26173 l_budgetary_control_flag     := 'N';
26174 
26175 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26176 l_bflow_applied_to_amt       := NULL; -- 5132302
26177 l_entered_amt_idx            := NULL;          -- 4262811
26178 l_accted_amt_idx             := NULL;          -- 4262811
26179 l_acc_rev_flag               := NULL;          -- 4262811
26180 l_accrual_line_num           := NULL;          -- 4262811
26181 l_tmp_amt                    := NULL;          -- 4262811
26182 --
26183  
26184 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26185     l_balance_type_code <> 'B' THEN
26186 IF NVL(p_source_2,'
26187 ') =  'DCOGS'
26188  THEN 
26189 
26190    --
26191    XLA_AE_LINES_PKG.SetNewLine;
26192 
26193    p_balance_type_code          := l_balance_type_code;
26194    -- set the flag so later we will know whether the gain loss line needs to be created
26195    
26196    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26197      p_actual_flag :='A';
26198    END IF;
26199 
26200    --
26201    -- bulk performance
26202    --
26203    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26204                                       p_header_num   => 0); -- 4262811
26205    --
26206    -- set accounting line options
26207    --
26208    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26209            p_natural_side_code          => 'D'
26210          , p_gain_or_loss_flag          => 'N'
26211          , p_gl_transfer_mode_code      => 'D'
26212          , p_acct_entry_type_code       => 'A'
26213          , p_switch_side_flag           => 'Y'
26214          , p_merge_duplicate_code       => 'W'
26215          );
26216    --
26217    l_acc_rev_natural_side_code := 'C';  -- 4262811
26218    -- 
26219    --
26220    -- set accounting line type info
26221    --
26222    xla_ae_lines_pkg.SetAcctLineType
26223       (p_component_type             => l_component_type
26224       ,p_event_type_code            => l_event_type_code
26228       ,p_accounting_line_type_code  => l_component_type_code
26225       ,p_line_definition_owner_code => l_line_definition_owner_code
26226       ,p_line_definition_code       => l_line_definition_code
26227       ,p_accounting_line_code       => l_component_code
26229       ,p_accounting_line_appl_id    => l_component_appl_id
26230       ,p_amb_context_code           => l_amb_context_code
26231       ,p_entity_code                => l_entity_code
26232       ,p_event_class_code           => l_event_class_code);
26233    --
26234    -- set accounting class
26235    --
26236    xla_ae_lines_pkg.SetAcctClass(
26237            p_accounting_class_code  => 'DEFERRED_COGS'
26238          , p_ae_header_id           => l_ae_header_id
26239          );
26240 
26241    --
26242    -- set rounding class
26243    --
26244    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26245                       'DEFERRED_COGS';
26246 
26247    --
26248    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26249    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26250    --
26251    -- bulk performance
26252    --
26253    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26254 
26255    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26256       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26257 
26258    -- 4955764
26259    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26260       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26261 
26262    -- 4458381 Public Sector Enh
26263    
26264    --
26265    -- set accounting attributes for the line type
26266    --
26267    l_entered_amt_idx := 3;
26268    l_accted_amt_idx  := 8;
26269    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
26270    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
26271    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
26272    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
26273    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
26274    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
26275    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
26276    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
26277    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
26278    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
26279    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
26280    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
26281    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
26282    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
26283    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
26284    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
26285    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
26286 
26287    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26288    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26289 
26290    ---------------------------------------------------------------------------------------------------------------
26291    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26292    ---------------------------------------------------------------------------------------------------------------
26293    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26294 
26295    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26296    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26297 
26298    IF xla_accounting_cache_pkg.GetValueChar
26299          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26300          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26301    AND l_bflow_method_code = 'PRIOR_ENTRY'
26302 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26303    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26304          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26305        )
26306    THEN
26307          xla_ae_lines_pkg.BflowUpgEntry
26308            (p_business_method_code    => l_bflow_method_code
26309            ,p_business_class_code     => l_bflow_class_code
26310            ,p_balance_type            => l_balance_type_code);
26311    ELSE
26312       NULL;
26313 -- No business flow processing for business flow method of NONE.
26314    END IF;
26315 
26316    --
26317    -- call analytical criteria
26318    --
26319    
26320    --
26321    -- call description
26322    --
26323    -- No description or it is inherited.
26324    --
26325    -- call ADRs
26326    -- Bug 4922099
26327    --
26328    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26329         (NVL(l_actual_upg_option, 'N') = 'O') OR
26330         (NVL(l_enc_upg_option, 'N') = 'O')
26331       )
26332    THEN
26333    NULL;
26334    --
26335    --
26336    
26337   l_ccid := AcctDerRule_10(
26338            p_application_id           => p_application_id
26342          , x_transaction_coa_id       => l_adr_transaction_coa_id
26339          , p_ae_header_id             => l_ae_header_id 
26340 , p_source_1 => p_source_1
26341 , p_source_2 => p_source_2
26343          , x_accounting_coa_id        => l_adr_accounting_coa_id
26344          , x_value_type_code          => l_adr_value_type_code
26345          , p_side                     => 'NA'
26346    );
26347 
26348    xla_ae_lines_pkg.set_ccid(
26349     p_code_combination_id          => l_ccid
26350   , p_value_type_code              => l_adr_value_type_code
26351   , p_transaction_coa_id           => l_adr_transaction_coa_id
26352   , p_accounting_coa_id            => l_adr_accounting_coa_id
26353   , p_adr_code                     => 'DCOGS'
26354   , p_adr_type_code                => 'S'
26355   , p_component_type               => l_component_type
26356   , p_component_code               => l_component_code
26357   , p_component_type_code          => l_component_type_code
26358   , p_component_appl_id            => l_component_appl_id
26359   , p_amb_context_code             => l_amb_context_code
26360   , p_side                         => 'NA'
26361   );
26362 
26363 
26364    --
26365    --
26366    END IF;
26367    --
26368    -- Bug 4922099
26369    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26370           (NVL(l_enc_upg_option, 'N') = 'O')
26371         ) AND
26372         (l_bflow_method_code = 'PRIOR_ENTRY')
26373       )
26374    THEN
26375       IF
26376       --
26377       1 = 2
26378       --
26379       THEN
26380       xla_accounting_err_pkg.build_message
26381                                     (p_appli_s_name            => 'XLA'
26382                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26383                                     ,p_token_1                 => 'LINE_NUMBER'
26384                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26385                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26386                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26387                                                                              l_component_type
26388                                                                             ,l_component_code
26389                                                                             ,l_component_type_code
26390                                                                             ,l_component_appl_id
26391                                                                             ,l_amb_context_code
26392                                                                             ,l_entity_code
26393                                                                             ,l_event_class_code
26394                                                                            )
26395                                     ,p_token_3                 => 'OWNER'
26396                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26397                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26398                                                                           ,p_lookup_code    => l_component_type_code
26399                                                                          )
26400                                     ,p_token_4                 => 'PRODUCT_NAME'
26401                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26402                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26403                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26404                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26405                                     ,p_ae_header_id            =>  NULL
26406                                        );
26407 
26408         IF (C_LEVEL_ERROR>= g_log_level) THEN
26409                  trace
26410                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26411                       ,p_level    => C_LEVEL_ERROR
26412                       ,p_module   => l_log_module);
26413         END IF;
26414       END IF;
26415    END IF;
26416    --
26417    --
26418    ------------------------------------------------------------------------------------------------
26419    -- 4219869 Business Flow
26420    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26421    -- Prior Entry.  Currently, the following code is always generated.
26422    ------------------------------------------------------------------------------------------------
26423    XLA_AE_LINES_PKG.ValidateCurrentLine;
26424 
26425    ------------------------------------------------------------------------------------
26426    -- 4219869 Business Flow
26427    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26428    ------------------------------------------------------------------------------------
26429    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26430 
26431    ----------------------------------------------------------------------------------
26432    -- 4219869 Business Flow
26433    -- Update journal entry status -- Need to generate this within IF <condition>
26434    ----------------------------------------------------------------------------------
26435    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26439 
26436          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26437          ,p_balance_type_code => l_balance_type_code
26438          );
26440    -------------------------------------------------------------------------------------------
26441    -- 4262811 - Generate the Accrual Reversal lines
26442    -------------------------------------------------------------------------------------------
26443    BEGIN
26444       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26445                               (g_array_event(p_event_id).array_value_num('header_index'));
26446       IF l_acc_rev_flag IS NULL THEN
26447          l_acc_rev_flag := 'N';
26448       END IF;
26449    EXCEPTION
26450       WHEN OTHERS THEN
26451          l_acc_rev_flag := 'N';
26452    END;
26453    --
26454    IF (l_acc_rev_flag = 'Y') THEN
26455 
26456        -- 4645092  ------------------------------------------------------------------------------
26457        -- To allow MPA report to determine if it should generate report process
26458        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26459        ------------------------------------------------------------------------------------------
26460 
26461        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26462        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26463    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
26464    -- call ADRs
26465    -- Bug 4922099
26466    --
26467    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26468         (NVL(l_actual_upg_option, 'N') = 'O') OR
26469         (NVL(l_enc_upg_option, 'N') = 'O')
26470       )
26471    THEN
26472    NULL;
26473    --
26474    --
26475    
26476   l_ccid := AcctDerRule_10(
26477            p_application_id           => p_application_id
26478          , p_ae_header_id             => l_ae_header_id 
26479 , p_source_1 => p_source_1
26480 , p_source_2 => p_source_2
26481          , x_transaction_coa_id       => l_adr_transaction_coa_id
26482          , x_accounting_coa_id        => l_adr_accounting_coa_id
26483          , x_value_type_code          => l_adr_value_type_code
26484          , p_side                     => 'NA'
26485    );
26486 
26487    xla_ae_lines_pkg.set_ccid(
26488     p_code_combination_id          => l_ccid
26489   , p_value_type_code              => l_adr_value_type_code
26490   , p_transaction_coa_id           => l_adr_transaction_coa_id
26491   , p_accounting_coa_id            => l_adr_accounting_coa_id
26492   , p_adr_code                     => 'DCOGS'
26493   , p_adr_type_code                => 'S'
26494   , p_component_type               => l_component_type
26495   , p_component_code               => l_component_code
26496   , p_component_type_code          => l_component_type_code
26497   , p_component_appl_id            => l_component_appl_id
26498   , p_amb_context_code             => l_amb_context_code
26499   , p_side                         => 'NA'
26500   );
26501 
26502 
26503    --
26504    --
26505    END IF;
26506 
26507        --
26508        -- Update the line information that should be overwritten
26509        --
26510        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26511                                          p_header_num   => 1);
26512        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
26513 
26514        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26515 
26516        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
26517           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26518        END IF;
26519 
26520       --
26521       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26522       --
26523       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26524           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
26525       ELSE
26526           ---------------------------------------------------------------------------------------------------
26527           -- 4262811a Switch Sign
26528           ---------------------------------------------------------------------------------------------------
26529           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
26530           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26531                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26532           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26533                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26534           -- 5132302
26535           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
26536                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26537 
26538       END IF;
26539 
26540       -- 4955764
26541       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26542       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
26543 
26544 
26548       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26545       XLA_AE_LINES_PKG.ValidateCurrentLine;
26546       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26547 
26549                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26550                ,p_balance_type_code => l_balance_type_code);
26551 
26552    END IF;
26553 
26554    -----------------------------------------------------------------------------------------
26555    -- 4262811 Multiperiod Accounting
26556    -----------------------------------------------------------------------------------------
26557      -- No MPA option is assigned.
26558 
26559 
26560 END IF;
26561 END IF;
26562 --
26563 
26564 --
26565 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26566    trace
26567       (p_msg      => 'END of AcctLineType_80'
26568       ,p_level    => C_LEVEL_PROCEDURE
26569       ,p_module   => l_log_module);
26570 END IF;
26571 --
26572 EXCEPTION
26573   WHEN xla_exceptions_pkg.application_exception THEN
26574       RAISE;
26575   WHEN OTHERS THEN
26576        xla_exceptions_pkg.raise_message
26577            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_80');
26578 END AcctLineType_80;
26579 --
26580 
26581 ---------------------------------------
26582 --
26583 -- PRIVATE FUNCTION
26584 --         AcctLineType_81
26585 --
26586 ---------------------------------------
26587 PROCEDURE AcctLineType_81 (
26588   p_application_id        IN NUMBER
26589  ,p_event_id              IN NUMBER
26590  ,p_calculate_acctd_flag  IN VARCHAR2
26591  ,p_calculate_g_l_flag    IN VARCHAR2
26592  ,p_actual_flag           IN OUT VARCHAR2
26593  ,p_balance_type_code     OUT VARCHAR2
26594  ,p_gain_or_loss_ref      OUT VARCHAR2
26595  
26596 --Transaction Account
26597  , p_source_1            IN NUMBER
26598 --Journal Line Type
26599  , p_source_2            IN VARCHAR2
26600 --Entered Amount
26601  , p_source_3            IN NUMBER
26602 --First Distribution Identifier
26603  , p_source_5            IN NUMBER
26604 --Distribution Type
26605  , p_source_6            IN VARCHAR2
26606 --Currency Code
26607  , p_source_7            IN VARCHAR2
26608 --Currency Conversion Date
26609  , p_source_8            IN DATE
26610 --Currency Conversion Rate
26611  , p_source_9            IN NUMBER
26612 --Currency Conversion Type
26613  , p_source_10            IN VARCHAR2
26614 --Accounted Amount
26615  , p_source_11            IN NUMBER
26616 )
26617 IS
26618 
26619 l_component_type              VARCHAR2(80);
26620 l_component_code              VARCHAR2(30);
26621 l_component_type_code         VARCHAR2(1);
26622 l_component_appl_id           INTEGER;
26623 l_amb_context_code            VARCHAR2(30);
26624 l_entity_code                 VARCHAR2(30);
26625 l_event_class_code            VARCHAR2(30);
26626 l_ae_header_id                NUMBER;
26627 l_event_type_code             VARCHAR2(30);
26628 l_line_definition_code        VARCHAR2(30);
26629 l_line_definition_owner_code  VARCHAR2(1);
26630 --
26631 -- adr variables
26632 l_segment                     VARCHAR2(30);
26633 l_ccid                        NUMBER;
26634 l_adr_transaction_coa_id      NUMBER;
26635 l_adr_accounting_coa_id       NUMBER;
26636 l_adr_flexfield_segment_code  VARCHAR2(30);
26637 l_adr_flex_value_set_id       NUMBER;
26638 l_adr_value_type_code         VARCHAR2(30);
26639 l_adr_value_combination_id    NUMBER;
26640 l_adr_value_segment_code      VARCHAR2(30);
26641 
26642 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26643 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26644 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26645 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26646 
26647 -- 4262811 Variables ------------------------------------------------------------------------------------------
26648 l_entered_amt_idx             NUMBER;
26649 l_accted_amt_idx              NUMBER;
26650 l_acc_rev_flag                VARCHAR2(1);
26651 l_accrual_line_num            NUMBER;
26652 l_tmp_amt                     NUMBER;
26653 l_acc_rev_natural_side_code   VARCHAR2(1);
26654 
26655 l_num_entries                 NUMBER;
26656 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26657 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26658 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26659 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26660 l_recog_line_1                NUMBER;
26661 l_recog_line_2                NUMBER;
26662 
26663 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26664 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26665 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26666 
26667 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26668 
26669 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26670 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26671 
26672 ---------------------------------------------------------------------------------------------------------------
26673 
26674 
26675 --
26676 -- bulk performance
26677 --
26678 l_balance_type_code           VARCHAR2(1);
26682 --
26679 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26680 l_log_module                  VARCHAR2(240);
26681 
26683 -- Upgrade strategy
26684 --
26685 l_actual_upg_option           VARCHAR2(1);
26686 l_enc_upg_option           VARCHAR2(1);
26687 
26688 --
26689 BEGIN
26690 --
26691 IF g_log_enabled THEN
26692       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_81';
26693 END IF;
26694 --
26695 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26696 
26697       trace
26698          (p_msg      => 'BEGIN of AcctLineType_81'
26699          ,p_level    => C_LEVEL_PROCEDURE
26700          ,p_module   => l_log_module);
26701 
26702 END IF;
26703 --
26704 l_component_type             := 'AMB_JLT';
26705 l_component_code             := 'DCOGS';
26706 l_component_type_code        := 'S';
26707 l_component_appl_id          :=  555;
26708 l_amb_context_code           := 'DEFAULT';
26709 l_entity_code                := 'ORDERMANAGEMENT';
26710 l_event_class_code           := 'SHIPPING';
26711 l_event_type_code            := 'SO_ISSUE';
26712 l_line_definition_owner_code := 'S';
26713 l_line_definition_code       := 'SO_ISSUE';
26714 --
26715 l_balance_type_code          := 'A';
26716 l_segment                     := NULL;
26717 l_ccid                        := NULL;
26718 l_adr_transaction_coa_id      := NULL;
26719 l_adr_accounting_coa_id       := NULL;
26720 l_adr_flexfield_segment_code  := NULL;
26721 l_adr_flex_value_set_id       := NULL;
26722 l_adr_value_type_code         := NULL;
26723 l_adr_value_combination_id    := NULL;
26724 l_adr_value_segment_code      := NULL;
26725 
26726 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
26727 l_bflow_class_code           := '';    -- 4219869 Business Flow
26728 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
26729 l_budgetary_control_flag     := 'N';
26730 
26731 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26732 l_bflow_applied_to_amt       := NULL; -- 5132302
26733 l_entered_amt_idx            := NULL;          -- 4262811
26734 l_accted_amt_idx             := NULL;          -- 4262811
26735 l_acc_rev_flag               := NULL;          -- 4262811
26736 l_accrual_line_num           := NULL;          -- 4262811
26737 l_tmp_amt                    := NULL;          -- 4262811
26738 --
26739  
26740 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26741     l_balance_type_code <> 'B' THEN
26742 IF NVL(p_source_2,'
26743 ') =  'DCOGS'
26744  THEN 
26745 
26746    --
26747    XLA_AE_LINES_PKG.SetNewLine;
26748 
26749    p_balance_type_code          := l_balance_type_code;
26750    -- set the flag so later we will know whether the gain loss line needs to be created
26751    
26752    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26753      p_actual_flag :='A';
26754    END IF;
26755 
26756    --
26757    -- bulk performance
26758    --
26759    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26760                                       p_header_num   => 0); -- 4262811
26761    --
26762    -- set accounting line options
26763    --
26764    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26765            p_natural_side_code          => 'D'
26766          , p_gain_or_loss_flag          => 'N'
26767          , p_gl_transfer_mode_code      => 'D'
26768          , p_acct_entry_type_code       => 'A'
26769          , p_switch_side_flag           => 'Y'
26770          , p_merge_duplicate_code       => 'W'
26771          );
26772    --
26773    l_acc_rev_natural_side_code := 'C';  -- 4262811
26774    -- 
26775    --
26776    -- set accounting line type info
26777    --
26778    xla_ae_lines_pkg.SetAcctLineType
26779       (p_component_type             => l_component_type
26780       ,p_event_type_code            => l_event_type_code
26781       ,p_line_definition_owner_code => l_line_definition_owner_code
26782       ,p_line_definition_code       => l_line_definition_code
26783       ,p_accounting_line_code       => l_component_code
26784       ,p_accounting_line_type_code  => l_component_type_code
26785       ,p_accounting_line_appl_id    => l_component_appl_id
26786       ,p_amb_context_code           => l_amb_context_code
26787       ,p_entity_code                => l_entity_code
26788       ,p_event_class_code           => l_event_class_code);
26789    --
26790    -- set accounting class
26791    --
26792    xla_ae_lines_pkg.SetAcctClass(
26793            p_accounting_class_code  => 'DEFERRED_COGS'
26794          , p_ae_header_id           => l_ae_header_id
26795          );
26796 
26797    --
26798    -- set rounding class
26799    --
26800    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26801                       'DEFERRED_COGS';
26802 
26803    --
26804    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26805    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26806    --
26807    -- bulk performance
26808    --
26809    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26810 
26811    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26815    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26812       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26813 
26814    -- 4955764
26816       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26817 
26818    -- 4458381 Public Sector Enh
26819    
26820    --
26821    -- set accounting attributes for the line type
26822    --
26823    l_entered_amt_idx := 3;
26824    l_accted_amt_idx  := 8;
26825    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
26826    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
26827    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
26828    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
26829    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
26830    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
26831    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
26832    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
26833    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
26834    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
26835    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
26836    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
26837    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
26838    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
26839    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
26840    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
26841    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
26842 
26843    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26844    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26845 
26846    ---------------------------------------------------------------------------------------------------------------
26847    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26848    ---------------------------------------------------------------------------------------------------------------
26849    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26850 
26851    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26852    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26853 
26854    IF xla_accounting_cache_pkg.GetValueChar
26855          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26856          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26857    AND l_bflow_method_code = 'PRIOR_ENTRY'
26858 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26859    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26860          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26861        )
26862    THEN
26863          xla_ae_lines_pkg.BflowUpgEntry
26864            (p_business_method_code    => l_bflow_method_code
26865            ,p_business_class_code     => l_bflow_class_code
26866            ,p_balance_type            => l_balance_type_code);
26867    ELSE
26868       NULL;
26869 -- No business flow processing for business flow method of NONE.
26870    END IF;
26871 
26872    --
26873    -- call analytical criteria
26874    --
26875    
26876    --
26877    -- call description
26878    --
26879    -- No description or it is inherited.
26880    --
26881    -- call ADRs
26882    -- Bug 4922099
26883    --
26884    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26885         (NVL(l_actual_upg_option, 'N') = 'O') OR
26886         (NVL(l_enc_upg_option, 'N') = 'O')
26887       )
26888    THEN
26889    NULL;
26890    --
26891    --
26892    
26893   l_ccid := AcctDerRule_10(
26894            p_application_id           => p_application_id
26895          , p_ae_header_id             => l_ae_header_id 
26896 , p_source_1 => p_source_1
26897 , p_source_2 => p_source_2
26898          , x_transaction_coa_id       => l_adr_transaction_coa_id
26899          , x_accounting_coa_id        => l_adr_accounting_coa_id
26900          , x_value_type_code          => l_adr_value_type_code
26901          , p_side                     => 'NA'
26902    );
26903 
26904    xla_ae_lines_pkg.set_ccid(
26905     p_code_combination_id          => l_ccid
26906   , p_value_type_code              => l_adr_value_type_code
26907   , p_transaction_coa_id           => l_adr_transaction_coa_id
26908   , p_accounting_coa_id            => l_adr_accounting_coa_id
26909   , p_adr_code                     => 'DCOGS'
26910   , p_adr_type_code                => 'S'
26911   , p_component_type               => l_component_type
26912   , p_component_code               => l_component_code
26913   , p_component_type_code          => l_component_type_code
26914   , p_component_appl_id            => l_component_appl_id
26915   , p_amb_context_code             => l_amb_context_code
26916   , p_side                         => 'NA'
26917   );
26918 
26919 
26920    --
26921    --
26922    END IF;
26923    --
26924    -- Bug 4922099
26925    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26926           (NVL(l_enc_upg_option, 'N') = 'O')
26927         ) AND
26928         (l_bflow_method_code = 'PRIOR_ENTRY')
26929       )
26930    THEN
26931       IF
26935       THEN
26932       --
26933       1 = 2
26934       --
26936       xla_accounting_err_pkg.build_message
26937                                     (p_appli_s_name            => 'XLA'
26938                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26939                                     ,p_token_1                 => 'LINE_NUMBER'
26940                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26941                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26942                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26943                                                                              l_component_type
26944                                                                             ,l_component_code
26945                                                                             ,l_component_type_code
26946                                                                             ,l_component_appl_id
26947                                                                             ,l_amb_context_code
26948                                                                             ,l_entity_code
26949                                                                             ,l_event_class_code
26950                                                                            )
26951                                     ,p_token_3                 => 'OWNER'
26952                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26953                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26954                                                                           ,p_lookup_code    => l_component_type_code
26955                                                                          )
26956                                     ,p_token_4                 => 'PRODUCT_NAME'
26957                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26958                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26959                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26960                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26961                                     ,p_ae_header_id            =>  NULL
26962                                        );
26963 
26964         IF (C_LEVEL_ERROR>= g_log_level) THEN
26965                  trace
26966                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26967                       ,p_level    => C_LEVEL_ERROR
26968                       ,p_module   => l_log_module);
26969         END IF;
26970       END IF;
26971    END IF;
26972    --
26973    --
26974    ------------------------------------------------------------------------------------------------
26975    -- 4219869 Business Flow
26976    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26977    -- Prior Entry.  Currently, the following code is always generated.
26978    ------------------------------------------------------------------------------------------------
26979    XLA_AE_LINES_PKG.ValidateCurrentLine;
26980 
26981    ------------------------------------------------------------------------------------
26982    -- 4219869 Business Flow
26983    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26984    ------------------------------------------------------------------------------------
26985    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26986 
26987    ----------------------------------------------------------------------------------
26988    -- 4219869 Business Flow
26989    -- Update journal entry status -- Need to generate this within IF <condition>
26990    ----------------------------------------------------------------------------------
26991    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26992          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26993          ,p_balance_type_code => l_balance_type_code
26994          );
26995 
26996    -------------------------------------------------------------------------------------------
26997    -- 4262811 - Generate the Accrual Reversal lines
26998    -------------------------------------------------------------------------------------------
26999    BEGIN
27000       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27001                               (g_array_event(p_event_id).array_value_num('header_index'));
27002       IF l_acc_rev_flag IS NULL THEN
27003          l_acc_rev_flag := 'N';
27004       END IF;
27005    EXCEPTION
27006       WHEN OTHERS THEN
27007          l_acc_rev_flag := 'N';
27008    END;
27009    --
27010    IF (l_acc_rev_flag = 'Y') THEN
27011 
27012        -- 4645092  ------------------------------------------------------------------------------
27013        -- To allow MPA report to determine if it should generate report process
27014        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27015        ------------------------------------------------------------------------------------------
27016 
27017        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27018        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27019    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
27020    -- call ADRs
27021    -- Bug 4922099
27022    --
27026       )
27023    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27024         (NVL(l_actual_upg_option, 'N') = 'O') OR
27025         (NVL(l_enc_upg_option, 'N') = 'O')
27027    THEN
27028    NULL;
27029    --
27030    --
27031    
27032   l_ccid := AcctDerRule_10(
27033            p_application_id           => p_application_id
27034          , p_ae_header_id             => l_ae_header_id 
27035 , p_source_1 => p_source_1
27036 , p_source_2 => p_source_2
27037          , x_transaction_coa_id       => l_adr_transaction_coa_id
27038          , x_accounting_coa_id        => l_adr_accounting_coa_id
27039          , x_value_type_code          => l_adr_value_type_code
27040          , p_side                     => 'NA'
27041    );
27042 
27043    xla_ae_lines_pkg.set_ccid(
27044     p_code_combination_id          => l_ccid
27045   , p_value_type_code              => l_adr_value_type_code
27046   , p_transaction_coa_id           => l_adr_transaction_coa_id
27047   , p_accounting_coa_id            => l_adr_accounting_coa_id
27048   , p_adr_code                     => 'DCOGS'
27049   , p_adr_type_code                => 'S'
27050   , p_component_type               => l_component_type
27051   , p_component_code               => l_component_code
27052   , p_component_type_code          => l_component_type_code
27053   , p_component_appl_id            => l_component_appl_id
27054   , p_amb_context_code             => l_amb_context_code
27055   , p_side                         => 'NA'
27056   );
27057 
27058 
27059    --
27060    --
27061    END IF;
27062 
27063        --
27064        -- Update the line information that should be overwritten
27065        --
27066        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27067                                          p_header_num   => 1);
27068        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27069 
27070        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27071 
27072        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27073           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27074        END IF;
27075 
27076       --
27077       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27078       --
27079       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27080           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27081       ELSE
27082           ---------------------------------------------------------------------------------------------------
27083           -- 4262811a Switch Sign
27084           ---------------------------------------------------------------------------------------------------
27085           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27086           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27087                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27088           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27089                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27090           -- 5132302
27091           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27092                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27093 
27094       END IF;
27095 
27096       -- 4955764
27097       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27098       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27099 
27100 
27101       XLA_AE_LINES_PKG.ValidateCurrentLine;
27102       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27103 
27104       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27105                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27106                ,p_balance_type_code => l_balance_type_code);
27107 
27108    END IF;
27109 
27110    -----------------------------------------------------------------------------------------
27111    -- 4262811 Multiperiod Accounting
27112    -----------------------------------------------------------------------------------------
27113      -- No MPA option is assigned.
27114 
27115 
27116 END IF;
27117 END IF;
27118 --
27119 
27120 --
27121 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27122    trace
27123       (p_msg      => 'END of AcctLineType_81'
27124       ,p_level    => C_LEVEL_PROCEDURE
27125       ,p_module   => l_log_module);
27126 END IF;
27127 --
27128 EXCEPTION
27129   WHEN xla_exceptions_pkg.application_exception THEN
27130       RAISE;
27131   WHEN OTHERS THEN
27132        xla_exceptions_pkg.raise_message
27133            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_81');
27134 END AcctLineType_81;
27135 --
27136 
27137 ---------------------------------------
27138 --
27139 -- PRIVATE FUNCTION
27140 --         AcctLineType_82
27141 --
27142 ---------------------------------------
27143 PROCEDURE AcctLineType_82 (
27147  ,p_calculate_g_l_flag    IN VARCHAR2
27144   p_application_id        IN NUMBER
27145  ,p_event_id              IN NUMBER
27146  ,p_calculate_acctd_flag  IN VARCHAR2
27148  ,p_actual_flag           IN OUT VARCHAR2
27149  ,p_balance_type_code     OUT VARCHAR2
27150  ,p_gain_or_loss_ref      OUT VARCHAR2
27151  
27152 --Transaction Account
27153  , p_source_1            IN NUMBER
27154 --Journal Line Type
27155  , p_source_2            IN VARCHAR2
27156 --Entered Amount
27157  , p_source_3            IN NUMBER
27158 --First Distribution Identifier
27159  , p_source_5            IN NUMBER
27160 --Distribution Type
27161  , p_source_6            IN VARCHAR2
27162 --Currency Code
27163  , p_source_7            IN VARCHAR2
27164 --Currency Conversion Date
27165  , p_source_8            IN DATE
27166 --Currency Conversion Rate
27167  , p_source_9            IN NUMBER
27168 --Currency Conversion Type
27169  , p_source_10            IN VARCHAR2
27170 --Accounted Amount
27171  , p_source_11            IN NUMBER
27172 )
27173 IS
27174 
27175 l_component_type              VARCHAR2(80);
27176 l_component_code              VARCHAR2(30);
27177 l_component_type_code         VARCHAR2(1);
27178 l_component_appl_id           INTEGER;
27179 l_amb_context_code            VARCHAR2(30);
27180 l_entity_code                 VARCHAR2(30);
27181 l_event_class_code            VARCHAR2(30);
27182 l_ae_header_id                NUMBER;
27183 l_event_type_code             VARCHAR2(30);
27184 l_line_definition_code        VARCHAR2(30);
27185 l_line_definition_owner_code  VARCHAR2(1);
27186 --
27187 -- adr variables
27188 l_segment                     VARCHAR2(30);
27189 l_ccid                        NUMBER;
27190 l_adr_transaction_coa_id      NUMBER;
27191 l_adr_accounting_coa_id       NUMBER;
27192 l_adr_flexfield_segment_code  VARCHAR2(30);
27193 l_adr_flex_value_set_id       NUMBER;
27194 l_adr_value_type_code         VARCHAR2(30);
27195 l_adr_value_combination_id    NUMBER;
27196 l_adr_value_segment_code      VARCHAR2(30);
27197 
27198 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27199 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27200 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27201 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27202 
27203 -- 4262811 Variables ------------------------------------------------------------------------------------------
27204 l_entered_amt_idx             NUMBER;
27205 l_accted_amt_idx              NUMBER;
27206 l_acc_rev_flag                VARCHAR2(1);
27207 l_accrual_line_num            NUMBER;
27208 l_tmp_amt                     NUMBER;
27209 l_acc_rev_natural_side_code   VARCHAR2(1);
27210 
27211 l_num_entries                 NUMBER;
27212 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27213 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27214 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27215 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27216 l_recog_line_1                NUMBER;
27217 l_recog_line_2                NUMBER;
27218 
27219 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27220 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27221 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27222 
27223 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27224 
27225 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27226 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27227 
27228 ---------------------------------------------------------------------------------------------------------------
27229 
27230 
27231 --
27232 -- bulk performance
27233 --
27234 l_balance_type_code           VARCHAR2(1);
27235 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27236 l_log_module                  VARCHAR2(240);
27237 
27238 --
27239 -- Upgrade strategy
27240 --
27241 l_actual_upg_option           VARCHAR2(1);
27242 l_enc_upg_option           VARCHAR2(1);
27243 
27244 --
27245 BEGIN
27246 --
27247 IF g_log_enabled THEN
27248       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_82';
27249 END IF;
27250 --
27251 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27252 
27253       trace
27254          (p_msg      => 'BEGIN of AcctLineType_82'
27255          ,p_level    => C_LEVEL_PROCEDURE
27256          ,p_module   => l_log_module);
27257 
27258 END IF;
27259 --
27260 l_component_type             := 'AMB_JLT';
27261 l_component_code             := 'ERA';
27262 l_component_type_code        := 'S';
27263 l_component_appl_id          :=  555;
27264 l_amb_context_code           := 'DEFAULT';
27265 l_entity_code                := 'PURCHASING';
27266 l_event_class_code           := 'PAYABLES_INVOICE';
27267 l_event_type_code            := 'INVOICE_ERV_ADJ';
27268 l_line_definition_owner_code := 'S';
27269 l_line_definition_code       := 'INVOICE_ERV_ADJ';
27270 --
27271 l_balance_type_code          := 'A';
27272 l_segment                     := NULL;
27273 l_ccid                        := NULL;
27274 l_adr_transaction_coa_id      := NULL;
27275 l_adr_accounting_coa_id       := NULL;
27279 l_adr_value_combination_id    := NULL;
27276 l_adr_flexfield_segment_code  := NULL;
27277 l_adr_flex_value_set_id       := NULL;
27278 l_adr_value_type_code         := NULL;
27280 l_adr_value_segment_code      := NULL;
27281 
27282 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27283 l_bflow_class_code           := '';    -- 4219869 Business Flow
27284 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27285 l_budgetary_control_flag     := 'N';
27286 
27287 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27288 l_bflow_applied_to_amt       := NULL; -- 5132302
27289 l_entered_amt_idx            := NULL;          -- 4262811
27290 l_accted_amt_idx             := NULL;          -- 4262811
27291 l_acc_rev_flag               := NULL;          -- 4262811
27292 l_accrual_line_num           := NULL;          -- 4262811
27293 l_tmp_amt                    := NULL;          -- 4262811
27294 --
27295  
27296 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27297     l_balance_type_code <> 'B' THEN
27298 IF NVL(p_source_2,'
27299 ') =  'ERA'
27300  THEN 
27301 
27302    --
27303    XLA_AE_LINES_PKG.SetNewLine;
27304 
27305    p_balance_type_code          := l_balance_type_code;
27306    -- set the flag so later we will know whether the gain loss line needs to be created
27307    
27308    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27309      p_actual_flag :='A';
27310    END IF;
27311 
27312    --
27313    -- bulk performance
27314    --
27315    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27316                                       p_header_num   => 0); -- 4262811
27317    --
27318    -- set accounting line options
27319    --
27320    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27321            p_natural_side_code          => 'D'
27322          , p_gain_or_loss_flag          => 'N'
27323          , p_gl_transfer_mode_code      => 'D'
27324          , p_acct_entry_type_code       => 'A'
27325          , p_switch_side_flag           => 'Y'
27326          , p_merge_duplicate_code       => 'W'
27327          );
27328    --
27329    l_acc_rev_natural_side_code := 'C';  -- 4262811
27330    -- 
27331    --
27332    -- set accounting line type info
27333    --
27334    xla_ae_lines_pkg.SetAcctLineType
27335       (p_component_type             => l_component_type
27336       ,p_event_type_code            => l_event_type_code
27337       ,p_line_definition_owner_code => l_line_definition_owner_code
27338       ,p_line_definition_code       => l_line_definition_code
27339       ,p_accounting_line_code       => l_component_code
27340       ,p_accounting_line_type_code  => l_component_type_code
27341       ,p_accounting_line_appl_id    => l_component_appl_id
27342       ,p_amb_context_code           => l_amb_context_code
27343       ,p_entity_code                => l_entity_code
27344       ,p_event_class_code           => l_event_class_code);
27345    --
27346    -- set accounting class
27347    --
27348    xla_ae_lines_pkg.SetAcctClass(
27349            p_accounting_class_code  => 'EXCHANGE_RATE_VARIANCE'
27350          , p_ae_header_id           => l_ae_header_id
27351          );
27352 
27353    --
27354    -- set rounding class
27355    --
27356    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27357                       'EXCHANGE_RATE_VARIANCE';
27358 
27359    --
27360    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27361    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27362    --
27363    -- bulk performance
27364    --
27365    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27366 
27367    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27368       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27369 
27370    -- 4955764
27371    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27372       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27373 
27374    -- 4458381 Public Sector Enh
27375    
27376    --
27377    -- set accounting attributes for the line type
27378    --
27379    l_entered_amt_idx := 3;
27380    l_accted_amt_idx  := 8;
27381    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
27382    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
27383    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
27384    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
27385    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
27386    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
27387    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
27388    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
27389    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
27390    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
27391    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
27392    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
27393    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
27394    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
27398 
27395    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
27396    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
27397    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
27399    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27400    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27401 
27402    ---------------------------------------------------------------------------------------------------------------
27403    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27404    ---------------------------------------------------------------------------------------------------------------
27405    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27406 
27407    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27408    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27409 
27410    IF xla_accounting_cache_pkg.GetValueChar
27411          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27412          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27413    AND l_bflow_method_code = 'PRIOR_ENTRY'
27414 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27415    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27416          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27417        )
27418    THEN
27419          xla_ae_lines_pkg.BflowUpgEntry
27420            (p_business_method_code    => l_bflow_method_code
27421            ,p_business_class_code     => l_bflow_class_code
27422            ,p_balance_type            => l_balance_type_code);
27423    ELSE
27424       NULL;
27425 -- No business flow processing for business flow method of NONE.
27426    END IF;
27427 
27428    --
27429    -- call analytical criteria
27430    --
27431    
27432    --
27433    -- call description
27434    --
27435    -- No description or it is inherited.
27436    --
27437    -- call ADRs
27438    -- Bug 4922099
27439    --
27440    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27441         (NVL(l_actual_upg_option, 'N') = 'O') OR
27442         (NVL(l_enc_upg_option, 'N') = 'O')
27443       )
27444    THEN
27445    NULL;
27446    --
27447    --
27448    
27449   l_ccid := AcctDerRule_11(
27450            p_application_id           => p_application_id
27451          , p_ae_header_id             => l_ae_header_id 
27452 , p_source_1 => p_source_1
27453 , p_source_2 => p_source_2
27454          , x_transaction_coa_id       => l_adr_transaction_coa_id
27455          , x_accounting_coa_id        => l_adr_accounting_coa_id
27456          , x_value_type_code          => l_adr_value_type_code
27457          , p_side                     => 'NA'
27458    );
27459 
27460    xla_ae_lines_pkg.set_ccid(
27461     p_code_combination_id          => l_ccid
27462   , p_value_type_code              => l_adr_value_type_code
27463   , p_transaction_coa_id           => l_adr_transaction_coa_id
27464   , p_accounting_coa_id            => l_adr_accounting_coa_id
27465   , p_adr_code                     => 'ERA'
27466   , p_adr_type_code                => 'S'
27467   , p_component_type               => l_component_type
27468   , p_component_code               => l_component_code
27469   , p_component_type_code          => l_component_type_code
27470   , p_component_appl_id            => l_component_appl_id
27471   , p_amb_context_code             => l_amb_context_code
27472   , p_side                         => 'NA'
27473   );
27474 
27475 
27476    --
27477    --
27478    END IF;
27479    --
27480    -- Bug 4922099
27481    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27482           (NVL(l_enc_upg_option, 'N') = 'O')
27483         ) AND
27484         (l_bflow_method_code = 'PRIOR_ENTRY')
27485       )
27486    THEN
27487       IF
27488       --
27489       1 = 2
27490       --
27491       THEN
27492       xla_accounting_err_pkg.build_message
27493                                     (p_appli_s_name            => 'XLA'
27494                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27495                                     ,p_token_1                 => 'LINE_NUMBER'
27496                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
27497                                     ,p_token_2                 => 'LINE_TYPE_NAME'
27498                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
27499                                                                              l_component_type
27500                                                                             ,l_component_code
27501                                                                             ,l_component_type_code
27502                                                                             ,l_component_appl_id
27503                                                                             ,l_amb_context_code
27504                                                                             ,l_entity_code
27505                                                                             ,l_event_class_code
27506                                                                            )
27507                                     ,p_token_3                 => 'OWNER'
27511                                                                          )
27508                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
27509                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
27510                                                                           ,p_lookup_code    => l_component_type_code
27512                                     ,p_token_4                 => 'PRODUCT_NAME'
27513                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27514                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27515                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27516                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27517                                     ,p_ae_header_id            =>  NULL
27518                                        );
27519 
27520         IF (C_LEVEL_ERROR>= g_log_level) THEN
27521                  trace
27522                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27523                       ,p_level    => C_LEVEL_ERROR
27524                       ,p_module   => l_log_module);
27525         END IF;
27526       END IF;
27527    END IF;
27528    --
27529    --
27530    ------------------------------------------------------------------------------------------------
27531    -- 4219869 Business Flow
27532    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27533    -- Prior Entry.  Currently, the following code is always generated.
27534    ------------------------------------------------------------------------------------------------
27535    XLA_AE_LINES_PKG.ValidateCurrentLine;
27536 
27537    ------------------------------------------------------------------------------------
27538    -- 4219869 Business Flow
27539    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27540    ------------------------------------------------------------------------------------
27541    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27542 
27543    ----------------------------------------------------------------------------------
27544    -- 4219869 Business Flow
27545    -- Update journal entry status -- Need to generate this within IF <condition>
27546    ----------------------------------------------------------------------------------
27547    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27548          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27549          ,p_balance_type_code => l_balance_type_code
27550          );
27551 
27552    -------------------------------------------------------------------------------------------
27553    -- 4262811 - Generate the Accrual Reversal lines
27554    -------------------------------------------------------------------------------------------
27555    BEGIN
27556       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27557                               (g_array_event(p_event_id).array_value_num('header_index'));
27558       IF l_acc_rev_flag IS NULL THEN
27559          l_acc_rev_flag := 'N';
27560       END IF;
27561    EXCEPTION
27562       WHEN OTHERS THEN
27563          l_acc_rev_flag := 'N';
27564    END;
27565    --
27566    IF (l_acc_rev_flag = 'Y') THEN
27567 
27568        -- 4645092  ------------------------------------------------------------------------------
27569        -- To allow MPA report to determine if it should generate report process
27570        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27571        ------------------------------------------------------------------------------------------
27572 
27573        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27574        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27575    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
27576    -- call ADRs
27577    -- Bug 4922099
27578    --
27579    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27580         (NVL(l_actual_upg_option, 'N') = 'O') OR
27581         (NVL(l_enc_upg_option, 'N') = 'O')
27582       )
27583    THEN
27584    NULL;
27585    --
27586    --
27587    
27588   l_ccid := AcctDerRule_11(
27589            p_application_id           => p_application_id
27590          , p_ae_header_id             => l_ae_header_id 
27591 , p_source_1 => p_source_1
27592 , p_source_2 => p_source_2
27593          , x_transaction_coa_id       => l_adr_transaction_coa_id
27594          , x_accounting_coa_id        => l_adr_accounting_coa_id
27595          , x_value_type_code          => l_adr_value_type_code
27596          , p_side                     => 'NA'
27597    );
27598 
27599    xla_ae_lines_pkg.set_ccid(
27600     p_code_combination_id          => l_ccid
27601   , p_value_type_code              => l_adr_value_type_code
27602   , p_transaction_coa_id           => l_adr_transaction_coa_id
27603   , p_accounting_coa_id            => l_adr_accounting_coa_id
27604   , p_adr_code                     => 'ERA'
27605   , p_adr_type_code                => 'S'
27606   , p_component_type               => l_component_type
27607   , p_component_code               => l_component_code
27608   , p_component_type_code          => l_component_type_code
27612   );
27609   , p_component_appl_id            => l_component_appl_id
27610   , p_amb_context_code             => l_amb_context_code
27611   , p_side                         => 'NA'
27613 
27614 
27615    --
27616    --
27617    END IF;
27618 
27619        --
27620        -- Update the line information that should be overwritten
27621        --
27622        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27623                                          p_header_num   => 1);
27624        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27625 
27626        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27627 
27628        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27629           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27630        END IF;
27631 
27632       --
27633       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27634       --
27635       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27636           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27637       ELSE
27638           ---------------------------------------------------------------------------------------------------
27639           -- 4262811a Switch Sign
27640           ---------------------------------------------------------------------------------------------------
27641           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27642           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27643                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27644           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27645                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27646           -- 5132302
27647           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27648                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27649 
27650       END IF;
27651 
27652       -- 4955764
27653       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27654       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27655 
27656 
27657       XLA_AE_LINES_PKG.ValidateCurrentLine;
27658       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27659 
27660       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27661                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27662                ,p_balance_type_code => l_balance_type_code);
27663 
27664    END IF;
27665 
27666    -----------------------------------------------------------------------------------------
27667    -- 4262811 Multiperiod Accounting
27668    -----------------------------------------------------------------------------------------
27669      -- No MPA option is assigned.
27670 
27671 
27672 END IF;
27673 END IF;
27674 --
27675 
27676 --
27677 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27678    trace
27679       (p_msg      => 'END of AcctLineType_82'
27680       ,p_level    => C_LEVEL_PROCEDURE
27681       ,p_module   => l_log_module);
27682 END IF;
27683 --
27684 EXCEPTION
27685   WHEN xla_exceptions_pkg.application_exception THEN
27686       RAISE;
27687   WHEN OTHERS THEN
27688        xla_exceptions_pkg.raise_message
27689            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_82');
27690 END AcctLineType_82;
27691 --
27692 
27693 ---------------------------------------
27694 --
27695 -- PRIVATE FUNCTION
27696 --         AcctLineType_83
27697 --
27698 ---------------------------------------
27699 PROCEDURE AcctLineType_83 (
27700   p_application_id        IN NUMBER
27701  ,p_event_id              IN NUMBER
27702  ,p_calculate_acctd_flag  IN VARCHAR2
27703  ,p_calculate_g_l_flag    IN VARCHAR2
27704  ,p_actual_flag           IN OUT VARCHAR2
27705  ,p_balance_type_code     OUT VARCHAR2
27706  ,p_gain_or_loss_ref      OUT VARCHAR2
27707  
27708 --Transaction Account
27709  , p_source_1            IN NUMBER
27710 --Journal Line Type
27711  , p_source_2            IN VARCHAR2
27712 --Entered Amount
27713  , p_source_3            IN NUMBER
27714 --First Distribution Identifier
27715  , p_source_5            IN NUMBER
27716 --Distribution Type
27717  , p_source_6            IN VARCHAR2
27718 --Currency Code
27719  , p_source_7            IN VARCHAR2
27720 --Currency Conversion Date
27721  , p_source_8            IN DATE
27722 --Currency Conversion Rate
27723  , p_source_9            IN NUMBER
27724 --Currency Conversion Type
27725  , p_source_10            IN VARCHAR2
27726 --Accounted Amount
27727  , p_source_11            IN NUMBER
27728 )
27729 IS
27730 
27731 l_component_type              VARCHAR2(80);
27732 l_component_code              VARCHAR2(30);
27733 l_component_type_code         VARCHAR2(1);
27734 l_component_appl_id           INTEGER;
27735 l_amb_context_code            VARCHAR2(30);
27736 l_entity_code                 VARCHAR2(30);
27737 l_event_class_code            VARCHAR2(30);
27741 l_line_definition_owner_code  VARCHAR2(1);
27738 l_ae_header_id                NUMBER;
27739 l_event_type_code             VARCHAR2(30);
27740 l_line_definition_code        VARCHAR2(30);
27742 --
27743 -- adr variables
27744 l_segment                     VARCHAR2(30);
27745 l_ccid                        NUMBER;
27746 l_adr_transaction_coa_id      NUMBER;
27747 l_adr_accounting_coa_id       NUMBER;
27748 l_adr_flexfield_segment_code  VARCHAR2(30);
27749 l_adr_flex_value_set_id       NUMBER;
27750 l_adr_value_type_code         VARCHAR2(30);
27751 l_adr_value_combination_id    NUMBER;
27752 l_adr_value_segment_code      VARCHAR2(30);
27753 
27754 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27755 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27756 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27757 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27758 
27759 -- 4262811 Variables ------------------------------------------------------------------------------------------
27760 l_entered_amt_idx             NUMBER;
27761 l_accted_amt_idx              NUMBER;
27762 l_acc_rev_flag                VARCHAR2(1);
27763 l_accrual_line_num            NUMBER;
27764 l_tmp_amt                     NUMBER;
27765 l_acc_rev_natural_side_code   VARCHAR2(1);
27766 
27767 l_num_entries                 NUMBER;
27768 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27769 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27770 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27771 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27772 l_recog_line_1                NUMBER;
27773 l_recog_line_2                NUMBER;
27774 
27775 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27776 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27777 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27778 
27779 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27780 
27781 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27782 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27783 
27784 ---------------------------------------------------------------------------------------------------------------
27785 
27786 
27787 --
27788 -- bulk performance
27789 --
27790 l_balance_type_code           VARCHAR2(1);
27791 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27792 l_log_module                  VARCHAR2(240);
27793 
27794 --
27795 -- Upgrade strategy
27796 --
27797 l_actual_upg_option           VARCHAR2(1);
27798 l_enc_upg_option           VARCHAR2(1);
27799 
27800 --
27801 BEGIN
27802 --
27803 IF g_log_enabled THEN
27804       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_83';
27805 END IF;
27806 --
27807 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27808 
27809       trace
27810          (p_msg      => 'BEGIN of AcctLineType_83'
27811          ,p_level    => C_LEVEL_PROCEDURE
27812          ,p_module   => l_log_module);
27813 
27814 END IF;
27815 --
27816 l_component_type             := 'AMB_JLT';
27817 l_component_code             := 'EXP';
27818 l_component_type_code        := 'S';
27819 l_component_appl_id          :=  555;
27820 l_amb_context_code           := 'DEFAULT';
27821 l_entity_code                := 'PURCHASING';
27822 l_event_class_code           := 'RECEIVE';
27823 l_event_type_code            := 'EXP_RET_TO_RECEIVING';
27824 l_line_definition_owner_code := 'S';
27825 l_line_definition_code       := 'EXP_RET_TO_RECEIVING';
27826 --
27827 l_balance_type_code          := 'A';
27828 l_segment                     := NULL;
27829 l_ccid                        := NULL;
27830 l_adr_transaction_coa_id      := NULL;
27831 l_adr_accounting_coa_id       := NULL;
27832 l_adr_flexfield_segment_code  := NULL;
27833 l_adr_flex_value_set_id       := NULL;
27834 l_adr_value_type_code         := NULL;
27835 l_adr_value_combination_id    := NULL;
27836 l_adr_value_segment_code      := NULL;
27837 
27838 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27839 l_bflow_class_code           := '';    -- 4219869 Business Flow
27840 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27841 l_budgetary_control_flag     := 'N';
27842 
27843 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27844 l_bflow_applied_to_amt       := NULL; -- 5132302
27845 l_entered_amt_idx            := NULL;          -- 4262811
27846 l_accted_amt_idx             := NULL;          -- 4262811
27847 l_acc_rev_flag               := NULL;          -- 4262811
27848 l_accrual_line_num           := NULL;          -- 4262811
27849 l_tmp_amt                    := NULL;          -- 4262811
27850 --
27851  
27852 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27853     l_balance_type_code <> 'B' THEN
27854 IF NVL(p_source_2,'
27855 ') =  'EXP'
27856  THEN 
27857 
27858    --
27859    XLA_AE_LINES_PKG.SetNewLine;
27860 
27861    p_balance_type_code          := l_balance_type_code;
27862    -- set the flag so later we will know whether the gain loss line needs to be created
27863    
27867 
27864    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27865      p_actual_flag :='A';
27866    END IF;
27868    --
27869    -- bulk performance
27870    --
27871    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27872                                       p_header_num   => 0); -- 4262811
27873    --
27874    -- set accounting line options
27875    --
27876    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27877            p_natural_side_code          => 'D'
27878          , p_gain_or_loss_flag          => 'N'
27879          , p_gl_transfer_mode_code      => 'D'
27880          , p_acct_entry_type_code       => 'A'
27881          , p_switch_side_flag           => 'Y'
27882          , p_merge_duplicate_code       => 'W'
27883          );
27884    --
27885    l_acc_rev_natural_side_code := 'C';  -- 4262811
27886    -- 
27887    --
27888    -- set accounting line type info
27889    --
27890    xla_ae_lines_pkg.SetAcctLineType
27891       (p_component_type             => l_component_type
27892       ,p_event_type_code            => l_event_type_code
27893       ,p_line_definition_owner_code => l_line_definition_owner_code
27894       ,p_line_definition_code       => l_line_definition_code
27895       ,p_accounting_line_code       => l_component_code
27896       ,p_accounting_line_type_code  => l_component_type_code
27897       ,p_accounting_line_appl_id    => l_component_appl_id
27898       ,p_amb_context_code           => l_amb_context_code
27899       ,p_entity_code                => l_entity_code
27900       ,p_event_class_code           => l_event_class_code);
27901    --
27902    -- set accounting class
27903    --
27904    xla_ae_lines_pkg.SetAcctClass(
27905            p_accounting_class_code  => 'EXPENSE'
27906          , p_ae_header_id           => l_ae_header_id
27907          );
27908 
27909    --
27910    -- set rounding class
27911    --
27912    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27913                       'EXPENSE';
27914 
27915    --
27916    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27917    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27918    --
27919    -- bulk performance
27920    --
27921    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27922 
27923    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27924       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27925 
27926    -- 4955764
27927    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27928       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27929 
27930    -- 4458381 Public Sector Enh
27931    
27932    --
27933    -- set accounting attributes for the line type
27934    --
27935    l_entered_amt_idx := 3;
27936    l_accted_amt_idx  := 8;
27937    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
27938    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
27939    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
27940    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
27941    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
27942    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
27943    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
27944    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
27945    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
27946    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
27947    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
27948    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
27949    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
27950    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
27951    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
27952    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
27953    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
27954 
27955    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27956    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27957 
27958    ---------------------------------------------------------------------------------------------------------------
27959    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27960    ---------------------------------------------------------------------------------------------------------------
27961    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27962 
27963    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27964    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27965 
27966    IF xla_accounting_cache_pkg.GetValueChar
27967          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27968          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27969    AND l_bflow_method_code = 'PRIOR_ENTRY'
27970 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27971    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27972          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27973        )
27974    THEN
27978            ,p_balance_type            => l_balance_type_code);
27975          xla_ae_lines_pkg.BflowUpgEntry
27976            (p_business_method_code    => l_bflow_method_code
27977            ,p_business_class_code     => l_bflow_class_code
27979    ELSE
27980       NULL;
27981 -- No business flow processing for business flow method of NONE.
27982    END IF;
27983 
27984    --
27985    -- call analytical criteria
27986    --
27987    
27988    --
27989    -- call description
27990    --
27991    -- No description or it is inherited.
27992    --
27993    -- call ADRs
27994    -- Bug 4922099
27995    --
27996    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27997         (NVL(l_actual_upg_option, 'N') = 'O') OR
27998         (NVL(l_enc_upg_option, 'N') = 'O')
27999       )
28000    THEN
28001    NULL;
28002    --
28003    --
28004    
28005   l_ccid := AcctDerRule_12(
28006            p_application_id           => p_application_id
28007          , p_ae_header_id             => l_ae_header_id 
28008 , p_source_1 => p_source_1
28009 , p_source_2 => p_source_2
28010          , x_transaction_coa_id       => l_adr_transaction_coa_id
28011          , x_accounting_coa_id        => l_adr_accounting_coa_id
28012          , x_value_type_code          => l_adr_value_type_code
28013          , p_side                     => 'NA'
28014    );
28015 
28016    xla_ae_lines_pkg.set_ccid(
28017     p_code_combination_id          => l_ccid
28018   , p_value_type_code              => l_adr_value_type_code
28019   , p_transaction_coa_id           => l_adr_transaction_coa_id
28020   , p_accounting_coa_id            => l_adr_accounting_coa_id
28021   , p_adr_code                     => 'EXP'
28022   , p_adr_type_code                => 'S'
28023   , p_component_type               => l_component_type
28024   , p_component_code               => l_component_code
28025   , p_component_type_code          => l_component_type_code
28026   , p_component_appl_id            => l_component_appl_id
28027   , p_amb_context_code             => l_amb_context_code
28028   , p_side                         => 'NA'
28029   );
28030 
28031 
28032    --
28033    --
28034    END IF;
28035    --
28036    -- Bug 4922099
28037    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28038           (NVL(l_enc_upg_option, 'N') = 'O')
28039         ) AND
28040         (l_bflow_method_code = 'PRIOR_ENTRY')
28041       )
28042    THEN
28043       IF
28044       --
28045       1 = 2
28046       --
28047       THEN
28048       xla_accounting_err_pkg.build_message
28049                                     (p_appli_s_name            => 'XLA'
28050                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28051                                     ,p_token_1                 => 'LINE_NUMBER'
28052                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28053                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28054                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28055                                                                              l_component_type
28056                                                                             ,l_component_code
28057                                                                             ,l_component_type_code
28058                                                                             ,l_component_appl_id
28059                                                                             ,l_amb_context_code
28060                                                                             ,l_entity_code
28061                                                                             ,l_event_class_code
28062                                                                            )
28063                                     ,p_token_3                 => 'OWNER'
28064                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28065                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28066                                                                           ,p_lookup_code    => l_component_type_code
28067                                                                          )
28068                                     ,p_token_4                 => 'PRODUCT_NAME'
28069                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28070                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28071                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28072                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28073                                     ,p_ae_header_id            =>  NULL
28074                                        );
28075 
28076         IF (C_LEVEL_ERROR>= g_log_level) THEN
28077                  trace
28078                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28079                       ,p_level    => C_LEVEL_ERROR
28080                       ,p_module   => l_log_module);
28081         END IF;
28082       END IF;
28083    END IF;
28084    --
28085    --
28086    ------------------------------------------------------------------------------------------------
28087    -- 4219869 Business Flow
28091    XLA_AE_LINES_PKG.ValidateCurrentLine;
28088    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28089    -- Prior Entry.  Currently, the following code is always generated.
28090    ------------------------------------------------------------------------------------------------
28092 
28093    ------------------------------------------------------------------------------------
28094    -- 4219869 Business Flow
28095    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28096    ------------------------------------------------------------------------------------
28097    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28098 
28099    ----------------------------------------------------------------------------------
28100    -- 4219869 Business Flow
28101    -- Update journal entry status -- Need to generate this within IF <condition>
28102    ----------------------------------------------------------------------------------
28103    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28104          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28105          ,p_balance_type_code => l_balance_type_code
28106          );
28107 
28108    -------------------------------------------------------------------------------------------
28109    -- 4262811 - Generate the Accrual Reversal lines
28110    -------------------------------------------------------------------------------------------
28111    BEGIN
28112       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28113                               (g_array_event(p_event_id).array_value_num('header_index'));
28114       IF l_acc_rev_flag IS NULL THEN
28115          l_acc_rev_flag := 'N';
28116       END IF;
28117    EXCEPTION
28118       WHEN OTHERS THEN
28119          l_acc_rev_flag := 'N';
28120    END;
28121    --
28122    IF (l_acc_rev_flag = 'Y') THEN
28123 
28124        -- 4645092  ------------------------------------------------------------------------------
28125        -- To allow MPA report to determine if it should generate report process
28126        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28127        ------------------------------------------------------------------------------------------
28128 
28129        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28130        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28131    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
28132    -- call ADRs
28133    -- Bug 4922099
28134    --
28135    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28136         (NVL(l_actual_upg_option, 'N') = 'O') OR
28137         (NVL(l_enc_upg_option, 'N') = 'O')
28138       )
28139    THEN
28140    NULL;
28141    --
28142    --
28143    
28144   l_ccid := AcctDerRule_12(
28145            p_application_id           => p_application_id
28146          , p_ae_header_id             => l_ae_header_id 
28147 , p_source_1 => p_source_1
28148 , p_source_2 => p_source_2
28149          , x_transaction_coa_id       => l_adr_transaction_coa_id
28150          , x_accounting_coa_id        => l_adr_accounting_coa_id
28151          , x_value_type_code          => l_adr_value_type_code
28152          , p_side                     => 'NA'
28153    );
28154 
28155    xla_ae_lines_pkg.set_ccid(
28156     p_code_combination_id          => l_ccid
28157   , p_value_type_code              => l_adr_value_type_code
28158   , p_transaction_coa_id           => l_adr_transaction_coa_id
28159   , p_accounting_coa_id            => l_adr_accounting_coa_id
28160   , p_adr_code                     => 'EXP'
28161   , p_adr_type_code                => 'S'
28162   , p_component_type               => l_component_type
28163   , p_component_code               => l_component_code
28164   , p_component_type_code          => l_component_type_code
28165   , p_component_appl_id            => l_component_appl_id
28166   , p_amb_context_code             => l_amb_context_code
28167   , p_side                         => 'NA'
28168   );
28169 
28170 
28171    --
28172    --
28173    END IF;
28174 
28175        --
28176        -- Update the line information that should be overwritten
28177        --
28178        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28179                                          p_header_num   => 1);
28180        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28181 
28182        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28183 
28184        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28185           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28186        END IF;
28187 
28188       --
28189       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28190       --
28191       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28192           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
28193       ELSE
28194           ---------------------------------------------------------------------------------------------------
28195           -- 4262811a Switch Sign
28196           ---------------------------------------------------------------------------------------------------
28200           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28197           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28198           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28199                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28201                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28202           -- 5132302
28203           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28204                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28205 
28206       END IF;
28207 
28208       -- 4955764
28209       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28210       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28211 
28212 
28213       XLA_AE_LINES_PKG.ValidateCurrentLine;
28214       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28215 
28216       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28217                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28218                ,p_balance_type_code => l_balance_type_code);
28219 
28220    END IF;
28221 
28222    -----------------------------------------------------------------------------------------
28223    -- 4262811 Multiperiod Accounting
28224    -----------------------------------------------------------------------------------------
28225      -- No MPA option is assigned.
28226 
28227 
28228 END IF;
28229 END IF;
28230 --
28231 
28232 --
28233 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28234    trace
28235       (p_msg      => 'END of AcctLineType_83'
28236       ,p_level    => C_LEVEL_PROCEDURE
28237       ,p_module   => l_log_module);
28238 END IF;
28239 --
28240 EXCEPTION
28241   WHEN xla_exceptions_pkg.application_exception THEN
28242       RAISE;
28243   WHEN OTHERS THEN
28244        xla_exceptions_pkg.raise_message
28245            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_83');
28246 END AcctLineType_83;
28247 --
28248 
28249 ---------------------------------------
28250 --
28251 -- PRIVATE FUNCTION
28252 --         AcctLineType_84
28253 --
28254 ---------------------------------------
28255 PROCEDURE AcctLineType_84 (
28256   p_application_id        IN NUMBER
28257  ,p_event_id              IN NUMBER
28258  ,p_calculate_acctd_flag  IN VARCHAR2
28259  ,p_calculate_g_l_flag    IN VARCHAR2
28260  ,p_actual_flag           IN OUT VARCHAR2
28261  ,p_balance_type_code     OUT VARCHAR2
28262  ,p_gain_or_loss_ref      OUT VARCHAR2
28263  
28264 --Transaction Account
28265  , p_source_1            IN NUMBER
28266 --Journal Line Type
28267  , p_source_2            IN VARCHAR2
28268 --Entered Amount
28269  , p_source_3            IN NUMBER
28270 --First Distribution Identifier
28271  , p_source_5            IN NUMBER
28272 --Distribution Type
28273  , p_source_6            IN VARCHAR2
28274 --Currency Code
28275  , p_source_7            IN VARCHAR2
28276 --Currency Conversion Date
28277  , p_source_8            IN DATE
28278 --Currency Conversion Rate
28279  , p_source_9            IN NUMBER
28280 --Currency Conversion Type
28281  , p_source_10            IN VARCHAR2
28282 --Accounted Amount
28283  , p_source_11            IN NUMBER
28284 )
28285 IS
28286 
28287 l_component_type              VARCHAR2(80);
28288 l_component_code              VARCHAR2(30);
28289 l_component_type_code         VARCHAR2(1);
28290 l_component_appl_id           INTEGER;
28291 l_amb_context_code            VARCHAR2(30);
28292 l_entity_code                 VARCHAR2(30);
28293 l_event_class_code            VARCHAR2(30);
28294 l_ae_header_id                NUMBER;
28295 l_event_type_code             VARCHAR2(30);
28296 l_line_definition_code        VARCHAR2(30);
28297 l_line_definition_owner_code  VARCHAR2(1);
28298 --
28299 -- adr variables
28300 l_segment                     VARCHAR2(30);
28301 l_ccid                        NUMBER;
28302 l_adr_transaction_coa_id      NUMBER;
28303 l_adr_accounting_coa_id       NUMBER;
28304 l_adr_flexfield_segment_code  VARCHAR2(30);
28305 l_adr_flex_value_set_id       NUMBER;
28306 l_adr_value_type_code         VARCHAR2(30);
28307 l_adr_value_combination_id    NUMBER;
28308 l_adr_value_segment_code      VARCHAR2(30);
28309 
28310 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
28311 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
28312 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
28313 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
28314 
28315 -- 4262811 Variables ------------------------------------------------------------------------------------------
28316 l_entered_amt_idx             NUMBER;
28317 l_accted_amt_idx              NUMBER;
28318 l_acc_rev_flag                VARCHAR2(1);
28319 l_accrual_line_num            NUMBER;
28320 l_tmp_amt                     NUMBER;
28321 l_acc_rev_natural_side_code   VARCHAR2(1);
28322 
28323 l_num_entries                 NUMBER;
28327 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28324 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28325 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28326 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28328 l_recog_line_1                NUMBER;
28329 l_recog_line_2                NUMBER;
28330 
28331 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28332 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28333 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28334 
28335 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28336 
28337 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28338 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28339 
28340 ---------------------------------------------------------------------------------------------------------------
28341 
28342 
28343 --
28344 -- bulk performance
28345 --
28346 l_balance_type_code           VARCHAR2(1);
28347 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28348 l_log_module                  VARCHAR2(240);
28349 
28350 --
28351 -- Upgrade strategy
28352 --
28353 l_actual_upg_option           VARCHAR2(1);
28354 l_enc_upg_option           VARCHAR2(1);
28355 
28356 --
28357 BEGIN
28358 --
28359 IF g_log_enabled THEN
28360       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_84';
28361 END IF;
28362 --
28363 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28364 
28365       trace
28366          (p_msg      => 'BEGIN of AcctLineType_84'
28367          ,p_level    => C_LEVEL_PROCEDURE
28368          ,p_module   => l_log_module);
28369 
28370 END IF;
28371 --
28372 l_component_type             := 'AMB_JLT';
28373 l_component_code             := 'EXP';
28374 l_component_type_code        := 'S';
28375 l_component_appl_id          :=  555;
28376 l_amb_context_code           := 'DEFAULT';
28377 l_entity_code                := 'PURCHASING';
28378 l_event_class_code           := 'DELIVER';
28379 l_event_type_code            := 'LOG_RET_TO_RECEIVING';
28380 l_line_definition_owner_code := 'S';
28381 l_line_definition_code       := 'LOG_RET_TO_RECEIVING';
28382 --
28383 l_balance_type_code          := 'A';
28384 l_segment                     := NULL;
28385 l_ccid                        := NULL;
28386 l_adr_transaction_coa_id      := NULL;
28387 l_adr_accounting_coa_id       := NULL;
28388 l_adr_flexfield_segment_code  := NULL;
28389 l_adr_flex_value_set_id       := NULL;
28390 l_adr_value_type_code         := NULL;
28391 l_adr_value_combination_id    := NULL;
28392 l_adr_value_segment_code      := NULL;
28393 
28394 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28395 l_bflow_class_code           := '';    -- 4219869 Business Flow
28396 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28397 l_budgetary_control_flag     := 'N';
28398 
28399 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28400 l_bflow_applied_to_amt       := NULL; -- 5132302
28401 l_entered_amt_idx            := NULL;          -- 4262811
28402 l_accted_amt_idx             := NULL;          -- 4262811
28403 l_acc_rev_flag               := NULL;          -- 4262811
28404 l_accrual_line_num           := NULL;          -- 4262811
28405 l_tmp_amt                    := NULL;          -- 4262811
28406 --
28407  
28408 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28409     l_balance_type_code <> 'B' THEN
28410 IF NVL(p_source_2,'
28411 ') =  'EXP'
28412  THEN 
28413 
28414    --
28415    XLA_AE_LINES_PKG.SetNewLine;
28416 
28417    p_balance_type_code          := l_balance_type_code;
28418    -- set the flag so later we will know whether the gain loss line needs to be created
28419    
28420    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28421      p_actual_flag :='A';
28422    END IF;
28423 
28424    --
28425    -- bulk performance
28426    --
28427    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28428                                       p_header_num   => 0); -- 4262811
28429    --
28430    -- set accounting line options
28431    --
28432    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28433            p_natural_side_code          => 'D'
28434          , p_gain_or_loss_flag          => 'N'
28435          , p_gl_transfer_mode_code      => 'D'
28436          , p_acct_entry_type_code       => 'A'
28437          , p_switch_side_flag           => 'Y'
28438          , p_merge_duplicate_code       => 'W'
28439          );
28440    --
28441    l_acc_rev_natural_side_code := 'C';  -- 4262811
28442    -- 
28443    --
28444    -- set accounting line type info
28445    --
28446    xla_ae_lines_pkg.SetAcctLineType
28447       (p_component_type             => l_component_type
28448       ,p_event_type_code            => l_event_type_code
28449       ,p_line_definition_owner_code => l_line_definition_owner_code
28450       ,p_line_definition_code       => l_line_definition_code
28451       ,p_accounting_line_code       => l_component_code
28452       ,p_accounting_line_type_code  => l_component_type_code
28453       ,p_accounting_line_appl_id    => l_component_appl_id
28457    --
28454       ,p_amb_context_code           => l_amb_context_code
28455       ,p_entity_code                => l_entity_code
28456       ,p_event_class_code           => l_event_class_code);
28458    -- set accounting class
28459    --
28460    xla_ae_lines_pkg.SetAcctClass(
28461            p_accounting_class_code  => 'EXPENSE'
28462          , p_ae_header_id           => l_ae_header_id
28463          );
28464 
28465    --
28466    -- set rounding class
28467    --
28468    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28469                       'EXPENSE';
28470 
28471    --
28472    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28473    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28474    --
28475    -- bulk performance
28476    --
28477    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28478 
28479    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28480       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28481 
28482    -- 4955764
28483    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28484       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28485 
28486    -- 4458381 Public Sector Enh
28487    
28488    --
28489    -- set accounting attributes for the line type
28490    --
28491    l_entered_amt_idx := 3;
28492    l_accted_amt_idx  := 8;
28493    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
28494    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
28495    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
28496    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
28497    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
28498    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
28499    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
28500    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
28501    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
28502    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
28503    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
28504    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
28505    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
28506    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
28507    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
28508    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
28509    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
28510 
28511    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28512    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28513 
28514    ---------------------------------------------------------------------------------------------------------------
28515    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28516    ---------------------------------------------------------------------------------------------------------------
28517    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28518 
28519    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28520    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28521 
28522    IF xla_accounting_cache_pkg.GetValueChar
28523          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28524          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28525    AND l_bflow_method_code = 'PRIOR_ENTRY'
28526 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28527    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28528          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28529        )
28530    THEN
28531          xla_ae_lines_pkg.BflowUpgEntry
28532            (p_business_method_code    => l_bflow_method_code
28533            ,p_business_class_code     => l_bflow_class_code
28534            ,p_balance_type            => l_balance_type_code);
28535    ELSE
28536       NULL;
28537 -- No business flow processing for business flow method of NONE.
28538    END IF;
28539 
28540    --
28541    -- call analytical criteria
28542    --
28543    
28544    --
28545    -- call description
28546    --
28547    -- No description or it is inherited.
28548    --
28549    -- call ADRs
28550    -- Bug 4922099
28551    --
28552    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28553         (NVL(l_actual_upg_option, 'N') = 'O') OR
28554         (NVL(l_enc_upg_option, 'N') = 'O')
28555       )
28556    THEN
28557    NULL;
28558    --
28559    --
28560    
28561   l_ccid := AcctDerRule_12(
28562            p_application_id           => p_application_id
28563          , p_ae_header_id             => l_ae_header_id 
28564 , p_source_1 => p_source_1
28565 , p_source_2 => p_source_2
28566          , x_transaction_coa_id       => l_adr_transaction_coa_id
28567          , x_accounting_coa_id        => l_adr_accounting_coa_id
28568          , x_value_type_code          => l_adr_value_type_code
28569          , p_side                     => 'NA'
28570    );
28574   , p_value_type_code              => l_adr_value_type_code
28571 
28572    xla_ae_lines_pkg.set_ccid(
28573     p_code_combination_id          => l_ccid
28575   , p_transaction_coa_id           => l_adr_transaction_coa_id
28576   , p_accounting_coa_id            => l_adr_accounting_coa_id
28577   , p_adr_code                     => 'EXP'
28578   , p_adr_type_code                => 'S'
28579   , p_component_type               => l_component_type
28580   , p_component_code               => l_component_code
28581   , p_component_type_code          => l_component_type_code
28582   , p_component_appl_id            => l_component_appl_id
28583   , p_amb_context_code             => l_amb_context_code
28584   , p_side                         => 'NA'
28585   );
28586 
28587 
28588    --
28589    --
28590    END IF;
28591    --
28592    -- Bug 4922099
28593    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28594           (NVL(l_enc_upg_option, 'N') = 'O')
28595         ) AND
28596         (l_bflow_method_code = 'PRIOR_ENTRY')
28597       )
28598    THEN
28599       IF
28600       --
28601       1 = 2
28602       --
28603       THEN
28604       xla_accounting_err_pkg.build_message
28605                                     (p_appli_s_name            => 'XLA'
28606                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28607                                     ,p_token_1                 => 'LINE_NUMBER'
28608                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28609                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28610                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28611                                                                              l_component_type
28612                                                                             ,l_component_code
28613                                                                             ,l_component_type_code
28614                                                                             ,l_component_appl_id
28615                                                                             ,l_amb_context_code
28616                                                                             ,l_entity_code
28617                                                                             ,l_event_class_code
28618                                                                            )
28619                                     ,p_token_3                 => 'OWNER'
28620                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28621                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28622                                                                           ,p_lookup_code    => l_component_type_code
28623                                                                          )
28624                                     ,p_token_4                 => 'PRODUCT_NAME'
28625                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28626                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28627                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28628                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28629                                     ,p_ae_header_id            =>  NULL
28630                                        );
28631 
28632         IF (C_LEVEL_ERROR>= g_log_level) THEN
28633                  trace
28634                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28635                       ,p_level    => C_LEVEL_ERROR
28636                       ,p_module   => l_log_module);
28637         END IF;
28638       END IF;
28639    END IF;
28640    --
28641    --
28642    ------------------------------------------------------------------------------------------------
28643    -- 4219869 Business Flow
28644    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28645    -- Prior Entry.  Currently, the following code is always generated.
28646    ------------------------------------------------------------------------------------------------
28647    XLA_AE_LINES_PKG.ValidateCurrentLine;
28648 
28649    ------------------------------------------------------------------------------------
28650    -- 4219869 Business Flow
28651    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28652    ------------------------------------------------------------------------------------
28653    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28654 
28655    ----------------------------------------------------------------------------------
28656    -- 4219869 Business Flow
28657    -- Update journal entry status -- Need to generate this within IF <condition>
28658    ----------------------------------------------------------------------------------
28659    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28660          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28661          ,p_balance_type_code => l_balance_type_code
28662          );
28663 
28664    -------------------------------------------------------------------------------------------
28665    -- 4262811 - Generate the Accrual Reversal lines
28669                               (g_array_event(p_event_id).array_value_num('header_index'));
28666    -------------------------------------------------------------------------------------------
28667    BEGIN
28668       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28670       IF l_acc_rev_flag IS NULL THEN
28671          l_acc_rev_flag := 'N';
28672       END IF;
28673    EXCEPTION
28674       WHEN OTHERS THEN
28675          l_acc_rev_flag := 'N';
28676    END;
28677    --
28678    IF (l_acc_rev_flag = 'Y') THEN
28679 
28680        -- 4645092  ------------------------------------------------------------------------------
28681        -- To allow MPA report to determine if it should generate report process
28682        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28683        ------------------------------------------------------------------------------------------
28684 
28685        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28686        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28687    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
28688    -- call ADRs
28689    -- Bug 4922099
28690    --
28691    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28692         (NVL(l_actual_upg_option, 'N') = 'O') OR
28693         (NVL(l_enc_upg_option, 'N') = 'O')
28694       )
28695    THEN
28696    NULL;
28697    --
28698    --
28699    
28700   l_ccid := AcctDerRule_12(
28701            p_application_id           => p_application_id
28702          , p_ae_header_id             => l_ae_header_id 
28703 , p_source_1 => p_source_1
28704 , p_source_2 => p_source_2
28705          , x_transaction_coa_id       => l_adr_transaction_coa_id
28706          , x_accounting_coa_id        => l_adr_accounting_coa_id
28707          , x_value_type_code          => l_adr_value_type_code
28708          , p_side                     => 'NA'
28709    );
28710 
28711    xla_ae_lines_pkg.set_ccid(
28712     p_code_combination_id          => l_ccid
28713   , p_value_type_code              => l_adr_value_type_code
28714   , p_transaction_coa_id           => l_adr_transaction_coa_id
28715   , p_accounting_coa_id            => l_adr_accounting_coa_id
28716   , p_adr_code                     => 'EXP'
28717   , p_adr_type_code                => 'S'
28718   , p_component_type               => l_component_type
28719   , p_component_code               => l_component_code
28720   , p_component_type_code          => l_component_type_code
28721   , p_component_appl_id            => l_component_appl_id
28722   , p_amb_context_code             => l_amb_context_code
28723   , p_side                         => 'NA'
28724   );
28725 
28726 
28727    --
28728    --
28729    END IF;
28730 
28731        --
28732        -- Update the line information that should be overwritten
28733        --
28734        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28735                                          p_header_num   => 1);
28736        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28737 
28738        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28739 
28740        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28741           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28742        END IF;
28743 
28744       --
28745       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28746       --
28747       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28748           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
28749       ELSE
28750           ---------------------------------------------------------------------------------------------------
28751           -- 4262811a Switch Sign
28752           ---------------------------------------------------------------------------------------------------
28753           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28754           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28755                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28756           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28757                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28758           -- 5132302
28759           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28760                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28761 
28762       END IF;
28763 
28764       -- 4955764
28765       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28766       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28767 
28768 
28769       XLA_AE_LINES_PKG.ValidateCurrentLine;
28770       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28771 
28772       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28773                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28774                ,p_balance_type_code => l_balance_type_code);
28775 
28776    END IF;
28777 
28781      -- No MPA option is assigned.
28778    -----------------------------------------------------------------------------------------
28779    -- 4262811 Multiperiod Accounting
28780    -----------------------------------------------------------------------------------------
28782 
28783 
28784 END IF;
28785 END IF;
28786 --
28787 
28788 --
28789 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28790    trace
28791       (p_msg      => 'END of AcctLineType_84'
28792       ,p_level    => C_LEVEL_PROCEDURE
28793       ,p_module   => l_log_module);
28794 END IF;
28795 --
28796 EXCEPTION
28797   WHEN xla_exceptions_pkg.application_exception THEN
28798       RAISE;
28799   WHEN OTHERS THEN
28800        xla_exceptions_pkg.raise_message
28801            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_84');
28802 END AcctLineType_84;
28803 --
28804 
28805 ---------------------------------------
28806 --
28807 -- PRIVATE FUNCTION
28808 --         AcctLineType_85
28809 --
28810 ---------------------------------------
28811 PROCEDURE AcctLineType_85 (
28812   p_application_id        IN NUMBER
28813  ,p_event_id              IN NUMBER
28814  ,p_calculate_acctd_flag  IN VARCHAR2
28815  ,p_calculate_g_l_flag    IN VARCHAR2
28816  ,p_actual_flag           IN OUT VARCHAR2
28817  ,p_balance_type_code     OUT VARCHAR2
28818  ,p_gain_or_loss_ref      OUT VARCHAR2
28819  
28820 --Transaction Account
28821  , p_source_1            IN NUMBER
28822 --Journal Line Type
28823  , p_source_2            IN VARCHAR2
28824 --Entered Amount
28825  , p_source_3            IN NUMBER
28826 --First Distribution Identifier
28827  , p_source_5            IN NUMBER
28828 --Distribution Type
28829  , p_source_6            IN VARCHAR2
28830 --Currency Code
28831  , p_source_7            IN VARCHAR2
28832 --Currency Conversion Date
28833  , p_source_8            IN DATE
28834 --Currency Conversion Rate
28835  , p_source_9            IN NUMBER
28836 --Currency Conversion Type
28837  , p_source_10            IN VARCHAR2
28838 --Accounted Amount
28839  , p_source_11            IN NUMBER
28840 )
28841 IS
28842 
28843 l_component_type              VARCHAR2(80);
28844 l_component_code              VARCHAR2(30);
28845 l_component_type_code         VARCHAR2(1);
28846 l_component_appl_id           INTEGER;
28847 l_amb_context_code            VARCHAR2(30);
28848 l_entity_code                 VARCHAR2(30);
28849 l_event_class_code            VARCHAR2(30);
28850 l_ae_header_id                NUMBER;
28851 l_event_type_code             VARCHAR2(30);
28852 l_line_definition_code        VARCHAR2(30);
28853 l_line_definition_owner_code  VARCHAR2(1);
28854 --
28855 -- adr variables
28856 l_segment                     VARCHAR2(30);
28857 l_ccid                        NUMBER;
28858 l_adr_transaction_coa_id      NUMBER;
28859 l_adr_accounting_coa_id       NUMBER;
28860 l_adr_flexfield_segment_code  VARCHAR2(30);
28861 l_adr_flex_value_set_id       NUMBER;
28862 l_adr_value_type_code         VARCHAR2(30);
28863 l_adr_value_combination_id    NUMBER;
28864 l_adr_value_segment_code      VARCHAR2(30);
28865 
28866 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
28867 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
28868 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
28869 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
28870 
28871 -- 4262811 Variables ------------------------------------------------------------------------------------------
28872 l_entered_amt_idx             NUMBER;
28873 l_accted_amt_idx              NUMBER;
28874 l_acc_rev_flag                VARCHAR2(1);
28875 l_accrual_line_num            NUMBER;
28876 l_tmp_amt                     NUMBER;
28877 l_acc_rev_natural_side_code   VARCHAR2(1);
28878 
28879 l_num_entries                 NUMBER;
28880 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28881 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28882 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28883 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28884 l_recog_line_1                NUMBER;
28885 l_recog_line_2                NUMBER;
28886 
28887 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28888 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28889 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28890 
28891 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28892 
28893 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28894 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28895 
28896 ---------------------------------------------------------------------------------------------------------------
28897 
28898 
28899 --
28900 -- bulk performance
28901 --
28902 l_balance_type_code           VARCHAR2(1);
28903 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28904 l_log_module                  VARCHAR2(240);
28905 
28906 --
28907 -- Upgrade strategy
28908 --
28909 l_actual_upg_option           VARCHAR2(1);
28910 l_enc_upg_option           VARCHAR2(1);
28914 --
28911 
28912 --
28913 BEGIN
28915 IF g_log_enabled THEN
28916       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_85';
28917 END IF;
28918 --
28919 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28920 
28921       trace
28922          (p_msg      => 'BEGIN of AcctLineType_85'
28923          ,p_level    => C_LEVEL_PROCEDURE
28924          ,p_module   => l_log_module);
28925 
28926 END IF;
28927 --
28928 l_component_type             := 'AMB_JLT';
28929 l_component_code             := 'EXP';
28930 l_component_type_code        := 'S';
28931 l_component_appl_id          :=  555;
28932 l_amb_context_code           := 'DEFAULT';
28933 l_entity_code                := 'INVENTORY';
28934 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
28935 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_NO_TP';
28936 l_line_definition_owner_code := 'S';
28937 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP_NO_TP';
28938 --
28939 l_balance_type_code          := 'A';
28940 l_segment                     := NULL;
28941 l_ccid                        := NULL;
28942 l_adr_transaction_coa_id      := NULL;
28943 l_adr_accounting_coa_id       := NULL;
28944 l_adr_flexfield_segment_code  := NULL;
28945 l_adr_flex_value_set_id       := NULL;
28946 l_adr_value_type_code         := NULL;
28947 l_adr_value_combination_id    := NULL;
28948 l_adr_value_segment_code      := NULL;
28949 
28950 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28951 l_bflow_class_code           := '';    -- 4219869 Business Flow
28952 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28953 l_budgetary_control_flag     := 'N';
28954 
28955 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28956 l_bflow_applied_to_amt       := NULL; -- 5132302
28957 l_entered_amt_idx            := NULL;          -- 4262811
28958 l_accted_amt_idx             := NULL;          -- 4262811
28959 l_acc_rev_flag               := NULL;          -- 4262811
28960 l_accrual_line_num           := NULL;          -- 4262811
28961 l_tmp_amt                    := NULL;          -- 4262811
28962 --
28963  
28964 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28965     l_balance_type_code <> 'B' THEN
28966 IF NVL(p_source_2,'
28967 ') =  'EXP'
28968  THEN 
28969 
28970    --
28971    XLA_AE_LINES_PKG.SetNewLine;
28972 
28973    p_balance_type_code          := l_balance_type_code;
28974    -- set the flag so later we will know whether the gain loss line needs to be created
28975    
28976    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28977      p_actual_flag :='A';
28978    END IF;
28979 
28980    --
28981    -- bulk performance
28982    --
28983    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28984                                       p_header_num   => 0); -- 4262811
28985    --
28986    -- set accounting line options
28987    --
28988    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28989            p_natural_side_code          => 'D'
28990          , p_gain_or_loss_flag          => 'N'
28991          , p_gl_transfer_mode_code      => 'D'
28992          , p_acct_entry_type_code       => 'A'
28993          , p_switch_side_flag           => 'Y'
28994          , p_merge_duplicate_code       => 'W'
28995          );
28996    --
28997    l_acc_rev_natural_side_code := 'C';  -- 4262811
28998    -- 
28999    --
29000    -- set accounting line type info
29001    --
29002    xla_ae_lines_pkg.SetAcctLineType
29003       (p_component_type             => l_component_type
29004       ,p_event_type_code            => l_event_type_code
29005       ,p_line_definition_owner_code => l_line_definition_owner_code
29006       ,p_line_definition_code       => l_line_definition_code
29007       ,p_accounting_line_code       => l_component_code
29008       ,p_accounting_line_type_code  => l_component_type_code
29009       ,p_accounting_line_appl_id    => l_component_appl_id
29010       ,p_amb_context_code           => l_amb_context_code
29011       ,p_entity_code                => l_entity_code
29012       ,p_event_class_code           => l_event_class_code);
29013    --
29014    -- set accounting class
29015    --
29016    xla_ae_lines_pkg.SetAcctClass(
29017            p_accounting_class_code  => 'EXPENSE'
29018          , p_ae_header_id           => l_ae_header_id
29019          );
29020 
29021    --
29022    -- set rounding class
29023    --
29024    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29025                       'EXPENSE';
29026 
29027    --
29028    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29029    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29030    --
29031    -- bulk performance
29032    --
29033    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29034 
29035    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29036       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29037 
29038    -- 4955764
29039    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29040       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29041 
29042    -- 4458381 Public Sector Enh
29043    
29044    --
29048    l_accted_amt_idx  := 8;
29045    -- set accounting attributes for the line type
29046    --
29047    l_entered_amt_idx := 3;
29049    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
29050    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
29051    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
29052    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
29053    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
29054    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
29055    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
29056    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
29057    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
29058    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
29059    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
29060    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
29061    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
29062    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
29063    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
29064    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
29065    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
29066 
29067    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29068    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29069 
29070    ---------------------------------------------------------------------------------------------------------------
29071    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29072    ---------------------------------------------------------------------------------------------------------------
29073    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29074 
29075    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29076    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29077 
29078    IF xla_accounting_cache_pkg.GetValueChar
29079          (p_source_code         => 'LEDGER_CATEGORY_CODE'
29080          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29081    AND l_bflow_method_code = 'PRIOR_ENTRY'
29082 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29083    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29084          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29085        )
29086    THEN
29087          xla_ae_lines_pkg.BflowUpgEntry
29088            (p_business_method_code    => l_bflow_method_code
29089            ,p_business_class_code     => l_bflow_class_code
29090            ,p_balance_type            => l_balance_type_code);
29091    ELSE
29092       NULL;
29093 -- No business flow processing for business flow method of NONE.
29094    END IF;
29095 
29096    --
29097    -- call analytical criteria
29098    --
29099    
29100    --
29101    -- call description
29102    --
29103    -- No description or it is inherited.
29104    --
29105    -- call ADRs
29106    -- Bug 4922099
29107    --
29108    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29109         (NVL(l_actual_upg_option, 'N') = 'O') OR
29110         (NVL(l_enc_upg_option, 'N') = 'O')
29111       )
29112    THEN
29113    NULL;
29114    --
29115    --
29116    
29117   l_ccid := AcctDerRule_12(
29118            p_application_id           => p_application_id
29119          , p_ae_header_id             => l_ae_header_id 
29120 , p_source_1 => p_source_1
29121 , p_source_2 => p_source_2
29122          , x_transaction_coa_id       => l_adr_transaction_coa_id
29123          , x_accounting_coa_id        => l_adr_accounting_coa_id
29124          , x_value_type_code          => l_adr_value_type_code
29125          , p_side                     => 'NA'
29126    );
29127 
29128    xla_ae_lines_pkg.set_ccid(
29129     p_code_combination_id          => l_ccid
29130   , p_value_type_code              => l_adr_value_type_code
29131   , p_transaction_coa_id           => l_adr_transaction_coa_id
29132   , p_accounting_coa_id            => l_adr_accounting_coa_id
29133   , p_adr_code                     => 'EXP'
29134   , p_adr_type_code                => 'S'
29135   , p_component_type               => l_component_type
29136   , p_component_code               => l_component_code
29137   , p_component_type_code          => l_component_type_code
29138   , p_component_appl_id            => l_component_appl_id
29139   , p_amb_context_code             => l_amb_context_code
29140   , p_side                         => 'NA'
29141   );
29142 
29143 
29144    --
29145    --
29146    END IF;
29147    --
29148    -- Bug 4922099
29149    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29150           (NVL(l_enc_upg_option, 'N') = 'O')
29151         ) AND
29152         (l_bflow_method_code = 'PRIOR_ENTRY')
29153       )
29154    THEN
29155       IF
29156       --
29157       1 = 2
29158       --
29159       THEN
29160       xla_accounting_err_pkg.build_message
29161                                     (p_appli_s_name            => 'XLA'
29162                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29163                                     ,p_token_1                 => 'LINE_NUMBER'
29167                                                                              l_component_type
29164                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29165                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29166                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29168                                                                             ,l_component_code
29169                                                                             ,l_component_type_code
29170                                                                             ,l_component_appl_id
29171                                                                             ,l_amb_context_code
29172                                                                             ,l_entity_code
29173                                                                             ,l_event_class_code
29174                                                                            )
29175                                     ,p_token_3                 => 'OWNER'
29176                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29177                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29178                                                                           ,p_lookup_code    => l_component_type_code
29179                                                                          )
29180                                     ,p_token_4                 => 'PRODUCT_NAME'
29181                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29182                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29183                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29184                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29185                                     ,p_ae_header_id            =>  NULL
29186                                        );
29187 
29188         IF (C_LEVEL_ERROR>= g_log_level) THEN
29189                  trace
29190                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29191                       ,p_level    => C_LEVEL_ERROR
29192                       ,p_module   => l_log_module);
29193         END IF;
29194       END IF;
29195    END IF;
29196    --
29197    --
29198    ------------------------------------------------------------------------------------------------
29199    -- 4219869 Business Flow
29200    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29201    -- Prior Entry.  Currently, the following code is always generated.
29202    ------------------------------------------------------------------------------------------------
29203    XLA_AE_LINES_PKG.ValidateCurrentLine;
29204 
29205    ------------------------------------------------------------------------------------
29206    -- 4219869 Business Flow
29207    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29208    ------------------------------------------------------------------------------------
29209    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29210 
29211    ----------------------------------------------------------------------------------
29212    -- 4219869 Business Flow
29213    -- Update journal entry status -- Need to generate this within IF <condition>
29214    ----------------------------------------------------------------------------------
29215    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29216          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29217          ,p_balance_type_code => l_balance_type_code
29218          );
29219 
29220    -------------------------------------------------------------------------------------------
29221    -- 4262811 - Generate the Accrual Reversal lines
29222    -------------------------------------------------------------------------------------------
29223    BEGIN
29224       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29225                               (g_array_event(p_event_id).array_value_num('header_index'));
29226       IF l_acc_rev_flag IS NULL THEN
29227          l_acc_rev_flag := 'N';
29228       END IF;
29229    EXCEPTION
29230       WHEN OTHERS THEN
29231          l_acc_rev_flag := 'N';
29232    END;
29233    --
29234    IF (l_acc_rev_flag = 'Y') THEN
29235 
29236        -- 4645092  ------------------------------------------------------------------------------
29237        -- To allow MPA report to determine if it should generate report process
29238        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29239        ------------------------------------------------------------------------------------------
29240 
29241        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29242        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29243    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
29244    -- call ADRs
29245    -- Bug 4922099
29246    --
29247    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29248         (NVL(l_actual_upg_option, 'N') = 'O') OR
29249         (NVL(l_enc_upg_option, 'N') = 'O')
29250       )
29251    THEN
29252    NULL;
29253    --
29254    --
29255    
29256   l_ccid := AcctDerRule_12(
29260 , p_source_2 => p_source_2
29257            p_application_id           => p_application_id
29258          , p_ae_header_id             => l_ae_header_id 
29259 , p_source_1 => p_source_1
29261          , x_transaction_coa_id       => l_adr_transaction_coa_id
29262          , x_accounting_coa_id        => l_adr_accounting_coa_id
29263          , x_value_type_code          => l_adr_value_type_code
29264          , p_side                     => 'NA'
29265    );
29266 
29267    xla_ae_lines_pkg.set_ccid(
29268     p_code_combination_id          => l_ccid
29269   , p_value_type_code              => l_adr_value_type_code
29270   , p_transaction_coa_id           => l_adr_transaction_coa_id
29271   , p_accounting_coa_id            => l_adr_accounting_coa_id
29272   , p_adr_code                     => 'EXP'
29273   , p_adr_type_code                => 'S'
29274   , p_component_type               => l_component_type
29275   , p_component_code               => l_component_code
29276   , p_component_type_code          => l_component_type_code
29277   , p_component_appl_id            => l_component_appl_id
29278   , p_amb_context_code             => l_amb_context_code
29279   , p_side                         => 'NA'
29280   );
29281 
29282 
29283    --
29284    --
29285    END IF;
29286 
29287        --
29288        -- Update the line information that should be overwritten
29289        --
29290        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29291                                          p_header_num   => 1);
29292        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29293 
29294        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29295 
29296        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29297           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29298        END IF;
29299 
29300       --
29301       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29302       --
29303       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29304           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29305       ELSE
29306           ---------------------------------------------------------------------------------------------------
29307           -- 4262811a Switch Sign
29308           ---------------------------------------------------------------------------------------------------
29309           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29310           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29311                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29312           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29313                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29314           -- 5132302
29315           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29316                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29317 
29318       END IF;
29319 
29320       -- 4955764
29321       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29322       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29323 
29324 
29325       XLA_AE_LINES_PKG.ValidateCurrentLine;
29326       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29327 
29328       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29329                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29330                ,p_balance_type_code => l_balance_type_code);
29331 
29332    END IF;
29333 
29334    -----------------------------------------------------------------------------------------
29335    -- 4262811 Multiperiod Accounting
29336    -----------------------------------------------------------------------------------------
29337      -- No MPA option is assigned.
29338 
29339 
29340 END IF;
29341 END IF;
29342 --
29343 
29344 --
29345 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29346    trace
29347       (p_msg      => 'END of AcctLineType_85'
29348       ,p_level    => C_LEVEL_PROCEDURE
29349       ,p_module   => l_log_module);
29350 END IF;
29351 --
29352 EXCEPTION
29353   WHEN xla_exceptions_pkg.application_exception THEN
29354       RAISE;
29355   WHEN OTHERS THEN
29356        xla_exceptions_pkg.raise_message
29357            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_85');
29358 END AcctLineType_85;
29359 --
29360 
29361 ---------------------------------------
29362 --
29363 -- PRIVATE FUNCTION
29364 --         AcctLineType_86
29365 --
29366 ---------------------------------------
29367 PROCEDURE AcctLineType_86 (
29368   p_application_id        IN NUMBER
29369  ,p_event_id              IN NUMBER
29370  ,p_calculate_acctd_flag  IN VARCHAR2
29371  ,p_calculate_g_l_flag    IN VARCHAR2
29372  ,p_actual_flag           IN OUT VARCHAR2
29373  ,p_balance_type_code     OUT VARCHAR2
29377  , p_source_1            IN NUMBER
29374  ,p_gain_or_loss_ref      OUT VARCHAR2
29375  
29376 --Transaction Account
29378 --Journal Line Type
29379  , p_source_2            IN VARCHAR2
29380 --Entered Amount
29381  , p_source_3            IN NUMBER
29382 --First Distribution Identifier
29383  , p_source_5            IN NUMBER
29384 --Distribution Type
29385  , p_source_6            IN VARCHAR2
29386 --Currency Code
29387  , p_source_7            IN VARCHAR2
29388 --Currency Conversion Date
29389  , p_source_8            IN DATE
29390 --Currency Conversion Rate
29391  , p_source_9            IN NUMBER
29392 --Currency Conversion Type
29393  , p_source_10            IN VARCHAR2
29394 --Accounted Amount
29395  , p_source_11            IN NUMBER
29396 )
29397 IS
29398 
29399 l_component_type              VARCHAR2(80);
29400 l_component_code              VARCHAR2(30);
29401 l_component_type_code         VARCHAR2(1);
29402 l_component_appl_id           INTEGER;
29403 l_amb_context_code            VARCHAR2(30);
29404 l_entity_code                 VARCHAR2(30);
29405 l_event_class_code            VARCHAR2(30);
29406 l_ae_header_id                NUMBER;
29407 l_event_type_code             VARCHAR2(30);
29408 l_line_definition_code        VARCHAR2(30);
29409 l_line_definition_owner_code  VARCHAR2(1);
29410 --
29411 -- adr variables
29412 l_segment                     VARCHAR2(30);
29413 l_ccid                        NUMBER;
29414 l_adr_transaction_coa_id      NUMBER;
29415 l_adr_accounting_coa_id       NUMBER;
29416 l_adr_flexfield_segment_code  VARCHAR2(30);
29417 l_adr_flex_value_set_id       NUMBER;
29418 l_adr_value_type_code         VARCHAR2(30);
29419 l_adr_value_combination_id    NUMBER;
29420 l_adr_value_segment_code      VARCHAR2(30);
29421 
29422 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29423 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29424 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29425 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29426 
29427 -- 4262811 Variables ------------------------------------------------------------------------------------------
29428 l_entered_amt_idx             NUMBER;
29429 l_accted_amt_idx              NUMBER;
29430 l_acc_rev_flag                VARCHAR2(1);
29431 l_accrual_line_num            NUMBER;
29432 l_tmp_amt                     NUMBER;
29433 l_acc_rev_natural_side_code   VARCHAR2(1);
29434 
29435 l_num_entries                 NUMBER;
29436 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29437 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29438 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29439 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29440 l_recog_line_1                NUMBER;
29441 l_recog_line_2                NUMBER;
29442 
29443 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29444 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29445 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29446 
29447 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29448 
29449 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
29450 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
29451 
29452 ---------------------------------------------------------------------------------------------------------------
29453 
29454 
29455 --
29456 -- bulk performance
29457 --
29458 l_balance_type_code           VARCHAR2(1);
29459 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
29460 l_log_module                  VARCHAR2(240);
29461 
29462 --
29463 -- Upgrade strategy
29464 --
29465 l_actual_upg_option           VARCHAR2(1);
29466 l_enc_upg_option           VARCHAR2(1);
29467 
29468 --
29469 BEGIN
29470 --
29471 IF g_log_enabled THEN
29472       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_86';
29473 END IF;
29474 --
29475 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29476 
29477       trace
29478          (p_msg      => 'BEGIN of AcctLineType_86'
29479          ,p_level    => C_LEVEL_PROCEDURE
29480          ,p_module   => l_log_module);
29481 
29482 END IF;
29483 --
29484 l_component_type             := 'AMB_JLT';
29485 l_component_code             := 'EXP';
29486 l_component_type_code        := 'S';
29487 l_component_appl_id          :=  555;
29488 l_amb_context_code           := 'DEFAULT';
29489 l_entity_code                := 'INVENTORY';
29490 l_event_class_code           := 'INT_ORDER_TO_EXP';
29491 l_event_type_code            := 'INT_ORDER_ISSUE_TP';
29492 l_line_definition_owner_code := 'S';
29493 l_line_definition_code       := 'INT_ORDER_ISSUE_TP';
29494 --
29495 l_balance_type_code          := 'A';
29496 l_segment                     := NULL;
29497 l_ccid                        := NULL;
29498 l_adr_transaction_coa_id      := NULL;
29499 l_adr_accounting_coa_id       := NULL;
29500 l_adr_flexfield_segment_code  := NULL;
29501 l_adr_flex_value_set_id       := NULL;
29502 l_adr_value_type_code         := NULL;
29503 l_adr_value_combination_id    := NULL;
29504 l_adr_value_segment_code      := NULL;
29505 
29506 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
29510 
29507 l_bflow_class_code           := '';    -- 4219869 Business Flow
29508 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
29509 l_budgetary_control_flag     := 'N';
29511 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
29512 l_bflow_applied_to_amt       := NULL; -- 5132302
29513 l_entered_amt_idx            := NULL;          -- 4262811
29514 l_accted_amt_idx             := NULL;          -- 4262811
29515 l_acc_rev_flag               := NULL;          -- 4262811
29516 l_accrual_line_num           := NULL;          -- 4262811
29517 l_tmp_amt                    := NULL;          -- 4262811
29518 --
29519  
29520 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29521     l_balance_type_code <> 'B' THEN
29522 IF NVL(p_source_2,'
29523 ') =  'EXP'
29524  THEN 
29525 
29526    --
29527    XLA_AE_LINES_PKG.SetNewLine;
29528 
29529    p_balance_type_code          := l_balance_type_code;
29530    -- set the flag so later we will know whether the gain loss line needs to be created
29531    
29532    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29533      p_actual_flag :='A';
29534    END IF;
29535 
29536    --
29537    -- bulk performance
29538    --
29539    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29540                                       p_header_num   => 0); -- 4262811
29541    --
29542    -- set accounting line options
29543    --
29544    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29545            p_natural_side_code          => 'D'
29546          , p_gain_or_loss_flag          => 'N'
29547          , p_gl_transfer_mode_code      => 'D'
29548          , p_acct_entry_type_code       => 'A'
29549          , p_switch_side_flag           => 'Y'
29550          , p_merge_duplicate_code       => 'W'
29551          );
29552    --
29553    l_acc_rev_natural_side_code := 'C';  -- 4262811
29554    -- 
29555    --
29556    -- set accounting line type info
29557    --
29558    xla_ae_lines_pkg.SetAcctLineType
29559       (p_component_type             => l_component_type
29560       ,p_event_type_code            => l_event_type_code
29561       ,p_line_definition_owner_code => l_line_definition_owner_code
29562       ,p_line_definition_code       => l_line_definition_code
29563       ,p_accounting_line_code       => l_component_code
29564       ,p_accounting_line_type_code  => l_component_type_code
29565       ,p_accounting_line_appl_id    => l_component_appl_id
29566       ,p_amb_context_code           => l_amb_context_code
29567       ,p_entity_code                => l_entity_code
29568       ,p_event_class_code           => l_event_class_code);
29569    --
29570    -- set accounting class
29571    --
29572    xla_ae_lines_pkg.SetAcctClass(
29573            p_accounting_class_code  => 'EXPENSE'
29574          , p_ae_header_id           => l_ae_header_id
29575          );
29576 
29577    --
29578    -- set rounding class
29579    --
29580    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29581                       'EXPENSE';
29582 
29583    --
29584    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29585    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29586    --
29587    -- bulk performance
29588    --
29589    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29590 
29591    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29592       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29593 
29594    -- 4955764
29595    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29596       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29597 
29598    -- 4458381 Public Sector Enh
29599    
29600    --
29601    -- set accounting attributes for the line type
29602    --
29603    l_entered_amt_idx := 3;
29604    l_accted_amt_idx  := 8;
29605    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
29606    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
29607    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
29608    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
29609    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
29610    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
29611    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
29612    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
29613    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
29614    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
29615    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
29616    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
29617    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
29618    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
29619    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
29620    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
29621    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
29622 
29623    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29624    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29625 
29629    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29626    ---------------------------------------------------------------------------------------------------------------
29627    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29628    ---------------------------------------------------------------------------------------------------------------
29630 
29631    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29632    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29633 
29634    IF xla_accounting_cache_pkg.GetValueChar
29635          (p_source_code         => 'LEDGER_CATEGORY_CODE'
29636          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29637    AND l_bflow_method_code = 'PRIOR_ENTRY'
29638 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29639    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29640          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29641        )
29642    THEN
29643          xla_ae_lines_pkg.BflowUpgEntry
29644            (p_business_method_code    => l_bflow_method_code
29645            ,p_business_class_code     => l_bflow_class_code
29646            ,p_balance_type            => l_balance_type_code);
29647    ELSE
29648       NULL;
29649 -- No business flow processing for business flow method of NONE.
29650    END IF;
29651 
29652    --
29653    -- call analytical criteria
29654    --
29655    
29656    --
29657    -- call description
29658    --
29659    -- No description or it is inherited.
29660    --
29661    -- call ADRs
29662    -- Bug 4922099
29663    --
29664    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29665         (NVL(l_actual_upg_option, 'N') = 'O') OR
29666         (NVL(l_enc_upg_option, 'N') = 'O')
29667       )
29668    THEN
29669    NULL;
29670    --
29671    --
29672    
29673   l_ccid := AcctDerRule_12(
29674            p_application_id           => p_application_id
29675          , p_ae_header_id             => l_ae_header_id 
29676 , p_source_1 => p_source_1
29677 , p_source_2 => p_source_2
29678          , x_transaction_coa_id       => l_adr_transaction_coa_id
29679          , x_accounting_coa_id        => l_adr_accounting_coa_id
29680          , x_value_type_code          => l_adr_value_type_code
29681          , p_side                     => 'NA'
29682    );
29683 
29684    xla_ae_lines_pkg.set_ccid(
29685     p_code_combination_id          => l_ccid
29686   , p_value_type_code              => l_adr_value_type_code
29687   , p_transaction_coa_id           => l_adr_transaction_coa_id
29688   , p_accounting_coa_id            => l_adr_accounting_coa_id
29689   , p_adr_code                     => 'EXP'
29690   , p_adr_type_code                => 'S'
29691   , p_component_type               => l_component_type
29692   , p_component_code               => l_component_code
29693   , p_component_type_code          => l_component_type_code
29694   , p_component_appl_id            => l_component_appl_id
29695   , p_amb_context_code             => l_amb_context_code
29696   , p_side                         => 'NA'
29697   );
29698 
29699 
29700    --
29701    --
29702    END IF;
29703    --
29704    -- Bug 4922099
29705    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29706           (NVL(l_enc_upg_option, 'N') = 'O')
29707         ) AND
29708         (l_bflow_method_code = 'PRIOR_ENTRY')
29709       )
29710    THEN
29711       IF
29712       --
29713       1 = 2
29714       --
29715       THEN
29716       xla_accounting_err_pkg.build_message
29717                                     (p_appli_s_name            => 'XLA'
29718                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29719                                     ,p_token_1                 => 'LINE_NUMBER'
29720                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29721                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29722                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29723                                                                              l_component_type
29724                                                                             ,l_component_code
29725                                                                             ,l_component_type_code
29726                                                                             ,l_component_appl_id
29727                                                                             ,l_amb_context_code
29728                                                                             ,l_entity_code
29729                                                                             ,l_event_class_code
29730                                                                            )
29731                                     ,p_token_3                 => 'OWNER'
29732                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29733                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29734                                                                           ,p_lookup_code    => l_component_type_code
29738                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29735                                                                          )
29736                                     ,p_token_4                 => 'PRODUCT_NAME'
29737                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29739                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29740                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29741                                     ,p_ae_header_id            =>  NULL
29742                                        );
29743 
29744         IF (C_LEVEL_ERROR>= g_log_level) THEN
29745                  trace
29746                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29747                       ,p_level    => C_LEVEL_ERROR
29748                       ,p_module   => l_log_module);
29749         END IF;
29750       END IF;
29751    END IF;
29752    --
29753    --
29754    ------------------------------------------------------------------------------------------------
29755    -- 4219869 Business Flow
29756    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29757    -- Prior Entry.  Currently, the following code is always generated.
29758    ------------------------------------------------------------------------------------------------
29759    XLA_AE_LINES_PKG.ValidateCurrentLine;
29760 
29761    ------------------------------------------------------------------------------------
29762    -- 4219869 Business Flow
29763    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29764    ------------------------------------------------------------------------------------
29765    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29766 
29767    ----------------------------------------------------------------------------------
29768    -- 4219869 Business Flow
29769    -- Update journal entry status -- Need to generate this within IF <condition>
29770    ----------------------------------------------------------------------------------
29771    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29772          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29773          ,p_balance_type_code => l_balance_type_code
29774          );
29775 
29776    -------------------------------------------------------------------------------------------
29777    -- 4262811 - Generate the Accrual Reversal lines
29778    -------------------------------------------------------------------------------------------
29779    BEGIN
29780       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29781                               (g_array_event(p_event_id).array_value_num('header_index'));
29782       IF l_acc_rev_flag IS NULL THEN
29783          l_acc_rev_flag := 'N';
29784       END IF;
29785    EXCEPTION
29786       WHEN OTHERS THEN
29787          l_acc_rev_flag := 'N';
29788    END;
29789    --
29790    IF (l_acc_rev_flag = 'Y') THEN
29791 
29792        -- 4645092  ------------------------------------------------------------------------------
29793        -- To allow MPA report to determine if it should generate report process
29794        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29795        ------------------------------------------------------------------------------------------
29796 
29797        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29798        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29799    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
29800    -- call ADRs
29801    -- Bug 4922099
29802    --
29803    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29804         (NVL(l_actual_upg_option, 'N') = 'O') OR
29805         (NVL(l_enc_upg_option, 'N') = 'O')
29806       )
29807    THEN
29808    NULL;
29809    --
29810    --
29811    
29812   l_ccid := AcctDerRule_12(
29813            p_application_id           => p_application_id
29814          , p_ae_header_id             => l_ae_header_id 
29815 , p_source_1 => p_source_1
29816 , p_source_2 => p_source_2
29817          , x_transaction_coa_id       => l_adr_transaction_coa_id
29818          , x_accounting_coa_id        => l_adr_accounting_coa_id
29819          , x_value_type_code          => l_adr_value_type_code
29820          , p_side                     => 'NA'
29821    );
29822 
29823    xla_ae_lines_pkg.set_ccid(
29824     p_code_combination_id          => l_ccid
29825   , p_value_type_code              => l_adr_value_type_code
29826   , p_transaction_coa_id           => l_adr_transaction_coa_id
29827   , p_accounting_coa_id            => l_adr_accounting_coa_id
29828   , p_adr_code                     => 'EXP'
29829   , p_adr_type_code                => 'S'
29830   , p_component_type               => l_component_type
29831   , p_component_code               => l_component_code
29832   , p_component_type_code          => l_component_type_code
29833   , p_component_appl_id            => l_component_appl_id
29834   , p_amb_context_code             => l_amb_context_code
29835   , p_side                         => 'NA'
29836   );
29837 
29838 
29839    --
29840    --
29841    END IF;
29842 
29843        --
29844        -- Update the line information that should be overwritten
29845        --
29846        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29850        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29847                                          p_header_num   => 1);
29848        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29849 
29851 
29852        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29853           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29854        END IF;
29855 
29856       --
29857       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29858       --
29859       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29860           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29861       ELSE
29862           ---------------------------------------------------------------------------------------------------
29863           -- 4262811a Switch Sign
29864           ---------------------------------------------------------------------------------------------------
29865           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29866           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29867                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29868           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29869                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29870           -- 5132302
29871           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29872                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29873 
29874       END IF;
29875 
29876       -- 4955764
29877       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29878       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29879 
29880 
29881       XLA_AE_LINES_PKG.ValidateCurrentLine;
29882       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29883 
29884       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29885                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29886                ,p_balance_type_code => l_balance_type_code);
29887 
29888    END IF;
29889 
29890    -----------------------------------------------------------------------------------------
29891    -- 4262811 Multiperiod Accounting
29892    -----------------------------------------------------------------------------------------
29893      -- No MPA option is assigned.
29894 
29895 
29896 END IF;
29897 END IF;
29898 --
29899 
29900 --
29901 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29902    trace
29903       (p_msg      => 'END of AcctLineType_86'
29904       ,p_level    => C_LEVEL_PROCEDURE
29905       ,p_module   => l_log_module);
29906 END IF;
29907 --
29908 EXCEPTION
29909   WHEN xla_exceptions_pkg.application_exception THEN
29910       RAISE;
29911   WHEN OTHERS THEN
29912        xla_exceptions_pkg.raise_message
29913            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_86');
29914 END AcctLineType_86;
29915 --
29916 
29917 ---------------------------------------
29918 --
29919 -- PRIVATE FUNCTION
29920 --         AcctLineType_87
29921 --
29922 ---------------------------------------
29923 PROCEDURE AcctLineType_87 (
29924   p_application_id        IN NUMBER
29925  ,p_event_id              IN NUMBER
29926  ,p_calculate_acctd_flag  IN VARCHAR2
29927  ,p_calculate_g_l_flag    IN VARCHAR2
29928  ,p_actual_flag           IN OUT VARCHAR2
29929  ,p_balance_type_code     OUT VARCHAR2
29930  ,p_gain_or_loss_ref      OUT VARCHAR2
29931  
29932 --Transaction Account
29933  , p_source_1            IN NUMBER
29934 --Journal Line Type
29935  , p_source_2            IN VARCHAR2
29936 --Entered Amount
29937  , p_source_3            IN NUMBER
29938 --First Distribution Identifier
29939  , p_source_5            IN NUMBER
29940 --Distribution Type
29941  , p_source_6            IN VARCHAR2
29942 --Currency Code
29943  , p_source_7            IN VARCHAR2
29944 --Currency Conversion Date
29945  , p_source_8            IN DATE
29946 --Currency Conversion Rate
29947  , p_source_9            IN NUMBER
29948 --Currency Conversion Type
29949  , p_source_10            IN VARCHAR2
29950 --Accounted Amount
29951  , p_source_11            IN NUMBER
29952 )
29953 IS
29954 
29955 l_component_type              VARCHAR2(80);
29956 l_component_code              VARCHAR2(30);
29957 l_component_type_code         VARCHAR2(1);
29958 l_component_appl_id           INTEGER;
29959 l_amb_context_code            VARCHAR2(30);
29960 l_entity_code                 VARCHAR2(30);
29961 l_event_class_code            VARCHAR2(30);
29962 l_ae_header_id                NUMBER;
29963 l_event_type_code             VARCHAR2(30);
29964 l_line_definition_code        VARCHAR2(30);
29965 l_line_definition_owner_code  VARCHAR2(1);
29966 --
29967 -- adr variables
29968 l_segment                     VARCHAR2(30);
29969 l_ccid                        NUMBER;
29973 l_adr_flex_value_set_id       NUMBER;
29970 l_adr_transaction_coa_id      NUMBER;
29971 l_adr_accounting_coa_id       NUMBER;
29972 l_adr_flexfield_segment_code  VARCHAR2(30);
29974 l_adr_value_type_code         VARCHAR2(30);
29975 l_adr_value_combination_id    NUMBER;
29976 l_adr_value_segment_code      VARCHAR2(30);
29977 
29978 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29979 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29980 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29981 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29982 
29983 -- 4262811 Variables ------------------------------------------------------------------------------------------
29984 l_entered_amt_idx             NUMBER;
29985 l_accted_amt_idx              NUMBER;
29986 l_acc_rev_flag                VARCHAR2(1);
29987 l_accrual_line_num            NUMBER;
29988 l_tmp_amt                     NUMBER;
29989 l_acc_rev_natural_side_code   VARCHAR2(1);
29990 
29991 l_num_entries                 NUMBER;
29992 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29993 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29994 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29995 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29996 l_recog_line_1                NUMBER;
29997 l_recog_line_2                NUMBER;
29998 
29999 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
30000 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
30001 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
30002 
30003 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30004 
30005 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
30006 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
30007 
30008 ---------------------------------------------------------------------------------------------------------------
30009 
30010 
30011 --
30012 -- bulk performance
30013 --
30014 l_balance_type_code           VARCHAR2(1);
30015 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
30016 l_log_module                  VARCHAR2(240);
30017 
30018 --
30019 -- Upgrade strategy
30020 --
30021 l_actual_upg_option           VARCHAR2(1);
30022 l_enc_upg_option           VARCHAR2(1);
30023 
30024 --
30025 BEGIN
30026 --
30027 IF g_log_enabled THEN
30028       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_87';
30029 END IF;
30030 --
30031 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30032 
30033       trace
30034          (p_msg      => 'BEGIN of AcctLineType_87'
30035          ,p_level    => C_LEVEL_PROCEDURE
30036          ,p_module   => l_log_module);
30037 
30038 END IF;
30039 --
30040 l_component_type             := 'AMB_JLT';
30041 l_component_code             := 'EXP';
30042 l_component_type_code        := 'S';
30043 l_component_appl_id          :=  555;
30044 l_amb_context_code           := 'DEFAULT';
30045 l_entity_code                := 'INVENTORY';
30046 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
30047 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
30048 l_line_definition_owner_code := 'S';
30049 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
30050 --
30051 l_balance_type_code          := 'A';
30052 l_segment                     := NULL;
30053 l_ccid                        := NULL;
30054 l_adr_transaction_coa_id      := NULL;
30055 l_adr_accounting_coa_id       := NULL;
30056 l_adr_flexfield_segment_code  := NULL;
30057 l_adr_flex_value_set_id       := NULL;
30058 l_adr_value_type_code         := NULL;
30059 l_adr_value_combination_id    := NULL;
30060 l_adr_value_segment_code      := NULL;
30061 
30062 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
30063 l_bflow_class_code           := '';    -- 4219869 Business Flow
30064 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
30065 l_budgetary_control_flag     := 'N';
30066 
30067 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30068 l_bflow_applied_to_amt       := NULL; -- 5132302
30069 l_entered_amt_idx            := NULL;          -- 4262811
30070 l_accted_amt_idx             := NULL;          -- 4262811
30071 l_acc_rev_flag               := NULL;          -- 4262811
30072 l_accrual_line_num           := NULL;          -- 4262811
30073 l_tmp_amt                    := NULL;          -- 4262811
30074 --
30075  
30076 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30077     l_balance_type_code <> 'B' THEN
30078 IF NVL(p_source_2,'
30079 ') =  'EXP'
30080  THEN 
30081 
30082    --
30083    XLA_AE_LINES_PKG.SetNewLine;
30084 
30085    p_balance_type_code          := l_balance_type_code;
30086    -- set the flag so later we will know whether the gain loss line needs to be created
30087    
30088    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30089      p_actual_flag :='A';
30090    END IF;
30091 
30092    --
30093    -- bulk performance
30094    --
30095    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30096                                       p_header_num   => 0); -- 4262811
30097    --
30101            p_natural_side_code          => 'D'
30098    -- set accounting line options
30099    --
30100    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30102          , p_gain_or_loss_flag          => 'N'
30103          , p_gl_transfer_mode_code      => 'D'
30104          , p_acct_entry_type_code       => 'A'
30105          , p_switch_side_flag           => 'Y'
30106          , p_merge_duplicate_code       => 'W'
30107          );
30108    --
30109    l_acc_rev_natural_side_code := 'C';  -- 4262811
30110    -- 
30111    --
30112    -- set accounting line type info
30113    --
30114    xla_ae_lines_pkg.SetAcctLineType
30115       (p_component_type             => l_component_type
30116       ,p_event_type_code            => l_event_type_code
30117       ,p_line_definition_owner_code => l_line_definition_owner_code
30118       ,p_line_definition_code       => l_line_definition_code
30119       ,p_accounting_line_code       => l_component_code
30120       ,p_accounting_line_type_code  => l_component_type_code
30121       ,p_accounting_line_appl_id    => l_component_appl_id
30122       ,p_amb_context_code           => l_amb_context_code
30123       ,p_entity_code                => l_entity_code
30124       ,p_event_class_code           => l_event_class_code);
30125    --
30126    -- set accounting class
30127    --
30128    xla_ae_lines_pkg.SetAcctClass(
30129            p_accounting_class_code  => 'EXPENSE'
30130          , p_ae_header_id           => l_ae_header_id
30131          );
30132 
30133    --
30134    -- set rounding class
30135    --
30136    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30137                       'EXPENSE';
30138 
30139    --
30140    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30141    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30142    --
30143    -- bulk performance
30144    --
30145    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30146 
30147    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30148       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30149 
30150    -- 4955764
30151    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30152       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30153 
30154    -- 4458381 Public Sector Enh
30155    
30156    --
30157    -- set accounting attributes for the line type
30158    --
30159    l_entered_amt_idx := 3;
30160    l_accted_amt_idx  := 8;
30161    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30162    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
30163    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
30164    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
30165    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
30166    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
30167    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
30168    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
30169    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
30170    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
30171    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
30172    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
30173    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
30174    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
30175    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
30176    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
30177    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
30178 
30179    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30180    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30181 
30182    ---------------------------------------------------------------------------------------------------------------
30183    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30184    ---------------------------------------------------------------------------------------------------------------
30185    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30186 
30187    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30188    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30189 
30190    IF xla_accounting_cache_pkg.GetValueChar
30191          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30192          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30193    AND l_bflow_method_code = 'PRIOR_ENTRY'
30194 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30195    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30196          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30197        )
30198    THEN
30199          xla_ae_lines_pkg.BflowUpgEntry
30200            (p_business_method_code    => l_bflow_method_code
30201            ,p_business_class_code     => l_bflow_class_code
30202            ,p_balance_type            => l_balance_type_code);
30203    ELSE
30204       NULL;
30205 -- No business flow processing for business flow method of NONE.
30206    END IF;
30207 
30211    
30208    --
30209    -- call analytical criteria
30210    --
30212    --
30213    -- call description
30214    --
30215    -- No description or it is inherited.
30216    --
30217    -- call ADRs
30218    -- Bug 4922099
30219    --
30220    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30221         (NVL(l_actual_upg_option, 'N') = 'O') OR
30222         (NVL(l_enc_upg_option, 'N') = 'O')
30223       )
30224    THEN
30225    NULL;
30226    --
30227    --
30228    
30229   l_ccid := AcctDerRule_12(
30230            p_application_id           => p_application_id
30231          , p_ae_header_id             => l_ae_header_id 
30232 , p_source_1 => p_source_1
30233 , p_source_2 => p_source_2
30234          , x_transaction_coa_id       => l_adr_transaction_coa_id
30235          , x_accounting_coa_id        => l_adr_accounting_coa_id
30236          , x_value_type_code          => l_adr_value_type_code
30237          , p_side                     => 'NA'
30238    );
30239 
30240    xla_ae_lines_pkg.set_ccid(
30241     p_code_combination_id          => l_ccid
30242   , p_value_type_code              => l_adr_value_type_code
30243   , p_transaction_coa_id           => l_adr_transaction_coa_id
30244   , p_accounting_coa_id            => l_adr_accounting_coa_id
30245   , p_adr_code                     => 'EXP'
30246   , p_adr_type_code                => 'S'
30247   , p_component_type               => l_component_type
30248   , p_component_code               => l_component_code
30249   , p_component_type_code          => l_component_type_code
30250   , p_component_appl_id            => l_component_appl_id
30251   , p_amb_context_code             => l_amb_context_code
30252   , p_side                         => 'NA'
30253   );
30254 
30255 
30256    --
30257    --
30258    END IF;
30259    --
30260    -- Bug 4922099
30261    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30262           (NVL(l_enc_upg_option, 'N') = 'O')
30263         ) AND
30264         (l_bflow_method_code = 'PRIOR_ENTRY')
30265       )
30266    THEN
30267       IF
30268       --
30269       1 = 2
30270       --
30271       THEN
30272       xla_accounting_err_pkg.build_message
30273                                     (p_appli_s_name            => 'XLA'
30274                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30275                                     ,p_token_1                 => 'LINE_NUMBER'
30276                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30277                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30278                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30279                                                                              l_component_type
30280                                                                             ,l_component_code
30281                                                                             ,l_component_type_code
30282                                                                             ,l_component_appl_id
30283                                                                             ,l_amb_context_code
30284                                                                             ,l_entity_code
30285                                                                             ,l_event_class_code
30286                                                                            )
30287                                     ,p_token_3                 => 'OWNER'
30288                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30289                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30290                                                                           ,p_lookup_code    => l_component_type_code
30291                                                                          )
30292                                     ,p_token_4                 => 'PRODUCT_NAME'
30293                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30294                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30295                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30296                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30297                                     ,p_ae_header_id            =>  NULL
30298                                        );
30299 
30300         IF (C_LEVEL_ERROR>= g_log_level) THEN
30301                  trace
30302                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30303                       ,p_level    => C_LEVEL_ERROR
30304                       ,p_module   => l_log_module);
30305         END IF;
30306       END IF;
30307    END IF;
30308    --
30309    --
30310    ------------------------------------------------------------------------------------------------
30311    -- 4219869 Business Flow
30312    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30313    -- Prior Entry.  Currently, the following code is always generated.
30314    ------------------------------------------------------------------------------------------------
30315    XLA_AE_LINES_PKG.ValidateCurrentLine;
30316 
30320    ------------------------------------------------------------------------------------
30317    ------------------------------------------------------------------------------------
30318    -- 4219869 Business Flow
30319    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30321    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30322 
30323    ----------------------------------------------------------------------------------
30324    -- 4219869 Business Flow
30325    -- Update journal entry status -- Need to generate this within IF <condition>
30326    ----------------------------------------------------------------------------------
30327    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30328          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30329          ,p_balance_type_code => l_balance_type_code
30330          );
30331 
30332    -------------------------------------------------------------------------------------------
30333    -- 4262811 - Generate the Accrual Reversal lines
30334    -------------------------------------------------------------------------------------------
30335    BEGIN
30336       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30337                               (g_array_event(p_event_id).array_value_num('header_index'));
30338       IF l_acc_rev_flag IS NULL THEN
30339          l_acc_rev_flag := 'N';
30340       END IF;
30341    EXCEPTION
30342       WHEN OTHERS THEN
30343          l_acc_rev_flag := 'N';
30344    END;
30345    --
30346    IF (l_acc_rev_flag = 'Y') THEN
30347 
30348        -- 4645092  ------------------------------------------------------------------------------
30349        -- To allow MPA report to determine if it should generate report process
30350        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30351        ------------------------------------------------------------------------------------------
30352 
30353        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30354        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30355    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
30356    -- call ADRs
30357    -- Bug 4922099
30358    --
30359    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30360         (NVL(l_actual_upg_option, 'N') = 'O') OR
30361         (NVL(l_enc_upg_option, 'N') = 'O')
30362       )
30363    THEN
30364    NULL;
30365    --
30366    --
30367    
30368   l_ccid := AcctDerRule_12(
30369            p_application_id           => p_application_id
30370          , p_ae_header_id             => l_ae_header_id 
30371 , p_source_1 => p_source_1
30372 , p_source_2 => p_source_2
30373          , x_transaction_coa_id       => l_adr_transaction_coa_id
30374          , x_accounting_coa_id        => l_adr_accounting_coa_id
30375          , x_value_type_code          => l_adr_value_type_code
30376          , p_side                     => 'NA'
30377    );
30378 
30379    xla_ae_lines_pkg.set_ccid(
30380     p_code_combination_id          => l_ccid
30381   , p_value_type_code              => l_adr_value_type_code
30382   , p_transaction_coa_id           => l_adr_transaction_coa_id
30383   , p_accounting_coa_id            => l_adr_accounting_coa_id
30384   , p_adr_code                     => 'EXP'
30385   , p_adr_type_code                => 'S'
30386   , p_component_type               => l_component_type
30387   , p_component_code               => l_component_code
30388   , p_component_type_code          => l_component_type_code
30389   , p_component_appl_id            => l_component_appl_id
30390   , p_amb_context_code             => l_amb_context_code
30391   , p_side                         => 'NA'
30392   );
30393 
30394 
30395    --
30396    --
30397    END IF;
30398 
30399        --
30400        -- Update the line information that should be overwritten
30401        --
30402        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30403                                          p_header_num   => 1);
30404        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30405 
30406        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30407 
30408        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30409           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30410        END IF;
30411 
30412       --
30413       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30414       --
30415       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30416           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
30417       ELSE
30418           ---------------------------------------------------------------------------------------------------
30419           -- 4262811a Switch Sign
30420           ---------------------------------------------------------------------------------------------------
30421           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
30422           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30423                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30427           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30424           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30425                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30426           -- 5132302
30428                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30429 
30430       END IF;
30431 
30432       -- 4955764
30433       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30434       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30435 
30436 
30437       XLA_AE_LINES_PKG.ValidateCurrentLine;
30438       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30439 
30440       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30441                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30442                ,p_balance_type_code => l_balance_type_code);
30443 
30444    END IF;
30445 
30446    -----------------------------------------------------------------------------------------
30447    -- 4262811 Multiperiod Accounting
30448    -----------------------------------------------------------------------------------------
30449      -- No MPA option is assigned.
30450 
30451 
30452 END IF;
30453 END IF;
30454 --
30455 
30456 --
30457 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30458    trace
30459       (p_msg      => 'END of AcctLineType_87'
30460       ,p_level    => C_LEVEL_PROCEDURE
30461       ,p_module   => l_log_module);
30462 END IF;
30463 --
30464 EXCEPTION
30465   WHEN xla_exceptions_pkg.application_exception THEN
30466       RAISE;
30467   WHEN OTHERS THEN
30468        xla_exceptions_pkg.raise_message
30469            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_87');
30470 END AcctLineType_87;
30471 --
30472 
30473 ---------------------------------------
30474 --
30475 -- PRIVATE FUNCTION
30476 --         AcctLineType_88
30477 --
30478 ---------------------------------------
30479 PROCEDURE AcctLineType_88 (
30480   p_application_id        IN NUMBER
30481  ,p_event_id              IN NUMBER
30482  ,p_calculate_acctd_flag  IN VARCHAR2
30483  ,p_calculate_g_l_flag    IN VARCHAR2
30484  ,p_actual_flag           IN OUT VARCHAR2
30485  ,p_balance_type_code     OUT VARCHAR2
30486  ,p_gain_or_loss_ref      OUT VARCHAR2
30487  
30488 --Transaction Account
30489  , p_source_1            IN NUMBER
30490 --Journal Line Type
30491  , p_source_2            IN VARCHAR2
30492 --Entered Amount
30493  , p_source_3            IN NUMBER
30494 --First Distribution Identifier
30495  , p_source_5            IN NUMBER
30496 --Distribution Type
30497  , p_source_6            IN VARCHAR2
30498 --Currency Code
30499  , p_source_7            IN VARCHAR2
30500 --Currency Conversion Date
30501  , p_source_8            IN DATE
30502 --Currency Conversion Rate
30503  , p_source_9            IN NUMBER
30504 --Currency Conversion Type
30505  , p_source_10            IN VARCHAR2
30506 --Accounted Amount
30507  , p_source_11            IN NUMBER
30508 )
30509 IS
30510 
30511 l_component_type              VARCHAR2(80);
30512 l_component_code              VARCHAR2(30);
30513 l_component_type_code         VARCHAR2(1);
30514 l_component_appl_id           INTEGER;
30515 l_amb_context_code            VARCHAR2(30);
30516 l_entity_code                 VARCHAR2(30);
30517 l_event_class_code            VARCHAR2(30);
30518 l_ae_header_id                NUMBER;
30519 l_event_type_code             VARCHAR2(30);
30520 l_line_definition_code        VARCHAR2(30);
30521 l_line_definition_owner_code  VARCHAR2(1);
30522 --
30523 -- adr variables
30524 l_segment                     VARCHAR2(30);
30525 l_ccid                        NUMBER;
30526 l_adr_transaction_coa_id      NUMBER;
30527 l_adr_accounting_coa_id       NUMBER;
30528 l_adr_flexfield_segment_code  VARCHAR2(30);
30529 l_adr_flex_value_set_id       NUMBER;
30530 l_adr_value_type_code         VARCHAR2(30);
30531 l_adr_value_combination_id    NUMBER;
30532 l_adr_value_segment_code      VARCHAR2(30);
30533 
30534 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
30535 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
30536 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
30537 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
30538 
30539 -- 4262811 Variables ------------------------------------------------------------------------------------------
30540 l_entered_amt_idx             NUMBER;
30541 l_accted_amt_idx              NUMBER;
30542 l_acc_rev_flag                VARCHAR2(1);
30543 l_accrual_line_num            NUMBER;
30544 l_tmp_amt                     NUMBER;
30545 l_acc_rev_natural_side_code   VARCHAR2(1);
30546 
30547 l_num_entries                 NUMBER;
30548 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
30549 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
30550 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
30551 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
30552 l_recog_line_1                NUMBER;
30553 l_recog_line_2                NUMBER;
30557 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
30554 
30555 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
30556 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
30558 
30559 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30560 
30561 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
30562 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
30563 
30564 ---------------------------------------------------------------------------------------------------------------
30565 
30566 
30567 --
30568 -- bulk performance
30569 --
30570 l_balance_type_code           VARCHAR2(1);
30571 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
30572 l_log_module                  VARCHAR2(240);
30573 
30574 --
30575 -- Upgrade strategy
30576 --
30577 l_actual_upg_option           VARCHAR2(1);
30578 l_enc_upg_option           VARCHAR2(1);
30579 
30580 --
30581 BEGIN
30582 --
30583 IF g_log_enabled THEN
30584       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_88';
30585 END IF;
30586 --
30587 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30588 
30589       trace
30590          (p_msg      => 'BEGIN of AcctLineType_88'
30591          ,p_level    => C_LEVEL_PROCEDURE
30592          ,p_module   => l_log_module);
30593 
30594 END IF;
30595 --
30596 l_component_type             := 'AMB_JLT';
30597 l_component_code             := 'EXP';
30598 l_component_type_code        := 'S';
30599 l_component_appl_id          :=  555;
30600 l_amb_context_code           := 'DEFAULT';
30601 l_entity_code                := 'INVENTORY';
30602 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
30603 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_TP';
30604 l_line_definition_owner_code := 'S';
30605 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT_TP';
30606 --
30607 l_balance_type_code          := 'A';
30608 l_segment                     := NULL;
30609 l_ccid                        := NULL;
30610 l_adr_transaction_coa_id      := NULL;
30611 l_adr_accounting_coa_id       := NULL;
30612 l_adr_flexfield_segment_code  := NULL;
30613 l_adr_flex_value_set_id       := NULL;
30614 l_adr_value_type_code         := NULL;
30615 l_adr_value_combination_id    := NULL;
30616 l_adr_value_segment_code      := NULL;
30617 
30618 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
30619 l_bflow_class_code           := '';    -- 4219869 Business Flow
30620 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
30621 l_budgetary_control_flag     := 'N';
30622 
30623 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30624 l_bflow_applied_to_amt       := NULL; -- 5132302
30625 l_entered_amt_idx            := NULL;          -- 4262811
30626 l_accted_amt_idx             := NULL;          -- 4262811
30627 l_acc_rev_flag               := NULL;          -- 4262811
30628 l_accrual_line_num           := NULL;          -- 4262811
30629 l_tmp_amt                    := NULL;          -- 4262811
30630 --
30631  
30632 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30633     l_balance_type_code <> 'B' THEN
30634 IF NVL(p_source_2,'
30635 ') =  'EXP'
30636  THEN 
30637 
30638    --
30639    XLA_AE_LINES_PKG.SetNewLine;
30640 
30641    p_balance_type_code          := l_balance_type_code;
30642    -- set the flag so later we will know whether the gain loss line needs to be created
30643    
30644    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30645      p_actual_flag :='A';
30646    END IF;
30647 
30648    --
30649    -- bulk performance
30650    --
30651    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30652                                       p_header_num   => 0); -- 4262811
30653    --
30654    -- set accounting line options
30655    --
30656    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30657            p_natural_side_code          => 'D'
30658          , p_gain_or_loss_flag          => 'N'
30659          , p_gl_transfer_mode_code      => 'D'
30660          , p_acct_entry_type_code       => 'A'
30661          , p_switch_side_flag           => 'Y'
30662          , p_merge_duplicate_code       => 'W'
30663          );
30664    --
30665    l_acc_rev_natural_side_code := 'C';  -- 4262811
30666    -- 
30667    --
30668    -- set accounting line type info
30669    --
30670    xla_ae_lines_pkg.SetAcctLineType
30671       (p_component_type             => l_component_type
30672       ,p_event_type_code            => l_event_type_code
30673       ,p_line_definition_owner_code => l_line_definition_owner_code
30674       ,p_line_definition_code       => l_line_definition_code
30675       ,p_accounting_line_code       => l_component_code
30676       ,p_accounting_line_type_code  => l_component_type_code
30677       ,p_accounting_line_appl_id    => l_component_appl_id
30678       ,p_amb_context_code           => l_amb_context_code
30679       ,p_entity_code                => l_entity_code
30680       ,p_event_class_code           => l_event_class_code);
30681    --
30682    -- set accounting class
30683    --
30684    xla_ae_lines_pkg.SetAcctClass(
30685            p_accounting_class_code  => 'EXPENSE'
30689    --
30686          , p_ae_header_id           => l_ae_header_id
30687          );
30688 
30690    -- set rounding class
30691    --
30692    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30693                       'EXPENSE';
30694 
30695    --
30696    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30697    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30698    --
30699    -- bulk performance
30700    --
30701    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30702 
30703    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30704       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30705 
30706    -- 4955764
30707    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30708       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30709 
30710    -- 4458381 Public Sector Enh
30711    
30712    --
30713    -- set accounting attributes for the line type
30714    --
30715    l_entered_amt_idx := 3;
30716    l_accted_amt_idx  := 8;
30717    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30718    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
30719    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
30720    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
30721    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
30722    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
30723    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
30724    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
30725    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
30726    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
30727    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
30728    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
30729    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
30730    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
30731    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
30732    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
30733    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
30734 
30735    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30736    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30737 
30738    ---------------------------------------------------------------------------------------------------------------
30739    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30740    ---------------------------------------------------------------------------------------------------------------
30741    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30742 
30743    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30744    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30745 
30746    IF xla_accounting_cache_pkg.GetValueChar
30747          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30748          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30749    AND l_bflow_method_code = 'PRIOR_ENTRY'
30750 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30751    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30752          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30753        )
30754    THEN
30755          xla_ae_lines_pkg.BflowUpgEntry
30756            (p_business_method_code    => l_bflow_method_code
30757            ,p_business_class_code     => l_bflow_class_code
30758            ,p_balance_type            => l_balance_type_code);
30759    ELSE
30760       NULL;
30761 -- No business flow processing for business flow method of NONE.
30762    END IF;
30763 
30764    --
30765    -- call analytical criteria
30766    --
30767    
30768    --
30769    -- call description
30770    --
30771    -- No description or it is inherited.
30772    --
30773    -- call ADRs
30774    -- Bug 4922099
30775    --
30776    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30777         (NVL(l_actual_upg_option, 'N') = 'O') OR
30778         (NVL(l_enc_upg_option, 'N') = 'O')
30779       )
30780    THEN
30781    NULL;
30782    --
30783    --
30784    
30785   l_ccid := AcctDerRule_12(
30786            p_application_id           => p_application_id
30787          , p_ae_header_id             => l_ae_header_id 
30788 , p_source_1 => p_source_1
30789 , p_source_2 => p_source_2
30790          , x_transaction_coa_id       => l_adr_transaction_coa_id
30791          , x_accounting_coa_id        => l_adr_accounting_coa_id
30792          , x_value_type_code          => l_adr_value_type_code
30793          , p_side                     => 'NA'
30794    );
30795 
30796    xla_ae_lines_pkg.set_ccid(
30797     p_code_combination_id          => l_ccid
30798   , p_value_type_code              => l_adr_value_type_code
30799   , p_transaction_coa_id           => l_adr_transaction_coa_id
30800   , p_accounting_coa_id            => l_adr_accounting_coa_id
30804   , p_component_code               => l_component_code
30801   , p_adr_code                     => 'EXP'
30802   , p_adr_type_code                => 'S'
30803   , p_component_type               => l_component_type
30805   , p_component_type_code          => l_component_type_code
30806   , p_component_appl_id            => l_component_appl_id
30807   , p_amb_context_code             => l_amb_context_code
30808   , p_side                         => 'NA'
30809   );
30810 
30811 
30812    --
30813    --
30814    END IF;
30815    --
30816    -- Bug 4922099
30817    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30818           (NVL(l_enc_upg_option, 'N') = 'O')
30819         ) AND
30820         (l_bflow_method_code = 'PRIOR_ENTRY')
30821       )
30822    THEN
30823       IF
30824       --
30825       1 = 2
30826       --
30827       THEN
30828       xla_accounting_err_pkg.build_message
30829                                     (p_appli_s_name            => 'XLA'
30830                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30831                                     ,p_token_1                 => 'LINE_NUMBER'
30832                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30833                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30834                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30835                                                                              l_component_type
30836                                                                             ,l_component_code
30837                                                                             ,l_component_type_code
30838                                                                             ,l_component_appl_id
30839                                                                             ,l_amb_context_code
30840                                                                             ,l_entity_code
30841                                                                             ,l_event_class_code
30842                                                                            )
30843                                     ,p_token_3                 => 'OWNER'
30844                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30845                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30846                                                                           ,p_lookup_code    => l_component_type_code
30847                                                                          )
30848                                     ,p_token_4                 => 'PRODUCT_NAME'
30849                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30850                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30851                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30852                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30853                                     ,p_ae_header_id            =>  NULL
30854                                        );
30855 
30856         IF (C_LEVEL_ERROR>= g_log_level) THEN
30857                  trace
30858                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30859                       ,p_level    => C_LEVEL_ERROR
30860                       ,p_module   => l_log_module);
30861         END IF;
30862       END IF;
30863    END IF;
30864    --
30865    --
30866    ------------------------------------------------------------------------------------------------
30867    -- 4219869 Business Flow
30868    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30869    -- Prior Entry.  Currently, the following code is always generated.
30870    ------------------------------------------------------------------------------------------------
30871    XLA_AE_LINES_PKG.ValidateCurrentLine;
30872 
30873    ------------------------------------------------------------------------------------
30874    -- 4219869 Business Flow
30875    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30876    ------------------------------------------------------------------------------------
30877    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30878 
30879    ----------------------------------------------------------------------------------
30880    -- 4219869 Business Flow
30881    -- Update journal entry status -- Need to generate this within IF <condition>
30882    ----------------------------------------------------------------------------------
30883    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30884          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30885          ,p_balance_type_code => l_balance_type_code
30886          );
30887 
30888    -------------------------------------------------------------------------------------------
30889    -- 4262811 - Generate the Accrual Reversal lines
30890    -------------------------------------------------------------------------------------------
30891    BEGIN
30892       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30893                               (g_array_event(p_event_id).array_value_num('header_index'));
30894       IF l_acc_rev_flag IS NULL THEN
30895          l_acc_rev_flag := 'N';
30899          l_acc_rev_flag := 'N';
30896       END IF;
30897    EXCEPTION
30898       WHEN OTHERS THEN
30900    END;
30901    --
30902    IF (l_acc_rev_flag = 'Y') THEN
30903 
30904        -- 4645092  ------------------------------------------------------------------------------
30905        -- To allow MPA report to determine if it should generate report process
30906        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30907        ------------------------------------------------------------------------------------------
30908 
30909        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30910        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30911    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
30912    -- call ADRs
30913    -- Bug 4922099
30914    --
30915    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30916         (NVL(l_actual_upg_option, 'N') = 'O') OR
30917         (NVL(l_enc_upg_option, 'N') = 'O')
30918       )
30919    THEN
30920    NULL;
30921    --
30922    --
30923    
30924   l_ccid := AcctDerRule_12(
30925            p_application_id           => p_application_id
30926          , p_ae_header_id             => l_ae_header_id 
30927 , p_source_1 => p_source_1
30928 , p_source_2 => p_source_2
30929          , x_transaction_coa_id       => l_adr_transaction_coa_id
30930          , x_accounting_coa_id        => l_adr_accounting_coa_id
30931          , x_value_type_code          => l_adr_value_type_code
30932          , p_side                     => 'NA'
30933    );
30934 
30935    xla_ae_lines_pkg.set_ccid(
30936     p_code_combination_id          => l_ccid
30937   , p_value_type_code              => l_adr_value_type_code
30938   , p_transaction_coa_id           => l_adr_transaction_coa_id
30939   , p_accounting_coa_id            => l_adr_accounting_coa_id
30940   , p_adr_code                     => 'EXP'
30941   , p_adr_type_code                => 'S'
30942   , p_component_type               => l_component_type
30943   , p_component_code               => l_component_code
30944   , p_component_type_code          => l_component_type_code
30945   , p_component_appl_id            => l_component_appl_id
30946   , p_amb_context_code             => l_amb_context_code
30947   , p_side                         => 'NA'
30948   );
30949 
30950 
30951    --
30952    --
30953    END IF;
30954 
30955        --
30956        -- Update the line information that should be overwritten
30957        --
30958        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30959                                          p_header_num   => 1);
30960        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30961 
30962        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30963 
30964        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30965           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30966        END IF;
30967 
30968       --
30969       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30970       --
30971       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30972           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
30973       ELSE
30974           ---------------------------------------------------------------------------------------------------
30975           -- 4262811a Switch Sign
30976           ---------------------------------------------------------------------------------------------------
30977           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
30978           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30979                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30980           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30981                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30982           -- 5132302
30983           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30984                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30985 
30986       END IF;
30987 
30988       -- 4955764
30989       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30990       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30991 
30992 
30993       XLA_AE_LINES_PKG.ValidateCurrentLine;
30994       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30995 
30996       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30997                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30998                ,p_balance_type_code => l_balance_type_code);
30999 
31000    END IF;
31001 
31002    -----------------------------------------------------------------------------------------
31003    -- 4262811 Multiperiod Accounting
31004    -----------------------------------------------------------------------------------------
31005      -- No MPA option is assigned.
31006 
31007 
31008 END IF;
31009 END IF;
31010 --
31014    trace
31011 
31012 --
31013 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31015       (p_msg      => 'END of AcctLineType_88'
31016       ,p_level    => C_LEVEL_PROCEDURE
31017       ,p_module   => l_log_module);
31018 END IF;
31019 --
31020 EXCEPTION
31021   WHEN xla_exceptions_pkg.application_exception THEN
31022       RAISE;
31023   WHEN OTHERS THEN
31024        xla_exceptions_pkg.raise_message
31025            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_88');
31026 END AcctLineType_88;
31027 --
31028 
31029 ---------------------------------------
31030 --
31031 -- PRIVATE FUNCTION
31032 --         AcctLineType_89
31033 --
31034 ---------------------------------------
31035 PROCEDURE AcctLineType_89 (
31036   p_application_id        IN NUMBER
31037  ,p_event_id              IN NUMBER
31038  ,p_calculate_acctd_flag  IN VARCHAR2
31039  ,p_calculate_g_l_flag    IN VARCHAR2
31040  ,p_actual_flag           IN OUT VARCHAR2
31041  ,p_balance_type_code     OUT VARCHAR2
31042  ,p_gain_or_loss_ref      OUT VARCHAR2
31043  
31044 --Transaction Account
31045  , p_source_1            IN NUMBER
31046 --Journal Line Type
31047  , p_source_2            IN VARCHAR2
31048 --Entered Amount
31049  , p_source_3            IN NUMBER
31050 --First Distribution Identifier
31051  , p_source_5            IN NUMBER
31052 --Distribution Type
31053  , p_source_6            IN VARCHAR2
31054 --Currency Code
31055  , p_source_7            IN VARCHAR2
31056 --Currency Conversion Date
31057  , p_source_8            IN DATE
31058 --Currency Conversion Rate
31059  , p_source_9            IN NUMBER
31060 --Currency Conversion Type
31061  , p_source_10            IN VARCHAR2
31062 --Accounted Amount
31063  , p_source_11            IN NUMBER
31064 )
31065 IS
31066 
31067 l_component_type              VARCHAR2(80);
31068 l_component_code              VARCHAR2(30);
31069 l_component_type_code         VARCHAR2(1);
31070 l_component_appl_id           INTEGER;
31071 l_amb_context_code            VARCHAR2(30);
31072 l_entity_code                 VARCHAR2(30);
31073 l_event_class_code            VARCHAR2(30);
31074 l_ae_header_id                NUMBER;
31075 l_event_type_code             VARCHAR2(30);
31076 l_line_definition_code        VARCHAR2(30);
31077 l_line_definition_owner_code  VARCHAR2(1);
31078 --
31079 -- adr variables
31080 l_segment                     VARCHAR2(30);
31081 l_ccid                        NUMBER;
31082 l_adr_transaction_coa_id      NUMBER;
31083 l_adr_accounting_coa_id       NUMBER;
31084 l_adr_flexfield_segment_code  VARCHAR2(30);
31085 l_adr_flex_value_set_id       NUMBER;
31086 l_adr_value_type_code         VARCHAR2(30);
31087 l_adr_value_combination_id    NUMBER;
31088 l_adr_value_segment_code      VARCHAR2(30);
31089 
31090 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31091 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31092 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31093 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31094 
31095 -- 4262811 Variables ------------------------------------------------------------------------------------------
31096 l_entered_amt_idx             NUMBER;
31097 l_accted_amt_idx              NUMBER;
31098 l_acc_rev_flag                VARCHAR2(1);
31099 l_accrual_line_num            NUMBER;
31100 l_tmp_amt                     NUMBER;
31101 l_acc_rev_natural_side_code   VARCHAR2(1);
31102 
31103 l_num_entries                 NUMBER;
31104 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31105 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31106 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31107 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31108 l_recog_line_1                NUMBER;
31109 l_recog_line_2                NUMBER;
31110 
31111 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31112 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31113 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31114 
31115 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31116 
31117 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31118 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31119 
31120 ---------------------------------------------------------------------------------------------------------------
31121 
31122 
31123 --
31124 -- bulk performance
31125 --
31126 l_balance_type_code           VARCHAR2(1);
31127 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31128 l_log_module                  VARCHAR2(240);
31129 
31130 --
31131 -- Upgrade strategy
31132 --
31133 l_actual_upg_option           VARCHAR2(1);
31134 l_enc_upg_option           VARCHAR2(1);
31135 
31136 --
31137 BEGIN
31138 --
31139 IF g_log_enabled THEN
31140       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_89';
31141 END IF;
31142 --
31143 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31144 
31145       trace
31146          (p_msg      => 'BEGIN of AcctLineType_89'
31147          ,p_level    => C_LEVEL_PROCEDURE
31148          ,p_module   => l_log_module);
31152 l_component_type             := 'AMB_JLT';
31149 
31150 END IF;
31151 --
31153 l_component_code             := 'EXP';
31154 l_component_type_code        := 'S';
31155 l_component_appl_id          :=  555;
31156 l_amb_context_code           := 'DEFAULT';
31157 l_entity_code                := 'PURCHASING';
31158 l_event_class_code           := 'DELIVER';
31159 l_event_type_code            := 'LOG_PO_RECEIPT';
31160 l_line_definition_owner_code := 'S';
31161 l_line_definition_code       := 'LOGICAL_PO_RECEIPT';
31162 --
31163 l_balance_type_code          := 'A';
31164 l_segment                     := NULL;
31165 l_ccid                        := NULL;
31166 l_adr_transaction_coa_id      := NULL;
31167 l_adr_accounting_coa_id       := NULL;
31168 l_adr_flexfield_segment_code  := NULL;
31169 l_adr_flex_value_set_id       := NULL;
31170 l_adr_value_type_code         := NULL;
31171 l_adr_value_combination_id    := NULL;
31172 l_adr_value_segment_code      := NULL;
31173 
31174 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31175 l_bflow_class_code           := '';    -- 4219869 Business Flow
31176 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31177 l_budgetary_control_flag     := 'N';
31178 
31179 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31180 l_bflow_applied_to_amt       := NULL; -- 5132302
31181 l_entered_amt_idx            := NULL;          -- 4262811
31182 l_accted_amt_idx             := NULL;          -- 4262811
31183 l_acc_rev_flag               := NULL;          -- 4262811
31184 l_accrual_line_num           := NULL;          -- 4262811
31185 l_tmp_amt                    := NULL;          -- 4262811
31186 --
31187  
31188 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31189     l_balance_type_code <> 'B' THEN
31190 IF NVL(p_source_2,'
31191 ') =  'EXP'
31192  THEN 
31193 
31194    --
31195    XLA_AE_LINES_PKG.SetNewLine;
31196 
31197    p_balance_type_code          := l_balance_type_code;
31198    -- set the flag so later we will know whether the gain loss line needs to be created
31199    
31200    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31201      p_actual_flag :='A';
31202    END IF;
31203 
31204    --
31205    -- bulk performance
31206    --
31207    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31208                                       p_header_num   => 0); -- 4262811
31209    --
31210    -- set accounting line options
31211    --
31212    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31213            p_natural_side_code          => 'D'
31214          , p_gain_or_loss_flag          => 'N'
31215          , p_gl_transfer_mode_code      => 'D'
31216          , p_acct_entry_type_code       => 'A'
31217          , p_switch_side_flag           => 'Y'
31218          , p_merge_duplicate_code       => 'W'
31219          );
31220    --
31221    l_acc_rev_natural_side_code := 'C';  -- 4262811
31222    -- 
31223    --
31224    -- set accounting line type info
31225    --
31226    xla_ae_lines_pkg.SetAcctLineType
31227       (p_component_type             => l_component_type
31228       ,p_event_type_code            => l_event_type_code
31229       ,p_line_definition_owner_code => l_line_definition_owner_code
31230       ,p_line_definition_code       => l_line_definition_code
31231       ,p_accounting_line_code       => l_component_code
31232       ,p_accounting_line_type_code  => l_component_type_code
31233       ,p_accounting_line_appl_id    => l_component_appl_id
31234       ,p_amb_context_code           => l_amb_context_code
31235       ,p_entity_code                => l_entity_code
31236       ,p_event_class_code           => l_event_class_code);
31237    --
31238    -- set accounting class
31239    --
31240    xla_ae_lines_pkg.SetAcctClass(
31241            p_accounting_class_code  => 'EXPENSE'
31242          , p_ae_header_id           => l_ae_header_id
31243          );
31244 
31245    --
31246    -- set rounding class
31247    --
31248    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31249                       'EXPENSE';
31250 
31251    --
31252    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31253    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31254    --
31255    -- bulk performance
31256    --
31257    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31258 
31259    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31260       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31261 
31262    -- 4955764
31263    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31264       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31265 
31266    -- 4458381 Public Sector Enh
31267    
31268    --
31269    -- set accounting attributes for the line type
31270    --
31271    l_entered_amt_idx := 3;
31272    l_accted_amt_idx  := 8;
31273    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31274    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
31275    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
31276    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
31280    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
31277    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
31278    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
31279    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
31281    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
31282    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
31283    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
31284    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
31285    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
31286    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
31287    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
31288    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
31289    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
31290 
31291    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31292    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31293 
31294    ---------------------------------------------------------------------------------------------------------------
31295    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31296    ---------------------------------------------------------------------------------------------------------------
31297    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31298 
31299    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31300    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31301 
31302    IF xla_accounting_cache_pkg.GetValueChar
31303          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31304          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31305    AND l_bflow_method_code = 'PRIOR_ENTRY'
31306 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31307    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31308          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31309        )
31310    THEN
31311          xla_ae_lines_pkg.BflowUpgEntry
31312            (p_business_method_code    => l_bflow_method_code
31313            ,p_business_class_code     => l_bflow_class_code
31314            ,p_balance_type            => l_balance_type_code);
31315    ELSE
31316       NULL;
31317 -- No business flow processing for business flow method of NONE.
31318    END IF;
31319 
31320    --
31321    -- call analytical criteria
31322    --
31323    
31324    --
31325    -- call description
31326    --
31327    -- No description or it is inherited.
31328    --
31329    -- call ADRs
31330    -- Bug 4922099
31331    --
31332    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31333         (NVL(l_actual_upg_option, 'N') = 'O') OR
31334         (NVL(l_enc_upg_option, 'N') = 'O')
31335       )
31336    THEN
31337    NULL;
31338    --
31339    --
31340    
31341   l_ccid := AcctDerRule_12(
31342            p_application_id           => p_application_id
31343          , p_ae_header_id             => l_ae_header_id 
31344 , p_source_1 => p_source_1
31345 , p_source_2 => p_source_2
31346          , x_transaction_coa_id       => l_adr_transaction_coa_id
31347          , x_accounting_coa_id        => l_adr_accounting_coa_id
31348          , x_value_type_code          => l_adr_value_type_code
31349          , p_side                     => 'NA'
31350    );
31351 
31352    xla_ae_lines_pkg.set_ccid(
31353     p_code_combination_id          => l_ccid
31354   , p_value_type_code              => l_adr_value_type_code
31355   , p_transaction_coa_id           => l_adr_transaction_coa_id
31356   , p_accounting_coa_id            => l_adr_accounting_coa_id
31357   , p_adr_code                     => 'EXP'
31358   , p_adr_type_code                => 'S'
31359   , p_component_type               => l_component_type
31360   , p_component_code               => l_component_code
31361   , p_component_type_code          => l_component_type_code
31362   , p_component_appl_id            => l_component_appl_id
31363   , p_amb_context_code             => l_amb_context_code
31364   , p_side                         => 'NA'
31365   );
31366 
31367 
31368    --
31369    --
31370    END IF;
31371    --
31372    -- Bug 4922099
31373    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31374           (NVL(l_enc_upg_option, 'N') = 'O')
31375         ) AND
31376         (l_bflow_method_code = 'PRIOR_ENTRY')
31377       )
31378    THEN
31379       IF
31380       --
31381       1 = 2
31382       --
31383       THEN
31384       xla_accounting_err_pkg.build_message
31385                                     (p_appli_s_name            => 'XLA'
31386                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31387                                     ,p_token_1                 => 'LINE_NUMBER'
31388                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
31389                                     ,p_token_2                 => 'LINE_TYPE_NAME'
31390                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
31391                                                                              l_component_type
31395                                                                             ,l_amb_context_code
31392                                                                             ,l_component_code
31393                                                                             ,l_component_type_code
31394                                                                             ,l_component_appl_id
31396                                                                             ,l_entity_code
31397                                                                             ,l_event_class_code
31398                                                                            )
31399                                     ,p_token_3                 => 'OWNER'
31400                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
31401                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
31402                                                                           ,p_lookup_code    => l_component_type_code
31403                                                                          )
31404                                     ,p_token_4                 => 'PRODUCT_NAME'
31405                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31406                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31407                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31408                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31409                                     ,p_ae_header_id            =>  NULL
31410                                        );
31411 
31412         IF (C_LEVEL_ERROR>= g_log_level) THEN
31413                  trace
31414                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31415                       ,p_level    => C_LEVEL_ERROR
31416                       ,p_module   => l_log_module);
31417         END IF;
31418       END IF;
31419    END IF;
31420    --
31421    --
31422    ------------------------------------------------------------------------------------------------
31423    -- 4219869 Business Flow
31424    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31425    -- Prior Entry.  Currently, the following code is always generated.
31426    ------------------------------------------------------------------------------------------------
31427    XLA_AE_LINES_PKG.ValidateCurrentLine;
31428 
31429    ------------------------------------------------------------------------------------
31430    -- 4219869 Business Flow
31431    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31432    ------------------------------------------------------------------------------------
31433    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31434 
31435    ----------------------------------------------------------------------------------
31436    -- 4219869 Business Flow
31437    -- Update journal entry status -- Need to generate this within IF <condition>
31438    ----------------------------------------------------------------------------------
31439    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31440          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31441          ,p_balance_type_code => l_balance_type_code
31442          );
31443 
31444    -------------------------------------------------------------------------------------------
31445    -- 4262811 - Generate the Accrual Reversal lines
31446    -------------------------------------------------------------------------------------------
31447    BEGIN
31448       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31449                               (g_array_event(p_event_id).array_value_num('header_index'));
31450       IF l_acc_rev_flag IS NULL THEN
31451          l_acc_rev_flag := 'N';
31452       END IF;
31453    EXCEPTION
31454       WHEN OTHERS THEN
31455          l_acc_rev_flag := 'N';
31456    END;
31457    --
31458    IF (l_acc_rev_flag = 'Y') THEN
31459 
31460        -- 4645092  ------------------------------------------------------------------------------
31461        -- To allow MPA report to determine if it should generate report process
31462        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31463        ------------------------------------------------------------------------------------------
31464 
31465        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31466        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31467    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
31468    -- call ADRs
31469    -- Bug 4922099
31470    --
31471    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31472         (NVL(l_actual_upg_option, 'N') = 'O') OR
31473         (NVL(l_enc_upg_option, 'N') = 'O')
31474       )
31475    THEN
31476    NULL;
31477    --
31478    --
31479    
31480   l_ccid := AcctDerRule_12(
31481            p_application_id           => p_application_id
31482          , p_ae_header_id             => l_ae_header_id 
31483 , p_source_1 => p_source_1
31484 , p_source_2 => p_source_2
31485          , x_transaction_coa_id       => l_adr_transaction_coa_id
31486          , x_accounting_coa_id        => l_adr_accounting_coa_id
31490 
31487          , x_value_type_code          => l_adr_value_type_code
31488          , p_side                     => 'NA'
31489    );
31491    xla_ae_lines_pkg.set_ccid(
31492     p_code_combination_id          => l_ccid
31493   , p_value_type_code              => l_adr_value_type_code
31494   , p_transaction_coa_id           => l_adr_transaction_coa_id
31495   , p_accounting_coa_id            => l_adr_accounting_coa_id
31496   , p_adr_code                     => 'EXP'
31497   , p_adr_type_code                => 'S'
31498   , p_component_type               => l_component_type
31499   , p_component_code               => l_component_code
31500   , p_component_type_code          => l_component_type_code
31501   , p_component_appl_id            => l_component_appl_id
31502   , p_amb_context_code             => l_amb_context_code
31503   , p_side                         => 'NA'
31504   );
31505 
31506 
31507    --
31508    --
31509    END IF;
31510 
31511        --
31512        -- Update the line information that should be overwritten
31513        --
31514        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
31515                                          p_header_num   => 1);
31516        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
31517 
31518        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
31519 
31520        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
31521           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31522        END IF;
31523 
31524       --
31525       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31526       --
31527       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31528           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
31529       ELSE
31530           ---------------------------------------------------------------------------------------------------
31531           -- 4262811a Switch Sign
31532           ---------------------------------------------------------------------------------------------------
31533           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
31534           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31535                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31536           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31537                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31538           -- 5132302
31539           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31540                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31541 
31542       END IF;
31543 
31544       -- 4955764
31545       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31546       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31547 
31548 
31549       XLA_AE_LINES_PKG.ValidateCurrentLine;
31550       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31551 
31552       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31553                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31554                ,p_balance_type_code => l_balance_type_code);
31555 
31556    END IF;
31557 
31558    -----------------------------------------------------------------------------------------
31559    -- 4262811 Multiperiod Accounting
31560    -----------------------------------------------------------------------------------------
31561      -- No MPA option is assigned.
31562 
31563 
31564 END IF;
31565 END IF;
31566 --
31567 
31568 --
31569 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31570    trace
31571       (p_msg      => 'END of AcctLineType_89'
31572       ,p_level    => C_LEVEL_PROCEDURE
31573       ,p_module   => l_log_module);
31574 END IF;
31575 --
31576 EXCEPTION
31577   WHEN xla_exceptions_pkg.application_exception THEN
31578       RAISE;
31579   WHEN OTHERS THEN
31580        xla_exceptions_pkg.raise_message
31581            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_89');
31582 END AcctLineType_89;
31583 --
31584 
31585 ---------------------------------------
31586 --
31587 -- PRIVATE FUNCTION
31588 --         AcctLineType_90
31589 --
31590 ---------------------------------------
31591 PROCEDURE AcctLineType_90 (
31592   p_application_id        IN NUMBER
31593  ,p_event_id              IN NUMBER
31594  ,p_calculate_acctd_flag  IN VARCHAR2
31595  ,p_calculate_g_l_flag    IN VARCHAR2
31596  ,p_actual_flag           IN OUT VARCHAR2
31597  ,p_balance_type_code     OUT VARCHAR2
31598  ,p_gain_or_loss_ref      OUT VARCHAR2
31599  
31600 --Transaction Account
31601  , p_source_1            IN NUMBER
31602 --Journal Line Type
31603  , p_source_2            IN VARCHAR2
31604 --Entered Amount
31605  , p_source_3            IN NUMBER
31606 --First Distribution Identifier
31607  , p_source_5            IN NUMBER
31608 --Distribution Type
31612 --Currency Conversion Date
31609  , p_source_6            IN VARCHAR2
31610 --Currency Code
31611  , p_source_7            IN VARCHAR2
31613  , p_source_8            IN DATE
31614 --Currency Conversion Rate
31615  , p_source_9            IN NUMBER
31616 --Currency Conversion Type
31617  , p_source_10            IN VARCHAR2
31618 --Accounted Amount
31619  , p_source_11            IN NUMBER
31620 )
31621 IS
31622 
31623 l_component_type              VARCHAR2(80);
31624 l_component_code              VARCHAR2(30);
31625 l_component_type_code         VARCHAR2(1);
31626 l_component_appl_id           INTEGER;
31627 l_amb_context_code            VARCHAR2(30);
31628 l_entity_code                 VARCHAR2(30);
31629 l_event_class_code            VARCHAR2(30);
31630 l_ae_header_id                NUMBER;
31631 l_event_type_code             VARCHAR2(30);
31632 l_line_definition_code        VARCHAR2(30);
31633 l_line_definition_owner_code  VARCHAR2(1);
31634 --
31635 -- adr variables
31636 l_segment                     VARCHAR2(30);
31637 l_ccid                        NUMBER;
31638 l_adr_transaction_coa_id      NUMBER;
31639 l_adr_accounting_coa_id       NUMBER;
31640 l_adr_flexfield_segment_code  VARCHAR2(30);
31641 l_adr_flex_value_set_id       NUMBER;
31642 l_adr_value_type_code         VARCHAR2(30);
31643 l_adr_value_combination_id    NUMBER;
31644 l_adr_value_segment_code      VARCHAR2(30);
31645 
31646 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31647 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31648 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31649 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31650 
31651 -- 4262811 Variables ------------------------------------------------------------------------------------------
31652 l_entered_amt_idx             NUMBER;
31653 l_accted_amt_idx              NUMBER;
31654 l_acc_rev_flag                VARCHAR2(1);
31655 l_accrual_line_num            NUMBER;
31656 l_tmp_amt                     NUMBER;
31657 l_acc_rev_natural_side_code   VARCHAR2(1);
31658 
31659 l_num_entries                 NUMBER;
31660 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31661 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31662 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31663 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31664 l_recog_line_1                NUMBER;
31665 l_recog_line_2                NUMBER;
31666 
31667 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31668 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31669 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31670 
31671 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31672 
31673 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31674 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31675 
31676 ---------------------------------------------------------------------------------------------------------------
31677 
31678 
31679 --
31680 -- bulk performance
31681 --
31682 l_balance_type_code           VARCHAR2(1);
31683 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31684 l_log_module                  VARCHAR2(240);
31685 
31686 --
31687 -- Upgrade strategy
31688 --
31689 l_actual_upg_option           VARCHAR2(1);
31690 l_enc_upg_option           VARCHAR2(1);
31691 
31692 --
31693 BEGIN
31694 --
31695 IF g_log_enabled THEN
31696       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_90';
31697 END IF;
31698 --
31699 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31700 
31701       trace
31702          (p_msg      => 'BEGIN of AcctLineType_90'
31703          ,p_level    => C_LEVEL_PROCEDURE
31704          ,p_module   => l_log_module);
31705 
31706 END IF;
31707 --
31708 l_component_type             := 'AMB_JLT';
31709 l_component_code             := 'EXP';
31710 l_component_type_code        := 'S';
31711 l_component_appl_id          :=  555;
31712 l_amb_context_code           := 'DEFAULT';
31713 l_entity_code                := 'INVENTORY';
31714 l_event_class_code           := 'FOB_SHIP_RECIPIENT_RCPT';
31715 l_event_type_code            := 'FOB_SHIP_RECIPIENT_RCPT';
31716 l_line_definition_owner_code := 'S';
31717 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_RCPT';
31718 --
31719 l_balance_type_code          := 'A';
31720 l_segment                     := NULL;
31721 l_ccid                        := NULL;
31722 l_adr_transaction_coa_id      := NULL;
31723 l_adr_accounting_coa_id       := NULL;
31724 l_adr_flexfield_segment_code  := NULL;
31725 l_adr_flex_value_set_id       := NULL;
31726 l_adr_value_type_code         := NULL;
31727 l_adr_value_combination_id    := NULL;
31728 l_adr_value_segment_code      := NULL;
31729 
31730 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31731 l_bflow_class_code           := '';    -- 4219869 Business Flow
31732 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31733 l_budgetary_control_flag     := 'N';
31734 
31735 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31736 l_bflow_applied_to_amt       := NULL; -- 5132302
31737 l_entered_amt_idx            := NULL;          -- 4262811
31741 l_tmp_amt                    := NULL;          -- 4262811
31738 l_accted_amt_idx             := NULL;          -- 4262811
31739 l_acc_rev_flag               := NULL;          -- 4262811
31740 l_accrual_line_num           := NULL;          -- 4262811
31742 --
31743  
31744 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31745     l_balance_type_code <> 'B' THEN
31746 IF NVL(p_source_2,'
31747 ') =  'EXP'
31748  THEN 
31749 
31750    --
31751    XLA_AE_LINES_PKG.SetNewLine;
31752 
31753    p_balance_type_code          := l_balance_type_code;
31754    -- set the flag so later we will know whether the gain loss line needs to be created
31755    
31756    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31757      p_actual_flag :='A';
31758    END IF;
31759 
31760    --
31761    -- bulk performance
31762    --
31763    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31764                                       p_header_num   => 0); -- 4262811
31765    --
31766    -- set accounting line options
31767    --
31768    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31769            p_natural_side_code          => 'D'
31770          , p_gain_or_loss_flag          => 'N'
31771          , p_gl_transfer_mode_code      => 'D'
31772          , p_acct_entry_type_code       => 'A'
31773          , p_switch_side_flag           => 'Y'
31774          , p_merge_duplicate_code       => 'W'
31775          );
31776    --
31777    l_acc_rev_natural_side_code := 'C';  -- 4262811
31778    -- 
31779    --
31780    -- set accounting line type info
31781    --
31782    xla_ae_lines_pkg.SetAcctLineType
31783       (p_component_type             => l_component_type
31784       ,p_event_type_code            => l_event_type_code
31785       ,p_line_definition_owner_code => l_line_definition_owner_code
31786       ,p_line_definition_code       => l_line_definition_code
31787       ,p_accounting_line_code       => l_component_code
31788       ,p_accounting_line_type_code  => l_component_type_code
31789       ,p_accounting_line_appl_id    => l_component_appl_id
31790       ,p_amb_context_code           => l_amb_context_code
31791       ,p_entity_code                => l_entity_code
31792       ,p_event_class_code           => l_event_class_code);
31793    --
31794    -- set accounting class
31795    --
31796    xla_ae_lines_pkg.SetAcctClass(
31797            p_accounting_class_code  => 'EXPENSE'
31798          , p_ae_header_id           => l_ae_header_id
31799          );
31800 
31801    --
31802    -- set rounding class
31803    --
31804    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31805                       'EXPENSE';
31806 
31807    --
31808    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31809    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31810    --
31811    -- bulk performance
31812    --
31813    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31814 
31815    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31816       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31817 
31818    -- 4955764
31819    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31820       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31821 
31822    -- 4458381 Public Sector Enh
31823    
31824    --
31825    -- set accounting attributes for the line type
31826    --
31827    l_entered_amt_idx := 3;
31828    l_accted_amt_idx  := 8;
31829    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31830    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
31831    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
31832    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
31833    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
31834    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
31835    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
31836    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
31837    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
31838    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
31839    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
31840    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
31841    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
31842    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
31843    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
31844    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
31845    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
31846 
31847    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31848    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31849 
31850    ---------------------------------------------------------------------------------------------------------------
31851    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31852    ---------------------------------------------------------------------------------------------------------------
31856    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31853    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31854 
31855    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31857 
31858    IF xla_accounting_cache_pkg.GetValueChar
31859          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31860          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31861    AND l_bflow_method_code = 'PRIOR_ENTRY'
31862 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31863    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31864          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31865        )
31866    THEN
31867          xla_ae_lines_pkg.BflowUpgEntry
31868            (p_business_method_code    => l_bflow_method_code
31869            ,p_business_class_code     => l_bflow_class_code
31870            ,p_balance_type            => l_balance_type_code);
31871    ELSE
31872       NULL;
31873 -- No business flow processing for business flow method of NONE.
31874    END IF;
31875 
31876    --
31877    -- call analytical criteria
31878    --
31879    
31880    --
31881    -- call description
31882    --
31883    -- No description or it is inherited.
31884    --
31885    -- call ADRs
31886    -- Bug 4922099
31887    --
31888    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31889         (NVL(l_actual_upg_option, 'N') = 'O') OR
31890         (NVL(l_enc_upg_option, 'N') = 'O')
31891       )
31892    THEN
31893    NULL;
31894    --
31895    --
31896    
31897   l_ccid := AcctDerRule_12(
31898            p_application_id           => p_application_id
31899          , p_ae_header_id             => l_ae_header_id 
31900 , p_source_1 => p_source_1
31901 , p_source_2 => p_source_2
31902          , x_transaction_coa_id       => l_adr_transaction_coa_id
31903          , x_accounting_coa_id        => l_adr_accounting_coa_id
31904          , x_value_type_code          => l_adr_value_type_code
31905          , p_side                     => 'NA'
31906    );
31907 
31908    xla_ae_lines_pkg.set_ccid(
31909     p_code_combination_id          => l_ccid
31910   , p_value_type_code              => l_adr_value_type_code
31911   , p_transaction_coa_id           => l_adr_transaction_coa_id
31912   , p_accounting_coa_id            => l_adr_accounting_coa_id
31913   , p_adr_code                     => 'EXP'
31914   , p_adr_type_code                => 'S'
31915   , p_component_type               => l_component_type
31916   , p_component_code               => l_component_code
31917   , p_component_type_code          => l_component_type_code
31918   , p_component_appl_id            => l_component_appl_id
31919   , p_amb_context_code             => l_amb_context_code
31920   , p_side                         => 'NA'
31921   );
31922 
31923 
31924    --
31925    --
31926    END IF;
31927    --
31928    -- Bug 4922099
31929    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31930           (NVL(l_enc_upg_option, 'N') = 'O')
31931         ) AND
31932         (l_bflow_method_code = 'PRIOR_ENTRY')
31933       )
31934    THEN
31935       IF
31936       --
31937       1 = 2
31938       --
31939       THEN
31940       xla_accounting_err_pkg.build_message
31941                                     (p_appli_s_name            => 'XLA'
31942                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31943                                     ,p_token_1                 => 'LINE_NUMBER'
31944                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
31945                                     ,p_token_2                 => 'LINE_TYPE_NAME'
31946                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
31947                                                                              l_component_type
31948                                                                             ,l_component_code
31949                                                                             ,l_component_type_code
31950                                                                             ,l_component_appl_id
31951                                                                             ,l_amb_context_code
31952                                                                             ,l_entity_code
31953                                                                             ,l_event_class_code
31954                                                                            )
31955                                     ,p_token_3                 => 'OWNER'
31956                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
31957                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
31958                                                                           ,p_lookup_code    => l_component_type_code
31959                                                                          )
31960                                     ,p_token_4                 => 'PRODUCT_NAME'
31961                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31962                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31966                                        );
31963                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31964                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31965                                     ,p_ae_header_id            =>  NULL
31967 
31968         IF (C_LEVEL_ERROR>= g_log_level) THEN
31969                  trace
31970                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31971                       ,p_level    => C_LEVEL_ERROR
31972                       ,p_module   => l_log_module);
31973         END IF;
31974       END IF;
31975    END IF;
31976    --
31977    --
31978    ------------------------------------------------------------------------------------------------
31979    -- 4219869 Business Flow
31980    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31981    -- Prior Entry.  Currently, the following code is always generated.
31982    ------------------------------------------------------------------------------------------------
31983    XLA_AE_LINES_PKG.ValidateCurrentLine;
31984 
31985    ------------------------------------------------------------------------------------
31986    -- 4219869 Business Flow
31987    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31988    ------------------------------------------------------------------------------------
31989    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31990 
31991    ----------------------------------------------------------------------------------
31992    -- 4219869 Business Flow
31993    -- Update journal entry status -- Need to generate this within IF <condition>
31994    ----------------------------------------------------------------------------------
31995    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31996          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31997          ,p_balance_type_code => l_balance_type_code
31998          );
31999 
32000    -------------------------------------------------------------------------------------------
32001    -- 4262811 - Generate the Accrual Reversal lines
32002    -------------------------------------------------------------------------------------------
32003    BEGIN
32004       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32005                               (g_array_event(p_event_id).array_value_num('header_index'));
32006       IF l_acc_rev_flag IS NULL THEN
32007          l_acc_rev_flag := 'N';
32008       END IF;
32009    EXCEPTION
32010       WHEN OTHERS THEN
32011          l_acc_rev_flag := 'N';
32012    END;
32013    --
32014    IF (l_acc_rev_flag = 'Y') THEN
32015 
32016        -- 4645092  ------------------------------------------------------------------------------
32017        -- To allow MPA report to determine if it should generate report process
32018        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32019        ------------------------------------------------------------------------------------------
32020 
32021        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32022        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32023    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
32024    -- call ADRs
32025    -- Bug 4922099
32026    --
32027    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32028         (NVL(l_actual_upg_option, 'N') = 'O') OR
32029         (NVL(l_enc_upg_option, 'N') = 'O')
32030       )
32031    THEN
32032    NULL;
32033    --
32034    --
32035    
32036   l_ccid := AcctDerRule_12(
32037            p_application_id           => p_application_id
32038          , p_ae_header_id             => l_ae_header_id 
32039 , p_source_1 => p_source_1
32040 , p_source_2 => p_source_2
32041          , x_transaction_coa_id       => l_adr_transaction_coa_id
32042          , x_accounting_coa_id        => l_adr_accounting_coa_id
32043          , x_value_type_code          => l_adr_value_type_code
32044          , p_side                     => 'NA'
32045    );
32046 
32047    xla_ae_lines_pkg.set_ccid(
32048     p_code_combination_id          => l_ccid
32049   , p_value_type_code              => l_adr_value_type_code
32050   , p_transaction_coa_id           => l_adr_transaction_coa_id
32051   , p_accounting_coa_id            => l_adr_accounting_coa_id
32052   , p_adr_code                     => 'EXP'
32053   , p_adr_type_code                => 'S'
32054   , p_component_type               => l_component_type
32055   , p_component_code               => l_component_code
32056   , p_component_type_code          => l_component_type_code
32057   , p_component_appl_id            => l_component_appl_id
32058   , p_amb_context_code             => l_amb_context_code
32059   , p_side                         => 'NA'
32060   );
32061 
32062 
32063    --
32064    --
32065    END IF;
32066 
32067        --
32068        -- Update the line information that should be overwritten
32069        --
32070        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32071                                          p_header_num   => 1);
32072        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32073 
32074        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32075 
32079 
32076        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32077           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32078        END IF;
32080       --
32081       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32082       --
32083       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32084           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32085       ELSE
32086           ---------------------------------------------------------------------------------------------------
32087           -- 4262811a Switch Sign
32088           ---------------------------------------------------------------------------------------------------
32089           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32090           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32091                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32092           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32093                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32094           -- 5132302
32095           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32096                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32097 
32098       END IF;
32099 
32100       -- 4955764
32101       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32102       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32103 
32104 
32105       XLA_AE_LINES_PKG.ValidateCurrentLine;
32106       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32107 
32108       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32109                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32110                ,p_balance_type_code => l_balance_type_code);
32111 
32112    END IF;
32113 
32114    -----------------------------------------------------------------------------------------
32115    -- 4262811 Multiperiod Accounting
32116    -----------------------------------------------------------------------------------------
32117      -- No MPA option is assigned.
32118 
32119 
32120 END IF;
32121 END IF;
32122 --
32123 
32124 --
32125 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32126    trace
32127       (p_msg      => 'END of AcctLineType_90'
32128       ,p_level    => C_LEVEL_PROCEDURE
32129       ,p_module   => l_log_module);
32130 END IF;
32131 --
32132 EXCEPTION
32133   WHEN xla_exceptions_pkg.application_exception THEN
32134       RAISE;
32135   WHEN OTHERS THEN
32136        xla_exceptions_pkg.raise_message
32137            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_90');
32138 END AcctLineType_90;
32139 --
32140 
32141 ---------------------------------------
32142 --
32143 -- PRIVATE FUNCTION
32144 --         AcctLineType_91
32145 --
32146 ---------------------------------------
32147 PROCEDURE AcctLineType_91 (
32148   p_application_id        IN NUMBER
32149  ,p_event_id              IN NUMBER
32150  ,p_calculate_acctd_flag  IN VARCHAR2
32151  ,p_calculate_g_l_flag    IN VARCHAR2
32152  ,p_actual_flag           IN OUT VARCHAR2
32153  ,p_balance_type_code     OUT VARCHAR2
32154  ,p_gain_or_loss_ref      OUT VARCHAR2
32155  
32156 --Transaction Account
32157  , p_source_1            IN NUMBER
32158 --Journal Line Type
32159  , p_source_2            IN VARCHAR2
32160 --Entered Amount
32161  , p_source_3            IN NUMBER
32162 --First Distribution Identifier
32163  , p_source_5            IN NUMBER
32164 --Distribution Type
32165  , p_source_6            IN VARCHAR2
32166 --Currency Code
32167  , p_source_7            IN VARCHAR2
32168 --Currency Conversion Date
32169  , p_source_8            IN DATE
32170 --Currency Conversion Rate
32171  , p_source_9            IN NUMBER
32172 --Currency Conversion Type
32173  , p_source_10            IN VARCHAR2
32174 --Accounted Amount
32175  , p_source_11            IN NUMBER
32176 )
32177 IS
32178 
32179 l_component_type              VARCHAR2(80);
32180 l_component_code              VARCHAR2(30);
32181 l_component_type_code         VARCHAR2(1);
32182 l_component_appl_id           INTEGER;
32183 l_amb_context_code            VARCHAR2(30);
32184 l_entity_code                 VARCHAR2(30);
32185 l_event_class_code            VARCHAR2(30);
32186 l_ae_header_id                NUMBER;
32187 l_event_type_code             VARCHAR2(30);
32188 l_line_definition_code        VARCHAR2(30);
32189 l_line_definition_owner_code  VARCHAR2(1);
32190 --
32191 -- adr variables
32192 l_segment                     VARCHAR2(30);
32193 l_ccid                        NUMBER;
32194 l_adr_transaction_coa_id      NUMBER;
32195 l_adr_accounting_coa_id       NUMBER;
32196 l_adr_flexfield_segment_code  VARCHAR2(30);
32197 l_adr_flex_value_set_id       NUMBER;
32198 l_adr_value_type_code         VARCHAR2(30);
32199 l_adr_value_combination_id    NUMBER;
32200 l_adr_value_segment_code      VARCHAR2(30);
32201 
32205 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32202 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32203 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32204 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32206 
32207 -- 4262811 Variables ------------------------------------------------------------------------------------------
32208 l_entered_amt_idx             NUMBER;
32209 l_accted_amt_idx              NUMBER;
32210 l_acc_rev_flag                VARCHAR2(1);
32211 l_accrual_line_num            NUMBER;
32212 l_tmp_amt                     NUMBER;
32213 l_acc_rev_natural_side_code   VARCHAR2(1);
32214 
32215 l_num_entries                 NUMBER;
32216 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32217 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32218 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32219 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32220 l_recog_line_1                NUMBER;
32221 l_recog_line_2                NUMBER;
32222 
32223 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32224 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32225 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32226 
32227 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32228 
32229 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32230 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32231 
32232 ---------------------------------------------------------------------------------------------------------------
32233 
32234 
32235 --
32236 -- bulk performance
32237 --
32238 l_balance_type_code           VARCHAR2(1);
32239 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32240 l_log_module                  VARCHAR2(240);
32241 
32242 --
32243 -- Upgrade strategy
32244 --
32245 l_actual_upg_option           VARCHAR2(1);
32246 l_enc_upg_option           VARCHAR2(1);
32247 
32248 --
32249 BEGIN
32250 --
32251 IF g_log_enabled THEN
32252       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_91';
32253 END IF;
32254 --
32255 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32256 
32257       trace
32258          (p_msg      => 'BEGIN of AcctLineType_91'
32259          ,p_level    => C_LEVEL_PROCEDURE
32260          ,p_module   => l_log_module);
32261 
32262 END IF;
32263 --
32264 l_component_type             := 'AMB_JLT';
32265 l_component_code             := 'EXP';
32266 l_component_type_code        := 'S';
32267 l_component_appl_id          :=  555;
32268 l_amb_context_code           := 'DEFAULT';
32269 l_entity_code                := 'INVENTORY';
32270 l_event_class_code           := 'INT_ORDER_TO_EXP';
32271 l_event_type_code            := 'EXP_REQ_RCPT_TP';
32272 l_line_definition_owner_code := 'S';
32273 l_line_definition_code       := 'EXP_REQ_RCPT_TP';
32274 --
32275 l_balance_type_code          := 'A';
32276 l_segment                     := NULL;
32277 l_ccid                        := NULL;
32278 l_adr_transaction_coa_id      := NULL;
32279 l_adr_accounting_coa_id       := NULL;
32280 l_adr_flexfield_segment_code  := NULL;
32281 l_adr_flex_value_set_id       := NULL;
32282 l_adr_value_type_code         := NULL;
32283 l_adr_value_combination_id    := NULL;
32284 l_adr_value_segment_code      := NULL;
32285 
32286 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
32287 l_bflow_class_code           := '';    -- 4219869 Business Flow
32288 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
32289 l_budgetary_control_flag     := 'N';
32290 
32291 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
32292 l_bflow_applied_to_amt       := NULL; -- 5132302
32293 l_entered_amt_idx            := NULL;          -- 4262811
32294 l_accted_amt_idx             := NULL;          -- 4262811
32295 l_acc_rev_flag               := NULL;          -- 4262811
32296 l_accrual_line_num           := NULL;          -- 4262811
32297 l_tmp_amt                    := NULL;          -- 4262811
32298 --
32299  
32300 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32301     l_balance_type_code <> 'B' THEN
32302 IF NVL(p_source_2,'
32303 ') =  'EXP'
32304  THEN 
32305 
32306    --
32307    XLA_AE_LINES_PKG.SetNewLine;
32308 
32309    p_balance_type_code          := l_balance_type_code;
32310    -- set the flag so later we will know whether the gain loss line needs to be created
32311    
32312    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32313      p_actual_flag :='A';
32314    END IF;
32315 
32316    --
32317    -- bulk performance
32318    --
32319    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32320                                       p_header_num   => 0); -- 4262811
32321    --
32322    -- set accounting line options
32323    --
32324    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32325            p_natural_side_code          => 'D'
32326          , p_gain_or_loss_flag          => 'N'
32327          , p_gl_transfer_mode_code      => 'D'
32328          , p_acct_entry_type_code       => 'A'
32329          , p_switch_side_flag           => 'Y'
32330          , p_merge_duplicate_code       => 'W'
32334    -- 
32331          );
32332    --
32333    l_acc_rev_natural_side_code := 'C';  -- 4262811
32335    --
32336    -- set accounting line type info
32337    --
32338    xla_ae_lines_pkg.SetAcctLineType
32339       (p_component_type             => l_component_type
32340       ,p_event_type_code            => l_event_type_code
32341       ,p_line_definition_owner_code => l_line_definition_owner_code
32342       ,p_line_definition_code       => l_line_definition_code
32343       ,p_accounting_line_code       => l_component_code
32344       ,p_accounting_line_type_code  => l_component_type_code
32345       ,p_accounting_line_appl_id    => l_component_appl_id
32346       ,p_amb_context_code           => l_amb_context_code
32347       ,p_entity_code                => l_entity_code
32348       ,p_event_class_code           => l_event_class_code);
32349    --
32350    -- set accounting class
32351    --
32352    xla_ae_lines_pkg.SetAcctClass(
32353            p_accounting_class_code  => 'EXPENSE'
32354          , p_ae_header_id           => l_ae_header_id
32355          );
32356 
32357    --
32358    -- set rounding class
32359    --
32360    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
32361                       'EXPENSE';
32362 
32363    --
32364    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
32365    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
32366    --
32367    -- bulk performance
32368    --
32369    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
32370 
32371    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
32372       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
32373 
32374    -- 4955764
32375    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32376       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
32377 
32378    -- 4458381 Public Sector Enh
32379    
32380    --
32381    -- set accounting attributes for the line type
32382    --
32383    l_entered_amt_idx := 3;
32384    l_accted_amt_idx  := 8;
32385    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
32386    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
32387    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
32388    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
32389    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
32390    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
32391    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
32392    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
32393    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
32394    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
32395    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
32396    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
32397    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
32398    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
32399    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
32400    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
32401    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
32402 
32403    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32404    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32405 
32406    ---------------------------------------------------------------------------------------------------------------
32407    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32408    ---------------------------------------------------------------------------------------------------------------
32409    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32410 
32411    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32412    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32413 
32414    IF xla_accounting_cache_pkg.GetValueChar
32415          (p_source_code         => 'LEDGER_CATEGORY_CODE'
32416          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32417    AND l_bflow_method_code = 'PRIOR_ENTRY'
32418 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32419    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32420          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32421        )
32422    THEN
32423          xla_ae_lines_pkg.BflowUpgEntry
32424            (p_business_method_code    => l_bflow_method_code
32425            ,p_business_class_code     => l_bflow_class_code
32426            ,p_balance_type            => l_balance_type_code);
32427    ELSE
32428       NULL;
32429 -- No business flow processing for business flow method of NONE.
32430    END IF;
32431 
32432    --
32433    -- call analytical criteria
32434    --
32435    
32436    --
32437    -- call description
32438    --
32439    -- No description or it is inherited.
32440    --
32441    -- call ADRs
32442    -- Bug 4922099
32443    --
32447       )
32444    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32445         (NVL(l_actual_upg_option, 'N') = 'O') OR
32446         (NVL(l_enc_upg_option, 'N') = 'O')
32448    THEN
32449    NULL;
32450    --
32451    --
32452    
32453   l_ccid := AcctDerRule_12(
32454            p_application_id           => p_application_id
32455          , p_ae_header_id             => l_ae_header_id 
32456 , p_source_1 => p_source_1
32457 , p_source_2 => p_source_2
32458          , x_transaction_coa_id       => l_adr_transaction_coa_id
32459          , x_accounting_coa_id        => l_adr_accounting_coa_id
32460          , x_value_type_code          => l_adr_value_type_code
32461          , p_side                     => 'NA'
32462    );
32463 
32464    xla_ae_lines_pkg.set_ccid(
32465     p_code_combination_id          => l_ccid
32466   , p_value_type_code              => l_adr_value_type_code
32467   , p_transaction_coa_id           => l_adr_transaction_coa_id
32468   , p_accounting_coa_id            => l_adr_accounting_coa_id
32469   , p_adr_code                     => 'EXP'
32470   , p_adr_type_code                => 'S'
32471   , p_component_type               => l_component_type
32472   , p_component_code               => l_component_code
32473   , p_component_type_code          => l_component_type_code
32474   , p_component_appl_id            => l_component_appl_id
32475   , p_amb_context_code             => l_amb_context_code
32476   , p_side                         => 'NA'
32477   );
32478 
32479 
32480    --
32481    --
32482    END IF;
32483    --
32484    -- Bug 4922099
32485    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32486           (NVL(l_enc_upg_option, 'N') = 'O')
32487         ) AND
32488         (l_bflow_method_code = 'PRIOR_ENTRY')
32489       )
32490    THEN
32491       IF
32492       --
32493       1 = 2
32494       --
32495       THEN
32496       xla_accounting_err_pkg.build_message
32497                                     (p_appli_s_name            => 'XLA'
32498                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32499                                     ,p_token_1                 => 'LINE_NUMBER'
32500                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
32501                                     ,p_token_2                 => 'LINE_TYPE_NAME'
32502                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
32503                                                                              l_component_type
32504                                                                             ,l_component_code
32505                                                                             ,l_component_type_code
32506                                                                             ,l_component_appl_id
32507                                                                             ,l_amb_context_code
32508                                                                             ,l_entity_code
32509                                                                             ,l_event_class_code
32510                                                                            )
32511                                     ,p_token_3                 => 'OWNER'
32512                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32513                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32514                                                                           ,p_lookup_code    => l_component_type_code
32515                                                                          )
32516                                     ,p_token_4                 => 'PRODUCT_NAME'
32517                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32518                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32519                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32520                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32521                                     ,p_ae_header_id            =>  NULL
32522                                        );
32523 
32524         IF (C_LEVEL_ERROR>= g_log_level) THEN
32525                  trace
32526                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32527                       ,p_level    => C_LEVEL_ERROR
32528                       ,p_module   => l_log_module);
32529         END IF;
32530       END IF;
32531    END IF;
32532    --
32533    --
32534    ------------------------------------------------------------------------------------------------
32535    -- 4219869 Business Flow
32536    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32537    -- Prior Entry.  Currently, the following code is always generated.
32538    ------------------------------------------------------------------------------------------------
32539    XLA_AE_LINES_PKG.ValidateCurrentLine;
32540 
32541    ------------------------------------------------------------------------------------
32542    -- 4219869 Business Flow
32543    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32544    ------------------------------------------------------------------------------------
32548    -- 4219869 Business Flow
32545    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32546 
32547    ----------------------------------------------------------------------------------
32549    -- Update journal entry status -- Need to generate this within IF <condition>
32550    ----------------------------------------------------------------------------------
32551    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32552          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32553          ,p_balance_type_code => l_balance_type_code
32554          );
32555 
32556    -------------------------------------------------------------------------------------------
32557    -- 4262811 - Generate the Accrual Reversal lines
32558    -------------------------------------------------------------------------------------------
32559    BEGIN
32560       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32561                               (g_array_event(p_event_id).array_value_num('header_index'));
32562       IF l_acc_rev_flag IS NULL THEN
32563          l_acc_rev_flag := 'N';
32564       END IF;
32565    EXCEPTION
32566       WHEN OTHERS THEN
32567          l_acc_rev_flag := 'N';
32568    END;
32569    --
32570    IF (l_acc_rev_flag = 'Y') THEN
32571 
32572        -- 4645092  ------------------------------------------------------------------------------
32573        -- To allow MPA report to determine if it should generate report process
32574        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32575        ------------------------------------------------------------------------------------------
32576 
32577        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32578        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32579    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
32580    -- call ADRs
32581    -- Bug 4922099
32582    --
32583    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32584         (NVL(l_actual_upg_option, 'N') = 'O') OR
32585         (NVL(l_enc_upg_option, 'N') = 'O')
32586       )
32587    THEN
32588    NULL;
32589    --
32590    --
32591    
32592   l_ccid := AcctDerRule_12(
32593            p_application_id           => p_application_id
32594          , p_ae_header_id             => l_ae_header_id 
32595 , p_source_1 => p_source_1
32596 , p_source_2 => p_source_2
32597          , x_transaction_coa_id       => l_adr_transaction_coa_id
32598          , x_accounting_coa_id        => l_adr_accounting_coa_id
32599          , x_value_type_code          => l_adr_value_type_code
32600          , p_side                     => 'NA'
32601    );
32602 
32603    xla_ae_lines_pkg.set_ccid(
32604     p_code_combination_id          => l_ccid
32605   , p_value_type_code              => l_adr_value_type_code
32606   , p_transaction_coa_id           => l_adr_transaction_coa_id
32607   , p_accounting_coa_id            => l_adr_accounting_coa_id
32608   , p_adr_code                     => 'EXP'
32609   , p_adr_type_code                => 'S'
32610   , p_component_type               => l_component_type
32611   , p_component_code               => l_component_code
32612   , p_component_type_code          => l_component_type_code
32613   , p_component_appl_id            => l_component_appl_id
32614   , p_amb_context_code             => l_amb_context_code
32615   , p_side                         => 'NA'
32616   );
32617 
32618 
32619    --
32620    --
32621    END IF;
32622 
32623        --
32624        -- Update the line information that should be overwritten
32625        --
32626        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32627                                          p_header_num   => 1);
32628        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32629 
32630        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32631 
32632        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32633           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32634        END IF;
32635 
32636       --
32637       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32638       --
32639       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32640           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32641       ELSE
32642           ---------------------------------------------------------------------------------------------------
32643           -- 4262811a Switch Sign
32644           ---------------------------------------------------------------------------------------------------
32645           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32646           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32647                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32648           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32649                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32650           -- 5132302
32651           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32655 
32652                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32653 
32654       END IF;
32656       -- 4955764
32657       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32658       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32659 
32660 
32661       XLA_AE_LINES_PKG.ValidateCurrentLine;
32662       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32663 
32664       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32665                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32666                ,p_balance_type_code => l_balance_type_code);
32667 
32668    END IF;
32669 
32670    -----------------------------------------------------------------------------------------
32671    -- 4262811 Multiperiod Accounting
32672    -----------------------------------------------------------------------------------------
32673      -- No MPA option is assigned.
32674 
32675 
32676 END IF;
32677 END IF;
32678 --
32679 
32680 --
32681 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32682    trace
32683       (p_msg      => 'END of AcctLineType_91'
32684       ,p_level    => C_LEVEL_PROCEDURE
32685       ,p_module   => l_log_module);
32686 END IF;
32687 --
32688 EXCEPTION
32689   WHEN xla_exceptions_pkg.application_exception THEN
32690       RAISE;
32691   WHEN OTHERS THEN
32692        xla_exceptions_pkg.raise_message
32693            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_91');
32694 END AcctLineType_91;
32695 --
32696 
32697 ---------------------------------------
32698 --
32699 -- PRIVATE FUNCTION
32700 --         AcctLineType_92
32701 --
32702 ---------------------------------------
32703 PROCEDURE AcctLineType_92 (
32704   p_application_id        IN NUMBER
32705  ,p_event_id              IN NUMBER
32706  ,p_calculate_acctd_flag  IN VARCHAR2
32707  ,p_calculate_g_l_flag    IN VARCHAR2
32708  ,p_actual_flag           IN OUT VARCHAR2
32709  ,p_balance_type_code     OUT VARCHAR2
32710  ,p_gain_or_loss_ref      OUT VARCHAR2
32711  
32712 --Transaction Account
32713  , p_source_1            IN NUMBER
32714 --Journal Line Type
32715  , p_source_2            IN VARCHAR2
32716 --Entered Amount
32717  , p_source_3            IN NUMBER
32718 --First Distribution Identifier
32719  , p_source_5            IN NUMBER
32720 --Distribution Type
32721  , p_source_6            IN VARCHAR2
32722 --Currency Code
32723  , p_source_7            IN VARCHAR2
32724 --Currency Conversion Date
32725  , p_source_8            IN DATE
32726 --Currency Conversion Rate
32727  , p_source_9            IN NUMBER
32728 --Currency Conversion Type
32729  , p_source_10            IN VARCHAR2
32730 --Accounted Amount
32731  , p_source_11            IN NUMBER
32732 )
32733 IS
32734 
32735 l_component_type              VARCHAR2(80);
32736 l_component_code              VARCHAR2(30);
32737 l_component_type_code         VARCHAR2(1);
32738 l_component_appl_id           INTEGER;
32739 l_amb_context_code            VARCHAR2(30);
32740 l_entity_code                 VARCHAR2(30);
32741 l_event_class_code            VARCHAR2(30);
32742 l_ae_header_id                NUMBER;
32743 l_event_type_code             VARCHAR2(30);
32744 l_line_definition_code        VARCHAR2(30);
32745 l_line_definition_owner_code  VARCHAR2(1);
32746 --
32747 -- adr variables
32748 l_segment                     VARCHAR2(30);
32749 l_ccid                        NUMBER;
32750 l_adr_transaction_coa_id      NUMBER;
32751 l_adr_accounting_coa_id       NUMBER;
32752 l_adr_flexfield_segment_code  VARCHAR2(30);
32753 l_adr_flex_value_set_id       NUMBER;
32754 l_adr_value_type_code         VARCHAR2(30);
32755 l_adr_value_combination_id    NUMBER;
32756 l_adr_value_segment_code      VARCHAR2(30);
32757 
32758 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32759 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32760 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32761 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32762 
32763 -- 4262811 Variables ------------------------------------------------------------------------------------------
32764 l_entered_amt_idx             NUMBER;
32765 l_accted_amt_idx              NUMBER;
32766 l_acc_rev_flag                VARCHAR2(1);
32767 l_accrual_line_num            NUMBER;
32768 l_tmp_amt                     NUMBER;
32769 l_acc_rev_natural_side_code   VARCHAR2(1);
32770 
32771 l_num_entries                 NUMBER;
32772 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32773 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32774 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32775 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32776 l_recog_line_1                NUMBER;
32777 l_recog_line_2                NUMBER;
32778 
32779 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32780 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32781 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32782 
32783 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32784 
32788 ---------------------------------------------------------------------------------------------------------------
32785 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32786 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32787 
32789 
32790 
32791 --
32792 -- bulk performance
32793 --
32794 l_balance_type_code           VARCHAR2(1);
32795 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32796 l_log_module                  VARCHAR2(240);
32797 
32798 --
32799 -- Upgrade strategy
32800 --
32801 l_actual_upg_option           VARCHAR2(1);
32802 l_enc_upg_option           VARCHAR2(1);
32803 
32804 --
32805 BEGIN
32806 --
32807 IF g_log_enabled THEN
32808       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_92';
32809 END IF;
32810 --
32811 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32812 
32813       trace
32814          (p_msg      => 'BEGIN of AcctLineType_92'
32815          ,p_level    => C_LEVEL_PROCEDURE
32816          ,p_module   => l_log_module);
32817 
32818 END IF;
32819 --
32820 l_component_type             := 'AMB_JLT';
32821 l_component_code             := 'EXP';
32822 l_component_type_code        := 'S';
32823 l_component_appl_id          :=  555;
32824 l_amb_context_code           := 'DEFAULT';
32825 l_entity_code                := 'INVENTORY';
32826 l_event_class_code           := 'LOG_INTERCOMPANY';
32827 l_event_type_code            := 'LOG_IC_SALES_ISSUE';
32828 l_line_definition_owner_code := 'S';
32829 l_line_definition_code       := 'LOG_IC_SALES_ISSUE';
32830 --
32831 l_balance_type_code          := 'A';
32832 l_segment                     := NULL;
32833 l_ccid                        := NULL;
32834 l_adr_transaction_coa_id      := NULL;
32835 l_adr_accounting_coa_id       := NULL;
32836 l_adr_flexfield_segment_code  := NULL;
32837 l_adr_flex_value_set_id       := NULL;
32838 l_adr_value_type_code         := NULL;
32839 l_adr_value_combination_id    := NULL;
32840 l_adr_value_segment_code      := NULL;
32841 
32842 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
32843 l_bflow_class_code           := '';    -- 4219869 Business Flow
32844 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
32845 l_budgetary_control_flag     := 'N';
32846 
32847 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
32848 l_bflow_applied_to_amt       := NULL; -- 5132302
32849 l_entered_amt_idx            := NULL;          -- 4262811
32850 l_accted_amt_idx             := NULL;          -- 4262811
32851 l_acc_rev_flag               := NULL;          -- 4262811
32852 l_accrual_line_num           := NULL;          -- 4262811
32853 l_tmp_amt                    := NULL;          -- 4262811
32854 --
32855  
32856 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32857     l_balance_type_code <> 'B' THEN
32858 IF NVL(p_source_2,'
32859 ') =  'EXP'
32860  THEN 
32861 
32862    --
32863    XLA_AE_LINES_PKG.SetNewLine;
32864 
32865    p_balance_type_code          := l_balance_type_code;
32866    -- set the flag so later we will know whether the gain loss line needs to be created
32867    
32868    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32869      p_actual_flag :='A';
32870    END IF;
32871 
32872    --
32873    -- bulk performance
32874    --
32875    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32876                                       p_header_num   => 0); -- 4262811
32877    --
32878    -- set accounting line options
32879    --
32880    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32881            p_natural_side_code          => 'D'
32882          , p_gain_or_loss_flag          => 'N'
32883          , p_gl_transfer_mode_code      => 'D'
32884          , p_acct_entry_type_code       => 'A'
32885          , p_switch_side_flag           => 'Y'
32886          , p_merge_duplicate_code       => 'W'
32887          );
32888    --
32889    l_acc_rev_natural_side_code := 'C';  -- 4262811
32890    -- 
32891    --
32892    -- set accounting line type info
32893    --
32894    xla_ae_lines_pkg.SetAcctLineType
32895       (p_component_type             => l_component_type
32896       ,p_event_type_code            => l_event_type_code
32897       ,p_line_definition_owner_code => l_line_definition_owner_code
32898       ,p_line_definition_code       => l_line_definition_code
32899       ,p_accounting_line_code       => l_component_code
32900       ,p_accounting_line_type_code  => l_component_type_code
32901       ,p_accounting_line_appl_id    => l_component_appl_id
32902       ,p_amb_context_code           => l_amb_context_code
32903       ,p_entity_code                => l_entity_code
32904       ,p_event_class_code           => l_event_class_code);
32905    --
32906    -- set accounting class
32907    --
32908    xla_ae_lines_pkg.SetAcctClass(
32909            p_accounting_class_code  => 'EXPENSE'
32910          , p_ae_header_id           => l_ae_header_id
32911          );
32912 
32913    --
32914    -- set rounding class
32915    --
32916    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
32917                       'EXPENSE';
32918 
32919    --
32920    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
32924    --
32921    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
32922    --
32923    -- bulk performance
32925    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
32926 
32927    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
32928       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
32929 
32930    -- 4955764
32931    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32932       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
32933 
32934    -- 4458381 Public Sector Enh
32935    
32936    --
32937    -- set accounting attributes for the line type
32938    --
32939    l_entered_amt_idx := 3;
32940    l_accted_amt_idx  := 8;
32941    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
32942    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
32943    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
32944    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
32945    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
32946    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
32947    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
32948    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
32949    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
32950    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
32951    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
32952    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
32953    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
32954    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
32955    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
32956    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
32957    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
32958 
32959    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32960    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32961 
32962    ---------------------------------------------------------------------------------------------------------------
32963    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32964    ---------------------------------------------------------------------------------------------------------------
32965    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32966 
32967    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32968    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32969 
32970    IF xla_accounting_cache_pkg.GetValueChar
32971          (p_source_code         => 'LEDGER_CATEGORY_CODE'
32972          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32973    AND l_bflow_method_code = 'PRIOR_ENTRY'
32974 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32975    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32976          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32977        )
32978    THEN
32979          xla_ae_lines_pkg.BflowUpgEntry
32980            (p_business_method_code    => l_bflow_method_code
32981            ,p_business_class_code     => l_bflow_class_code
32982            ,p_balance_type            => l_balance_type_code);
32983    ELSE
32984       NULL;
32985 -- No business flow processing for business flow method of NONE.
32986    END IF;
32987 
32988    --
32989    -- call analytical criteria
32990    --
32991    
32992    --
32993    -- call description
32994    --
32995    -- No description or it is inherited.
32996    --
32997    -- call ADRs
32998    -- Bug 4922099
32999    --
33000    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33001         (NVL(l_actual_upg_option, 'N') = 'O') OR
33002         (NVL(l_enc_upg_option, 'N') = 'O')
33003       )
33004    THEN
33005    NULL;
33006    --
33007    --
33008    
33009   l_ccid := AcctDerRule_12(
33010            p_application_id           => p_application_id
33011          , p_ae_header_id             => l_ae_header_id 
33012 , p_source_1 => p_source_1
33013 , p_source_2 => p_source_2
33014          , x_transaction_coa_id       => l_adr_transaction_coa_id
33015          , x_accounting_coa_id        => l_adr_accounting_coa_id
33016          , x_value_type_code          => l_adr_value_type_code
33017          , p_side                     => 'NA'
33018    );
33019 
33020    xla_ae_lines_pkg.set_ccid(
33021     p_code_combination_id          => l_ccid
33022   , p_value_type_code              => l_adr_value_type_code
33023   , p_transaction_coa_id           => l_adr_transaction_coa_id
33024   , p_accounting_coa_id            => l_adr_accounting_coa_id
33025   , p_adr_code                     => 'EXP'
33026   , p_adr_type_code                => 'S'
33027   , p_component_type               => l_component_type
33028   , p_component_code               => l_component_code
33029   , p_component_type_code          => l_component_type_code
33030   , p_component_appl_id            => l_component_appl_id
33031   , p_amb_context_code             => l_amb_context_code
33032   , p_side                         => 'NA'
33033   );
33034 
33038    END IF;
33035 
33036    --
33037    --
33039    --
33040    -- Bug 4922099
33041    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33042           (NVL(l_enc_upg_option, 'N') = 'O')
33043         ) AND
33044         (l_bflow_method_code = 'PRIOR_ENTRY')
33045       )
33046    THEN
33047       IF
33048       --
33049       1 = 2
33050       --
33051       THEN
33052       xla_accounting_err_pkg.build_message
33053                                     (p_appli_s_name            => 'XLA'
33054                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33055                                     ,p_token_1                 => 'LINE_NUMBER'
33056                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
33057                                     ,p_token_2                 => 'LINE_TYPE_NAME'
33058                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
33059                                                                              l_component_type
33060                                                                             ,l_component_code
33061                                                                             ,l_component_type_code
33062                                                                             ,l_component_appl_id
33063                                                                             ,l_amb_context_code
33064                                                                             ,l_entity_code
33065                                                                             ,l_event_class_code
33066                                                                            )
33067                                     ,p_token_3                 => 'OWNER'
33068                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
33069                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
33070                                                                           ,p_lookup_code    => l_component_type_code
33071                                                                          )
33072                                     ,p_token_4                 => 'PRODUCT_NAME'
33073                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33074                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33075                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33076                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33077                                     ,p_ae_header_id            =>  NULL
33078                                        );
33079 
33080         IF (C_LEVEL_ERROR>= g_log_level) THEN
33081                  trace
33082                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33083                       ,p_level    => C_LEVEL_ERROR
33084                       ,p_module   => l_log_module);
33085         END IF;
33086       END IF;
33087    END IF;
33088    --
33089    --
33090    ------------------------------------------------------------------------------------------------
33091    -- 4219869 Business Flow
33092    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33093    -- Prior Entry.  Currently, the following code is always generated.
33094    ------------------------------------------------------------------------------------------------
33095    XLA_AE_LINES_PKG.ValidateCurrentLine;
33096 
33097    ------------------------------------------------------------------------------------
33098    -- 4219869 Business Flow
33099    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33100    ------------------------------------------------------------------------------------
33101    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33102 
33103    ----------------------------------------------------------------------------------
33104    -- 4219869 Business Flow
33105    -- Update journal entry status -- Need to generate this within IF <condition>
33106    ----------------------------------------------------------------------------------
33107    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33108          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33109          ,p_balance_type_code => l_balance_type_code
33110          );
33111 
33112    -------------------------------------------------------------------------------------------
33113    -- 4262811 - Generate the Accrual Reversal lines
33114    -------------------------------------------------------------------------------------------
33115    BEGIN
33116       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33117                               (g_array_event(p_event_id).array_value_num('header_index'));
33118       IF l_acc_rev_flag IS NULL THEN
33119          l_acc_rev_flag := 'N';
33120       END IF;
33121    EXCEPTION
33122       WHEN OTHERS THEN
33123          l_acc_rev_flag := 'N';
33124    END;
33125    --
33126    IF (l_acc_rev_flag = 'Y') THEN
33127 
33128        -- 4645092  ------------------------------------------------------------------------------
33129        -- To allow MPA report to determine if it should generate report process
33130        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33134        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33131        ------------------------------------------------------------------------------------------
33132 
33133        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33135    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
33136    -- call ADRs
33137    -- Bug 4922099
33138    --
33139    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33140         (NVL(l_actual_upg_option, 'N') = 'O') OR
33141         (NVL(l_enc_upg_option, 'N') = 'O')
33142       )
33143    THEN
33144    NULL;
33145    --
33146    --
33147    
33148   l_ccid := AcctDerRule_12(
33149            p_application_id           => p_application_id
33150          , p_ae_header_id             => l_ae_header_id 
33151 , p_source_1 => p_source_1
33152 , p_source_2 => p_source_2
33153          , x_transaction_coa_id       => l_adr_transaction_coa_id
33154          , x_accounting_coa_id        => l_adr_accounting_coa_id
33155          , x_value_type_code          => l_adr_value_type_code
33156          , p_side                     => 'NA'
33157    );
33158 
33159    xla_ae_lines_pkg.set_ccid(
33160     p_code_combination_id          => l_ccid
33161   , p_value_type_code              => l_adr_value_type_code
33162   , p_transaction_coa_id           => l_adr_transaction_coa_id
33163   , p_accounting_coa_id            => l_adr_accounting_coa_id
33164   , p_adr_code                     => 'EXP'
33165   , p_adr_type_code                => 'S'
33166   , p_component_type               => l_component_type
33167   , p_component_code               => l_component_code
33168   , p_component_type_code          => l_component_type_code
33169   , p_component_appl_id            => l_component_appl_id
33170   , p_amb_context_code             => l_amb_context_code
33171   , p_side                         => 'NA'
33172   );
33173 
33174 
33175    --
33176    --
33177    END IF;
33178 
33179        --
33180        -- Update the line information that should be overwritten
33181        --
33182        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33183                                          p_header_num   => 1);
33184        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
33185 
33186        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33187 
33188        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
33189           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33190        END IF;
33191 
33192       --
33193       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33194       --
33195       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33196           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33197       ELSE
33198           ---------------------------------------------------------------------------------------------------
33199           -- 4262811a Switch Sign
33200           ---------------------------------------------------------------------------------------------------
33201           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33202           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33203                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33204           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33205                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33206           -- 5132302
33207           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33208                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33209 
33210       END IF;
33211 
33212       -- 4955764
33213       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33214       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33215 
33216 
33217       XLA_AE_LINES_PKG.ValidateCurrentLine;
33218       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33219 
33220       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33221                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33222                ,p_balance_type_code => l_balance_type_code);
33223 
33224    END IF;
33225 
33226    -----------------------------------------------------------------------------------------
33227    -- 4262811 Multiperiod Accounting
33228    -----------------------------------------------------------------------------------------
33229      -- No MPA option is assigned.
33230 
33231 
33232 END IF;
33233 END IF;
33234 --
33235 
33236 --
33237 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33238    trace
33239       (p_msg      => 'END of AcctLineType_92'
33240       ,p_level    => C_LEVEL_PROCEDURE
33241       ,p_module   => l_log_module);
33242 END IF;
33243 --
33244 EXCEPTION
33245   WHEN xla_exceptions_pkg.application_exception THEN
33246       RAISE;
33247   WHEN OTHERS THEN
33251 --
33248        xla_exceptions_pkg.raise_message
33249            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_92');
33250 END AcctLineType_92;
33252 
33253 ---------------------------------------
33254 --
33255 -- PRIVATE FUNCTION
33256 --         AcctLineType_93
33257 --
33258 ---------------------------------------
33259 PROCEDURE AcctLineType_93 (
33260   p_application_id        IN NUMBER
33261  ,p_event_id              IN NUMBER
33262  ,p_calculate_acctd_flag  IN VARCHAR2
33263  ,p_calculate_g_l_flag    IN VARCHAR2
33264  ,p_actual_flag           IN OUT VARCHAR2
33265  ,p_balance_type_code     OUT VARCHAR2
33266  ,p_gain_or_loss_ref      OUT VARCHAR2
33267  
33268 --Transaction Account
33269  , p_source_1            IN NUMBER
33270 --Journal Line Type
33271  , p_source_2            IN VARCHAR2
33272 --Entered Amount
33273  , p_source_3            IN NUMBER
33274 --First Distribution Identifier
33275  , p_source_5            IN NUMBER
33276 --Distribution Type
33277  , p_source_6            IN VARCHAR2
33278 --Currency Code
33279  , p_source_7            IN VARCHAR2
33280 --Currency Conversion Date
33281  , p_source_8            IN DATE
33282 --Currency Conversion Rate
33283  , p_source_9            IN NUMBER
33284 --Currency Conversion Type
33285  , p_source_10            IN VARCHAR2
33286 --Accounted Amount
33287  , p_source_11            IN NUMBER
33288 )
33289 IS
33290 
33291 l_component_type              VARCHAR2(80);
33292 l_component_code              VARCHAR2(30);
33293 l_component_type_code         VARCHAR2(1);
33294 l_component_appl_id           INTEGER;
33295 l_amb_context_code            VARCHAR2(30);
33296 l_entity_code                 VARCHAR2(30);
33297 l_event_class_code            VARCHAR2(30);
33298 l_ae_header_id                NUMBER;
33299 l_event_type_code             VARCHAR2(30);
33300 l_line_definition_code        VARCHAR2(30);
33301 l_line_definition_owner_code  VARCHAR2(1);
33302 --
33303 -- adr variables
33304 l_segment                     VARCHAR2(30);
33305 l_ccid                        NUMBER;
33306 l_adr_transaction_coa_id      NUMBER;
33307 l_adr_accounting_coa_id       NUMBER;
33308 l_adr_flexfield_segment_code  VARCHAR2(30);
33309 l_adr_flex_value_set_id       NUMBER;
33310 l_adr_value_type_code         VARCHAR2(30);
33311 l_adr_value_combination_id    NUMBER;
33312 l_adr_value_segment_code      VARCHAR2(30);
33313 
33314 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
33315 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
33316 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
33317 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
33318 
33319 -- 4262811 Variables ------------------------------------------------------------------------------------------
33320 l_entered_amt_idx             NUMBER;
33321 l_accted_amt_idx              NUMBER;
33322 l_acc_rev_flag                VARCHAR2(1);
33323 l_accrual_line_num            NUMBER;
33324 l_tmp_amt                     NUMBER;
33325 l_acc_rev_natural_side_code   VARCHAR2(1);
33326 
33327 l_num_entries                 NUMBER;
33328 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
33329 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
33330 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
33331 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
33332 l_recog_line_1                NUMBER;
33333 l_recog_line_2                NUMBER;
33334 
33335 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
33336 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
33337 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
33338 
33339 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
33340 
33341 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
33342 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
33343 
33344 ---------------------------------------------------------------------------------------------------------------
33345 
33346 
33347 --
33348 -- bulk performance
33349 --
33350 l_balance_type_code           VARCHAR2(1);
33351 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
33352 l_log_module                  VARCHAR2(240);
33353 
33354 --
33355 -- Upgrade strategy
33356 --
33357 l_actual_upg_option           VARCHAR2(1);
33358 l_enc_upg_option           VARCHAR2(1);
33359 
33360 --
33361 BEGIN
33362 --
33363 IF g_log_enabled THEN
33364       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_93';
33365 END IF;
33366 --
33367 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33368 
33369       trace
33370          (p_msg      => 'BEGIN of AcctLineType_93'
33371          ,p_level    => C_LEVEL_PROCEDURE
33372          ,p_module   => l_log_module);
33373 
33374 END IF;
33375 --
33376 l_component_type             := 'AMB_JLT';
33377 l_component_code             := 'EXP';
33378 l_component_type_code        := 'S';
33379 l_component_appl_id          :=  555;
33380 l_amb_context_code           := 'DEFAULT';
33381 l_entity_code                := 'INVENTORY';
33382 l_event_class_code           := 'LOG_INTERCOMPANY';
33383 l_event_type_code            := 'LOG_IC_SHIPMENT_RCPT';
33384 l_line_definition_owner_code := 'S';
33388 l_segment                     := NULL;
33385 l_line_definition_code       := 'LOG_IC_SHIPMENT_RCPT';
33386 --
33387 l_balance_type_code          := 'A';
33389 l_ccid                        := NULL;
33390 l_adr_transaction_coa_id      := NULL;
33391 l_adr_accounting_coa_id       := NULL;
33392 l_adr_flexfield_segment_code  := NULL;
33393 l_adr_flex_value_set_id       := NULL;
33394 l_adr_value_type_code         := NULL;
33395 l_adr_value_combination_id    := NULL;
33396 l_adr_value_segment_code      := NULL;
33397 
33398 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
33399 l_bflow_class_code           := '';    -- 4219869 Business Flow
33400 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
33401 l_budgetary_control_flag     := 'N';
33402 
33403 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
33404 l_bflow_applied_to_amt       := NULL; -- 5132302
33405 l_entered_amt_idx            := NULL;          -- 4262811
33406 l_accted_amt_idx             := NULL;          -- 4262811
33407 l_acc_rev_flag               := NULL;          -- 4262811
33408 l_accrual_line_num           := NULL;          -- 4262811
33409 l_tmp_amt                    := NULL;          -- 4262811
33410 --
33411  
33412 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33413     l_balance_type_code <> 'B' THEN
33414 IF NVL(p_source_2,'
33415 ') =  'EXP'
33416  THEN 
33417 
33418    --
33419    XLA_AE_LINES_PKG.SetNewLine;
33420 
33421    p_balance_type_code          := l_balance_type_code;
33422    -- set the flag so later we will know whether the gain loss line needs to be created
33423    
33424    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33425      p_actual_flag :='A';
33426    END IF;
33427 
33428    --
33429    -- bulk performance
33430    --
33431    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33432                                       p_header_num   => 0); -- 4262811
33433    --
33434    -- set accounting line options
33435    --
33436    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33437            p_natural_side_code          => 'D'
33438          , p_gain_or_loss_flag          => 'N'
33439          , p_gl_transfer_mode_code      => 'D'
33440          , p_acct_entry_type_code       => 'A'
33441          , p_switch_side_flag           => 'Y'
33442          , p_merge_duplicate_code       => 'W'
33443          );
33444    --
33445    l_acc_rev_natural_side_code := 'C';  -- 4262811
33446    -- 
33447    --
33448    -- set accounting line type info
33449    --
33450    xla_ae_lines_pkg.SetAcctLineType
33451       (p_component_type             => l_component_type
33452       ,p_event_type_code            => l_event_type_code
33453       ,p_line_definition_owner_code => l_line_definition_owner_code
33454       ,p_line_definition_code       => l_line_definition_code
33455       ,p_accounting_line_code       => l_component_code
33456       ,p_accounting_line_type_code  => l_component_type_code
33457       ,p_accounting_line_appl_id    => l_component_appl_id
33458       ,p_amb_context_code           => l_amb_context_code
33459       ,p_entity_code                => l_entity_code
33460       ,p_event_class_code           => l_event_class_code);
33461    --
33462    -- set accounting class
33463    --
33464    xla_ae_lines_pkg.SetAcctClass(
33465            p_accounting_class_code  => 'EXPENSE'
33466          , p_ae_header_id           => l_ae_header_id
33467          );
33468 
33469    --
33470    -- set rounding class
33471    --
33472    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33473                       'EXPENSE';
33474 
33475    --
33476    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33477    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33478    --
33479    -- bulk performance
33480    --
33481    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33482 
33483    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33484       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33485 
33486    -- 4955764
33487    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33488       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33489 
33490    -- 4458381 Public Sector Enh
33491    
33492    --
33493    -- set accounting attributes for the line type
33494    --
33495    l_entered_amt_idx := 3;
33496    l_accted_amt_idx  := 8;
33497    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
33498    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
33499    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
33500    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
33501    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
33502    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
33503    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
33504    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
33505    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
33506    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
33510    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
33507    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
33508    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
33509    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
33511    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
33512    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
33513    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
33514 
33515    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
33516    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
33517 
33518    ---------------------------------------------------------------------------------------------------------------
33519    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
33520    ---------------------------------------------------------------------------------------------------------------
33521    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
33522 
33523    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33524    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33525 
33526    IF xla_accounting_cache_pkg.GetValueChar
33527          (p_source_code         => 'LEDGER_CATEGORY_CODE'
33528          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
33529    AND l_bflow_method_code = 'PRIOR_ENTRY'
33530 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
33531    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
33532          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
33533        )
33534    THEN
33535          xla_ae_lines_pkg.BflowUpgEntry
33536            (p_business_method_code    => l_bflow_method_code
33537            ,p_business_class_code     => l_bflow_class_code
33538            ,p_balance_type            => l_balance_type_code);
33539    ELSE
33540       NULL;
33541 -- No business flow processing for business flow method of NONE.
33542    END IF;
33543 
33544    --
33545    -- call analytical criteria
33546    --
33547    
33548    --
33549    -- call description
33550    --
33551    -- No description or it is inherited.
33552    --
33553    -- call ADRs
33554    -- Bug 4922099
33555    --
33556    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33557         (NVL(l_actual_upg_option, 'N') = 'O') OR
33558         (NVL(l_enc_upg_option, 'N') = 'O')
33559       )
33560    THEN
33561    NULL;
33562    --
33563    --
33564    
33565   l_ccid := AcctDerRule_12(
33566            p_application_id           => p_application_id
33567          , p_ae_header_id             => l_ae_header_id 
33568 , p_source_1 => p_source_1
33569 , p_source_2 => p_source_2
33570          , x_transaction_coa_id       => l_adr_transaction_coa_id
33571          , x_accounting_coa_id        => l_adr_accounting_coa_id
33572          , x_value_type_code          => l_adr_value_type_code
33573          , p_side                     => 'NA'
33574    );
33575 
33576    xla_ae_lines_pkg.set_ccid(
33577     p_code_combination_id          => l_ccid
33578   , p_value_type_code              => l_adr_value_type_code
33579   , p_transaction_coa_id           => l_adr_transaction_coa_id
33580   , p_accounting_coa_id            => l_adr_accounting_coa_id
33581   , p_adr_code                     => 'EXP'
33582   , p_adr_type_code                => 'S'
33583   , p_component_type               => l_component_type
33584   , p_component_code               => l_component_code
33585   , p_component_type_code          => l_component_type_code
33586   , p_component_appl_id            => l_component_appl_id
33587   , p_amb_context_code             => l_amb_context_code
33588   , p_side                         => 'NA'
33589   );
33590 
33591 
33592    --
33593    --
33594    END IF;
33595    --
33596    -- Bug 4922099
33597    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33598           (NVL(l_enc_upg_option, 'N') = 'O')
33599         ) AND
33600         (l_bflow_method_code = 'PRIOR_ENTRY')
33601       )
33602    THEN
33603       IF
33604       --
33605       1 = 2
33606       --
33607       THEN
33608       xla_accounting_err_pkg.build_message
33609                                     (p_appli_s_name            => 'XLA'
33610                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33611                                     ,p_token_1                 => 'LINE_NUMBER'
33612                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
33613                                     ,p_token_2                 => 'LINE_TYPE_NAME'
33614                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
33615                                                                              l_component_type
33616                                                                             ,l_component_code
33617                                                                             ,l_component_type_code
33618                                                                             ,l_component_appl_id
33619                                                                             ,l_amb_context_code
33623                                     ,p_token_3                 => 'OWNER'
33620                                                                             ,l_entity_code
33621                                                                             ,l_event_class_code
33622                                                                            )
33624                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
33625                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
33626                                                                           ,p_lookup_code    => l_component_type_code
33627                                                                          )
33628                                     ,p_token_4                 => 'PRODUCT_NAME'
33629                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33630                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33631                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33632                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33633                                     ,p_ae_header_id            =>  NULL
33634                                        );
33635 
33636         IF (C_LEVEL_ERROR>= g_log_level) THEN
33637                  trace
33638                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33639                       ,p_level    => C_LEVEL_ERROR
33640                       ,p_module   => l_log_module);
33641         END IF;
33642       END IF;
33643    END IF;
33644    --
33645    --
33646    ------------------------------------------------------------------------------------------------
33647    -- 4219869 Business Flow
33648    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33649    -- Prior Entry.  Currently, the following code is always generated.
33650    ------------------------------------------------------------------------------------------------
33651    XLA_AE_LINES_PKG.ValidateCurrentLine;
33652 
33653    ------------------------------------------------------------------------------------
33654    -- 4219869 Business Flow
33655    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33656    ------------------------------------------------------------------------------------
33657    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33658 
33659    ----------------------------------------------------------------------------------
33660    -- 4219869 Business Flow
33661    -- Update journal entry status -- Need to generate this within IF <condition>
33662    ----------------------------------------------------------------------------------
33663    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33664          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33665          ,p_balance_type_code => l_balance_type_code
33666          );
33667 
33668    -------------------------------------------------------------------------------------------
33669    -- 4262811 - Generate the Accrual Reversal lines
33670    -------------------------------------------------------------------------------------------
33671    BEGIN
33672       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33673                               (g_array_event(p_event_id).array_value_num('header_index'));
33674       IF l_acc_rev_flag IS NULL THEN
33675          l_acc_rev_flag := 'N';
33676       END IF;
33677    EXCEPTION
33678       WHEN OTHERS THEN
33679          l_acc_rev_flag := 'N';
33680    END;
33681    --
33682    IF (l_acc_rev_flag = 'Y') THEN
33683 
33684        -- 4645092  ------------------------------------------------------------------------------
33685        -- To allow MPA report to determine if it should generate report process
33686        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33687        ------------------------------------------------------------------------------------------
33688 
33689        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33690        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33691    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
33692    -- call ADRs
33693    -- Bug 4922099
33694    --
33695    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33696         (NVL(l_actual_upg_option, 'N') = 'O') OR
33697         (NVL(l_enc_upg_option, 'N') = 'O')
33698       )
33699    THEN
33700    NULL;
33701    --
33702    --
33703    
33704   l_ccid := AcctDerRule_12(
33705            p_application_id           => p_application_id
33706          , p_ae_header_id             => l_ae_header_id 
33707 , p_source_1 => p_source_1
33708 , p_source_2 => p_source_2
33709          , x_transaction_coa_id       => l_adr_transaction_coa_id
33710          , x_accounting_coa_id        => l_adr_accounting_coa_id
33711          , x_value_type_code          => l_adr_value_type_code
33712          , p_side                     => 'NA'
33713    );
33714 
33715    xla_ae_lines_pkg.set_ccid(
33716     p_code_combination_id          => l_ccid
33717   , p_value_type_code              => l_adr_value_type_code
33718   , p_transaction_coa_id           => l_adr_transaction_coa_id
33722   , p_component_type               => l_component_type
33719   , p_accounting_coa_id            => l_adr_accounting_coa_id
33720   , p_adr_code                     => 'EXP'
33721   , p_adr_type_code                => 'S'
33723   , p_component_code               => l_component_code
33724   , p_component_type_code          => l_component_type_code
33725   , p_component_appl_id            => l_component_appl_id
33726   , p_amb_context_code             => l_amb_context_code
33727   , p_side                         => 'NA'
33728   );
33729 
33730 
33731    --
33732    --
33733    END IF;
33734 
33735        --
33736        -- Update the line information that should be overwritten
33737        --
33738        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33739                                          p_header_num   => 1);
33740        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
33741 
33742        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33743 
33744        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
33745           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33746        END IF;
33747 
33748       --
33749       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33750       --
33751       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33752           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33753       ELSE
33754           ---------------------------------------------------------------------------------------------------
33755           -- 4262811a Switch Sign
33756           ---------------------------------------------------------------------------------------------------
33757           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33758           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33759                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33760           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33761                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33762           -- 5132302
33763           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33764                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33765 
33766       END IF;
33767 
33768       -- 4955764
33769       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33770       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33771 
33772 
33773       XLA_AE_LINES_PKG.ValidateCurrentLine;
33774       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33775 
33776       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33777                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33778                ,p_balance_type_code => l_balance_type_code);
33779 
33780    END IF;
33781 
33782    -----------------------------------------------------------------------------------------
33783    -- 4262811 Multiperiod Accounting
33784    -----------------------------------------------------------------------------------------
33785      -- No MPA option is assigned.
33786 
33787 
33788 END IF;
33789 END IF;
33790 --
33791 
33792 --
33793 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33794    trace
33795       (p_msg      => 'END of AcctLineType_93'
33796       ,p_level    => C_LEVEL_PROCEDURE
33797       ,p_module   => l_log_module);
33798 END IF;
33799 --
33800 EXCEPTION
33801   WHEN xla_exceptions_pkg.application_exception THEN
33802       RAISE;
33803   WHEN OTHERS THEN
33804        xla_exceptions_pkg.raise_message
33805            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_93');
33806 END AcctLineType_93;
33807 --
33808 
33809 ---------------------------------------
33810 --
33811 -- PRIVATE FUNCTION
33812 --         AcctLineType_94
33813 --
33814 ---------------------------------------
33815 PROCEDURE AcctLineType_94 (
33816   p_application_id        IN NUMBER
33817  ,p_event_id              IN NUMBER
33818  ,p_calculate_acctd_flag  IN VARCHAR2
33819  ,p_calculate_g_l_flag    IN VARCHAR2
33820  ,p_actual_flag           IN OUT VARCHAR2
33821  ,p_balance_type_code     OUT VARCHAR2
33822  ,p_gain_or_loss_ref      OUT VARCHAR2
33823  
33824 --Transaction Account
33825  , p_source_1            IN NUMBER
33826 --Journal Line Type
33827  , p_source_2            IN VARCHAR2
33828 --Entered Amount
33829  , p_source_3            IN NUMBER
33830 --First Distribution Identifier
33831  , p_source_5            IN NUMBER
33832 --Distribution Type
33833  , p_source_6            IN VARCHAR2
33834 --Currency Code
33835  , p_source_7            IN VARCHAR2
33836 --Currency Conversion Date
33837  , p_source_8            IN DATE
33838 --Currency Conversion Rate
33839  , p_source_9            IN NUMBER
33840 --Currency Conversion Type
33841  , p_source_10            IN VARCHAR2
33842 --Accounted Amount
33846 
33843  , p_source_11            IN NUMBER
33844 )
33845 IS
33847 l_component_type              VARCHAR2(80);
33848 l_component_code              VARCHAR2(30);
33849 l_component_type_code         VARCHAR2(1);
33850 l_component_appl_id           INTEGER;
33851 l_amb_context_code            VARCHAR2(30);
33852 l_entity_code                 VARCHAR2(30);
33853 l_event_class_code            VARCHAR2(30);
33854 l_ae_header_id                NUMBER;
33855 l_event_type_code             VARCHAR2(30);
33856 l_line_definition_code        VARCHAR2(30);
33857 l_line_definition_owner_code  VARCHAR2(1);
33858 --
33859 -- adr variables
33860 l_segment                     VARCHAR2(30);
33861 l_ccid                        NUMBER;
33862 l_adr_transaction_coa_id      NUMBER;
33863 l_adr_accounting_coa_id       NUMBER;
33864 l_adr_flexfield_segment_code  VARCHAR2(30);
33865 l_adr_flex_value_set_id       NUMBER;
33866 l_adr_value_type_code         VARCHAR2(30);
33867 l_adr_value_combination_id    NUMBER;
33868 l_adr_value_segment_code      VARCHAR2(30);
33869 
33870 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
33871 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
33872 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
33873 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
33874 
33875 -- 4262811 Variables ------------------------------------------------------------------------------------------
33876 l_entered_amt_idx             NUMBER;
33877 l_accted_amt_idx              NUMBER;
33878 l_acc_rev_flag                VARCHAR2(1);
33879 l_accrual_line_num            NUMBER;
33880 l_tmp_amt                     NUMBER;
33881 l_acc_rev_natural_side_code   VARCHAR2(1);
33882 
33883 l_num_entries                 NUMBER;
33884 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
33885 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
33886 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
33887 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
33888 l_recog_line_1                NUMBER;
33889 l_recog_line_2                NUMBER;
33890 
33891 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
33892 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
33893 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
33894 
33895 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
33896 
33897 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
33898 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
33899 
33900 ---------------------------------------------------------------------------------------------------------------
33901 
33902 
33903 --
33904 -- bulk performance
33905 --
33906 l_balance_type_code           VARCHAR2(1);
33907 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
33908 l_log_module                  VARCHAR2(240);
33909 
33910 --
33911 -- Upgrade strategy
33912 --
33913 l_actual_upg_option           VARCHAR2(1);
33914 l_enc_upg_option           VARCHAR2(1);
33915 
33916 --
33917 BEGIN
33918 --
33919 IF g_log_enabled THEN
33920       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_94';
33921 END IF;
33922 --
33923 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33924 
33925       trace
33926          (p_msg      => 'BEGIN of AcctLineType_94'
33927          ,p_level    => C_LEVEL_PROCEDURE
33928          ,p_module   => l_log_module);
33929 
33930 END IF;
33931 --
33932 l_component_type             := 'AMB_JLT';
33933 l_component_code             := 'EXP';
33934 l_component_type_code        := 'S';
33935 l_component_appl_id          :=  555;
33936 l_amb_context_code           := 'DEFAULT';
33937 l_entity_code                := 'INVENTORY';
33938 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
33939 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_TP';
33940 l_line_definition_owner_code := 'S';
33941 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP_TP';
33942 --
33943 l_balance_type_code          := 'A';
33944 l_segment                     := NULL;
33945 l_ccid                        := NULL;
33946 l_adr_transaction_coa_id      := NULL;
33947 l_adr_accounting_coa_id       := NULL;
33948 l_adr_flexfield_segment_code  := NULL;
33949 l_adr_flex_value_set_id       := NULL;
33950 l_adr_value_type_code         := NULL;
33951 l_adr_value_combination_id    := NULL;
33952 l_adr_value_segment_code      := NULL;
33953 
33954 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
33955 l_bflow_class_code           := '';    -- 4219869 Business Flow
33956 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
33957 l_budgetary_control_flag     := 'N';
33958 
33959 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
33960 l_bflow_applied_to_amt       := NULL; -- 5132302
33961 l_entered_amt_idx            := NULL;          -- 4262811
33962 l_accted_amt_idx             := NULL;          -- 4262811
33963 l_acc_rev_flag               := NULL;          -- 4262811
33964 l_accrual_line_num           := NULL;          -- 4262811
33965 l_tmp_amt                    := NULL;          -- 4262811
33966 --
33967  
33968 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33969     l_balance_type_code <> 'B' THEN
33973 
33970 IF NVL(p_source_2,'
33971 ') =  'EXP'
33972  THEN 
33974    --
33975    XLA_AE_LINES_PKG.SetNewLine;
33976 
33977    p_balance_type_code          := l_balance_type_code;
33978    -- set the flag so later we will know whether the gain loss line needs to be created
33979    
33980    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33981      p_actual_flag :='A';
33982    END IF;
33983 
33984    --
33985    -- bulk performance
33986    --
33987    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33988                                       p_header_num   => 0); -- 4262811
33989    --
33990    -- set accounting line options
33991    --
33992    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33993            p_natural_side_code          => 'D'
33994          , p_gain_or_loss_flag          => 'N'
33995          , p_gl_transfer_mode_code      => 'D'
33996          , p_acct_entry_type_code       => 'A'
33997          , p_switch_side_flag           => 'Y'
33998          , p_merge_duplicate_code       => 'W'
33999          );
34000    --
34001    l_acc_rev_natural_side_code := 'C';  -- 4262811
34002    -- 
34003    --
34004    -- set accounting line type info
34005    --
34006    xla_ae_lines_pkg.SetAcctLineType
34007       (p_component_type             => l_component_type
34008       ,p_event_type_code            => l_event_type_code
34009       ,p_line_definition_owner_code => l_line_definition_owner_code
34010       ,p_line_definition_code       => l_line_definition_code
34011       ,p_accounting_line_code       => l_component_code
34012       ,p_accounting_line_type_code  => l_component_type_code
34013       ,p_accounting_line_appl_id    => l_component_appl_id
34014       ,p_amb_context_code           => l_amb_context_code
34015       ,p_entity_code                => l_entity_code
34016       ,p_event_class_code           => l_event_class_code);
34017    --
34018    -- set accounting class
34019    --
34020    xla_ae_lines_pkg.SetAcctClass(
34021            p_accounting_class_code  => 'EXPENSE'
34022          , p_ae_header_id           => l_ae_header_id
34023          );
34024 
34025    --
34026    -- set rounding class
34027    --
34028    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34029                       'EXPENSE';
34030 
34031    --
34032    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34033    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34034    --
34035    -- bulk performance
34036    --
34037    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34038 
34039    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34040       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34041 
34042    -- 4955764
34043    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34044       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34045 
34046    -- 4458381 Public Sector Enh
34047    
34048    --
34049    -- set accounting attributes for the line type
34050    --
34051    l_entered_amt_idx := 3;
34052    l_accted_amt_idx  := 8;
34053    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
34054    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
34055    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
34056    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
34057    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
34058    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
34059    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
34060    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
34061    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
34062    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
34063    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
34064    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
34065    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
34066    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
34067    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
34068    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
34069    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
34070 
34071    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34072    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34073 
34074    ---------------------------------------------------------------------------------------------------------------
34075    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34076    ---------------------------------------------------------------------------------------------------------------
34077    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34078 
34079    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34080    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34081 
34082    IF xla_accounting_cache_pkg.GetValueChar
34083          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34087    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34084          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34085    AND l_bflow_method_code = 'PRIOR_ENTRY'
34086 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34088          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34089        )
34090    THEN
34091          xla_ae_lines_pkg.BflowUpgEntry
34092            (p_business_method_code    => l_bflow_method_code
34093            ,p_business_class_code     => l_bflow_class_code
34094            ,p_balance_type            => l_balance_type_code);
34095    ELSE
34096       NULL;
34097 -- No business flow processing for business flow method of NONE.
34098    END IF;
34099 
34100    --
34101    -- call analytical criteria
34102    --
34103    
34104    --
34105    -- call description
34106    --
34107    -- No description or it is inherited.
34108    --
34109    -- call ADRs
34110    -- Bug 4922099
34111    --
34112    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34113         (NVL(l_actual_upg_option, 'N') = 'O') OR
34114         (NVL(l_enc_upg_option, 'N') = 'O')
34115       )
34116    THEN
34117    NULL;
34118    --
34119    --
34120    
34121   l_ccid := AcctDerRule_12(
34122            p_application_id           => p_application_id
34123          , p_ae_header_id             => l_ae_header_id 
34124 , p_source_1 => p_source_1
34125 , p_source_2 => p_source_2
34126          , x_transaction_coa_id       => l_adr_transaction_coa_id
34127          , x_accounting_coa_id        => l_adr_accounting_coa_id
34128          , x_value_type_code          => l_adr_value_type_code
34129          , p_side                     => 'NA'
34130    );
34131 
34132    xla_ae_lines_pkg.set_ccid(
34133     p_code_combination_id          => l_ccid
34134   , p_value_type_code              => l_adr_value_type_code
34135   , p_transaction_coa_id           => l_adr_transaction_coa_id
34136   , p_accounting_coa_id            => l_adr_accounting_coa_id
34137   , p_adr_code                     => 'EXP'
34138   , p_adr_type_code                => 'S'
34139   , p_component_type               => l_component_type
34140   , p_component_code               => l_component_code
34141   , p_component_type_code          => l_component_type_code
34142   , p_component_appl_id            => l_component_appl_id
34143   , p_amb_context_code             => l_amb_context_code
34144   , p_side                         => 'NA'
34145   );
34146 
34147 
34148    --
34149    --
34150    END IF;
34151    --
34152    -- Bug 4922099
34153    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34154           (NVL(l_enc_upg_option, 'N') = 'O')
34155         ) AND
34156         (l_bflow_method_code = 'PRIOR_ENTRY')
34157       )
34158    THEN
34159       IF
34160       --
34161       1 = 2
34162       --
34163       THEN
34164       xla_accounting_err_pkg.build_message
34165                                     (p_appli_s_name            => 'XLA'
34166                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34167                                     ,p_token_1                 => 'LINE_NUMBER'
34168                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
34169                                     ,p_token_2                 => 'LINE_TYPE_NAME'
34170                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
34171                                                                              l_component_type
34172                                                                             ,l_component_code
34173                                                                             ,l_component_type_code
34174                                                                             ,l_component_appl_id
34175                                                                             ,l_amb_context_code
34176                                                                             ,l_entity_code
34177                                                                             ,l_event_class_code
34178                                                                            )
34179                                     ,p_token_3                 => 'OWNER'
34180                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
34181                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
34182                                                                           ,p_lookup_code    => l_component_type_code
34183                                                                          )
34184                                     ,p_token_4                 => 'PRODUCT_NAME'
34185                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34186                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34187                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34188                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34189                                     ,p_ae_header_id            =>  NULL
34190                                        );
34191 
34192         IF (C_LEVEL_ERROR>= g_log_level) THEN
34193                  trace
34197         END IF;
34194                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34195                       ,p_level    => C_LEVEL_ERROR
34196                       ,p_module   => l_log_module);
34198       END IF;
34199    END IF;
34200    --
34201    --
34202    ------------------------------------------------------------------------------------------------
34203    -- 4219869 Business Flow
34204    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34205    -- Prior Entry.  Currently, the following code is always generated.
34206    ------------------------------------------------------------------------------------------------
34207    XLA_AE_LINES_PKG.ValidateCurrentLine;
34208 
34209    ------------------------------------------------------------------------------------
34210    -- 4219869 Business Flow
34211    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34212    ------------------------------------------------------------------------------------
34213    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34214 
34215    ----------------------------------------------------------------------------------
34216    -- 4219869 Business Flow
34217    -- Update journal entry status -- Need to generate this within IF <condition>
34218    ----------------------------------------------------------------------------------
34219    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34220          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34221          ,p_balance_type_code => l_balance_type_code
34222          );
34223 
34224    -------------------------------------------------------------------------------------------
34225    -- 4262811 - Generate the Accrual Reversal lines
34226    -------------------------------------------------------------------------------------------
34227    BEGIN
34228       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34229                               (g_array_event(p_event_id).array_value_num('header_index'));
34230       IF l_acc_rev_flag IS NULL THEN
34231          l_acc_rev_flag := 'N';
34232       END IF;
34233    EXCEPTION
34234       WHEN OTHERS THEN
34235          l_acc_rev_flag := 'N';
34236    END;
34237    --
34238    IF (l_acc_rev_flag = 'Y') THEN
34239 
34240        -- 4645092  ------------------------------------------------------------------------------
34241        -- To allow MPA report to determine if it should generate report process
34242        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34243        ------------------------------------------------------------------------------------------
34244 
34245        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34246        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34247    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
34248    -- call ADRs
34249    -- Bug 4922099
34250    --
34251    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34252         (NVL(l_actual_upg_option, 'N') = 'O') OR
34253         (NVL(l_enc_upg_option, 'N') = 'O')
34254       )
34255    THEN
34256    NULL;
34257    --
34258    --
34259    
34260   l_ccid := AcctDerRule_12(
34261            p_application_id           => p_application_id
34262          , p_ae_header_id             => l_ae_header_id 
34263 , p_source_1 => p_source_1
34264 , p_source_2 => p_source_2
34265          , x_transaction_coa_id       => l_adr_transaction_coa_id
34266          , x_accounting_coa_id        => l_adr_accounting_coa_id
34267          , x_value_type_code          => l_adr_value_type_code
34268          , p_side                     => 'NA'
34269    );
34270 
34271    xla_ae_lines_pkg.set_ccid(
34272     p_code_combination_id          => l_ccid
34273   , p_value_type_code              => l_adr_value_type_code
34274   , p_transaction_coa_id           => l_adr_transaction_coa_id
34275   , p_accounting_coa_id            => l_adr_accounting_coa_id
34276   , p_adr_code                     => 'EXP'
34277   , p_adr_type_code                => 'S'
34278   , p_component_type               => l_component_type
34279   , p_component_code               => l_component_code
34280   , p_component_type_code          => l_component_type_code
34281   , p_component_appl_id            => l_component_appl_id
34282   , p_amb_context_code             => l_amb_context_code
34283   , p_side                         => 'NA'
34284   );
34285 
34286 
34287    --
34288    --
34289    END IF;
34290 
34291        --
34292        -- Update the line information that should be overwritten
34293        --
34294        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34295                                          p_header_num   => 1);
34296        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
34297 
34298        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34299 
34300        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
34301           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34302        END IF;
34303 
34304       --
34305       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34306       --
34310           ---------------------------------------------------------------------------------------------------
34307       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34308           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
34309       ELSE
34311           -- 4262811a Switch Sign
34312           ---------------------------------------------------------------------------------------------------
34313           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
34314           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34315                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34316           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34317                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34318           -- 5132302
34319           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34320                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34321 
34322       END IF;
34323 
34324       -- 4955764
34325       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34326       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34327 
34328 
34329       XLA_AE_LINES_PKG.ValidateCurrentLine;
34330       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34331 
34332       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34333                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34334                ,p_balance_type_code => l_balance_type_code);
34335 
34336    END IF;
34337 
34338    -----------------------------------------------------------------------------------------
34339    -- 4262811 Multiperiod Accounting
34340    -----------------------------------------------------------------------------------------
34341      -- No MPA option is assigned.
34342 
34343 
34344 END IF;
34345 END IF;
34346 --
34347 
34348 --
34349 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34350    trace
34351       (p_msg      => 'END of AcctLineType_94'
34352       ,p_level    => C_LEVEL_PROCEDURE
34353       ,p_module   => l_log_module);
34354 END IF;
34355 --
34356 EXCEPTION
34357   WHEN xla_exceptions_pkg.application_exception THEN
34358       RAISE;
34359   WHEN OTHERS THEN
34360        xla_exceptions_pkg.raise_message
34361            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_94');
34362 END AcctLineType_94;
34363 --
34364 
34365 ---------------------------------------
34366 --
34367 -- PRIVATE FUNCTION
34368 --         AcctLineType_95
34369 --
34370 ---------------------------------------
34371 PROCEDURE AcctLineType_95 (
34372   p_application_id        IN NUMBER
34373  ,p_event_id              IN NUMBER
34374  ,p_calculate_acctd_flag  IN VARCHAR2
34375  ,p_calculate_g_l_flag    IN VARCHAR2
34376  ,p_actual_flag           IN OUT VARCHAR2
34377  ,p_balance_type_code     OUT VARCHAR2
34378  ,p_gain_or_loss_ref      OUT VARCHAR2
34379  
34380 --Transaction Account
34381  , p_source_1            IN NUMBER
34382 --Journal Line Type
34383  , p_source_2            IN VARCHAR2
34384 --Entered Amount
34385  , p_source_3            IN NUMBER
34386 --First Distribution Identifier
34387  , p_source_5            IN NUMBER
34388 --Distribution Type
34389  , p_source_6            IN VARCHAR2
34390 --Currency Code
34391  , p_source_7            IN VARCHAR2
34392 --Currency Conversion Date
34393  , p_source_8            IN DATE
34394 --Currency Conversion Rate
34395  , p_source_9            IN NUMBER
34396 --Currency Conversion Type
34397  , p_source_10            IN VARCHAR2
34398 --Accounted Amount
34399  , p_source_11            IN NUMBER
34400 )
34401 IS
34402 
34403 l_component_type              VARCHAR2(80);
34404 l_component_code              VARCHAR2(30);
34405 l_component_type_code         VARCHAR2(1);
34406 l_component_appl_id           INTEGER;
34407 l_amb_context_code            VARCHAR2(30);
34408 l_entity_code                 VARCHAR2(30);
34409 l_event_class_code            VARCHAR2(30);
34410 l_ae_header_id                NUMBER;
34411 l_event_type_code             VARCHAR2(30);
34412 l_line_definition_code        VARCHAR2(30);
34413 l_line_definition_owner_code  VARCHAR2(1);
34414 --
34415 -- adr variables
34416 l_segment                     VARCHAR2(30);
34417 l_ccid                        NUMBER;
34418 l_adr_transaction_coa_id      NUMBER;
34419 l_adr_accounting_coa_id       NUMBER;
34420 l_adr_flexfield_segment_code  VARCHAR2(30);
34421 l_adr_flex_value_set_id       NUMBER;
34422 l_adr_value_type_code         VARCHAR2(30);
34423 l_adr_value_combination_id    NUMBER;
34424 l_adr_value_segment_code      VARCHAR2(30);
34425 
34426 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34427 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34428 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34429 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34430 
34431 -- 4262811 Variables ------------------------------------------------------------------------------------------
34432 l_entered_amt_idx             NUMBER;
34436 l_tmp_amt                     NUMBER;
34433 l_accted_amt_idx              NUMBER;
34434 l_acc_rev_flag                VARCHAR2(1);
34435 l_accrual_line_num            NUMBER;
34437 l_acc_rev_natural_side_code   VARCHAR2(1);
34438 
34439 l_num_entries                 NUMBER;
34440 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34441 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34442 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34443 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34444 l_recog_line_1                NUMBER;
34445 l_recog_line_2                NUMBER;
34446 
34447 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34448 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34449 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34450 
34451 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34452 
34453 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34454 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34455 
34456 ---------------------------------------------------------------------------------------------------------------
34457 
34458 
34459 --
34460 -- bulk performance
34461 --
34462 l_balance_type_code           VARCHAR2(1);
34463 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34464 l_log_module                  VARCHAR2(240);
34465 
34466 --
34467 -- Upgrade strategy
34468 --
34469 l_actual_upg_option           VARCHAR2(1);
34470 l_enc_upg_option           VARCHAR2(1);
34471 
34472 --
34473 BEGIN
34474 --
34475 IF g_log_enabled THEN
34476       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_95';
34477 END IF;
34478 --
34479 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34480 
34481       trace
34482          (p_msg      => 'BEGIN of AcctLineType_95'
34483          ,p_level    => C_LEVEL_PROCEDURE
34484          ,p_module   => l_log_module);
34485 
34486 END IF;
34487 --
34488 l_component_type             := 'AMB_JLT';
34489 l_component_code             := 'EXP';
34490 l_component_type_code        := 'S';
34491 l_component_appl_id          :=  555;
34492 l_amb_context_code           := 'DEFAULT';
34493 l_entity_code                := 'INVENTORY';
34494 l_event_class_code           := 'LOG_INTERCOMPANY';
34495 l_event_type_code            := 'LOG_IC_RCPT_RETURN';
34496 l_line_definition_owner_code := 'S';
34497 l_line_definition_code       := 'LOG_IC_RCPT_RETURN';
34498 --
34499 l_balance_type_code          := 'A';
34500 l_segment                     := NULL;
34501 l_ccid                        := NULL;
34502 l_adr_transaction_coa_id      := NULL;
34503 l_adr_accounting_coa_id       := NULL;
34504 l_adr_flexfield_segment_code  := NULL;
34505 l_adr_flex_value_set_id       := NULL;
34506 l_adr_value_type_code         := NULL;
34507 l_adr_value_combination_id    := NULL;
34508 l_adr_value_segment_code      := NULL;
34509 
34510 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
34511 l_bflow_class_code           := '';    -- 4219869 Business Flow
34512 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
34513 l_budgetary_control_flag     := 'N';
34514 
34515 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34516 l_bflow_applied_to_amt       := NULL; -- 5132302
34517 l_entered_amt_idx            := NULL;          -- 4262811
34518 l_accted_amt_idx             := NULL;          -- 4262811
34519 l_acc_rev_flag               := NULL;          -- 4262811
34520 l_accrual_line_num           := NULL;          -- 4262811
34521 l_tmp_amt                    := NULL;          -- 4262811
34522 --
34523  
34524 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34525     l_balance_type_code <> 'B' THEN
34526 IF NVL(p_source_2,'
34527 ') =  'EXP'
34528  THEN 
34529 
34530    --
34531    XLA_AE_LINES_PKG.SetNewLine;
34532 
34533    p_balance_type_code          := l_balance_type_code;
34534    -- set the flag so later we will know whether the gain loss line needs to be created
34535    
34536    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34537      p_actual_flag :='A';
34538    END IF;
34539 
34540    --
34541    -- bulk performance
34542    --
34543    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34544                                       p_header_num   => 0); -- 4262811
34545    --
34546    -- set accounting line options
34547    --
34548    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34549            p_natural_side_code          => 'D'
34550          , p_gain_or_loss_flag          => 'N'
34551          , p_gl_transfer_mode_code      => 'D'
34552          , p_acct_entry_type_code       => 'A'
34553          , p_switch_side_flag           => 'Y'
34554          , p_merge_duplicate_code       => 'W'
34555          );
34556    --
34557    l_acc_rev_natural_side_code := 'C';  -- 4262811
34558    -- 
34559    --
34560    -- set accounting line type info
34561    --
34562    xla_ae_lines_pkg.SetAcctLineType
34563       (p_component_type             => l_component_type
34564       ,p_event_type_code            => l_event_type_code
34565       ,p_line_definition_owner_code => l_line_definition_owner_code
34569       ,p_accounting_line_appl_id    => l_component_appl_id
34566       ,p_line_definition_code       => l_line_definition_code
34567       ,p_accounting_line_code       => l_component_code
34568       ,p_accounting_line_type_code  => l_component_type_code
34570       ,p_amb_context_code           => l_amb_context_code
34571       ,p_entity_code                => l_entity_code
34572       ,p_event_class_code           => l_event_class_code);
34573    --
34574    -- set accounting class
34575    --
34576    xla_ae_lines_pkg.SetAcctClass(
34577            p_accounting_class_code  => 'EXPENSE'
34578          , p_ae_header_id           => l_ae_header_id
34579          );
34580 
34581    --
34582    -- set rounding class
34583    --
34584    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34585                       'EXPENSE';
34586 
34587    --
34588    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34589    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34590    --
34591    -- bulk performance
34592    --
34593    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34594 
34595    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34596       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34597 
34598    -- 4955764
34599    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34600       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34601 
34602    -- 4458381 Public Sector Enh
34603    
34604    --
34605    -- set accounting attributes for the line type
34606    --
34607    l_entered_amt_idx := 3;
34608    l_accted_amt_idx  := 8;
34609    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
34610    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
34611    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
34612    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
34613    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
34614    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
34615    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
34616    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
34617    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
34618    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
34619    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
34620    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
34621    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
34622    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
34623    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
34624    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
34625    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
34626 
34627    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34628    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34629 
34630    ---------------------------------------------------------------------------------------------------------------
34631    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34632    ---------------------------------------------------------------------------------------------------------------
34633    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34634 
34635    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34636    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34637 
34638    IF xla_accounting_cache_pkg.GetValueChar
34639          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34640          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34641    AND l_bflow_method_code = 'PRIOR_ENTRY'
34642 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34643    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34644          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34645        )
34646    THEN
34647          xla_ae_lines_pkg.BflowUpgEntry
34648            (p_business_method_code    => l_bflow_method_code
34649            ,p_business_class_code     => l_bflow_class_code
34650            ,p_balance_type            => l_balance_type_code);
34651    ELSE
34652       NULL;
34653 -- No business flow processing for business flow method of NONE.
34654    END IF;
34655 
34656    --
34657    -- call analytical criteria
34658    --
34659    
34660    --
34661    -- call description
34662    --
34663    -- No description or it is inherited.
34664    --
34665    -- call ADRs
34666    -- Bug 4922099
34667    --
34668    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34669         (NVL(l_actual_upg_option, 'N') = 'O') OR
34670         (NVL(l_enc_upg_option, 'N') = 'O')
34671       )
34672    THEN
34673    NULL;
34674    --
34675    --
34676    
34677   l_ccid := AcctDerRule_12(
34678            p_application_id           => p_application_id
34679          , p_ae_header_id             => l_ae_header_id 
34680 , p_source_1 => p_source_1
34681 , p_source_2 => p_source_2
34685          , p_side                     => 'NA'
34682          , x_transaction_coa_id       => l_adr_transaction_coa_id
34683          , x_accounting_coa_id        => l_adr_accounting_coa_id
34684          , x_value_type_code          => l_adr_value_type_code
34686    );
34687 
34688    xla_ae_lines_pkg.set_ccid(
34689     p_code_combination_id          => l_ccid
34690   , p_value_type_code              => l_adr_value_type_code
34691   , p_transaction_coa_id           => l_adr_transaction_coa_id
34692   , p_accounting_coa_id            => l_adr_accounting_coa_id
34693   , p_adr_code                     => 'EXP'
34694   , p_adr_type_code                => 'S'
34695   , p_component_type               => l_component_type
34696   , p_component_code               => l_component_code
34697   , p_component_type_code          => l_component_type_code
34698   , p_component_appl_id            => l_component_appl_id
34699   , p_amb_context_code             => l_amb_context_code
34700   , p_side                         => 'NA'
34701   );
34702 
34703 
34704    --
34705    --
34706    END IF;
34707    --
34708    -- Bug 4922099
34709    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34710           (NVL(l_enc_upg_option, 'N') = 'O')
34711         ) AND
34712         (l_bflow_method_code = 'PRIOR_ENTRY')
34713       )
34714    THEN
34715       IF
34716       --
34717       1 = 2
34718       --
34719       THEN
34720       xla_accounting_err_pkg.build_message
34721                                     (p_appli_s_name            => 'XLA'
34722                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34723                                     ,p_token_1                 => 'LINE_NUMBER'
34724                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
34725                                     ,p_token_2                 => 'LINE_TYPE_NAME'
34726                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
34727                                                                              l_component_type
34728                                                                             ,l_component_code
34729                                                                             ,l_component_type_code
34730                                                                             ,l_component_appl_id
34731                                                                             ,l_amb_context_code
34732                                                                             ,l_entity_code
34733                                                                             ,l_event_class_code
34734                                                                            )
34735                                     ,p_token_3                 => 'OWNER'
34736                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
34737                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
34738                                                                           ,p_lookup_code    => l_component_type_code
34739                                                                          )
34740                                     ,p_token_4                 => 'PRODUCT_NAME'
34741                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34742                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34743                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34744                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34745                                     ,p_ae_header_id            =>  NULL
34746                                        );
34747 
34748         IF (C_LEVEL_ERROR>= g_log_level) THEN
34749                  trace
34750                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34751                       ,p_level    => C_LEVEL_ERROR
34752                       ,p_module   => l_log_module);
34753         END IF;
34754       END IF;
34755    END IF;
34756    --
34757    --
34758    ------------------------------------------------------------------------------------------------
34759    -- 4219869 Business Flow
34760    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34761    -- Prior Entry.  Currently, the following code is always generated.
34762    ------------------------------------------------------------------------------------------------
34763    XLA_AE_LINES_PKG.ValidateCurrentLine;
34764 
34765    ------------------------------------------------------------------------------------
34766    -- 4219869 Business Flow
34767    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34768    ------------------------------------------------------------------------------------
34769    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34770 
34771    ----------------------------------------------------------------------------------
34772    -- 4219869 Business Flow
34773    -- Update journal entry status -- Need to generate this within IF <condition>
34774    ----------------------------------------------------------------------------------
34778          );
34775    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34776          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34777          ,p_balance_type_code => l_balance_type_code
34779 
34780    -------------------------------------------------------------------------------------------
34781    -- 4262811 - Generate the Accrual Reversal lines
34782    -------------------------------------------------------------------------------------------
34783    BEGIN
34784       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34785                               (g_array_event(p_event_id).array_value_num('header_index'));
34786       IF l_acc_rev_flag IS NULL THEN
34787          l_acc_rev_flag := 'N';
34788       END IF;
34789    EXCEPTION
34790       WHEN OTHERS THEN
34791          l_acc_rev_flag := 'N';
34792    END;
34793    --
34794    IF (l_acc_rev_flag = 'Y') THEN
34795 
34796        -- 4645092  ------------------------------------------------------------------------------
34797        -- To allow MPA report to determine if it should generate report process
34798        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34799        ------------------------------------------------------------------------------------------
34800 
34801        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34802        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34803    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
34804    -- call ADRs
34805    -- Bug 4922099
34806    --
34807    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34808         (NVL(l_actual_upg_option, 'N') = 'O') OR
34809         (NVL(l_enc_upg_option, 'N') = 'O')
34810       )
34811    THEN
34812    NULL;
34813    --
34814    --
34815    
34816   l_ccid := AcctDerRule_12(
34817            p_application_id           => p_application_id
34818          , p_ae_header_id             => l_ae_header_id 
34819 , p_source_1 => p_source_1
34820 , p_source_2 => p_source_2
34821          , x_transaction_coa_id       => l_adr_transaction_coa_id
34822          , x_accounting_coa_id        => l_adr_accounting_coa_id
34823          , x_value_type_code          => l_adr_value_type_code
34824          , p_side                     => 'NA'
34825    );
34826 
34827    xla_ae_lines_pkg.set_ccid(
34828     p_code_combination_id          => l_ccid
34829   , p_value_type_code              => l_adr_value_type_code
34830   , p_transaction_coa_id           => l_adr_transaction_coa_id
34831   , p_accounting_coa_id            => l_adr_accounting_coa_id
34832   , p_adr_code                     => 'EXP'
34833   , p_adr_type_code                => 'S'
34834   , p_component_type               => l_component_type
34835   , p_component_code               => l_component_code
34836   , p_component_type_code          => l_component_type_code
34837   , p_component_appl_id            => l_component_appl_id
34838   , p_amb_context_code             => l_amb_context_code
34839   , p_side                         => 'NA'
34840   );
34841 
34842 
34843    --
34844    --
34845    END IF;
34846 
34847        --
34848        -- Update the line information that should be overwritten
34849        --
34850        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34851                                          p_header_num   => 1);
34852        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
34853 
34854        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34855 
34856        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
34857           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34858        END IF;
34859 
34860       --
34861       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34862       --
34863       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34864           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
34865       ELSE
34866           ---------------------------------------------------------------------------------------------------
34867           -- 4262811a Switch Sign
34868           ---------------------------------------------------------------------------------------------------
34869           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
34870           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34871                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34872           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34873                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34874           -- 5132302
34875           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34876                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34877 
34878       END IF;
34879 
34880       -- 4955764
34881       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34882       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34883 
34884 
34888       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34885       XLA_AE_LINES_PKG.ValidateCurrentLine;
34886       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34887 
34889                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34890                ,p_balance_type_code => l_balance_type_code);
34891 
34892    END IF;
34893 
34894    -----------------------------------------------------------------------------------------
34895    -- 4262811 Multiperiod Accounting
34896    -----------------------------------------------------------------------------------------
34897      -- No MPA option is assigned.
34898 
34899 
34900 END IF;
34901 END IF;
34902 --
34903 
34904 --
34905 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34906    trace
34907       (p_msg      => 'END of AcctLineType_95'
34908       ,p_level    => C_LEVEL_PROCEDURE
34909       ,p_module   => l_log_module);
34910 END IF;
34911 --
34912 EXCEPTION
34913   WHEN xla_exceptions_pkg.application_exception THEN
34914       RAISE;
34915   WHEN OTHERS THEN
34916        xla_exceptions_pkg.raise_message
34917            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_95');
34918 END AcctLineType_95;
34919 --
34920 
34921 ---------------------------------------
34922 --
34923 -- PRIVATE FUNCTION
34924 --         AcctLineType_96
34925 --
34926 ---------------------------------------
34927 PROCEDURE AcctLineType_96 (
34928   p_application_id        IN NUMBER
34929  ,p_event_id              IN NUMBER
34930  ,p_calculate_acctd_flag  IN VARCHAR2
34931  ,p_calculate_g_l_flag    IN VARCHAR2
34932  ,p_actual_flag           IN OUT VARCHAR2
34933  ,p_balance_type_code     OUT VARCHAR2
34934  ,p_gain_or_loss_ref      OUT VARCHAR2
34935  
34936 --Transaction Account
34937  , p_source_1            IN NUMBER
34938 --Journal Line Type
34939  , p_source_2            IN VARCHAR2
34940 --Entered Amount
34941  , p_source_3            IN NUMBER
34942 --First Distribution Identifier
34943  , p_source_5            IN NUMBER
34944 --Distribution Type
34945  , p_source_6            IN VARCHAR2
34946 --Currency Code
34947  , p_source_7            IN VARCHAR2
34948 --Currency Conversion Date
34949  , p_source_8            IN DATE
34950 --Currency Conversion Rate
34951  , p_source_9            IN NUMBER
34952 --Currency Conversion Type
34953  , p_source_10            IN VARCHAR2
34954 --Accounted Amount
34955  , p_source_11            IN NUMBER
34956 )
34957 IS
34958 
34959 l_component_type              VARCHAR2(80);
34960 l_component_code              VARCHAR2(30);
34961 l_component_type_code         VARCHAR2(1);
34962 l_component_appl_id           INTEGER;
34963 l_amb_context_code            VARCHAR2(30);
34964 l_entity_code                 VARCHAR2(30);
34965 l_event_class_code            VARCHAR2(30);
34966 l_ae_header_id                NUMBER;
34967 l_event_type_code             VARCHAR2(30);
34968 l_line_definition_code        VARCHAR2(30);
34969 l_line_definition_owner_code  VARCHAR2(1);
34970 --
34971 -- adr variables
34972 l_segment                     VARCHAR2(30);
34973 l_ccid                        NUMBER;
34974 l_adr_transaction_coa_id      NUMBER;
34975 l_adr_accounting_coa_id       NUMBER;
34976 l_adr_flexfield_segment_code  VARCHAR2(30);
34977 l_adr_flex_value_set_id       NUMBER;
34978 l_adr_value_type_code         VARCHAR2(30);
34979 l_adr_value_combination_id    NUMBER;
34980 l_adr_value_segment_code      VARCHAR2(30);
34981 
34982 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34983 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34984 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34985 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34986 
34987 -- 4262811 Variables ------------------------------------------------------------------------------------------
34988 l_entered_amt_idx             NUMBER;
34989 l_accted_amt_idx              NUMBER;
34990 l_acc_rev_flag                VARCHAR2(1);
34991 l_accrual_line_num            NUMBER;
34992 l_tmp_amt                     NUMBER;
34993 l_acc_rev_natural_side_code   VARCHAR2(1);
34994 
34995 l_num_entries                 NUMBER;
34996 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34997 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34998 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34999 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
35000 l_recog_line_1                NUMBER;
35001 l_recog_line_2                NUMBER;
35002 
35003 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
35004 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
35005 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
35006 
35007 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35008 
35009 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
35010 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
35011 
35012 ---------------------------------------------------------------------------------------------------------------
35013 
35014 
35015 --
35016 -- bulk performance
35017 --
35018 l_balance_type_code           VARCHAR2(1);
35022 --
35019 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
35020 l_log_module                  VARCHAR2(240);
35021 
35023 -- Upgrade strategy
35024 --
35025 l_actual_upg_option           VARCHAR2(1);
35026 l_enc_upg_option           VARCHAR2(1);
35027 
35028 --
35029 BEGIN
35030 --
35031 IF g_log_enabled THEN
35032       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_96';
35033 END IF;
35034 --
35035 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35036 
35037       trace
35038          (p_msg      => 'BEGIN of AcctLineType_96'
35039          ,p_level    => C_LEVEL_PROCEDURE
35040          ,p_module   => l_log_module);
35041 
35042 END IF;
35043 --
35044 l_component_type             := 'AMB_JLT';
35045 l_component_code             := 'EXP';
35046 l_component_type_code        := 'S';
35047 l_component_appl_id          :=  555;
35048 l_amb_context_code           := 'DEFAULT';
35049 l_entity_code                := 'PURCHASING';
35050 l_event_class_code           := 'DELIVER';
35051 l_event_type_code            := 'XFER_TO_REGULAR';
35052 l_line_definition_owner_code := 'S';
35053 l_line_definition_code       := 'XFER_TO_REG';
35054 --
35055 l_balance_type_code          := 'A';
35056 l_segment                     := NULL;
35057 l_ccid                        := NULL;
35058 l_adr_transaction_coa_id      := NULL;
35059 l_adr_accounting_coa_id       := NULL;
35060 l_adr_flexfield_segment_code  := NULL;
35061 l_adr_flex_value_set_id       := NULL;
35062 l_adr_value_type_code         := NULL;
35063 l_adr_value_combination_id    := NULL;
35064 l_adr_value_segment_code      := NULL;
35065 
35066 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
35067 l_bflow_class_code           := '';    -- 4219869 Business Flow
35068 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
35069 l_budgetary_control_flag     := 'N';
35070 
35071 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35072 l_bflow_applied_to_amt       := NULL; -- 5132302
35073 l_entered_amt_idx            := NULL;          -- 4262811
35074 l_accted_amt_idx             := NULL;          -- 4262811
35075 l_acc_rev_flag               := NULL;          -- 4262811
35076 l_accrual_line_num           := NULL;          -- 4262811
35077 l_tmp_amt                    := NULL;          -- 4262811
35078 --
35079  
35080 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35081     l_balance_type_code <> 'B' THEN
35082 IF NVL(p_source_2,'
35083 ') =  'EXP'
35084  THEN 
35085 
35086    --
35087    XLA_AE_LINES_PKG.SetNewLine;
35088 
35089    p_balance_type_code          := l_balance_type_code;
35090    -- set the flag so later we will know whether the gain loss line needs to be created
35091    
35092    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35093      p_actual_flag :='A';
35094    END IF;
35095 
35096    --
35097    -- bulk performance
35098    --
35099    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35100                                       p_header_num   => 0); -- 4262811
35101    --
35102    -- set accounting line options
35103    --
35104    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35105            p_natural_side_code          => 'D'
35106          , p_gain_or_loss_flag          => 'N'
35107          , p_gl_transfer_mode_code      => 'D'
35108          , p_acct_entry_type_code       => 'A'
35109          , p_switch_side_flag           => 'Y'
35110          , p_merge_duplicate_code       => 'W'
35111          );
35112    --
35113    l_acc_rev_natural_side_code := 'C';  -- 4262811
35114    -- 
35115    --
35116    -- set accounting line type info
35117    --
35118    xla_ae_lines_pkg.SetAcctLineType
35119       (p_component_type             => l_component_type
35120       ,p_event_type_code            => l_event_type_code
35121       ,p_line_definition_owner_code => l_line_definition_owner_code
35122       ,p_line_definition_code       => l_line_definition_code
35123       ,p_accounting_line_code       => l_component_code
35124       ,p_accounting_line_type_code  => l_component_type_code
35125       ,p_accounting_line_appl_id    => l_component_appl_id
35126       ,p_amb_context_code           => l_amb_context_code
35127       ,p_entity_code                => l_entity_code
35128       ,p_event_class_code           => l_event_class_code);
35129    --
35130    -- set accounting class
35131    --
35132    xla_ae_lines_pkg.SetAcctClass(
35133            p_accounting_class_code  => 'EXPENSE'
35134          , p_ae_header_id           => l_ae_header_id
35135          );
35136 
35137    --
35138    -- set rounding class
35139    --
35140    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35141                       'EXPENSE';
35142 
35143    --
35144    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35145    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35146    --
35147    -- bulk performance
35148    --
35149    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35150 
35151    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35155    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35152       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35153 
35154    -- 4955764
35156       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35157 
35158    -- 4458381 Public Sector Enh
35159    
35160    --
35161    -- set accounting attributes for the line type
35162    --
35163    l_entered_amt_idx := 3;
35164    l_accted_amt_idx  := 8;
35165    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35166    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
35167    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
35168    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
35169    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
35170    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
35171    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
35172    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
35173    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
35174    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
35175    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
35176    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
35177    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
35178    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
35179    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
35180    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
35181    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
35182 
35183    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35184    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35185 
35186    ---------------------------------------------------------------------------------------------------------------
35187    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35188    ---------------------------------------------------------------------------------------------------------------
35189    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35190 
35191    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35192    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35193 
35194    IF xla_accounting_cache_pkg.GetValueChar
35195          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35196          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35197    AND l_bflow_method_code = 'PRIOR_ENTRY'
35198 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35199    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35200          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35201        )
35202    THEN
35203          xla_ae_lines_pkg.BflowUpgEntry
35204            (p_business_method_code    => l_bflow_method_code
35205            ,p_business_class_code     => l_bflow_class_code
35206            ,p_balance_type            => l_balance_type_code);
35207    ELSE
35208       NULL;
35209 -- No business flow processing for business flow method of NONE.
35210    END IF;
35211 
35212    --
35213    -- call analytical criteria
35214    --
35215    
35216    --
35217    -- call description
35218    --
35219    -- No description or it is inherited.
35220    --
35221    -- call ADRs
35222    -- Bug 4922099
35223    --
35224    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35225         (NVL(l_actual_upg_option, 'N') = 'O') OR
35226         (NVL(l_enc_upg_option, 'N') = 'O')
35227       )
35228    THEN
35229    NULL;
35230    --
35231    --
35232    
35233   l_ccid := AcctDerRule_12(
35234            p_application_id           => p_application_id
35235          , p_ae_header_id             => l_ae_header_id 
35236 , p_source_1 => p_source_1
35237 , p_source_2 => p_source_2
35238          , x_transaction_coa_id       => l_adr_transaction_coa_id
35239          , x_accounting_coa_id        => l_adr_accounting_coa_id
35240          , x_value_type_code          => l_adr_value_type_code
35241          , p_side                     => 'NA'
35242    );
35243 
35244    xla_ae_lines_pkg.set_ccid(
35245     p_code_combination_id          => l_ccid
35246   , p_value_type_code              => l_adr_value_type_code
35247   , p_transaction_coa_id           => l_adr_transaction_coa_id
35248   , p_accounting_coa_id            => l_adr_accounting_coa_id
35249   , p_adr_code                     => 'EXP'
35250   , p_adr_type_code                => 'S'
35251   , p_component_type               => l_component_type
35252   , p_component_code               => l_component_code
35253   , p_component_type_code          => l_component_type_code
35254   , p_component_appl_id            => l_component_appl_id
35255   , p_amb_context_code             => l_amb_context_code
35256   , p_side                         => 'NA'
35257   );
35258 
35259 
35260    --
35261    --
35262    END IF;
35263    --
35264    -- Bug 4922099
35265    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35266           (NVL(l_enc_upg_option, 'N') = 'O')
35267         ) AND
35268         (l_bflow_method_code = 'PRIOR_ENTRY')
35269       )
35270    THEN
35271       IF
35272       --
35273       1 = 2
35277                                     (p_appli_s_name            => 'XLA'
35274       --
35275       THEN
35276       xla_accounting_err_pkg.build_message
35278                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35279                                     ,p_token_1                 => 'LINE_NUMBER'
35280                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35281                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35282                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35283                                                                              l_component_type
35284                                                                             ,l_component_code
35285                                                                             ,l_component_type_code
35286                                                                             ,l_component_appl_id
35287                                                                             ,l_amb_context_code
35288                                                                             ,l_entity_code
35289                                                                             ,l_event_class_code
35290                                                                            )
35291                                     ,p_token_3                 => 'OWNER'
35292                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35293                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35294                                                                           ,p_lookup_code    => l_component_type_code
35295                                                                          )
35296                                     ,p_token_4                 => 'PRODUCT_NAME'
35297                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35298                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35299                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35300                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35301                                     ,p_ae_header_id            =>  NULL
35302                                        );
35303 
35304         IF (C_LEVEL_ERROR>= g_log_level) THEN
35305                  trace
35306                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35307                       ,p_level    => C_LEVEL_ERROR
35308                       ,p_module   => l_log_module);
35309         END IF;
35310       END IF;
35311    END IF;
35312    --
35313    --
35314    ------------------------------------------------------------------------------------------------
35315    -- 4219869 Business Flow
35316    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35317    -- Prior Entry.  Currently, the following code is always generated.
35318    ------------------------------------------------------------------------------------------------
35319    XLA_AE_LINES_PKG.ValidateCurrentLine;
35320 
35321    ------------------------------------------------------------------------------------
35322    -- 4219869 Business Flow
35323    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35324    ------------------------------------------------------------------------------------
35325    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35326 
35327    ----------------------------------------------------------------------------------
35328    -- 4219869 Business Flow
35329    -- Update journal entry status -- Need to generate this within IF <condition>
35330    ----------------------------------------------------------------------------------
35331    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35332          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35333          ,p_balance_type_code => l_balance_type_code
35334          );
35335 
35336    -------------------------------------------------------------------------------------------
35337    -- 4262811 - Generate the Accrual Reversal lines
35338    -------------------------------------------------------------------------------------------
35339    BEGIN
35340       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35341                               (g_array_event(p_event_id).array_value_num('header_index'));
35342       IF l_acc_rev_flag IS NULL THEN
35343          l_acc_rev_flag := 'N';
35344       END IF;
35345    EXCEPTION
35346       WHEN OTHERS THEN
35347          l_acc_rev_flag := 'N';
35348    END;
35349    --
35350    IF (l_acc_rev_flag = 'Y') THEN
35351 
35352        -- 4645092  ------------------------------------------------------------------------------
35353        -- To allow MPA report to determine if it should generate report process
35354        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35355        ------------------------------------------------------------------------------------------
35356 
35357        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35358        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35359    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
35360    -- call ADRs
35361    -- Bug 4922099
35365         (NVL(l_enc_upg_option, 'N') = 'O')
35362    --
35363    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35364         (NVL(l_actual_upg_option, 'N') = 'O') OR
35366       )
35367    THEN
35368    NULL;
35369    --
35370    --
35371    
35372   l_ccid := AcctDerRule_12(
35373            p_application_id           => p_application_id
35374          , p_ae_header_id             => l_ae_header_id 
35375 , p_source_1 => p_source_1
35376 , p_source_2 => p_source_2
35377          , x_transaction_coa_id       => l_adr_transaction_coa_id
35378          , x_accounting_coa_id        => l_adr_accounting_coa_id
35379          , x_value_type_code          => l_adr_value_type_code
35380          , p_side                     => 'NA'
35381    );
35382 
35383    xla_ae_lines_pkg.set_ccid(
35384     p_code_combination_id          => l_ccid
35385   , p_value_type_code              => l_adr_value_type_code
35386   , p_transaction_coa_id           => l_adr_transaction_coa_id
35387   , p_accounting_coa_id            => l_adr_accounting_coa_id
35388   , p_adr_code                     => 'EXP'
35389   , p_adr_type_code                => 'S'
35390   , p_component_type               => l_component_type
35391   , p_component_code               => l_component_code
35392   , p_component_type_code          => l_component_type_code
35393   , p_component_appl_id            => l_component_appl_id
35394   , p_amb_context_code             => l_amb_context_code
35395   , p_side                         => 'NA'
35396   );
35397 
35398 
35399    --
35400    --
35401    END IF;
35402 
35403        --
35404        -- Update the line information that should be overwritten
35405        --
35406        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35407                                          p_header_num   => 1);
35408        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35409 
35410        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35411 
35412        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35413           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35414        END IF;
35415 
35416       --
35417       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35418       --
35419       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35420           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35421       ELSE
35422           ---------------------------------------------------------------------------------------------------
35423           -- 4262811a Switch Sign
35424           ---------------------------------------------------------------------------------------------------
35425           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35426           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35427                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35428           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35429                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35430           -- 5132302
35431           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35432                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35433 
35434       END IF;
35435 
35436       -- 4955764
35437       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35438       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35439 
35440 
35441       XLA_AE_LINES_PKG.ValidateCurrentLine;
35442       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35443 
35444       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35445                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35446                ,p_balance_type_code => l_balance_type_code);
35447 
35448    END IF;
35449 
35450    -----------------------------------------------------------------------------------------
35451    -- 4262811 Multiperiod Accounting
35452    -----------------------------------------------------------------------------------------
35453      -- No MPA option is assigned.
35454 
35455 
35456 END IF;
35457 END IF;
35458 --
35459 
35460 --
35461 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35462    trace
35463       (p_msg      => 'END of AcctLineType_96'
35464       ,p_level    => C_LEVEL_PROCEDURE
35465       ,p_module   => l_log_module);
35466 END IF;
35467 --
35468 EXCEPTION
35469   WHEN xla_exceptions_pkg.application_exception THEN
35470       RAISE;
35471   WHEN OTHERS THEN
35472        xla_exceptions_pkg.raise_message
35473            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_96');
35474 END AcctLineType_96;
35475 --
35476 
35477 ---------------------------------------
35478 --
35479 -- PRIVATE FUNCTION
35480 --         AcctLineType_97
35481 --
35482 ---------------------------------------
35483 PROCEDURE AcctLineType_97 (
35484   p_application_id        IN NUMBER
35488  ,p_actual_flag           IN OUT VARCHAR2
35485  ,p_event_id              IN NUMBER
35486  ,p_calculate_acctd_flag  IN VARCHAR2
35487  ,p_calculate_g_l_flag    IN VARCHAR2
35489  ,p_balance_type_code     OUT VARCHAR2
35490  ,p_gain_or_loss_ref      OUT VARCHAR2
35491  
35492 --Transaction Account
35493  , p_source_1            IN NUMBER
35494 --Journal Line Type
35495  , p_source_2            IN VARCHAR2
35496 --Entered Amount
35497  , p_source_3            IN NUMBER
35498 --First Distribution Identifier
35499  , p_source_5            IN NUMBER
35500 --Distribution Type
35501  , p_source_6            IN VARCHAR2
35502 --Currency Code
35503  , p_source_7            IN VARCHAR2
35504 --Currency Conversion Date
35505  , p_source_8            IN DATE
35506 --Currency Conversion Rate
35507  , p_source_9            IN NUMBER
35508 --Currency Conversion Type
35509  , p_source_10            IN VARCHAR2
35510 --Accounted Amount
35511  , p_source_11            IN NUMBER
35512 )
35513 IS
35514 
35515 l_component_type              VARCHAR2(80);
35516 l_component_code              VARCHAR2(30);
35517 l_component_type_code         VARCHAR2(1);
35518 l_component_appl_id           INTEGER;
35519 l_amb_context_code            VARCHAR2(30);
35520 l_entity_code                 VARCHAR2(30);
35521 l_event_class_code            VARCHAR2(30);
35522 l_ae_header_id                NUMBER;
35523 l_event_type_code             VARCHAR2(30);
35524 l_line_definition_code        VARCHAR2(30);
35525 l_line_definition_owner_code  VARCHAR2(1);
35526 --
35527 -- adr variables
35528 l_segment                     VARCHAR2(30);
35529 l_ccid                        NUMBER;
35530 l_adr_transaction_coa_id      NUMBER;
35531 l_adr_accounting_coa_id       NUMBER;
35532 l_adr_flexfield_segment_code  VARCHAR2(30);
35533 l_adr_flex_value_set_id       NUMBER;
35534 l_adr_value_type_code         VARCHAR2(30);
35535 l_adr_value_combination_id    NUMBER;
35536 l_adr_value_segment_code      VARCHAR2(30);
35537 
35538 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
35539 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
35540 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
35541 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
35542 
35543 -- 4262811 Variables ------------------------------------------------------------------------------------------
35544 l_entered_amt_idx             NUMBER;
35545 l_accted_amt_idx              NUMBER;
35546 l_acc_rev_flag                VARCHAR2(1);
35547 l_accrual_line_num            NUMBER;
35548 l_tmp_amt                     NUMBER;
35549 l_acc_rev_natural_side_code   VARCHAR2(1);
35550 
35551 l_num_entries                 NUMBER;
35552 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
35553 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
35554 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
35555 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
35556 l_recog_line_1                NUMBER;
35557 l_recog_line_2                NUMBER;
35558 
35559 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
35560 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
35561 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
35562 
35563 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35564 
35565 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
35566 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
35567 
35568 ---------------------------------------------------------------------------------------------------------------
35569 
35570 
35571 --
35572 -- bulk performance
35573 --
35574 l_balance_type_code           VARCHAR2(1);
35575 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
35576 l_log_module                  VARCHAR2(240);
35577 
35578 --
35579 -- Upgrade strategy
35580 --
35581 l_actual_upg_option           VARCHAR2(1);
35582 l_enc_upg_option           VARCHAR2(1);
35583 
35584 --
35585 BEGIN
35586 --
35587 IF g_log_enabled THEN
35588       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_97';
35589 END IF;
35590 --
35591 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35592 
35593       trace
35594          (p_msg      => 'BEGIN of AcctLineType_97'
35595          ,p_level    => C_LEVEL_PROCEDURE
35596          ,p_module   => l_log_module);
35597 
35598 END IF;
35599 --
35600 l_component_type             := 'AMB_JLT';
35601 l_component_code             := 'EXP';
35602 l_component_type_code        := 'S';
35603 l_component_appl_id          :=  555;
35604 l_amb_context_code           := 'DEFAULT';
35605 l_entity_code                := 'PURCHASING';
35606 l_event_class_code           := 'RECEIVE';
35607 l_event_type_code            := 'DELIVER_EXPENSE';
35608 l_line_definition_owner_code := 'S';
35609 l_line_definition_code       := 'DELIVER_EXPENSE';
35610 --
35611 l_balance_type_code          := 'A';
35612 l_segment                     := NULL;
35613 l_ccid                        := NULL;
35614 l_adr_transaction_coa_id      := NULL;
35615 l_adr_accounting_coa_id       := NULL;
35616 l_adr_flexfield_segment_code  := NULL;
35617 l_adr_flex_value_set_id       := NULL;
35618 l_adr_value_type_code         := NULL;
35622 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
35619 l_adr_value_combination_id    := NULL;
35620 l_adr_value_segment_code      := NULL;
35621 
35623 l_bflow_class_code           := '';    -- 4219869 Business Flow
35624 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
35625 l_budgetary_control_flag     := 'N';
35626 
35627 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35628 l_bflow_applied_to_amt       := NULL; -- 5132302
35629 l_entered_amt_idx            := NULL;          -- 4262811
35630 l_accted_amt_idx             := NULL;          -- 4262811
35631 l_acc_rev_flag               := NULL;          -- 4262811
35632 l_accrual_line_num           := NULL;          -- 4262811
35633 l_tmp_amt                    := NULL;          -- 4262811
35634 --
35635  
35636 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35637     l_balance_type_code <> 'B' THEN
35638 IF NVL(p_source_2,'
35639 ') =  'EXP'
35640  THEN 
35641 
35642    --
35643    XLA_AE_LINES_PKG.SetNewLine;
35644 
35645    p_balance_type_code          := l_balance_type_code;
35646    -- set the flag so later we will know whether the gain loss line needs to be created
35647    
35648    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35649      p_actual_flag :='A';
35650    END IF;
35651 
35652    --
35653    -- bulk performance
35654    --
35655    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35656                                       p_header_num   => 0); -- 4262811
35657    --
35658    -- set accounting line options
35659    --
35660    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35661            p_natural_side_code          => 'D'
35662          , p_gain_or_loss_flag          => 'N'
35663          , p_gl_transfer_mode_code      => 'D'
35664          , p_acct_entry_type_code       => 'A'
35665          , p_switch_side_flag           => 'Y'
35666          , p_merge_duplicate_code       => 'W'
35667          );
35668    --
35669    l_acc_rev_natural_side_code := 'C';  -- 4262811
35670    -- 
35671    --
35672    -- set accounting line type info
35673    --
35674    xla_ae_lines_pkg.SetAcctLineType
35675       (p_component_type             => l_component_type
35676       ,p_event_type_code            => l_event_type_code
35677       ,p_line_definition_owner_code => l_line_definition_owner_code
35678       ,p_line_definition_code       => l_line_definition_code
35679       ,p_accounting_line_code       => l_component_code
35680       ,p_accounting_line_type_code  => l_component_type_code
35681       ,p_accounting_line_appl_id    => l_component_appl_id
35682       ,p_amb_context_code           => l_amb_context_code
35683       ,p_entity_code                => l_entity_code
35684       ,p_event_class_code           => l_event_class_code);
35685    --
35686    -- set accounting class
35687    --
35688    xla_ae_lines_pkg.SetAcctClass(
35689            p_accounting_class_code  => 'EXPENSE'
35690          , p_ae_header_id           => l_ae_header_id
35691          );
35692 
35693    --
35694    -- set rounding class
35695    --
35696    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35697                       'EXPENSE';
35698 
35699    --
35700    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35701    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35702    --
35703    -- bulk performance
35704    --
35705    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35706 
35707    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35708       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35709 
35710    -- 4955764
35711    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35712       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35713 
35714    -- 4458381 Public Sector Enh
35715    
35716    --
35717    -- set accounting attributes for the line type
35718    --
35719    l_entered_amt_idx := 3;
35720    l_accted_amt_idx  := 8;
35721    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35722    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
35723    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
35724    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
35725    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
35726    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
35727    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
35728    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
35729    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
35730    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
35731    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
35732    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
35733    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
35734    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
35735    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
35736    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
35740    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35737    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
35738 
35739    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35741 
35742    ---------------------------------------------------------------------------------------------------------------
35743    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35744    ---------------------------------------------------------------------------------------------------------------
35745    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35746 
35747    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35748    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35749 
35750    IF xla_accounting_cache_pkg.GetValueChar
35751          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35752          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35753    AND l_bflow_method_code = 'PRIOR_ENTRY'
35754 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35755    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35756          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35757        )
35758    THEN
35759          xla_ae_lines_pkg.BflowUpgEntry
35760            (p_business_method_code    => l_bflow_method_code
35761            ,p_business_class_code     => l_bflow_class_code
35762            ,p_balance_type            => l_balance_type_code);
35763    ELSE
35764       NULL;
35765 -- No business flow processing for business flow method of NONE.
35766    END IF;
35767 
35768    --
35769    -- call analytical criteria
35770    --
35771    
35772    --
35773    -- call description
35774    --
35775    -- No description or it is inherited.
35776    --
35777    -- call ADRs
35778    -- Bug 4922099
35779    --
35780    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35781         (NVL(l_actual_upg_option, 'N') = 'O') OR
35782         (NVL(l_enc_upg_option, 'N') = 'O')
35783       )
35784    THEN
35785    NULL;
35786    --
35787    --
35788    
35789   l_ccid := AcctDerRule_12(
35790            p_application_id           => p_application_id
35791          , p_ae_header_id             => l_ae_header_id 
35792 , p_source_1 => p_source_1
35793 , p_source_2 => p_source_2
35794          , x_transaction_coa_id       => l_adr_transaction_coa_id
35795          , x_accounting_coa_id        => l_adr_accounting_coa_id
35796          , x_value_type_code          => l_adr_value_type_code
35797          , p_side                     => 'NA'
35798    );
35799 
35800    xla_ae_lines_pkg.set_ccid(
35801     p_code_combination_id          => l_ccid
35802   , p_value_type_code              => l_adr_value_type_code
35803   , p_transaction_coa_id           => l_adr_transaction_coa_id
35804   , p_accounting_coa_id            => l_adr_accounting_coa_id
35805   , p_adr_code                     => 'EXP'
35806   , p_adr_type_code                => 'S'
35807   , p_component_type               => l_component_type
35808   , p_component_code               => l_component_code
35809   , p_component_type_code          => l_component_type_code
35810   , p_component_appl_id            => l_component_appl_id
35811   , p_amb_context_code             => l_amb_context_code
35812   , p_side                         => 'NA'
35813   );
35814 
35815 
35816    --
35817    --
35818    END IF;
35819    --
35820    -- Bug 4922099
35821    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35822           (NVL(l_enc_upg_option, 'N') = 'O')
35823         ) AND
35824         (l_bflow_method_code = 'PRIOR_ENTRY')
35825       )
35826    THEN
35827       IF
35828       --
35829       1 = 2
35830       --
35831       THEN
35832       xla_accounting_err_pkg.build_message
35833                                     (p_appli_s_name            => 'XLA'
35834                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35835                                     ,p_token_1                 => 'LINE_NUMBER'
35836                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35837                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35838                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35839                                                                              l_component_type
35840                                                                             ,l_component_code
35841                                                                             ,l_component_type_code
35842                                                                             ,l_component_appl_id
35843                                                                             ,l_amb_context_code
35844                                                                             ,l_entity_code
35845                                                                             ,l_event_class_code
35846                                                                            )
35847                                     ,p_token_3                 => 'OWNER'
35848                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35852                                     ,p_token_4                 => 'PRODUCT_NAME'
35849                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35850                                                                           ,p_lookup_code    => l_component_type_code
35851                                                                          )
35853                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35854                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35855                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35856                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35857                                     ,p_ae_header_id            =>  NULL
35858                                        );
35859 
35860         IF (C_LEVEL_ERROR>= g_log_level) THEN
35861                  trace
35862                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35863                       ,p_level    => C_LEVEL_ERROR
35864                       ,p_module   => l_log_module);
35865         END IF;
35866       END IF;
35867    END IF;
35868    --
35869    --
35870    ------------------------------------------------------------------------------------------------
35871    -- 4219869 Business Flow
35872    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35873    -- Prior Entry.  Currently, the following code is always generated.
35874    ------------------------------------------------------------------------------------------------
35875    XLA_AE_LINES_PKG.ValidateCurrentLine;
35876 
35877    ------------------------------------------------------------------------------------
35878    -- 4219869 Business Flow
35879    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35880    ------------------------------------------------------------------------------------
35881    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35882 
35883    ----------------------------------------------------------------------------------
35884    -- 4219869 Business Flow
35885    -- Update journal entry status -- Need to generate this within IF <condition>
35886    ----------------------------------------------------------------------------------
35887    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35888          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35889          ,p_balance_type_code => l_balance_type_code
35890          );
35891 
35892    -------------------------------------------------------------------------------------------
35893    -- 4262811 - Generate the Accrual Reversal lines
35894    -------------------------------------------------------------------------------------------
35895    BEGIN
35896       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35897                               (g_array_event(p_event_id).array_value_num('header_index'));
35898       IF l_acc_rev_flag IS NULL THEN
35899          l_acc_rev_flag := 'N';
35900       END IF;
35901    EXCEPTION
35902       WHEN OTHERS THEN
35903          l_acc_rev_flag := 'N';
35904    END;
35905    --
35906    IF (l_acc_rev_flag = 'Y') THEN
35907 
35908        -- 4645092  ------------------------------------------------------------------------------
35909        -- To allow MPA report to determine if it should generate report process
35910        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35911        ------------------------------------------------------------------------------------------
35912 
35913        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35914        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35915    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
35916    -- call ADRs
35917    -- Bug 4922099
35918    --
35919    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35920         (NVL(l_actual_upg_option, 'N') = 'O') OR
35921         (NVL(l_enc_upg_option, 'N') = 'O')
35922       )
35923    THEN
35924    NULL;
35925    --
35926    --
35927    
35928   l_ccid := AcctDerRule_12(
35929            p_application_id           => p_application_id
35930          , p_ae_header_id             => l_ae_header_id 
35931 , p_source_1 => p_source_1
35932 , p_source_2 => p_source_2
35933          , x_transaction_coa_id       => l_adr_transaction_coa_id
35934          , x_accounting_coa_id        => l_adr_accounting_coa_id
35935          , x_value_type_code          => l_adr_value_type_code
35936          , p_side                     => 'NA'
35937    );
35938 
35939    xla_ae_lines_pkg.set_ccid(
35940     p_code_combination_id          => l_ccid
35941   , p_value_type_code              => l_adr_value_type_code
35942   , p_transaction_coa_id           => l_adr_transaction_coa_id
35943   , p_accounting_coa_id            => l_adr_accounting_coa_id
35944   , p_adr_code                     => 'EXP'
35945   , p_adr_type_code                => 'S'
35946   , p_component_type               => l_component_type
35947   , p_component_code               => l_component_code
35948   , p_component_type_code          => l_component_type_code
35949   , p_component_appl_id            => l_component_appl_id
35950   , p_amb_context_code             => l_amb_context_code
35954 
35951   , p_side                         => 'NA'
35952   );
35953 
35955    --
35956    --
35957    END IF;
35958 
35959        --
35960        -- Update the line information that should be overwritten
35961        --
35962        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35963                                          p_header_num   => 1);
35964        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35965 
35966        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35967 
35968        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35969           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35970        END IF;
35971 
35972       --
35973       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35974       --
35975       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35976           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35977       ELSE
35978           ---------------------------------------------------------------------------------------------------
35979           -- 4262811a Switch Sign
35980           ---------------------------------------------------------------------------------------------------
35981           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35982           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35983                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35984           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35985                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35986           -- 5132302
35987           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35988                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35989 
35990       END IF;
35991 
35992       -- 4955764
35993       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35994       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35995 
35996 
35997       XLA_AE_LINES_PKG.ValidateCurrentLine;
35998       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35999 
36000       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36001                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36002                ,p_balance_type_code => l_balance_type_code);
36003 
36004    END IF;
36005 
36006    -----------------------------------------------------------------------------------------
36007    -- 4262811 Multiperiod Accounting
36008    -----------------------------------------------------------------------------------------
36009      -- No MPA option is assigned.
36010 
36011 
36012 END IF;
36013 END IF;
36014 --
36015 
36016 --
36017 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36018    trace
36019       (p_msg      => 'END of AcctLineType_97'
36020       ,p_level    => C_LEVEL_PROCEDURE
36021       ,p_module   => l_log_module);
36022 END IF;
36023 --
36024 EXCEPTION
36025   WHEN xla_exceptions_pkg.application_exception THEN
36026       RAISE;
36027   WHEN OTHERS THEN
36028        xla_exceptions_pkg.raise_message
36029            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_97');
36030 END AcctLineType_97;
36031 --
36032 
36033 ---------------------------------------
36034 --
36035 -- PRIVATE FUNCTION
36036 --         AcctLineType_98
36037 --
36038 ---------------------------------------
36039 PROCEDURE AcctLineType_98 (
36040   p_application_id        IN NUMBER
36041  ,p_event_id              IN NUMBER
36042  ,p_calculate_acctd_flag  IN VARCHAR2
36043  ,p_calculate_g_l_flag    IN VARCHAR2
36044  ,p_actual_flag           IN OUT VARCHAR2
36045  ,p_balance_type_code     OUT VARCHAR2
36046  ,p_gain_or_loss_ref      OUT VARCHAR2
36047  
36048 --Transaction Account
36049  , p_source_1            IN NUMBER
36050 --Journal Line Type
36051  , p_source_2            IN VARCHAR2
36052 --Entered Amount
36053  , p_source_3            IN NUMBER
36054 --First Distribution Identifier
36055  , p_source_5            IN NUMBER
36056 --Distribution Type
36057  , p_source_6            IN VARCHAR2
36058 --Currency Code
36059  , p_source_7            IN VARCHAR2
36060 --Currency Conversion Date
36061  , p_source_8            IN DATE
36062 --Currency Conversion Rate
36063  , p_source_9            IN NUMBER
36064 --Currency Conversion Type
36065  , p_source_10            IN VARCHAR2
36066 --Accounted Amount
36067  , p_source_11            IN NUMBER
36068 )
36069 IS
36070 
36071 l_component_type              VARCHAR2(80);
36072 l_component_code              VARCHAR2(30);
36073 l_component_type_code         VARCHAR2(1);
36074 l_component_appl_id           INTEGER;
36075 l_amb_context_code            VARCHAR2(30);
36076 l_entity_code                 VARCHAR2(30);
36077 l_event_class_code            VARCHAR2(30);
36078 l_ae_header_id                NUMBER;
36082 --
36079 l_event_type_code             VARCHAR2(30);
36080 l_line_definition_code        VARCHAR2(30);
36081 l_line_definition_owner_code  VARCHAR2(1);
36083 -- adr variables
36084 l_segment                     VARCHAR2(30);
36085 l_ccid                        NUMBER;
36086 l_adr_transaction_coa_id      NUMBER;
36087 l_adr_accounting_coa_id       NUMBER;
36088 l_adr_flexfield_segment_code  VARCHAR2(30);
36089 l_adr_flex_value_set_id       NUMBER;
36090 l_adr_value_type_code         VARCHAR2(30);
36091 l_adr_value_combination_id    NUMBER;
36092 l_adr_value_segment_code      VARCHAR2(30);
36093 
36094 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
36095 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
36096 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
36097 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
36098 
36099 -- 4262811 Variables ------------------------------------------------------------------------------------------
36100 l_entered_amt_idx             NUMBER;
36101 l_accted_amt_idx              NUMBER;
36102 l_acc_rev_flag                VARCHAR2(1);
36103 l_accrual_line_num            NUMBER;
36104 l_tmp_amt                     NUMBER;
36105 l_acc_rev_natural_side_code   VARCHAR2(1);
36106 
36107 l_num_entries                 NUMBER;
36108 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
36109 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
36110 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
36111 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
36112 l_recog_line_1                NUMBER;
36113 l_recog_line_2                NUMBER;
36114 
36115 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
36116 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
36117 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
36118 
36119 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36120 
36121 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
36122 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
36123 
36124 ---------------------------------------------------------------------------------------------------------------
36125 
36126 
36127 --
36128 -- bulk performance
36129 --
36130 l_balance_type_code           VARCHAR2(1);
36131 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
36132 l_log_module                  VARCHAR2(240);
36133 
36134 --
36135 -- Upgrade strategy
36136 --
36137 l_actual_upg_option           VARCHAR2(1);
36138 l_enc_upg_option           VARCHAR2(1);
36139 
36140 --
36141 BEGIN
36142 --
36143 IF g_log_enabled THEN
36144       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_98';
36145 END IF;
36146 --
36147 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36148 
36149       trace
36150          (p_msg      => 'BEGIN of AcctLineType_98'
36151          ,p_level    => C_LEVEL_PROCEDURE
36152          ,p_module   => l_log_module);
36153 
36154 END IF;
36155 --
36156 l_component_type             := 'AMB_JLT';
36157 l_component_code             := 'EXP';
36158 l_component_type_code        := 'S';
36159 l_component_appl_id          :=  555;
36160 l_amb_context_code           := 'DEFAULT';
36161 l_entity_code                := 'INVENTORY';
36162 l_event_class_code           := 'DIR_INTERORG_SHIP';
36163 l_event_type_code            := 'DIR_INTERORG_SHIP';
36164 l_line_definition_owner_code := 'S';
36165 l_line_definition_code       := 'DIRECT_XFER_SHIP';
36166 --
36167 l_balance_type_code          := 'A';
36168 l_segment                     := NULL;
36169 l_ccid                        := NULL;
36170 l_adr_transaction_coa_id      := NULL;
36171 l_adr_accounting_coa_id       := NULL;
36172 l_adr_flexfield_segment_code  := NULL;
36173 l_adr_flex_value_set_id       := NULL;
36174 l_adr_value_type_code         := NULL;
36175 l_adr_value_combination_id    := NULL;
36176 l_adr_value_segment_code      := NULL;
36177 
36178 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
36179 l_bflow_class_code           := '';    -- 4219869 Business Flow
36180 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
36181 l_budgetary_control_flag     := 'N';
36182 
36183 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
36184 l_bflow_applied_to_amt       := NULL; -- 5132302
36185 l_entered_amt_idx            := NULL;          -- 4262811
36186 l_accted_amt_idx             := NULL;          -- 4262811
36187 l_acc_rev_flag               := NULL;          -- 4262811
36188 l_accrual_line_num           := NULL;          -- 4262811
36189 l_tmp_amt                    := NULL;          -- 4262811
36190 --
36191  
36192 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36193     l_balance_type_code <> 'B' THEN
36194 IF NVL(p_source_2,'
36195 ') =  'EXP'
36196  THEN 
36197 
36198    --
36199    XLA_AE_LINES_PKG.SetNewLine;
36200 
36201    p_balance_type_code          := l_balance_type_code;
36202    -- set the flag so later we will know whether the gain loss line needs to be created
36203    
36204    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36205      p_actual_flag :='A';
36206    END IF;
36207 
36208    --
36212                                       p_header_num   => 0); -- 4262811
36209    -- bulk performance
36210    --
36211    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36213    --
36214    -- set accounting line options
36215    --
36216    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36217            p_natural_side_code          => 'D'
36218          , p_gain_or_loss_flag          => 'N'
36219          , p_gl_transfer_mode_code      => 'D'
36220          , p_acct_entry_type_code       => 'A'
36221          , p_switch_side_flag           => 'Y'
36222          , p_merge_duplicate_code       => 'W'
36223          );
36224    --
36225    l_acc_rev_natural_side_code := 'C';  -- 4262811
36226    -- 
36227    --
36228    -- set accounting line type info
36229    --
36230    xla_ae_lines_pkg.SetAcctLineType
36231       (p_component_type             => l_component_type
36232       ,p_event_type_code            => l_event_type_code
36233       ,p_line_definition_owner_code => l_line_definition_owner_code
36234       ,p_line_definition_code       => l_line_definition_code
36235       ,p_accounting_line_code       => l_component_code
36236       ,p_accounting_line_type_code  => l_component_type_code
36237       ,p_accounting_line_appl_id    => l_component_appl_id
36238       ,p_amb_context_code           => l_amb_context_code
36239       ,p_entity_code                => l_entity_code
36240       ,p_event_class_code           => l_event_class_code);
36241    --
36242    -- set accounting class
36243    --
36244    xla_ae_lines_pkg.SetAcctClass(
36245            p_accounting_class_code  => 'EXPENSE'
36246          , p_ae_header_id           => l_ae_header_id
36247          );
36248 
36249    --
36250    -- set rounding class
36251    --
36252    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36253                       'EXPENSE';
36254 
36255    --
36256    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36257    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36258    --
36259    -- bulk performance
36260    --
36261    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36262 
36263    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36264       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36265 
36266    -- 4955764
36267    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36268       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36269 
36270    -- 4458381 Public Sector Enh
36271    
36272    --
36273    -- set accounting attributes for the line type
36274    --
36275    l_entered_amt_idx := 3;
36276    l_accted_amt_idx  := 8;
36277    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
36278    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
36279    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
36280    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
36281    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
36282    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
36283    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
36284    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
36285    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
36286    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
36287    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
36288    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
36289    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
36290    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
36291    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
36292    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
36293    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
36294 
36295    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36296    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36297 
36298    ---------------------------------------------------------------------------------------------------------------
36299    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36300    ---------------------------------------------------------------------------------------------------------------
36301    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36302 
36303    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36304    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36305 
36306    IF xla_accounting_cache_pkg.GetValueChar
36307          (p_source_code         => 'LEDGER_CATEGORY_CODE'
36308          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36309    AND l_bflow_method_code = 'PRIOR_ENTRY'
36310 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36311    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36312          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36313        )
36314    THEN
36315          xla_ae_lines_pkg.BflowUpgEntry
36319    ELSE
36316            (p_business_method_code    => l_bflow_method_code
36317            ,p_business_class_code     => l_bflow_class_code
36318            ,p_balance_type            => l_balance_type_code);
36320       NULL;
36321 -- No business flow processing for business flow method of NONE.
36322    END IF;
36323 
36324    --
36325    -- call analytical criteria
36326    --
36327    
36328    --
36329    -- call description
36330    --
36331    -- No description or it is inherited.
36332    --
36333    -- call ADRs
36334    -- Bug 4922099
36335    --
36336    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36337         (NVL(l_actual_upg_option, 'N') = 'O') OR
36338         (NVL(l_enc_upg_option, 'N') = 'O')
36339       )
36340    THEN
36341    NULL;
36342    --
36343    --
36344    
36345   l_ccid := AcctDerRule_12(
36346            p_application_id           => p_application_id
36347          , p_ae_header_id             => l_ae_header_id 
36348 , p_source_1 => p_source_1
36349 , p_source_2 => p_source_2
36350          , x_transaction_coa_id       => l_adr_transaction_coa_id
36351          , x_accounting_coa_id        => l_adr_accounting_coa_id
36352          , x_value_type_code          => l_adr_value_type_code
36353          , p_side                     => 'NA'
36354    );
36355 
36356    xla_ae_lines_pkg.set_ccid(
36357     p_code_combination_id          => l_ccid
36358   , p_value_type_code              => l_adr_value_type_code
36359   , p_transaction_coa_id           => l_adr_transaction_coa_id
36360   , p_accounting_coa_id            => l_adr_accounting_coa_id
36361   , p_adr_code                     => 'EXP'
36362   , p_adr_type_code                => 'S'
36363   , p_component_type               => l_component_type
36364   , p_component_code               => l_component_code
36365   , p_component_type_code          => l_component_type_code
36366   , p_component_appl_id            => l_component_appl_id
36367   , p_amb_context_code             => l_amb_context_code
36368   , p_side                         => 'NA'
36369   );
36370 
36371 
36372    --
36373    --
36374    END IF;
36375    --
36376    -- Bug 4922099
36377    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36378           (NVL(l_enc_upg_option, 'N') = 'O')
36379         ) AND
36380         (l_bflow_method_code = 'PRIOR_ENTRY')
36381       )
36382    THEN
36383       IF
36384       --
36385       1 = 2
36386       --
36387       THEN
36388       xla_accounting_err_pkg.build_message
36389                                     (p_appli_s_name            => 'XLA'
36390                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36391                                     ,p_token_1                 => 'LINE_NUMBER'
36392                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36393                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36394                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36395                                                                              l_component_type
36396                                                                             ,l_component_code
36397                                                                             ,l_component_type_code
36398                                                                             ,l_component_appl_id
36399                                                                             ,l_amb_context_code
36400                                                                             ,l_entity_code
36401                                                                             ,l_event_class_code
36402                                                                            )
36403                                     ,p_token_3                 => 'OWNER'
36404                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36405                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36406                                                                           ,p_lookup_code    => l_component_type_code
36407                                                                          )
36408                                     ,p_token_4                 => 'PRODUCT_NAME'
36409                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36410                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36411                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36412                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36413                                     ,p_ae_header_id            =>  NULL
36414                                        );
36415 
36416         IF (C_LEVEL_ERROR>= g_log_level) THEN
36417                  trace
36418                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36419                       ,p_level    => C_LEVEL_ERROR
36420                       ,p_module   => l_log_module);
36421         END IF;
36422       END IF;
36423    END IF;
36424    --
36425    --
36426    ------------------------------------------------------------------------------------------------
36427    -- 4219869 Business Flow
36428    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36432 
36429    -- Prior Entry.  Currently, the following code is always generated.
36430    ------------------------------------------------------------------------------------------------
36431    XLA_AE_LINES_PKG.ValidateCurrentLine;
36433    ------------------------------------------------------------------------------------
36434    -- 4219869 Business Flow
36435    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36436    ------------------------------------------------------------------------------------
36437    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36438 
36439    ----------------------------------------------------------------------------------
36440    -- 4219869 Business Flow
36441    -- Update journal entry status -- Need to generate this within IF <condition>
36442    ----------------------------------------------------------------------------------
36443    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36444          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36445          ,p_balance_type_code => l_balance_type_code
36446          );
36447 
36448    -------------------------------------------------------------------------------------------
36449    -- 4262811 - Generate the Accrual Reversal lines
36450    -------------------------------------------------------------------------------------------
36451    BEGIN
36452       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36453                               (g_array_event(p_event_id).array_value_num('header_index'));
36454       IF l_acc_rev_flag IS NULL THEN
36455          l_acc_rev_flag := 'N';
36456       END IF;
36457    EXCEPTION
36458       WHEN OTHERS THEN
36459          l_acc_rev_flag := 'N';
36460    END;
36461    --
36462    IF (l_acc_rev_flag = 'Y') THEN
36463 
36464        -- 4645092  ------------------------------------------------------------------------------
36465        -- To allow MPA report to determine if it should generate report process
36466        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36467        ------------------------------------------------------------------------------------------
36468 
36469        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36470        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36471    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
36472    -- call ADRs
36473    -- Bug 4922099
36474    --
36475    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36476         (NVL(l_actual_upg_option, 'N') = 'O') OR
36477         (NVL(l_enc_upg_option, 'N') = 'O')
36478       )
36479    THEN
36480    NULL;
36481    --
36482    --
36483    
36484   l_ccid := AcctDerRule_12(
36485            p_application_id           => p_application_id
36486          , p_ae_header_id             => l_ae_header_id 
36487 , p_source_1 => p_source_1
36488 , p_source_2 => p_source_2
36489          , x_transaction_coa_id       => l_adr_transaction_coa_id
36490          , x_accounting_coa_id        => l_adr_accounting_coa_id
36491          , x_value_type_code          => l_adr_value_type_code
36492          , p_side                     => 'NA'
36493    );
36494 
36495    xla_ae_lines_pkg.set_ccid(
36496     p_code_combination_id          => l_ccid
36497   , p_value_type_code              => l_adr_value_type_code
36498   , p_transaction_coa_id           => l_adr_transaction_coa_id
36499   , p_accounting_coa_id            => l_adr_accounting_coa_id
36500   , p_adr_code                     => 'EXP'
36501   , p_adr_type_code                => 'S'
36502   , p_component_type               => l_component_type
36503   , p_component_code               => l_component_code
36504   , p_component_type_code          => l_component_type_code
36505   , p_component_appl_id            => l_component_appl_id
36506   , p_amb_context_code             => l_amb_context_code
36507   , p_side                         => 'NA'
36508   );
36509 
36510 
36511    --
36512    --
36513    END IF;
36514 
36515        --
36516        -- Update the line information that should be overwritten
36517        --
36518        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36519                                          p_header_num   => 1);
36520        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
36521 
36522        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36523 
36524        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
36525           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36526        END IF;
36527 
36528       --
36529       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36530       --
36531       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36532           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
36533       ELSE
36534           ---------------------------------------------------------------------------------------------------
36535           -- 4262811a Switch Sign
36536           ---------------------------------------------------------------------------------------------------
36537           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
36541                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36538           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36539                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36540           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36542           -- 5132302
36543           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36544                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36545 
36546       END IF;
36547 
36548       -- 4955764
36549       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36550       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36551 
36552 
36553       XLA_AE_LINES_PKG.ValidateCurrentLine;
36554       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36555 
36556       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36557                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36558                ,p_balance_type_code => l_balance_type_code);
36559 
36560    END IF;
36561 
36562    -----------------------------------------------------------------------------------------
36563    -- 4262811 Multiperiod Accounting
36564    -----------------------------------------------------------------------------------------
36565      -- No MPA option is assigned.
36566 
36567 
36568 END IF;
36569 END IF;
36570 --
36571 
36572 --
36573 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36574    trace
36575       (p_msg      => 'END of AcctLineType_98'
36576       ,p_level    => C_LEVEL_PROCEDURE
36577       ,p_module   => l_log_module);
36578 END IF;
36579 --
36580 EXCEPTION
36581   WHEN xla_exceptions_pkg.application_exception THEN
36582       RAISE;
36583   WHEN OTHERS THEN
36584        xla_exceptions_pkg.raise_message
36585            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_98');
36586 END AcctLineType_98;
36587 --
36588 
36589 ---------------------------------------
36590 --
36591 -- PRIVATE FUNCTION
36592 --         AcctLineType_99
36593 --
36594 ---------------------------------------
36595 PROCEDURE AcctLineType_99 (
36596   p_application_id        IN NUMBER
36597  ,p_event_id              IN NUMBER
36598  ,p_calculate_acctd_flag  IN VARCHAR2
36599  ,p_calculate_g_l_flag    IN VARCHAR2
36600  ,p_actual_flag           IN OUT VARCHAR2
36601  ,p_balance_type_code     OUT VARCHAR2
36602  ,p_gain_or_loss_ref      OUT VARCHAR2
36603  
36604 --Transaction Account
36605  , p_source_1            IN NUMBER
36606 --Journal Line Type
36607  , p_source_2            IN VARCHAR2
36608 --Entered Amount
36609  , p_source_3            IN NUMBER
36610 --First Distribution Identifier
36611  , p_source_5            IN NUMBER
36612 --Distribution Type
36613  , p_source_6            IN VARCHAR2
36614 --Currency Code
36615  , p_source_7            IN VARCHAR2
36616 --Currency Conversion Date
36617  , p_source_8            IN DATE
36618 --Currency Conversion Rate
36619  , p_source_9            IN NUMBER
36620 --Currency Conversion Type
36621  , p_source_10            IN VARCHAR2
36622 --Accounted Amount
36623  , p_source_11            IN NUMBER
36624 )
36625 IS
36626 
36627 l_component_type              VARCHAR2(80);
36628 l_component_code              VARCHAR2(30);
36629 l_component_type_code         VARCHAR2(1);
36630 l_component_appl_id           INTEGER;
36631 l_amb_context_code            VARCHAR2(30);
36632 l_entity_code                 VARCHAR2(30);
36633 l_event_class_code            VARCHAR2(30);
36634 l_ae_header_id                NUMBER;
36635 l_event_type_code             VARCHAR2(30);
36636 l_line_definition_code        VARCHAR2(30);
36637 l_line_definition_owner_code  VARCHAR2(1);
36638 --
36639 -- adr variables
36640 l_segment                     VARCHAR2(30);
36641 l_ccid                        NUMBER;
36642 l_adr_transaction_coa_id      NUMBER;
36643 l_adr_accounting_coa_id       NUMBER;
36644 l_adr_flexfield_segment_code  VARCHAR2(30);
36645 l_adr_flex_value_set_id       NUMBER;
36646 l_adr_value_type_code         VARCHAR2(30);
36647 l_adr_value_combination_id    NUMBER;
36648 l_adr_value_segment_code      VARCHAR2(30);
36649 
36650 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
36651 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
36652 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
36653 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
36654 
36655 -- 4262811 Variables ------------------------------------------------------------------------------------------
36656 l_entered_amt_idx             NUMBER;
36657 l_accted_amt_idx              NUMBER;
36658 l_acc_rev_flag                VARCHAR2(1);
36659 l_accrual_line_num            NUMBER;
36660 l_tmp_amt                     NUMBER;
36661 l_acc_rev_natural_side_code   VARCHAR2(1);
36662 
36663 l_num_entries                 NUMBER;
36664 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
36665 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
36666 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
36670 
36667 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
36668 l_recog_line_1                NUMBER;
36669 l_recog_line_2                NUMBER;
36671 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
36672 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
36673 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
36674 
36675 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36676 
36677 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
36678 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
36679 
36680 ---------------------------------------------------------------------------------------------------------------
36681 
36682 
36683 --
36684 -- bulk performance
36685 --
36686 l_balance_type_code           VARCHAR2(1);
36687 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
36688 l_log_module                  VARCHAR2(240);
36689 
36690 --
36691 -- Upgrade strategy
36692 --
36693 l_actual_upg_option           VARCHAR2(1);
36694 l_enc_upg_option           VARCHAR2(1);
36695 
36696 --
36697 BEGIN
36698 --
36699 IF g_log_enabled THEN
36700       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_99';
36701 END IF;
36702 --
36703 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36704 
36705       trace
36706          (p_msg      => 'BEGIN of AcctLineType_99'
36707          ,p_level    => C_LEVEL_PROCEDURE
36708          ,p_module   => l_log_module);
36709 
36710 END IF;
36711 --
36712 l_component_type             := 'AMB_JLT';
36713 l_component_code             := 'EXP';
36714 l_component_type_code        := 'S';
36715 l_component_appl_id          :=  555;
36716 l_amb_context_code           := 'DEFAULT';
36717 l_entity_code                := 'INVENTORY';
36718 l_event_class_code           := 'FOB_RCPT_SENDER_SHIP';
36719 l_event_type_code            := 'FOB_RCPT_SENDER_SHIP';
36720 l_line_definition_owner_code := 'S';
36721 l_line_definition_code       := 'FOB_RCPT_SENDER_SHIP';
36722 --
36723 l_balance_type_code          := 'A';
36724 l_segment                     := NULL;
36725 l_ccid                        := NULL;
36726 l_adr_transaction_coa_id      := NULL;
36727 l_adr_accounting_coa_id       := NULL;
36728 l_adr_flexfield_segment_code  := NULL;
36729 l_adr_flex_value_set_id       := NULL;
36730 l_adr_value_type_code         := NULL;
36731 l_adr_value_combination_id    := NULL;
36732 l_adr_value_segment_code      := NULL;
36733 
36734 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
36735 l_bflow_class_code           := '';    -- 4219869 Business Flow
36736 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
36737 l_budgetary_control_flag     := 'N';
36738 
36739 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
36740 l_bflow_applied_to_amt       := NULL; -- 5132302
36741 l_entered_amt_idx            := NULL;          -- 4262811
36742 l_accted_amt_idx             := NULL;          -- 4262811
36743 l_acc_rev_flag               := NULL;          -- 4262811
36744 l_accrual_line_num           := NULL;          -- 4262811
36745 l_tmp_amt                    := NULL;          -- 4262811
36746 --
36747  
36748 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36749     l_balance_type_code <> 'B' THEN
36750 IF NVL(p_source_2,'
36751 ') =  'EXP'
36752  THEN 
36753 
36754    --
36755    XLA_AE_LINES_PKG.SetNewLine;
36756 
36757    p_balance_type_code          := l_balance_type_code;
36758    -- set the flag so later we will know whether the gain loss line needs to be created
36759    
36760    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36761      p_actual_flag :='A';
36762    END IF;
36763 
36764    --
36765    -- bulk performance
36766    --
36767    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36768                                       p_header_num   => 0); -- 4262811
36769    --
36770    -- set accounting line options
36771    --
36772    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36773            p_natural_side_code          => 'D'
36774          , p_gain_or_loss_flag          => 'N'
36775          , p_gl_transfer_mode_code      => 'D'
36776          , p_acct_entry_type_code       => 'A'
36777          , p_switch_side_flag           => 'Y'
36778          , p_merge_duplicate_code       => 'W'
36779          );
36780    --
36781    l_acc_rev_natural_side_code := 'C';  -- 4262811
36782    -- 
36783    --
36784    -- set accounting line type info
36785    --
36786    xla_ae_lines_pkg.SetAcctLineType
36787       (p_component_type             => l_component_type
36788       ,p_event_type_code            => l_event_type_code
36789       ,p_line_definition_owner_code => l_line_definition_owner_code
36790       ,p_line_definition_code       => l_line_definition_code
36791       ,p_accounting_line_code       => l_component_code
36792       ,p_accounting_line_type_code  => l_component_type_code
36793       ,p_accounting_line_appl_id    => l_component_appl_id
36794       ,p_amb_context_code           => l_amb_context_code
36795       ,p_entity_code                => l_entity_code
36796       ,p_event_class_code           => l_event_class_code);
36797    --
36798    -- set accounting class
36799    --
36803          );
36800    xla_ae_lines_pkg.SetAcctClass(
36801            p_accounting_class_code  => 'EXPENSE'
36802          , p_ae_header_id           => l_ae_header_id
36804 
36805    --
36806    -- set rounding class
36807    --
36808    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36809                       'EXPENSE';
36810 
36811    --
36812    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36813    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36814    --
36815    -- bulk performance
36816    --
36817    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36818 
36819    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36820       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36821 
36822    -- 4955764
36823    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36824       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36825 
36826    -- 4458381 Public Sector Enh
36827    
36828    --
36829    -- set accounting attributes for the line type
36830    --
36831    l_entered_amt_idx := 3;
36832    l_accted_amt_idx  := 8;
36833    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
36834    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
36835    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
36836    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
36837    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
36838    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
36839    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
36840    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
36841    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
36842    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
36843    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
36844    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
36845    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
36846    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
36847    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
36848    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
36849    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
36850 
36851    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36852    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36853 
36854    ---------------------------------------------------------------------------------------------------------------
36855    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36856    ---------------------------------------------------------------------------------------------------------------
36857    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36858 
36859    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36860    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36861 
36862    IF xla_accounting_cache_pkg.GetValueChar
36863          (p_source_code         => 'LEDGER_CATEGORY_CODE'
36864          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36865    AND l_bflow_method_code = 'PRIOR_ENTRY'
36866 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36867    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36868          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36869        )
36870    THEN
36871          xla_ae_lines_pkg.BflowUpgEntry
36872            (p_business_method_code    => l_bflow_method_code
36873            ,p_business_class_code     => l_bflow_class_code
36874            ,p_balance_type            => l_balance_type_code);
36875    ELSE
36876       NULL;
36877 -- No business flow processing for business flow method of NONE.
36878    END IF;
36879 
36880    --
36881    -- call analytical criteria
36882    --
36883    
36884    --
36885    -- call description
36886    --
36887    -- No description or it is inherited.
36888    --
36889    -- call ADRs
36890    -- Bug 4922099
36891    --
36892    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36893         (NVL(l_actual_upg_option, 'N') = 'O') OR
36894         (NVL(l_enc_upg_option, 'N') = 'O')
36895       )
36896    THEN
36897    NULL;
36898    --
36899    --
36900    
36901   l_ccid := AcctDerRule_12(
36902            p_application_id           => p_application_id
36903          , p_ae_header_id             => l_ae_header_id 
36904 , p_source_1 => p_source_1
36905 , p_source_2 => p_source_2
36906          , x_transaction_coa_id       => l_adr_transaction_coa_id
36907          , x_accounting_coa_id        => l_adr_accounting_coa_id
36908          , x_value_type_code          => l_adr_value_type_code
36909          , p_side                     => 'NA'
36910    );
36911 
36912    xla_ae_lines_pkg.set_ccid(
36913     p_code_combination_id          => l_ccid
36914   , p_value_type_code              => l_adr_value_type_code
36915   , p_transaction_coa_id           => l_adr_transaction_coa_id
36919   , p_component_type               => l_component_type
36916   , p_accounting_coa_id            => l_adr_accounting_coa_id
36917   , p_adr_code                     => 'EXP'
36918   , p_adr_type_code                => 'S'
36920   , p_component_code               => l_component_code
36921   , p_component_type_code          => l_component_type_code
36922   , p_component_appl_id            => l_component_appl_id
36923   , p_amb_context_code             => l_amb_context_code
36924   , p_side                         => 'NA'
36925   );
36926 
36927 
36928    --
36929    --
36930    END IF;
36931    --
36932    -- Bug 4922099
36933    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36934           (NVL(l_enc_upg_option, 'N') = 'O')
36935         ) AND
36936         (l_bflow_method_code = 'PRIOR_ENTRY')
36937       )
36938    THEN
36939       IF
36940       --
36941       1 = 2
36942       --
36943       THEN
36944       xla_accounting_err_pkg.build_message
36945                                     (p_appli_s_name            => 'XLA'
36946                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36947                                     ,p_token_1                 => 'LINE_NUMBER'
36948                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36949                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36950                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36951                                                                              l_component_type
36952                                                                             ,l_component_code
36953                                                                             ,l_component_type_code
36954                                                                             ,l_component_appl_id
36955                                                                             ,l_amb_context_code
36956                                                                             ,l_entity_code
36957                                                                             ,l_event_class_code
36958                                                                            )
36959                                     ,p_token_3                 => 'OWNER'
36960                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36961                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36962                                                                           ,p_lookup_code    => l_component_type_code
36963                                                                          )
36964                                     ,p_token_4                 => 'PRODUCT_NAME'
36965                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36966                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36967                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36968                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36969                                     ,p_ae_header_id            =>  NULL
36970                                        );
36971 
36972         IF (C_LEVEL_ERROR>= g_log_level) THEN
36973                  trace
36974                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36975                       ,p_level    => C_LEVEL_ERROR
36976                       ,p_module   => l_log_module);
36977         END IF;
36978       END IF;
36979    END IF;
36980    --
36981    --
36982    ------------------------------------------------------------------------------------------------
36983    -- 4219869 Business Flow
36984    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36985    -- Prior Entry.  Currently, the following code is always generated.
36986    ------------------------------------------------------------------------------------------------
36987    XLA_AE_LINES_PKG.ValidateCurrentLine;
36988 
36989    ------------------------------------------------------------------------------------
36990    -- 4219869 Business Flow
36991    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36992    ------------------------------------------------------------------------------------
36993    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36994 
36995    ----------------------------------------------------------------------------------
36996    -- 4219869 Business Flow
36997    -- Update journal entry status -- Need to generate this within IF <condition>
36998    ----------------------------------------------------------------------------------
36999    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37000          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37001          ,p_balance_type_code => l_balance_type_code
37002          );
37003 
37004    -------------------------------------------------------------------------------------------
37005    -- 4262811 - Generate the Accrual Reversal lines
37006    -------------------------------------------------------------------------------------------
37007    BEGIN
37008       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37012       END IF;
37009                               (g_array_event(p_event_id).array_value_num('header_index'));
37010       IF l_acc_rev_flag IS NULL THEN
37011          l_acc_rev_flag := 'N';
37013    EXCEPTION
37014       WHEN OTHERS THEN
37015          l_acc_rev_flag := 'N';
37016    END;
37017    --
37018    IF (l_acc_rev_flag = 'Y') THEN
37019 
37020        -- 4645092  ------------------------------------------------------------------------------
37021        -- To allow MPA report to determine if it should generate report process
37022        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37023        ------------------------------------------------------------------------------------------
37024 
37025        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37026        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37027    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
37028    -- call ADRs
37029    -- Bug 4922099
37030    --
37031    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37032         (NVL(l_actual_upg_option, 'N') = 'O') OR
37033         (NVL(l_enc_upg_option, 'N') = 'O')
37034       )
37035    THEN
37036    NULL;
37037    --
37038    --
37039    
37040   l_ccid := AcctDerRule_12(
37041            p_application_id           => p_application_id
37042          , p_ae_header_id             => l_ae_header_id 
37043 , p_source_1 => p_source_1
37044 , p_source_2 => p_source_2
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                     => 'EXP'
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
37123 
37120    -----------------------------------------------------------------------------------------
37121      -- No MPA option is assigned.
37122 
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_99'
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_00555_AAD_S_000001_PKG.AcctLineType_99');
37142 END AcctLineType_99;
37143 --
37144 
37145 ---------------------------------------
37146 --
37147 -- PRIVATE FUNCTION
37148 --         AcctLineType_100
37149 --
37150 ---------------------------------------
37151 PROCEDURE AcctLineType_100 (
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 --Transaction Account
37161  , p_source_1            IN NUMBER
37162 --Journal Line Type
37163  , p_source_2            IN VARCHAR2
37164 --Entered Amount
37165  , p_source_3            IN NUMBER
37166 --First Distribution Identifier
37167  , p_source_5            IN NUMBER
37168 --Distribution Type
37169  , p_source_6            IN VARCHAR2
37170 --Currency Code
37171  , p_source_7            IN VARCHAR2
37172 --Currency Conversion Date
37173  , p_source_8            IN DATE
37174 --Currency Conversion Rate
37175  , p_source_9            IN NUMBER
37176 --Currency Conversion Type
37177  , p_source_10            IN VARCHAR2
37178 --Accounted Amount
37179  , p_source_11            IN NUMBER
37180 )
37181 IS
37182 
37183 l_component_type              VARCHAR2(80);
37184 l_component_code              VARCHAR2(30);
37185 l_component_type_code         VARCHAR2(1);
37186 l_component_appl_id           INTEGER;
37187 l_amb_context_code            VARCHAR2(30);
37188 l_entity_code                 VARCHAR2(30);
37189 l_event_class_code            VARCHAR2(30);
37190 l_ae_header_id                NUMBER;
37191 l_event_type_code             VARCHAR2(30);
37192 l_line_definition_code        VARCHAR2(30);
37193 l_line_definition_owner_code  VARCHAR2(1);
37194 --
37195 -- adr variables
37196 l_segment                     VARCHAR2(30);
37197 l_ccid                        NUMBER;
37198 l_adr_transaction_coa_id      NUMBER;
37199 l_adr_accounting_coa_id       NUMBER;
37200 l_adr_flexfield_segment_code  VARCHAR2(30);
37201 l_adr_flex_value_set_id       NUMBER;
37202 l_adr_value_type_code         VARCHAR2(30);
37203 l_adr_value_combination_id    NUMBER;
37204 l_adr_value_segment_code      VARCHAR2(30);
37205 
37206 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
37207 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
37208 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
37209 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
37210 
37211 -- 4262811 Variables ------------------------------------------------------------------------------------------
37212 l_entered_amt_idx             NUMBER;
37213 l_accted_amt_idx              NUMBER;
37214 l_acc_rev_flag                VARCHAR2(1);
37215 l_accrual_line_num            NUMBER;
37216 l_tmp_amt                     NUMBER;
37217 l_acc_rev_natural_side_code   VARCHAR2(1);
37218 
37219 l_num_entries                 NUMBER;
37220 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
37221 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
37222 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
37223 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
37224 l_recog_line_1                NUMBER;
37225 l_recog_line_2                NUMBER;
37226 
37227 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
37228 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
37229 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
37230 
37231 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37232 
37233 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
37234 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
37235 
37236 ---------------------------------------------------------------------------------------------------------------
37237 
37238 
37239 --
37240 -- bulk performance
37241 --
37242 l_balance_type_code           VARCHAR2(1);
37243 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
37244 l_log_module                  VARCHAR2(240);
37245 
37246 --
37247 -- Upgrade strategy
37248 --
37249 l_actual_upg_option           VARCHAR2(1);
37250 l_enc_upg_option           VARCHAR2(1);
37251 
37252 --
37253 BEGIN
37254 --
37255 IF g_log_enabled THEN
37256       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_100';
37257 END IF;
37258 --
37259 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37260 
37264          ,p_module   => l_log_module);
37261       trace
37262          (p_msg      => 'BEGIN of AcctLineType_100'
37263          ,p_level    => C_LEVEL_PROCEDURE
37265 
37266 END IF;
37267 --
37268 l_component_type             := 'AMB_JLT';
37269 l_component_code             := 'EXP';
37270 l_component_type_code        := 'S';
37271 l_component_appl_id          :=  555;
37272 l_amb_context_code           := 'DEFAULT';
37273 l_entity_code                := 'PURCHASING';
37274 l_event_class_code           := 'DELIVER';
37275 l_event_type_code            := 'INT_REQ_RECEIPT_ADJ';
37276 l_line_definition_owner_code := 'S';
37277 l_line_definition_code       := 'INT_REQ_RCPT_ADJ';
37278 --
37279 l_balance_type_code          := 'A';
37280 l_segment                     := NULL;
37281 l_ccid                        := NULL;
37282 l_adr_transaction_coa_id      := NULL;
37283 l_adr_accounting_coa_id       := NULL;
37284 l_adr_flexfield_segment_code  := NULL;
37285 l_adr_flex_value_set_id       := NULL;
37286 l_adr_value_type_code         := NULL;
37287 l_adr_value_combination_id    := NULL;
37288 l_adr_value_segment_code      := NULL;
37289 
37290 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
37291 l_bflow_class_code           := '';    -- 4219869 Business Flow
37292 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
37293 l_budgetary_control_flag     := 'N';
37294 
37295 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
37296 l_bflow_applied_to_amt       := NULL; -- 5132302
37297 l_entered_amt_idx            := NULL;          -- 4262811
37298 l_accted_amt_idx             := NULL;          -- 4262811
37299 l_acc_rev_flag               := NULL;          -- 4262811
37300 l_accrual_line_num           := NULL;          -- 4262811
37301 l_tmp_amt                    := NULL;          -- 4262811
37302 --
37303  
37304 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37305     l_balance_type_code <> 'B' THEN
37306 IF NVL(p_source_2,'
37307 ') =  'EXP'
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      => 'D'
37332          , p_acct_entry_type_code       => 'A'
37333          , p_switch_side_flag           => 'Y'
37334          , p_merge_duplicate_code       => 'W'
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  => 'EXPENSE'
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                       'EXPENSE';
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;
37392    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
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_5);
37393    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
37394    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
37395    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
37396    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
37397    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
37398    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
37399    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
37400    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
37401    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
37402    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
37403    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
37404    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
37405    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
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_12(
37458            p_application_id           => p_application_id
37459          , p_ae_header_id             => l_ae_header_id 
37460 , p_source_1 => p_source_1
37461 , p_source_2 => p_source_2
37462          , x_transaction_coa_id       => l_adr_transaction_coa_id
37463          , x_accounting_coa_id        => l_adr_accounting_coa_id
37464          , x_value_type_code          => l_adr_value_type_code
37465          , p_side                     => 'NA'
37466    );
37467 
37468    xla_ae_lines_pkg.set_ccid(
37469     p_code_combination_id          => l_ccid
37470   , p_value_type_code              => l_adr_value_type_code
37471   , p_transaction_coa_id           => l_adr_transaction_coa_id
37472   , p_accounting_coa_id            => l_adr_accounting_coa_id
37473   , p_adr_code                     => 'EXP'
37474   , p_adr_type_code                => 'S'
37475   , p_component_type               => l_component_type
37476   , p_component_code               => l_component_code
37477   , p_component_type_code          => l_component_type_code
37478   , p_component_appl_id            => l_component_appl_id
37479   , p_amb_context_code             => l_amb_context_code
37480   , p_side                         => 'NA'
37481   );
37482 
37483 
37484    --
37485    --
37486    END IF;
37487    --
37488    -- Bug 4922099
37489    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
37490           (NVL(l_enc_upg_option, 'N') = 'O')
37491         ) AND
37492         (l_bflow_method_code = 'PRIOR_ENTRY')
37493       )
37494    THEN
37495       IF
37496       --
37497       1 = 2
37498       --
37499       THEN
37500       xla_accounting_err_pkg.build_message
37501                                     (p_appli_s_name            => 'XLA'
37502                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37503                                     ,p_token_1                 => 'LINE_NUMBER'
37504                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
37505                                     ,p_token_2                 => 'LINE_TYPE_NAME'
37509                                                                             ,l_component_type_code
37506                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
37507                                                                              l_component_type
37508                                                                             ,l_component_code
37510                                                                             ,l_component_appl_id
37511                                                                             ,l_amb_context_code
37512                                                                             ,l_entity_code
37513                                                                             ,l_event_class_code
37514                                                                            )
37515                                     ,p_token_3                 => 'OWNER'
37516                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
37517                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
37518                                                                           ,p_lookup_code    => l_component_type_code
37519                                                                          )
37520                                     ,p_token_4                 => 'PRODUCT_NAME'
37521                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
37522                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
37523                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
37524                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
37525                                     ,p_ae_header_id            =>  NULL
37526                                        );
37527 
37528         IF (C_LEVEL_ERROR>= g_log_level) THEN
37529                  trace
37530                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37531                       ,p_level    => C_LEVEL_ERROR
37532                       ,p_module   => l_log_module);
37533         END IF;
37534       END IF;
37535    END IF;
37536    --
37537    --
37538    ------------------------------------------------------------------------------------------------
37539    -- 4219869 Business Flow
37540    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
37541    -- Prior Entry.  Currently, the following code is always generated.
37542    ------------------------------------------------------------------------------------------------
37543    XLA_AE_LINES_PKG.ValidateCurrentLine;
37544 
37545    ------------------------------------------------------------------------------------
37546    -- 4219869 Business Flow
37547    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
37548    ------------------------------------------------------------------------------------
37549    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37550 
37551    ----------------------------------------------------------------------------------
37552    -- 4219869 Business Flow
37553    -- Update journal entry status -- Need to generate this within IF <condition>
37554    ----------------------------------------------------------------------------------
37555    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37556          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37557          ,p_balance_type_code => l_balance_type_code
37558          );
37559 
37560    -------------------------------------------------------------------------------------------
37561    -- 4262811 - Generate the Accrual Reversal lines
37562    -------------------------------------------------------------------------------------------
37563    BEGIN
37564       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37565                               (g_array_event(p_event_id).array_value_num('header_index'));
37566       IF l_acc_rev_flag IS NULL THEN
37567          l_acc_rev_flag := 'N';
37568       END IF;
37569    EXCEPTION
37570       WHEN OTHERS THEN
37571          l_acc_rev_flag := 'N';
37572    END;
37573    --
37574    IF (l_acc_rev_flag = 'Y') THEN
37575 
37576        -- 4645092  ------------------------------------------------------------------------------
37577        -- To allow MPA report to determine if it should generate report process
37578        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37579        ------------------------------------------------------------------------------------------
37580 
37581        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37582        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37583    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
37584    -- call ADRs
37585    -- Bug 4922099
37586    --
37587    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37588         (NVL(l_actual_upg_option, 'N') = 'O') OR
37589         (NVL(l_enc_upg_option, 'N') = 'O')
37590       )
37591    THEN
37592    NULL;
37593    --
37594    --
37595    
37596   l_ccid := AcctDerRule_12(
37597            p_application_id           => p_application_id
37598          , p_ae_header_id             => l_ae_header_id 
37599 , p_source_1 => p_source_1
37603          , x_value_type_code          => l_adr_value_type_code
37600 , p_source_2 => p_source_2
37601          , x_transaction_coa_id       => l_adr_transaction_coa_id
37602          , x_accounting_coa_id        => l_adr_accounting_coa_id
37604          , p_side                     => 'NA'
37605    );
37606 
37607    xla_ae_lines_pkg.set_ccid(
37608     p_code_combination_id          => l_ccid
37609   , p_value_type_code              => l_adr_value_type_code
37610   , p_transaction_coa_id           => l_adr_transaction_coa_id
37611   , p_accounting_coa_id            => l_adr_accounting_coa_id
37612   , p_adr_code                     => 'EXP'
37613   , p_adr_type_code                => 'S'
37614   , p_component_type               => l_component_type
37615   , p_component_code               => l_component_code
37616   , p_component_type_code          => l_component_type_code
37617   , p_component_appl_id            => l_component_appl_id
37618   , p_amb_context_code             => l_amb_context_code
37619   , p_side                         => 'NA'
37620   );
37621 
37622 
37623    --
37624    --
37625    END IF;
37626 
37627        --
37628        -- Update the line information that should be overwritten
37629        --
37630        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
37631                                          p_header_num   => 1);
37632        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
37633 
37634        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
37635 
37636        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
37637           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
37638        END IF;
37639 
37640       --
37641       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
37642       --
37643       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
37644           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
37645       ELSE
37646           ---------------------------------------------------------------------------------------------------
37647           -- 4262811a Switch Sign
37648           ---------------------------------------------------------------------------------------------------
37649           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
37650           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37651                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37652           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37653                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37654           -- 5132302
37655           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
37656                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37657 
37658       END IF;
37659 
37660       -- 4955764
37661       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37662       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
37663 
37664 
37665       XLA_AE_LINES_PKG.ValidateCurrentLine;
37666       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37667 
37668       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37669                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
37670                ,p_balance_type_code => l_balance_type_code);
37671 
37672    END IF;
37673 
37674    -----------------------------------------------------------------------------------------
37675    -- 4262811 Multiperiod Accounting
37676    -----------------------------------------------------------------------------------------
37677      -- No MPA option is assigned.
37678 
37679 
37680 END IF;
37681 END IF;
37682 --
37683 
37684 --
37685 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37686    trace
37687       (p_msg      => 'END of AcctLineType_100'
37688       ,p_level    => C_LEVEL_PROCEDURE
37689       ,p_module   => l_log_module);
37690 END IF;
37691 --
37692 EXCEPTION
37693   WHEN xla_exceptions_pkg.application_exception THEN
37694       RAISE;
37695   WHEN OTHERS THEN
37696        xla_exceptions_pkg.raise_message
37697            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_100');
37698 END AcctLineType_100;
37699 --
37700 
37701 ---------------------------------------
37702 --
37703 -- PRIVATE FUNCTION
37704 --         AcctLineType_101
37705 --
37706 ---------------------------------------
37707 PROCEDURE AcctLineType_101 (
37708   p_application_id        IN NUMBER
37709  ,p_event_id              IN NUMBER
37710  ,p_calculate_acctd_flag  IN VARCHAR2
37711  ,p_calculate_g_l_flag    IN VARCHAR2
37712  ,p_actual_flag           IN OUT VARCHAR2
37713  ,p_balance_type_code     OUT VARCHAR2
37714  ,p_gain_or_loss_ref      OUT VARCHAR2
37715  
37716 --Transaction Account
37717  , p_source_1            IN NUMBER
37718 --Journal Line Type
37719  , p_source_2            IN VARCHAR2
37720 --Entered Amount
37721  , p_source_3            IN NUMBER
37725  , p_source_6            IN VARCHAR2
37722 --First Distribution Identifier
37723  , p_source_5            IN NUMBER
37724 --Distribution Type
37726 --Currency Code
37727  , p_source_7            IN VARCHAR2
37728 --Currency Conversion Date
37729  , p_source_8            IN DATE
37730 --Currency Conversion Rate
37731  , p_source_9            IN NUMBER
37732 --Currency Conversion Type
37733  , p_source_10            IN VARCHAR2
37734 --Accounted Amount
37735  , p_source_11            IN NUMBER
37736 )
37737 IS
37738 
37739 l_component_type              VARCHAR2(80);
37740 l_component_code              VARCHAR2(30);
37741 l_component_type_code         VARCHAR2(1);
37742 l_component_appl_id           INTEGER;
37743 l_amb_context_code            VARCHAR2(30);
37744 l_entity_code                 VARCHAR2(30);
37745 l_event_class_code            VARCHAR2(30);
37746 l_ae_header_id                NUMBER;
37747 l_event_type_code             VARCHAR2(30);
37748 l_line_definition_code        VARCHAR2(30);
37749 l_line_definition_owner_code  VARCHAR2(1);
37750 --
37751 -- adr variables
37752 l_segment                     VARCHAR2(30);
37753 l_ccid                        NUMBER;
37754 l_adr_transaction_coa_id      NUMBER;
37755 l_adr_accounting_coa_id       NUMBER;
37756 l_adr_flexfield_segment_code  VARCHAR2(30);
37757 l_adr_flex_value_set_id       NUMBER;
37758 l_adr_value_type_code         VARCHAR2(30);
37759 l_adr_value_combination_id    NUMBER;
37760 l_adr_value_segment_code      VARCHAR2(30);
37761 
37762 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
37763 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
37764 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
37765 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
37766 
37767 -- 4262811 Variables ------------------------------------------------------------------------------------------
37768 l_entered_amt_idx             NUMBER;
37769 l_accted_amt_idx              NUMBER;
37770 l_acc_rev_flag                VARCHAR2(1);
37771 l_accrual_line_num            NUMBER;
37772 l_tmp_amt                     NUMBER;
37773 l_acc_rev_natural_side_code   VARCHAR2(1);
37774 
37775 l_num_entries                 NUMBER;
37776 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
37777 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
37778 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
37779 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
37780 l_recog_line_1                NUMBER;
37781 l_recog_line_2                NUMBER;
37782 
37783 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
37784 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
37785 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
37786 
37787 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37788 
37789 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
37790 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
37791 
37792 ---------------------------------------------------------------------------------------------------------------
37793 
37794 
37795 --
37796 -- bulk performance
37797 --
37798 l_balance_type_code           VARCHAR2(1);
37799 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
37800 l_log_module                  VARCHAR2(240);
37801 
37802 --
37803 -- Upgrade strategy
37804 --
37805 l_actual_upg_option           VARCHAR2(1);
37806 l_enc_upg_option           VARCHAR2(1);
37807 
37808 --
37809 BEGIN
37810 --
37811 IF g_log_enabled THEN
37812       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_101';
37813 END IF;
37814 --
37815 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37816 
37817       trace
37818          (p_msg      => 'BEGIN of AcctLineType_101'
37819          ,p_level    => C_LEVEL_PROCEDURE
37820          ,p_module   => l_log_module);
37821 
37822 END IF;
37823 --
37824 l_component_type             := 'AMB_JLT';
37825 l_component_code             := 'EXP';
37826 l_component_type_code        := 'S';
37827 l_component_appl_id          :=  555;
37828 l_amb_context_code           := 'DEFAULT';
37829 l_entity_code                := 'PURCHASING';
37830 l_event_class_code           := 'DELIVER';
37831 l_event_type_code            := 'LOG_PO_RCV_ADJ';
37832 l_line_definition_owner_code := 'S';
37833 l_line_definition_code       := 'LOG_PO_RCV_ADJ';
37834 --
37835 l_balance_type_code          := 'A';
37836 l_segment                     := NULL;
37837 l_ccid                        := NULL;
37838 l_adr_transaction_coa_id      := NULL;
37839 l_adr_accounting_coa_id       := NULL;
37840 l_adr_flexfield_segment_code  := NULL;
37841 l_adr_flex_value_set_id       := NULL;
37842 l_adr_value_type_code         := NULL;
37843 l_adr_value_combination_id    := NULL;
37844 l_adr_value_segment_code      := NULL;
37845 
37846 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
37847 l_bflow_class_code           := '';    -- 4219869 Business Flow
37848 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
37849 l_budgetary_control_flag     := 'N';
37850 
37851 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
37852 l_bflow_applied_to_amt       := NULL; -- 5132302
37856 l_accrual_line_num           := NULL;          -- 4262811
37853 l_entered_amt_idx            := NULL;          -- 4262811
37854 l_accted_amt_idx             := NULL;          -- 4262811
37855 l_acc_rev_flag               := NULL;          -- 4262811
37857 l_tmp_amt                    := NULL;          -- 4262811
37858 --
37859  
37860 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37861     l_balance_type_code <> 'B' THEN
37862 IF NVL(p_source_2,'
37863 ') =  'EXP'
37864  THEN 
37865 
37866    --
37867    XLA_AE_LINES_PKG.SetNewLine;
37868 
37869    p_balance_type_code          := l_balance_type_code;
37870    -- set the flag so later we will know whether the gain loss line needs to be created
37871    
37872    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
37873      p_actual_flag :='A';
37874    END IF;
37875 
37876    --
37877    -- bulk performance
37878    --
37879    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
37880                                       p_header_num   => 0); -- 4262811
37881    --
37882    -- set accounting line options
37883    --
37884    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
37885            p_natural_side_code          => 'D'
37886          , p_gain_or_loss_flag          => 'N'
37887          , p_gl_transfer_mode_code      => 'D'
37888          , p_acct_entry_type_code       => 'A'
37889          , p_switch_side_flag           => 'Y'
37890          , p_merge_duplicate_code       => 'W'
37891          );
37892    --
37893    l_acc_rev_natural_side_code := 'C';  -- 4262811
37894    -- 
37895    --
37896    -- set accounting line type info
37897    --
37898    xla_ae_lines_pkg.SetAcctLineType
37899       (p_component_type             => l_component_type
37900       ,p_event_type_code            => l_event_type_code
37901       ,p_line_definition_owner_code => l_line_definition_owner_code
37902       ,p_line_definition_code       => l_line_definition_code
37903       ,p_accounting_line_code       => l_component_code
37904       ,p_accounting_line_type_code  => l_component_type_code
37905       ,p_accounting_line_appl_id    => l_component_appl_id
37906       ,p_amb_context_code           => l_amb_context_code
37907       ,p_entity_code                => l_entity_code
37908       ,p_event_class_code           => l_event_class_code);
37909    --
37910    -- set accounting class
37911    --
37912    xla_ae_lines_pkg.SetAcctClass(
37913            p_accounting_class_code  => 'EXPENSE'
37914          , p_ae_header_id           => l_ae_header_id
37915          );
37916 
37917    --
37918    -- set rounding class
37919    --
37920    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37921                       'EXPENSE';
37922 
37923    --
37924    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37925    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37926    --
37927    -- bulk performance
37928    --
37929    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37930 
37931    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37932       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37933 
37934    -- 4955764
37935    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37936       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37937 
37938    -- 4458381 Public Sector Enh
37939    
37940    --
37941    -- set accounting attributes for the line type
37942    --
37943    l_entered_amt_idx := 3;
37944    l_accted_amt_idx  := 8;
37945    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
37946    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
37947    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
37948    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
37949    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
37950    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
37951    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
37952    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
37953    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
37954    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
37955    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
37956    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
37957    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
37958    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
37959    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
37960    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
37961    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
37962 
37963    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37964    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37965 
37966    ---------------------------------------------------------------------------------------------------------------
37967    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37968    ---------------------------------------------------------------------------------------------------------------
37972    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37969    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37970 
37971    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37973 
37974    IF xla_accounting_cache_pkg.GetValueChar
37975          (p_source_code         => 'LEDGER_CATEGORY_CODE'
37976          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37977    AND l_bflow_method_code = 'PRIOR_ENTRY'
37978 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37979    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37980          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37981        )
37982    THEN
37983          xla_ae_lines_pkg.BflowUpgEntry
37984            (p_business_method_code    => l_bflow_method_code
37985            ,p_business_class_code     => l_bflow_class_code
37986            ,p_balance_type            => l_balance_type_code);
37987    ELSE
37988       NULL;
37989 -- No business flow processing for business flow method of NONE.
37990    END IF;
37991 
37992    --
37993    -- call analytical criteria
37994    --
37995    
37996    --
37997    -- call description
37998    --
37999    -- No description or it is inherited.
38000    --
38001    -- call ADRs
38002    -- Bug 4922099
38003    --
38004    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38005         (NVL(l_actual_upg_option, 'N') = 'O') OR
38006         (NVL(l_enc_upg_option, 'N') = 'O')
38007       )
38008    THEN
38009    NULL;
38010    --
38011    --
38012    
38013   l_ccid := AcctDerRule_12(
38014            p_application_id           => p_application_id
38015          , p_ae_header_id             => l_ae_header_id 
38016 , p_source_1 => p_source_1
38017 , p_source_2 => p_source_2
38018          , x_transaction_coa_id       => l_adr_transaction_coa_id
38019          , x_accounting_coa_id        => l_adr_accounting_coa_id
38020          , x_value_type_code          => l_adr_value_type_code
38021          , p_side                     => 'NA'
38022    );
38023 
38024    xla_ae_lines_pkg.set_ccid(
38025     p_code_combination_id          => l_ccid
38026   , p_value_type_code              => l_adr_value_type_code
38027   , p_transaction_coa_id           => l_adr_transaction_coa_id
38028   , p_accounting_coa_id            => l_adr_accounting_coa_id
38029   , p_adr_code                     => 'EXP'
38030   , p_adr_type_code                => 'S'
38031   , p_component_type               => l_component_type
38032   , p_component_code               => l_component_code
38033   , p_component_type_code          => l_component_type_code
38034   , p_component_appl_id            => l_component_appl_id
38035   , p_amb_context_code             => l_amb_context_code
38036   , p_side                         => 'NA'
38037   );
38038 
38039 
38040    --
38041    --
38042    END IF;
38043    --
38044    -- Bug 4922099
38045    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38046           (NVL(l_enc_upg_option, 'N') = 'O')
38047         ) AND
38048         (l_bflow_method_code = 'PRIOR_ENTRY')
38049       )
38050    THEN
38051       IF
38052       --
38053       1 = 2
38054       --
38055       THEN
38056       xla_accounting_err_pkg.build_message
38057                                     (p_appli_s_name            => 'XLA'
38058                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38059                                     ,p_token_1                 => 'LINE_NUMBER'
38060                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
38061                                     ,p_token_2                 => 'LINE_TYPE_NAME'
38062                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
38063                                                                              l_component_type
38064                                                                             ,l_component_code
38065                                                                             ,l_component_type_code
38066                                                                             ,l_component_appl_id
38067                                                                             ,l_amb_context_code
38068                                                                             ,l_entity_code
38069                                                                             ,l_event_class_code
38070                                                                            )
38071                                     ,p_token_3                 => 'OWNER'
38072                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
38073                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
38074                                                                           ,p_lookup_code    => l_component_type_code
38075                                                                          )
38076                                     ,p_token_4                 => 'PRODUCT_NAME'
38077                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38081                                     ,p_ae_header_id            =>  NULL
38078                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38079                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38080                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38082                                        );
38083 
38084         IF (C_LEVEL_ERROR>= g_log_level) THEN
38085                  trace
38086                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38087                       ,p_level    => C_LEVEL_ERROR
38088                       ,p_module   => l_log_module);
38089         END IF;
38090       END IF;
38091    END IF;
38092    --
38093    --
38094    ------------------------------------------------------------------------------------------------
38095    -- 4219869 Business Flow
38096    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38097    -- Prior Entry.  Currently, the following code is always generated.
38098    ------------------------------------------------------------------------------------------------
38099    XLA_AE_LINES_PKG.ValidateCurrentLine;
38100 
38101    ------------------------------------------------------------------------------------
38102    -- 4219869 Business Flow
38103    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38104    ------------------------------------------------------------------------------------
38105    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38106 
38107    ----------------------------------------------------------------------------------
38108    -- 4219869 Business Flow
38109    -- Update journal entry status -- Need to generate this within IF <condition>
38110    ----------------------------------------------------------------------------------
38111    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38112          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38113          ,p_balance_type_code => l_balance_type_code
38114          );
38115 
38116    -------------------------------------------------------------------------------------------
38117    -- 4262811 - Generate the Accrual Reversal lines
38118    -------------------------------------------------------------------------------------------
38119    BEGIN
38120       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38121                               (g_array_event(p_event_id).array_value_num('header_index'));
38122       IF l_acc_rev_flag IS NULL THEN
38123          l_acc_rev_flag := 'N';
38124       END IF;
38125    EXCEPTION
38126       WHEN OTHERS THEN
38127          l_acc_rev_flag := 'N';
38128    END;
38129    --
38130    IF (l_acc_rev_flag = 'Y') THEN
38131 
38132        -- 4645092  ------------------------------------------------------------------------------
38133        -- To allow MPA report to determine if it should generate report process
38134        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38135        ------------------------------------------------------------------------------------------
38136 
38137        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38138        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38139    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
38140    -- call ADRs
38141    -- Bug 4922099
38142    --
38143    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38144         (NVL(l_actual_upg_option, 'N') = 'O') OR
38145         (NVL(l_enc_upg_option, 'N') = 'O')
38146       )
38147    THEN
38148    NULL;
38149    --
38150    --
38151    
38152   l_ccid := AcctDerRule_12(
38153            p_application_id           => p_application_id
38154          , p_ae_header_id             => l_ae_header_id 
38155 , p_source_1 => p_source_1
38156 , p_source_2 => p_source_2
38157          , x_transaction_coa_id       => l_adr_transaction_coa_id
38158          , x_accounting_coa_id        => l_adr_accounting_coa_id
38159          , x_value_type_code          => l_adr_value_type_code
38160          , p_side                     => 'NA'
38161    );
38162 
38163    xla_ae_lines_pkg.set_ccid(
38164     p_code_combination_id          => l_ccid
38165   , p_value_type_code              => l_adr_value_type_code
38166   , p_transaction_coa_id           => l_adr_transaction_coa_id
38167   , p_accounting_coa_id            => l_adr_accounting_coa_id
38168   , p_adr_code                     => 'EXP'
38169   , p_adr_type_code                => 'S'
38170   , p_component_type               => l_component_type
38171   , p_component_code               => l_component_code
38172   , p_component_type_code          => l_component_type_code
38173   , p_component_appl_id            => l_component_appl_id
38174   , p_amb_context_code             => l_amb_context_code
38175   , p_side                         => 'NA'
38176   );
38177 
38178 
38179    --
38180    --
38181    END IF;
38182 
38183        --
38184        -- Update the line information that should be overwritten
38185        --
38186        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38187                                          p_header_num   => 1);
38188        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
38189 
38193           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38190        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38191 
38192        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
38194        END IF;
38195 
38196       --
38197       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38198       --
38199       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38200           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
38201       ELSE
38202           ---------------------------------------------------------------------------------------------------
38203           -- 4262811a Switch Sign
38204           ---------------------------------------------------------------------------------------------------
38205           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
38206           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38207                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38208           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38209                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38210           -- 5132302
38211           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38212                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38213 
38214       END IF;
38215 
38216       -- 4955764
38217       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38218       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38219 
38220 
38221       XLA_AE_LINES_PKG.ValidateCurrentLine;
38222       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38223 
38224       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38225                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38226                ,p_balance_type_code => l_balance_type_code);
38227 
38228    END IF;
38229 
38230    -----------------------------------------------------------------------------------------
38231    -- 4262811 Multiperiod Accounting
38232    -----------------------------------------------------------------------------------------
38233      -- No MPA option is assigned.
38234 
38235 
38236 END IF;
38237 END IF;
38238 --
38239 
38240 --
38241 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38242    trace
38243       (p_msg      => 'END of AcctLineType_101'
38244       ,p_level    => C_LEVEL_PROCEDURE
38245       ,p_module   => l_log_module);
38246 END IF;
38247 --
38248 EXCEPTION
38249   WHEN xla_exceptions_pkg.application_exception THEN
38250       RAISE;
38251   WHEN OTHERS THEN
38252        xla_exceptions_pkg.raise_message
38253            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_101');
38254 END AcctLineType_101;
38255 --
38256 
38257 ---------------------------------------
38258 --
38259 -- PRIVATE FUNCTION
38260 --         AcctLineType_102
38261 --
38262 ---------------------------------------
38263 PROCEDURE AcctLineType_102 (
38264   p_application_id        IN NUMBER
38265  ,p_event_id              IN NUMBER
38266  ,p_calculate_acctd_flag  IN VARCHAR2
38267  ,p_calculate_g_l_flag    IN VARCHAR2
38268  ,p_actual_flag           IN OUT VARCHAR2
38269  ,p_balance_type_code     OUT VARCHAR2
38270  ,p_gain_or_loss_ref      OUT VARCHAR2
38271  
38272 --Transaction Account
38273  , p_source_1            IN NUMBER
38274 --Journal Line Type
38275  , p_source_2            IN VARCHAR2
38276 --Entered Amount
38277  , p_source_3            IN NUMBER
38278 --First Distribution Identifier
38279  , p_source_5            IN NUMBER
38280 --Distribution Type
38281  , p_source_6            IN VARCHAR2
38282 --Currency Code
38283  , p_source_7            IN VARCHAR2
38284 --Currency Conversion Date
38285  , p_source_8            IN DATE
38286 --Currency Conversion Rate
38287  , p_source_9            IN NUMBER
38288 --Currency Conversion Type
38289  , p_source_10            IN VARCHAR2
38290 --Accounted Amount
38291  , p_source_11            IN NUMBER
38292 )
38293 IS
38294 
38295 l_component_type              VARCHAR2(80);
38296 l_component_code              VARCHAR2(30);
38297 l_component_type_code         VARCHAR2(1);
38298 l_component_appl_id           INTEGER;
38299 l_amb_context_code            VARCHAR2(30);
38300 l_entity_code                 VARCHAR2(30);
38301 l_event_class_code            VARCHAR2(30);
38302 l_ae_header_id                NUMBER;
38303 l_event_type_code             VARCHAR2(30);
38304 l_line_definition_code        VARCHAR2(30);
38305 l_line_definition_owner_code  VARCHAR2(1);
38306 --
38307 -- adr variables
38308 l_segment                     VARCHAR2(30);
38309 l_ccid                        NUMBER;
38310 l_adr_transaction_coa_id      NUMBER;
38311 l_adr_accounting_coa_id       NUMBER;
38312 l_adr_flexfield_segment_code  VARCHAR2(30);
38313 l_adr_flex_value_set_id       NUMBER;
38314 l_adr_value_type_code         VARCHAR2(30);
38315 l_adr_value_combination_id    NUMBER;
38319 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
38316 l_adr_value_segment_code      VARCHAR2(30);
38317 
38318 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
38320 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
38321 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
38322 
38323 -- 4262811 Variables ------------------------------------------------------------------------------------------
38324 l_entered_amt_idx             NUMBER;
38325 l_accted_amt_idx              NUMBER;
38326 l_acc_rev_flag                VARCHAR2(1);
38327 l_accrual_line_num            NUMBER;
38328 l_tmp_amt                     NUMBER;
38329 l_acc_rev_natural_side_code   VARCHAR2(1);
38330 
38331 l_num_entries                 NUMBER;
38332 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38333 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38334 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38335 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38336 l_recog_line_1                NUMBER;
38337 l_recog_line_2                NUMBER;
38338 
38339 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38340 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38341 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38342 
38343 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38344 
38345 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38346 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38347 
38348 ---------------------------------------------------------------------------------------------------------------
38349 
38350 
38351 --
38352 -- bulk performance
38353 --
38354 l_balance_type_code           VARCHAR2(1);
38355 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38356 l_log_module                  VARCHAR2(240);
38357 
38358 --
38359 -- Upgrade strategy
38360 --
38361 l_actual_upg_option           VARCHAR2(1);
38362 l_enc_upg_option           VARCHAR2(1);
38363 
38364 --
38365 BEGIN
38366 --
38367 IF g_log_enabled THEN
38368       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_102';
38369 END IF;
38370 --
38371 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38372 
38373       trace
38374          (p_msg      => 'BEGIN of AcctLineType_102'
38375          ,p_level    => C_LEVEL_PROCEDURE
38376          ,p_module   => l_log_module);
38377 
38378 END IF;
38379 --
38380 l_component_type             := 'AMB_JLT';
38381 l_component_code             := 'EXP';
38382 l_component_type_code        := 'S';
38383 l_component_appl_id          :=  555;
38384 l_amb_context_code           := 'DEFAULT';
38385 l_entity_code                := 'PURCHASING';
38386 l_event_class_code           := 'DELIVER';
38387 l_event_type_code            := 'PO_RECEIPT_ADJ';
38388 l_line_definition_owner_code := 'S';
38389 l_line_definition_code       := 'PO_RECEIPT_ADJ';
38390 --
38391 l_balance_type_code          := 'A';
38392 l_segment                     := NULL;
38393 l_ccid                        := NULL;
38394 l_adr_transaction_coa_id      := NULL;
38395 l_adr_accounting_coa_id       := NULL;
38396 l_adr_flexfield_segment_code  := NULL;
38397 l_adr_flex_value_set_id       := NULL;
38398 l_adr_value_type_code         := NULL;
38399 l_adr_value_combination_id    := NULL;
38400 l_adr_value_segment_code      := NULL;
38401 
38402 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
38403 l_bflow_class_code           := '';    -- 4219869 Business Flow
38404 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38405 l_budgetary_control_flag     := 'N';
38406 
38407 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38408 l_bflow_applied_to_amt       := NULL; -- 5132302
38409 l_entered_amt_idx            := NULL;          -- 4262811
38410 l_accted_amt_idx             := NULL;          -- 4262811
38411 l_acc_rev_flag               := NULL;          -- 4262811
38412 l_accrual_line_num           := NULL;          -- 4262811
38413 l_tmp_amt                    := NULL;          -- 4262811
38414 --
38415  
38416 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38417     l_balance_type_code <> 'B' THEN
38418 IF NVL(p_source_2,'
38419 ') =  'EXP'
38420  THEN 
38421 
38422    --
38423    XLA_AE_LINES_PKG.SetNewLine;
38424 
38425    p_balance_type_code          := l_balance_type_code;
38426    -- set the flag so later we will know whether the gain loss line needs to be created
38427    
38428    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38429      p_actual_flag :='A';
38430    END IF;
38431 
38432    --
38433    -- bulk performance
38434    --
38435    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38436                                       p_header_num   => 0); -- 4262811
38437    --
38438    -- set accounting line options
38439    --
38440    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38441            p_natural_side_code          => 'D'
38442          , p_gain_or_loss_flag          => 'N'
38443          , p_gl_transfer_mode_code      => 'D'
38447          );
38444          , p_acct_entry_type_code       => 'A'
38445          , p_switch_side_flag           => 'Y'
38446          , p_merge_duplicate_code       => 'W'
38448    --
38449    l_acc_rev_natural_side_code := 'C';  -- 4262811
38450    -- 
38451    --
38452    -- set accounting line type info
38453    --
38454    xla_ae_lines_pkg.SetAcctLineType
38455       (p_component_type             => l_component_type
38456       ,p_event_type_code            => l_event_type_code
38457       ,p_line_definition_owner_code => l_line_definition_owner_code
38458       ,p_line_definition_code       => l_line_definition_code
38459       ,p_accounting_line_code       => l_component_code
38460       ,p_accounting_line_type_code  => l_component_type_code
38461       ,p_accounting_line_appl_id    => l_component_appl_id
38462       ,p_amb_context_code           => l_amb_context_code
38463       ,p_entity_code                => l_entity_code
38464       ,p_event_class_code           => l_event_class_code);
38465    --
38466    -- set accounting class
38467    --
38468    xla_ae_lines_pkg.SetAcctClass(
38469            p_accounting_class_code  => 'EXPENSE'
38470          , p_ae_header_id           => l_ae_header_id
38471          );
38472 
38473    --
38474    -- set rounding class
38475    --
38476    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38477                       'EXPENSE';
38478 
38479    --
38480    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38481    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38482    --
38483    -- bulk performance
38484    --
38485    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38486 
38487    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38488       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38489 
38490    -- 4955764
38491    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38492       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38493 
38494    -- 4458381 Public Sector Enh
38495    
38496    --
38497    -- set accounting attributes for the line type
38498    --
38499    l_entered_amt_idx := 3;
38500    l_accted_amt_idx  := 8;
38501    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
38502    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
38503    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
38504    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
38505    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
38506    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
38507    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
38508    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
38509    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
38510    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
38511    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
38512    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
38513    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
38514    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
38515    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
38516    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
38517    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
38518 
38519    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38520    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38521 
38522    ---------------------------------------------------------------------------------------------------------------
38523    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38524    ---------------------------------------------------------------------------------------------------------------
38525    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38526 
38527    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38528    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38529 
38530    IF xla_accounting_cache_pkg.GetValueChar
38531          (p_source_code         => 'LEDGER_CATEGORY_CODE'
38532          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
38533    AND l_bflow_method_code = 'PRIOR_ENTRY'
38534 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
38535    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
38536          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
38537        )
38538    THEN
38539          xla_ae_lines_pkg.BflowUpgEntry
38540            (p_business_method_code    => l_bflow_method_code
38541            ,p_business_class_code     => l_bflow_class_code
38542            ,p_balance_type            => l_balance_type_code);
38543    ELSE
38544       NULL;
38545 -- No business flow processing for business flow method of NONE.
38546    END IF;
38547 
38548    --
38549    -- call analytical criteria
38550    --
38551    
38552    --
38553    -- call description
38554    --
38555    -- No description or it is inherited.
38556    --
38557    -- call ADRs
38561         (NVL(l_actual_upg_option, 'N') = 'O') OR
38558    -- Bug 4922099
38559    --
38560    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38562         (NVL(l_enc_upg_option, 'N') = 'O')
38563       )
38564    THEN
38565    NULL;
38566    --
38567    --
38568    
38569   l_ccid := AcctDerRule_12(
38570            p_application_id           => p_application_id
38571          , p_ae_header_id             => l_ae_header_id 
38572 , p_source_1 => p_source_1
38573 , p_source_2 => p_source_2
38574          , x_transaction_coa_id       => l_adr_transaction_coa_id
38575          , x_accounting_coa_id        => l_adr_accounting_coa_id
38576          , x_value_type_code          => l_adr_value_type_code
38577          , p_side                     => 'NA'
38578    );
38579 
38580    xla_ae_lines_pkg.set_ccid(
38581     p_code_combination_id          => l_ccid
38582   , p_value_type_code              => l_adr_value_type_code
38583   , p_transaction_coa_id           => l_adr_transaction_coa_id
38584   , p_accounting_coa_id            => l_adr_accounting_coa_id
38585   , p_adr_code                     => 'EXP'
38586   , p_adr_type_code                => 'S'
38587   , p_component_type               => l_component_type
38588   , p_component_code               => l_component_code
38589   , p_component_type_code          => l_component_type_code
38590   , p_component_appl_id            => l_component_appl_id
38591   , p_amb_context_code             => l_amb_context_code
38592   , p_side                         => 'NA'
38593   );
38594 
38595 
38596    --
38597    --
38598    END IF;
38599    --
38600    -- Bug 4922099
38601    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38602           (NVL(l_enc_upg_option, 'N') = 'O')
38603         ) AND
38604         (l_bflow_method_code = 'PRIOR_ENTRY')
38605       )
38606    THEN
38607       IF
38608       --
38609       1 = 2
38610       --
38611       THEN
38612       xla_accounting_err_pkg.build_message
38613                                     (p_appli_s_name            => 'XLA'
38614                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38615                                     ,p_token_1                 => 'LINE_NUMBER'
38616                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
38617                                     ,p_token_2                 => 'LINE_TYPE_NAME'
38618                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
38619                                                                              l_component_type
38620                                                                             ,l_component_code
38621                                                                             ,l_component_type_code
38622                                                                             ,l_component_appl_id
38623                                                                             ,l_amb_context_code
38624                                                                             ,l_entity_code
38625                                                                             ,l_event_class_code
38626                                                                            )
38627                                     ,p_token_3                 => 'OWNER'
38628                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
38629                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
38630                                                                           ,p_lookup_code    => l_component_type_code
38631                                                                          )
38632                                     ,p_token_4                 => 'PRODUCT_NAME'
38633                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38634                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38635                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38636                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38637                                     ,p_ae_header_id            =>  NULL
38638                                        );
38639 
38640         IF (C_LEVEL_ERROR>= g_log_level) THEN
38641                  trace
38642                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38643                       ,p_level    => C_LEVEL_ERROR
38644                       ,p_module   => l_log_module);
38645         END IF;
38646       END IF;
38647    END IF;
38648    --
38649    --
38650    ------------------------------------------------------------------------------------------------
38651    -- 4219869 Business Flow
38652    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38653    -- Prior Entry.  Currently, the following code is always generated.
38654    ------------------------------------------------------------------------------------------------
38655    XLA_AE_LINES_PKG.ValidateCurrentLine;
38656 
38657    ------------------------------------------------------------------------------------
38658    -- 4219869 Business Flow
38662 
38659    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38660    ------------------------------------------------------------------------------------
38661    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38663    ----------------------------------------------------------------------------------
38664    -- 4219869 Business Flow
38665    -- Update journal entry status -- Need to generate this within IF <condition>
38666    ----------------------------------------------------------------------------------
38667    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38668          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38669          ,p_balance_type_code => l_balance_type_code
38670          );
38671 
38672    -------------------------------------------------------------------------------------------
38673    -- 4262811 - Generate the Accrual Reversal lines
38674    -------------------------------------------------------------------------------------------
38675    BEGIN
38676       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38677                               (g_array_event(p_event_id).array_value_num('header_index'));
38678       IF l_acc_rev_flag IS NULL THEN
38679          l_acc_rev_flag := 'N';
38680       END IF;
38681    EXCEPTION
38682       WHEN OTHERS THEN
38683          l_acc_rev_flag := 'N';
38684    END;
38685    --
38686    IF (l_acc_rev_flag = 'Y') THEN
38687 
38688        -- 4645092  ------------------------------------------------------------------------------
38689        -- To allow MPA report to determine if it should generate report process
38690        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38691        ------------------------------------------------------------------------------------------
38692 
38693        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38694        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38695    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
38696    -- call ADRs
38697    -- Bug 4922099
38698    --
38699    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38700         (NVL(l_actual_upg_option, 'N') = 'O') OR
38701         (NVL(l_enc_upg_option, 'N') = 'O')
38702       )
38703    THEN
38704    NULL;
38705    --
38706    --
38707    
38708   l_ccid := AcctDerRule_12(
38709            p_application_id           => p_application_id
38710          , p_ae_header_id             => l_ae_header_id 
38711 , p_source_1 => p_source_1
38712 , p_source_2 => p_source_2
38713          , x_transaction_coa_id       => l_adr_transaction_coa_id
38714          , x_accounting_coa_id        => l_adr_accounting_coa_id
38715          , x_value_type_code          => l_adr_value_type_code
38716          , p_side                     => 'NA'
38717    );
38718 
38719    xla_ae_lines_pkg.set_ccid(
38720     p_code_combination_id          => l_ccid
38721   , p_value_type_code              => l_adr_value_type_code
38722   , p_transaction_coa_id           => l_adr_transaction_coa_id
38723   , p_accounting_coa_id            => l_adr_accounting_coa_id
38724   , p_adr_code                     => 'EXP'
38725   , p_adr_type_code                => 'S'
38726   , p_component_type               => l_component_type
38727   , p_component_code               => l_component_code
38728   , p_component_type_code          => l_component_type_code
38729   , p_component_appl_id            => l_component_appl_id
38730   , p_amb_context_code             => l_amb_context_code
38731   , p_side                         => 'NA'
38732   );
38733 
38734 
38735    --
38736    --
38737    END IF;
38738 
38739        --
38740        -- Update the line information that should be overwritten
38741        --
38742        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38743                                          p_header_num   => 1);
38744        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
38745 
38746        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38747 
38748        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
38749           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38750        END IF;
38751 
38752       --
38753       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38754       --
38755       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38756           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
38757       ELSE
38758           ---------------------------------------------------------------------------------------------------
38759           -- 4262811a Switch Sign
38760           ---------------------------------------------------------------------------------------------------
38761           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
38762           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38763                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38764           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38765                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38766           -- 5132302
38767           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38771 
38768                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38769 
38770       END IF;
38772       -- 4955764
38773       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38774       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38775 
38776 
38777       XLA_AE_LINES_PKG.ValidateCurrentLine;
38778       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38779 
38780       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38781                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38782                ,p_balance_type_code => l_balance_type_code);
38783 
38784    END IF;
38785 
38786    -----------------------------------------------------------------------------------------
38787    -- 4262811 Multiperiod Accounting
38788    -----------------------------------------------------------------------------------------
38789      -- No MPA option is assigned.
38790 
38791 
38792 END IF;
38793 END IF;
38794 --
38795 
38796 --
38797 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38798    trace
38799       (p_msg      => 'END of AcctLineType_102'
38800       ,p_level    => C_LEVEL_PROCEDURE
38801       ,p_module   => l_log_module);
38802 END IF;
38803 --
38804 EXCEPTION
38805   WHEN xla_exceptions_pkg.application_exception THEN
38806       RAISE;
38807   WHEN OTHERS THEN
38808        xla_exceptions_pkg.raise_message
38809            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_102');
38810 END AcctLineType_102;
38811 --
38812 
38813 ---------------------------------------
38814 --
38815 -- PRIVATE FUNCTION
38816 --         AcctLineType_103
38817 --
38818 ---------------------------------------
38819 PROCEDURE AcctLineType_103 (
38820   p_application_id        IN NUMBER
38821  ,p_event_id              IN NUMBER
38822  ,p_calculate_acctd_flag  IN VARCHAR2
38823  ,p_calculate_g_l_flag    IN VARCHAR2
38824  ,p_actual_flag           IN OUT VARCHAR2
38825  ,p_balance_type_code     OUT VARCHAR2
38826  ,p_gain_or_loss_ref      OUT VARCHAR2
38827  
38828 --Transaction Account
38829  , p_source_1            IN NUMBER
38830 --Journal Line Type
38831  , p_source_2            IN VARCHAR2
38832 --Entered Amount
38833  , p_source_3            IN NUMBER
38834 --First Distribution Identifier
38835  , p_source_5            IN NUMBER
38836 --Distribution Type
38837  , p_source_6            IN VARCHAR2
38838 --Currency Code
38839  , p_source_7            IN VARCHAR2
38840 --Currency Conversion Date
38841  , p_source_8            IN DATE
38842 --Currency Conversion Rate
38843  , p_source_9            IN NUMBER
38844 --Currency Conversion Type
38845  , p_source_10            IN VARCHAR2
38846 --Accounted Amount
38847  , p_source_11            IN NUMBER
38848 )
38849 IS
38850 
38851 l_component_type              VARCHAR2(80);
38852 l_component_code              VARCHAR2(30);
38853 l_component_type_code         VARCHAR2(1);
38854 l_component_appl_id           INTEGER;
38855 l_amb_context_code            VARCHAR2(30);
38856 l_entity_code                 VARCHAR2(30);
38857 l_event_class_code            VARCHAR2(30);
38858 l_ae_header_id                NUMBER;
38859 l_event_type_code             VARCHAR2(30);
38860 l_line_definition_code        VARCHAR2(30);
38861 l_line_definition_owner_code  VARCHAR2(1);
38862 --
38863 -- adr variables
38864 l_segment                     VARCHAR2(30);
38865 l_ccid                        NUMBER;
38866 l_adr_transaction_coa_id      NUMBER;
38867 l_adr_accounting_coa_id       NUMBER;
38868 l_adr_flexfield_segment_code  VARCHAR2(30);
38869 l_adr_flex_value_set_id       NUMBER;
38870 l_adr_value_type_code         VARCHAR2(30);
38871 l_adr_value_combination_id    NUMBER;
38872 l_adr_value_segment_code      VARCHAR2(30);
38873 
38874 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
38875 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
38876 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
38877 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
38878 
38879 -- 4262811 Variables ------------------------------------------------------------------------------------------
38880 l_entered_amt_idx             NUMBER;
38881 l_accted_amt_idx              NUMBER;
38882 l_acc_rev_flag                VARCHAR2(1);
38883 l_accrual_line_num            NUMBER;
38884 l_tmp_amt                     NUMBER;
38885 l_acc_rev_natural_side_code   VARCHAR2(1);
38886 
38887 l_num_entries                 NUMBER;
38888 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38889 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38890 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38891 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38892 l_recog_line_1                NUMBER;
38893 l_recog_line_2                NUMBER;
38894 
38895 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38896 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38897 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38898 
38899 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38903 
38900 
38901 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38902 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38904 ---------------------------------------------------------------------------------------------------------------
38905 
38906 
38907 --
38908 -- bulk performance
38909 --
38910 l_balance_type_code           VARCHAR2(1);
38911 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38912 l_log_module                  VARCHAR2(240);
38913 
38914 --
38915 -- Upgrade strategy
38916 --
38917 l_actual_upg_option           VARCHAR2(1);
38918 l_enc_upg_option           VARCHAR2(1);
38919 
38920 --
38921 BEGIN
38922 --
38923 IF g_log_enabled THEN
38924       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_103';
38925 END IF;
38926 --
38927 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38928 
38929       trace
38930          (p_msg      => 'BEGIN of AcctLineType_103'
38931          ,p_level    => C_LEVEL_PROCEDURE
38932          ,p_module   => l_log_module);
38933 
38934 END IF;
38935 --
38936 l_component_type             := 'AMB_JLT';
38937 l_component_code             := 'EXP';
38938 l_component_type_code        := 'S';
38939 l_component_appl_id          :=  555;
38940 l_amb_context_code           := 'DEFAULT';
38941 l_entity_code                := 'PURCHASING';
38942 l_event_class_code           := 'DELIVER';
38943 l_event_type_code            := 'RET_TO_RECEIVING';
38944 l_line_definition_owner_code := 'S';
38945 l_line_definition_code       := 'PO_RETURN';
38946 --
38947 l_balance_type_code          := 'A';
38948 l_segment                     := NULL;
38949 l_ccid                        := NULL;
38950 l_adr_transaction_coa_id      := NULL;
38951 l_adr_accounting_coa_id       := NULL;
38952 l_adr_flexfield_segment_code  := NULL;
38953 l_adr_flex_value_set_id       := NULL;
38954 l_adr_value_type_code         := NULL;
38955 l_adr_value_combination_id    := NULL;
38956 l_adr_value_segment_code      := NULL;
38957 
38958 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
38959 l_bflow_class_code           := '';    -- 4219869 Business Flow
38960 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38961 l_budgetary_control_flag     := 'N';
38962 
38963 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38964 l_bflow_applied_to_amt       := NULL; -- 5132302
38965 l_entered_amt_idx            := NULL;          -- 4262811
38966 l_accted_amt_idx             := NULL;          -- 4262811
38967 l_acc_rev_flag               := NULL;          -- 4262811
38968 l_accrual_line_num           := NULL;          -- 4262811
38969 l_tmp_amt                    := NULL;          -- 4262811
38970 --
38971  
38972 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38973     l_balance_type_code <> 'B' THEN
38974 IF NVL(p_source_2,'
38975 ') =  'EXP'
38976  THEN 
38977 
38978    --
38979    XLA_AE_LINES_PKG.SetNewLine;
38980 
38981    p_balance_type_code          := l_balance_type_code;
38982    -- set the flag so later we will know whether the gain loss line needs to be created
38983    
38984    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38985      p_actual_flag :='A';
38986    END IF;
38987 
38988    --
38989    -- bulk performance
38990    --
38991    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38992                                       p_header_num   => 0); -- 4262811
38993    --
38994    -- set accounting line options
38995    --
38996    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38997            p_natural_side_code          => 'D'
38998          , p_gain_or_loss_flag          => 'N'
38999          , p_gl_transfer_mode_code      => 'D'
39000          , p_acct_entry_type_code       => 'A'
39001          , p_switch_side_flag           => 'Y'
39002          , p_merge_duplicate_code       => 'W'
39003          );
39004    --
39005    l_acc_rev_natural_side_code := 'C';  -- 4262811
39006    -- 
39007    --
39008    -- set accounting line type info
39009    --
39010    xla_ae_lines_pkg.SetAcctLineType
39011       (p_component_type             => l_component_type
39012       ,p_event_type_code            => l_event_type_code
39013       ,p_line_definition_owner_code => l_line_definition_owner_code
39014       ,p_line_definition_code       => l_line_definition_code
39015       ,p_accounting_line_code       => l_component_code
39016       ,p_accounting_line_type_code  => l_component_type_code
39017       ,p_accounting_line_appl_id    => l_component_appl_id
39018       ,p_amb_context_code           => l_amb_context_code
39019       ,p_entity_code                => l_entity_code
39020       ,p_event_class_code           => l_event_class_code);
39021    --
39022    -- set accounting class
39023    --
39024    xla_ae_lines_pkg.SetAcctClass(
39025            p_accounting_class_code  => 'EXPENSE'
39026          , p_ae_header_id           => l_ae_header_id
39027          );
39028 
39029    --
39030    -- set rounding class
39031    --
39032    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39033                       'EXPENSE';
39034 
39035    --
39039    -- bulk performance
39036    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39037    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39038    --
39040    --
39041    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39042 
39043    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39044       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39045 
39046    -- 4955764
39047    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39048       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39049 
39050    -- 4458381 Public Sector Enh
39051    
39052    --
39053    -- set accounting attributes for the line type
39054    --
39055    l_entered_amt_idx := 3;
39056    l_accted_amt_idx  := 8;
39057    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
39058    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
39059    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
39060    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
39061    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
39062    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
39063    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
39064    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
39065    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
39066    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
39067    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
39068    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
39069    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
39070    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
39071    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
39072    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
39073    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
39074 
39075    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39076    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39077 
39078    ---------------------------------------------------------------------------------------------------------------
39079    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39080    ---------------------------------------------------------------------------------------------------------------
39081    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39082 
39083    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39084    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39085 
39086    IF xla_accounting_cache_pkg.GetValueChar
39087          (p_source_code         => 'LEDGER_CATEGORY_CODE'
39088          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39089    AND l_bflow_method_code = 'PRIOR_ENTRY'
39090 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39091    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39092          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39093        )
39094    THEN
39095          xla_ae_lines_pkg.BflowUpgEntry
39096            (p_business_method_code    => l_bflow_method_code
39097            ,p_business_class_code     => l_bflow_class_code
39098            ,p_balance_type            => l_balance_type_code);
39099    ELSE
39100       NULL;
39101 -- No business flow processing for business flow method of NONE.
39102    END IF;
39103 
39104    --
39105    -- call analytical criteria
39106    --
39107    
39108    --
39109    -- call description
39110    --
39111    -- No description or it is inherited.
39112    --
39113    -- call ADRs
39114    -- Bug 4922099
39115    --
39116    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39117         (NVL(l_actual_upg_option, 'N') = 'O') OR
39118         (NVL(l_enc_upg_option, 'N') = 'O')
39119       )
39120    THEN
39121    NULL;
39122    --
39123    --
39124    
39125   l_ccid := AcctDerRule_12(
39126            p_application_id           => p_application_id
39127          , p_ae_header_id             => l_ae_header_id 
39128 , p_source_1 => p_source_1
39129 , p_source_2 => p_source_2
39130          , x_transaction_coa_id       => l_adr_transaction_coa_id
39131          , x_accounting_coa_id        => l_adr_accounting_coa_id
39132          , x_value_type_code          => l_adr_value_type_code
39133          , p_side                     => 'NA'
39134    );
39135 
39136    xla_ae_lines_pkg.set_ccid(
39137     p_code_combination_id          => l_ccid
39138   , p_value_type_code              => l_adr_value_type_code
39139   , p_transaction_coa_id           => l_adr_transaction_coa_id
39140   , p_accounting_coa_id            => l_adr_accounting_coa_id
39141   , p_adr_code                     => 'EXP'
39142   , p_adr_type_code                => 'S'
39143   , p_component_type               => l_component_type
39144   , p_component_code               => l_component_code
39148   , p_side                         => 'NA'
39145   , p_component_type_code          => l_component_type_code
39146   , p_component_appl_id            => l_component_appl_id
39147   , p_amb_context_code             => l_amb_context_code
39149   );
39150 
39151 
39152    --
39153    --
39154    END IF;
39155    --
39156    -- Bug 4922099
39157    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39158           (NVL(l_enc_upg_option, 'N') = 'O')
39159         ) AND
39160         (l_bflow_method_code = 'PRIOR_ENTRY')
39161       )
39162    THEN
39163       IF
39164       --
39165       1 = 2
39166       --
39167       THEN
39168       xla_accounting_err_pkg.build_message
39169                                     (p_appli_s_name            => 'XLA'
39170                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39171                                     ,p_token_1                 => 'LINE_NUMBER'
39172                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
39173                                     ,p_token_2                 => 'LINE_TYPE_NAME'
39174                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
39175                                                                              l_component_type
39176                                                                             ,l_component_code
39177                                                                             ,l_component_type_code
39178                                                                             ,l_component_appl_id
39179                                                                             ,l_amb_context_code
39180                                                                             ,l_entity_code
39181                                                                             ,l_event_class_code
39182                                                                            )
39183                                     ,p_token_3                 => 'OWNER'
39184                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
39185                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
39186                                                                           ,p_lookup_code    => l_component_type_code
39187                                                                          )
39188                                     ,p_token_4                 => 'PRODUCT_NAME'
39189                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39190                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39191                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39192                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39193                                     ,p_ae_header_id            =>  NULL
39194                                        );
39195 
39196         IF (C_LEVEL_ERROR>= g_log_level) THEN
39197                  trace
39198                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39199                       ,p_level    => C_LEVEL_ERROR
39200                       ,p_module   => l_log_module);
39201         END IF;
39202       END IF;
39203    END IF;
39204    --
39205    --
39206    ------------------------------------------------------------------------------------------------
39207    -- 4219869 Business Flow
39208    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39209    -- Prior Entry.  Currently, the following code is always generated.
39210    ------------------------------------------------------------------------------------------------
39211    XLA_AE_LINES_PKG.ValidateCurrentLine;
39212 
39213    ------------------------------------------------------------------------------------
39214    -- 4219869 Business Flow
39215    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39216    ------------------------------------------------------------------------------------
39217    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39218 
39219    ----------------------------------------------------------------------------------
39220    -- 4219869 Business Flow
39221    -- Update journal entry status -- Need to generate this within IF <condition>
39222    ----------------------------------------------------------------------------------
39223    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39224          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39225          ,p_balance_type_code => l_balance_type_code
39226          );
39227 
39228    -------------------------------------------------------------------------------------------
39229    -- 4262811 - Generate the Accrual Reversal lines
39230    -------------------------------------------------------------------------------------------
39231    BEGIN
39232       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39233                               (g_array_event(p_event_id).array_value_num('header_index'));
39234       IF l_acc_rev_flag IS NULL THEN
39235          l_acc_rev_flag := 'N';
39236       END IF;
39237    EXCEPTION
39238       WHEN OTHERS THEN
39239          l_acc_rev_flag := 'N';
39240    END;
39241    --
39242    IF (l_acc_rev_flag = 'Y') THEN
39243 
39247        ------------------------------------------------------------------------------------------
39244        -- 4645092  ------------------------------------------------------------------------------
39245        -- To allow MPA report to determine if it should generate report process
39246        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39248 
39249        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39250        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39251    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
39252    -- call ADRs
39253    -- Bug 4922099
39254    --
39255    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39256         (NVL(l_actual_upg_option, 'N') = 'O') OR
39257         (NVL(l_enc_upg_option, 'N') = 'O')
39258       )
39259    THEN
39260    NULL;
39261    --
39262    --
39263    
39264   l_ccid := AcctDerRule_12(
39265            p_application_id           => p_application_id
39266          , p_ae_header_id             => l_ae_header_id 
39267 , p_source_1 => p_source_1
39268 , p_source_2 => p_source_2
39269          , x_transaction_coa_id       => l_adr_transaction_coa_id
39270          , x_accounting_coa_id        => l_adr_accounting_coa_id
39271          , x_value_type_code          => l_adr_value_type_code
39272          , p_side                     => 'NA'
39273    );
39274 
39275    xla_ae_lines_pkg.set_ccid(
39276     p_code_combination_id          => l_ccid
39277   , p_value_type_code              => l_adr_value_type_code
39278   , p_transaction_coa_id           => l_adr_transaction_coa_id
39279   , p_accounting_coa_id            => l_adr_accounting_coa_id
39280   , p_adr_code                     => 'EXP'
39281   , p_adr_type_code                => 'S'
39282   , p_component_type               => l_component_type
39283   , p_component_code               => l_component_code
39284   , p_component_type_code          => l_component_type_code
39285   , p_component_appl_id            => l_component_appl_id
39286   , p_amb_context_code             => l_amb_context_code
39287   , p_side                         => 'NA'
39288   );
39289 
39290 
39291    --
39292    --
39293    END IF;
39294 
39295        --
39296        -- Update the line information that should be overwritten
39297        --
39298        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39299                                          p_header_num   => 1);
39300        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39301 
39302        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39303 
39304        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39305           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39306        END IF;
39307 
39308       --
39309       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39310       --
39311       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39312           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39313       ELSE
39314           ---------------------------------------------------------------------------------------------------
39315           -- 4262811a Switch Sign
39316           ---------------------------------------------------------------------------------------------------
39317           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39318           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39319                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39320           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39321                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39322           -- 5132302
39323           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39324                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39325 
39326       END IF;
39327 
39328       -- 4955764
39329       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39330       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39331 
39332 
39333       XLA_AE_LINES_PKG.ValidateCurrentLine;
39334       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39335 
39336       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39337                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39338                ,p_balance_type_code => l_balance_type_code);
39339 
39340    END IF;
39341 
39342    -----------------------------------------------------------------------------------------
39343    -- 4262811 Multiperiod Accounting
39344    -----------------------------------------------------------------------------------------
39345      -- No MPA option is assigned.
39346 
39347 
39348 END IF;
39349 END IF;
39350 --
39351 
39352 --
39353 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39354    trace
39355       (p_msg      => 'END of AcctLineType_103'
39356       ,p_level    => C_LEVEL_PROCEDURE
39357       ,p_module   => l_log_module);
39358 END IF;
39359 --
39360 EXCEPTION
39364        xla_exceptions_pkg.raise_message
39361   WHEN xla_exceptions_pkg.application_exception THEN
39362       RAISE;
39363   WHEN OTHERS THEN
39365            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_103');
39366 END AcctLineType_103;
39367 --
39368 
39369 ---------------------------------------
39370 --
39371 -- PRIVATE FUNCTION
39372 --         AcctLineType_104
39373 --
39374 ---------------------------------------
39375 PROCEDURE AcctLineType_104 (
39376   p_application_id        IN NUMBER
39377  ,p_event_id              IN NUMBER
39378  ,p_calculate_acctd_flag  IN VARCHAR2
39379  ,p_calculate_g_l_flag    IN VARCHAR2
39380  ,p_actual_flag           IN OUT VARCHAR2
39381  ,p_balance_type_code     OUT VARCHAR2
39382  ,p_gain_or_loss_ref      OUT VARCHAR2
39383  
39384 --Transaction Account
39385  , p_source_1            IN NUMBER
39386 --Journal Line Type
39387  , p_source_2            IN VARCHAR2
39388 --Entered Amount
39389  , p_source_3            IN NUMBER
39390 --First Distribution Identifier
39391  , p_source_5            IN NUMBER
39392 --Distribution Type
39393  , p_source_6            IN VARCHAR2
39394 --Currency Code
39395  , p_source_7            IN VARCHAR2
39396 --Currency Conversion Date
39397  , p_source_8            IN DATE
39398 --Currency Conversion Rate
39399  , p_source_9            IN NUMBER
39400 --Currency Conversion Type
39401  , p_source_10            IN VARCHAR2
39402 --Accounted Amount
39403  , p_source_11            IN NUMBER
39404 )
39405 IS
39406 
39407 l_component_type              VARCHAR2(80);
39408 l_component_code              VARCHAR2(30);
39409 l_component_type_code         VARCHAR2(1);
39410 l_component_appl_id           INTEGER;
39411 l_amb_context_code            VARCHAR2(30);
39412 l_entity_code                 VARCHAR2(30);
39413 l_event_class_code            VARCHAR2(30);
39414 l_ae_header_id                NUMBER;
39415 l_event_type_code             VARCHAR2(30);
39416 l_line_definition_code        VARCHAR2(30);
39417 l_line_definition_owner_code  VARCHAR2(1);
39418 --
39419 -- adr variables
39420 l_segment                     VARCHAR2(30);
39421 l_ccid                        NUMBER;
39422 l_adr_transaction_coa_id      NUMBER;
39423 l_adr_accounting_coa_id       NUMBER;
39424 l_adr_flexfield_segment_code  VARCHAR2(30);
39425 l_adr_flex_value_set_id       NUMBER;
39426 l_adr_value_type_code         VARCHAR2(30);
39427 l_adr_value_combination_id    NUMBER;
39428 l_adr_value_segment_code      VARCHAR2(30);
39429 
39430 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
39431 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
39432 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
39433 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
39434 
39435 -- 4262811 Variables ------------------------------------------------------------------------------------------
39436 l_entered_amt_idx             NUMBER;
39437 l_accted_amt_idx              NUMBER;
39438 l_acc_rev_flag                VARCHAR2(1);
39439 l_accrual_line_num            NUMBER;
39440 l_tmp_amt                     NUMBER;
39441 l_acc_rev_natural_side_code   VARCHAR2(1);
39442 
39443 l_num_entries                 NUMBER;
39444 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
39445 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
39446 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
39447 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
39448 l_recog_line_1                NUMBER;
39449 l_recog_line_2                NUMBER;
39450 
39451 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
39452 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
39453 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
39454 
39455 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39456 
39457 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
39458 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
39459 
39460 ---------------------------------------------------------------------------------------------------------------
39461 
39462 
39463 --
39464 -- bulk performance
39465 --
39466 l_balance_type_code           VARCHAR2(1);
39467 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
39468 l_log_module                  VARCHAR2(240);
39469 
39470 --
39471 -- Upgrade strategy
39472 --
39473 l_actual_upg_option           VARCHAR2(1);
39474 l_enc_upg_option           VARCHAR2(1);
39475 
39476 --
39477 BEGIN
39478 --
39479 IF g_log_enabled THEN
39480       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_104';
39481 END IF;
39482 --
39483 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39484 
39485       trace
39486          (p_msg      => 'BEGIN of AcctLineType_104'
39487          ,p_level    => C_LEVEL_PROCEDURE
39488          ,p_module   => l_log_module);
39489 
39490 END IF;
39491 --
39492 l_component_type             := 'AMB_JLT';
39493 l_component_code             := 'EXP';
39494 l_component_type_code        := 'S';
39495 l_component_appl_id          :=  555;
39499 l_event_type_code            := 'PO_RECEIPT';
39496 l_amb_context_code           := 'DEFAULT';
39497 l_entity_code                := 'PURCHASING';
39498 l_event_class_code           := 'DELIVER';
39500 l_line_definition_owner_code := 'S';
39501 l_line_definition_code       := 'DELIVER';
39502 --
39503 l_balance_type_code          := 'A';
39504 l_segment                     := NULL;
39505 l_ccid                        := NULL;
39506 l_adr_transaction_coa_id      := NULL;
39507 l_adr_accounting_coa_id       := NULL;
39508 l_adr_flexfield_segment_code  := NULL;
39509 l_adr_flex_value_set_id       := NULL;
39510 l_adr_value_type_code         := NULL;
39511 l_adr_value_combination_id    := NULL;
39512 l_adr_value_segment_code      := NULL;
39513 
39514 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
39515 l_bflow_class_code           := '';    -- 4219869 Business Flow
39516 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
39517 l_budgetary_control_flag     := 'N';
39518 
39519 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
39520 l_bflow_applied_to_amt       := NULL; -- 5132302
39521 l_entered_amt_idx            := NULL;          -- 4262811
39522 l_accted_amt_idx             := NULL;          -- 4262811
39523 l_acc_rev_flag               := NULL;          -- 4262811
39524 l_accrual_line_num           := NULL;          -- 4262811
39525 l_tmp_amt                    := NULL;          -- 4262811
39526 --
39527  
39528 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39529     l_balance_type_code <> 'B' THEN
39530 IF NVL(p_source_2,'
39531 ') =  'EXP'
39532  THEN 
39533 
39534    --
39535    XLA_AE_LINES_PKG.SetNewLine;
39536 
39537    p_balance_type_code          := l_balance_type_code;
39538    -- set the flag so later we will know whether the gain loss line needs to be created
39539    
39540    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39541      p_actual_flag :='A';
39542    END IF;
39543 
39544    --
39545    -- bulk performance
39546    --
39547    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39548                                       p_header_num   => 0); -- 4262811
39549    --
39550    -- set accounting line options
39551    --
39552    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39553            p_natural_side_code          => 'D'
39554          , p_gain_or_loss_flag          => 'N'
39555          , p_gl_transfer_mode_code      => 'D'
39556          , p_acct_entry_type_code       => 'A'
39557          , p_switch_side_flag           => 'Y'
39558          , p_merge_duplicate_code       => 'W'
39559          );
39560    --
39561    l_acc_rev_natural_side_code := 'C';  -- 4262811
39562    -- 
39563    --
39564    -- set accounting line type info
39565    --
39566    xla_ae_lines_pkg.SetAcctLineType
39567       (p_component_type             => l_component_type
39568       ,p_event_type_code            => l_event_type_code
39569       ,p_line_definition_owner_code => l_line_definition_owner_code
39570       ,p_line_definition_code       => l_line_definition_code
39571       ,p_accounting_line_code       => l_component_code
39572       ,p_accounting_line_type_code  => l_component_type_code
39573       ,p_accounting_line_appl_id    => l_component_appl_id
39574       ,p_amb_context_code           => l_amb_context_code
39575       ,p_entity_code                => l_entity_code
39576       ,p_event_class_code           => l_event_class_code);
39577    --
39578    -- set accounting class
39579    --
39580    xla_ae_lines_pkg.SetAcctClass(
39581            p_accounting_class_code  => 'EXPENSE'
39582          , p_ae_header_id           => l_ae_header_id
39583          );
39584 
39585    --
39586    -- set rounding class
39587    --
39588    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39589                       'EXPENSE';
39590 
39591    --
39592    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39593    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39594    --
39595    -- bulk performance
39596    --
39597    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39598 
39599    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39600       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39601 
39602    -- 4955764
39603    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39604       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39605 
39606    -- 4458381 Public Sector Enh
39607    
39608    --
39609    -- set accounting attributes for the line type
39610    --
39611    l_entered_amt_idx := 3;
39612    l_accted_amt_idx  := 8;
39613    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
39614    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
39615    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
39616    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
39617    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
39618    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
39619    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
39620    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
39624    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
39621    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
39622    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
39623    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
39625    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
39626    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
39627    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
39628    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
39629    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
39630 
39631    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39632    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39633 
39634    ---------------------------------------------------------------------------------------------------------------
39635    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39636    ---------------------------------------------------------------------------------------------------------------
39637    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39638 
39639    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39640    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39641 
39642    IF xla_accounting_cache_pkg.GetValueChar
39643          (p_source_code         => 'LEDGER_CATEGORY_CODE'
39644          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39645    AND l_bflow_method_code = 'PRIOR_ENTRY'
39646 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39647    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39648          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39649        )
39650    THEN
39651          xla_ae_lines_pkg.BflowUpgEntry
39652            (p_business_method_code    => l_bflow_method_code
39653            ,p_business_class_code     => l_bflow_class_code
39654            ,p_balance_type            => l_balance_type_code);
39655    ELSE
39656       NULL;
39657 -- No business flow processing for business flow method of NONE.
39658    END IF;
39659 
39660    --
39661    -- call analytical criteria
39662    --
39663    
39664    --
39665    -- call description
39666    --
39667    -- No description or it is inherited.
39668    --
39669    -- call ADRs
39670    -- Bug 4922099
39671    --
39672    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39673         (NVL(l_actual_upg_option, 'N') = 'O') OR
39674         (NVL(l_enc_upg_option, 'N') = 'O')
39675       )
39676    THEN
39677    NULL;
39678    --
39679    --
39680    
39681   l_ccid := AcctDerRule_12(
39682            p_application_id           => p_application_id
39683          , p_ae_header_id             => l_ae_header_id 
39684 , p_source_1 => p_source_1
39685 , p_source_2 => p_source_2
39686          , x_transaction_coa_id       => l_adr_transaction_coa_id
39687          , x_accounting_coa_id        => l_adr_accounting_coa_id
39688          , x_value_type_code          => l_adr_value_type_code
39689          , p_side                     => 'NA'
39690    );
39691 
39692    xla_ae_lines_pkg.set_ccid(
39693     p_code_combination_id          => l_ccid
39694   , p_value_type_code              => l_adr_value_type_code
39695   , p_transaction_coa_id           => l_adr_transaction_coa_id
39696   , p_accounting_coa_id            => l_adr_accounting_coa_id
39697   , p_adr_code                     => 'EXP'
39698   , p_adr_type_code                => 'S'
39699   , p_component_type               => l_component_type
39700   , p_component_code               => l_component_code
39701   , p_component_type_code          => l_component_type_code
39702   , p_component_appl_id            => l_component_appl_id
39703   , p_amb_context_code             => l_amb_context_code
39704   , p_side                         => 'NA'
39705   );
39706 
39707 
39708    --
39709    --
39710    END IF;
39711    --
39712    -- Bug 4922099
39713    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39714           (NVL(l_enc_upg_option, 'N') = 'O')
39715         ) AND
39716         (l_bflow_method_code = 'PRIOR_ENTRY')
39717       )
39718    THEN
39719       IF
39720       --
39721       1 = 2
39722       --
39723       THEN
39724       xla_accounting_err_pkg.build_message
39725                                     (p_appli_s_name            => 'XLA'
39726                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39727                                     ,p_token_1                 => 'LINE_NUMBER'
39728                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
39729                                     ,p_token_2                 => 'LINE_TYPE_NAME'
39730                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
39731                                                                              l_component_type
39732                                                                             ,l_component_code
39733                                                                             ,l_component_type_code
39737                                                                             ,l_event_class_code
39734                                                                             ,l_component_appl_id
39735                                                                             ,l_amb_context_code
39736                                                                             ,l_entity_code
39738                                                                            )
39739                                     ,p_token_3                 => 'OWNER'
39740                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
39741                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
39742                                                                           ,p_lookup_code    => l_component_type_code
39743                                                                          )
39744                                     ,p_token_4                 => 'PRODUCT_NAME'
39745                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39746                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39747                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39748                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39749                                     ,p_ae_header_id            =>  NULL
39750                                        );
39751 
39752         IF (C_LEVEL_ERROR>= g_log_level) THEN
39753                  trace
39754                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39755                       ,p_level    => C_LEVEL_ERROR
39756                       ,p_module   => l_log_module);
39757         END IF;
39758       END IF;
39759    END IF;
39760    --
39761    --
39762    ------------------------------------------------------------------------------------------------
39763    -- 4219869 Business Flow
39764    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39765    -- Prior Entry.  Currently, the following code is always generated.
39766    ------------------------------------------------------------------------------------------------
39767    XLA_AE_LINES_PKG.ValidateCurrentLine;
39768 
39769    ------------------------------------------------------------------------------------
39770    -- 4219869 Business Flow
39771    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39772    ------------------------------------------------------------------------------------
39773    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39774 
39775    ----------------------------------------------------------------------------------
39776    -- 4219869 Business Flow
39777    -- Update journal entry status -- Need to generate this within IF <condition>
39778    ----------------------------------------------------------------------------------
39779    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39780          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39781          ,p_balance_type_code => l_balance_type_code
39782          );
39783 
39784    -------------------------------------------------------------------------------------------
39785    -- 4262811 - Generate the Accrual Reversal lines
39786    -------------------------------------------------------------------------------------------
39787    BEGIN
39788       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39789                               (g_array_event(p_event_id).array_value_num('header_index'));
39790       IF l_acc_rev_flag IS NULL THEN
39791          l_acc_rev_flag := 'N';
39792       END IF;
39793    EXCEPTION
39794       WHEN OTHERS THEN
39795          l_acc_rev_flag := 'N';
39796    END;
39797    --
39798    IF (l_acc_rev_flag = 'Y') THEN
39799 
39800        -- 4645092  ------------------------------------------------------------------------------
39801        -- To allow MPA report to determine if it should generate report process
39802        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39803        ------------------------------------------------------------------------------------------
39804 
39805        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39806        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39807    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
39808    -- call ADRs
39809    -- Bug 4922099
39810    --
39811    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39812         (NVL(l_actual_upg_option, 'N') = 'O') OR
39813         (NVL(l_enc_upg_option, 'N') = 'O')
39814       )
39815    THEN
39816    NULL;
39817    --
39818    --
39819    
39820   l_ccid := AcctDerRule_12(
39821            p_application_id           => p_application_id
39822          , p_ae_header_id             => l_ae_header_id 
39823 , p_source_1 => p_source_1
39824 , p_source_2 => p_source_2
39825          , x_transaction_coa_id       => l_adr_transaction_coa_id
39826          , x_accounting_coa_id        => l_adr_accounting_coa_id
39827          , x_value_type_code          => l_adr_value_type_code
39828          , p_side                     => 'NA'
39829    );
39830 
39831    xla_ae_lines_pkg.set_ccid(
39832     p_code_combination_id          => l_ccid
39833   , p_value_type_code              => l_adr_value_type_code
39837   , p_adr_type_code                => 'S'
39834   , p_transaction_coa_id           => l_adr_transaction_coa_id
39835   , p_accounting_coa_id            => l_adr_accounting_coa_id
39836   , p_adr_code                     => 'EXP'
39838   , p_component_type               => l_component_type
39839   , p_component_code               => l_component_code
39840   , p_component_type_code          => l_component_type_code
39841   , p_component_appl_id            => l_component_appl_id
39842   , p_amb_context_code             => l_amb_context_code
39843   , p_side                         => 'NA'
39844   );
39845 
39846 
39847    --
39848    --
39849    END IF;
39850 
39851        --
39852        -- Update the line information that should be overwritten
39853        --
39854        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39855                                          p_header_num   => 1);
39856        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39857 
39858        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39859 
39860        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39861           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39862        END IF;
39863 
39864       --
39865       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39866       --
39867       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39868           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39869       ELSE
39870           ---------------------------------------------------------------------------------------------------
39871           -- 4262811a Switch Sign
39872           ---------------------------------------------------------------------------------------------------
39873           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39874           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39875                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39876           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39877                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39878           -- 5132302
39879           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39880                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39881 
39882       END IF;
39883 
39884       -- 4955764
39885       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39886       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39887 
39888 
39889       XLA_AE_LINES_PKG.ValidateCurrentLine;
39890       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39891 
39892       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39893                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39894                ,p_balance_type_code => l_balance_type_code);
39895 
39896    END IF;
39897 
39898    -----------------------------------------------------------------------------------------
39899    -- 4262811 Multiperiod Accounting
39900    -----------------------------------------------------------------------------------------
39901      -- No MPA option is assigned.
39902 
39903 
39904 END IF;
39905 END IF;
39906 --
39907 
39908 --
39909 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39910    trace
39911       (p_msg      => 'END of AcctLineType_104'
39912       ,p_level    => C_LEVEL_PROCEDURE
39913       ,p_module   => l_log_module);
39914 END IF;
39915 --
39916 EXCEPTION
39917   WHEN xla_exceptions_pkg.application_exception THEN
39918       RAISE;
39919   WHEN OTHERS THEN
39920        xla_exceptions_pkg.raise_message
39921            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_104');
39922 END AcctLineType_104;
39923 --
39924 
39925 ---------------------------------------
39926 --
39927 -- PRIVATE FUNCTION
39928 --         AcctLineType_105
39929 --
39930 ---------------------------------------
39931 PROCEDURE AcctLineType_105 (
39932   p_application_id        IN NUMBER
39933  ,p_event_id              IN NUMBER
39934  ,p_calculate_acctd_flag  IN VARCHAR2
39935  ,p_calculate_g_l_flag    IN VARCHAR2
39936  ,p_actual_flag           IN OUT VARCHAR2
39937  ,p_balance_type_code     OUT VARCHAR2
39938  ,p_gain_or_loss_ref      OUT VARCHAR2
39939  
39940 --Transaction Account
39941  , p_source_1            IN NUMBER
39942 --Journal Line Type
39943  , p_source_2            IN VARCHAR2
39944 --Entered Amount
39945  , p_source_3            IN NUMBER
39946 --First Distribution Identifier
39947  , p_source_5            IN NUMBER
39948 --Distribution Type
39949  , p_source_6            IN VARCHAR2
39950 --Currency Code
39951  , p_source_7            IN VARCHAR2
39952 --Currency Conversion Date
39953  , p_source_8            IN DATE
39954 --Currency Conversion Rate
39955  , p_source_9            IN NUMBER
39956 --Currency Conversion Type
39957  , p_source_10            IN VARCHAR2
39958 --Accounted Amount
39962 
39959  , p_source_11            IN NUMBER
39960 )
39961 IS
39963 l_component_type              VARCHAR2(80);
39964 l_component_code              VARCHAR2(30);
39965 l_component_type_code         VARCHAR2(1);
39966 l_component_appl_id           INTEGER;
39967 l_amb_context_code            VARCHAR2(30);
39968 l_entity_code                 VARCHAR2(30);
39969 l_event_class_code            VARCHAR2(30);
39970 l_ae_header_id                NUMBER;
39971 l_event_type_code             VARCHAR2(30);
39972 l_line_definition_code        VARCHAR2(30);
39973 l_line_definition_owner_code  VARCHAR2(1);
39974 --
39975 -- adr variables
39976 l_segment                     VARCHAR2(30);
39977 l_ccid                        NUMBER;
39978 l_adr_transaction_coa_id      NUMBER;
39979 l_adr_accounting_coa_id       NUMBER;
39980 l_adr_flexfield_segment_code  VARCHAR2(30);
39981 l_adr_flex_value_set_id       NUMBER;
39982 l_adr_value_type_code         VARCHAR2(30);
39983 l_adr_value_combination_id    NUMBER;
39984 l_adr_value_segment_code      VARCHAR2(30);
39985 
39986 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
39987 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
39988 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
39989 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
39990 
39991 -- 4262811 Variables ------------------------------------------------------------------------------------------
39992 l_entered_amt_idx             NUMBER;
39993 l_accted_amt_idx              NUMBER;
39994 l_acc_rev_flag                VARCHAR2(1);
39995 l_accrual_line_num            NUMBER;
39996 l_tmp_amt                     NUMBER;
39997 l_acc_rev_natural_side_code   VARCHAR2(1);
39998 
39999 l_num_entries                 NUMBER;
40000 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
40001 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
40002 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
40003 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
40004 l_recog_line_1                NUMBER;
40005 l_recog_line_2                NUMBER;
40006 
40007 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
40008 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
40009 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
40010 
40011 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40012 
40013 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
40014 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
40015 
40016 ---------------------------------------------------------------------------------------------------------------
40017 
40018 
40019 --
40020 -- bulk performance
40021 --
40022 l_balance_type_code           VARCHAR2(1);
40023 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
40024 l_log_module                  VARCHAR2(240);
40025 
40026 --
40027 -- Upgrade strategy
40028 --
40029 l_actual_upg_option           VARCHAR2(1);
40030 l_enc_upg_option           VARCHAR2(1);
40031 
40032 --
40033 BEGIN
40034 --
40035 IF g_log_enabled THEN
40036       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_105';
40037 END IF;
40038 --
40039 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40040 
40041       trace
40042          (p_msg      => 'BEGIN of AcctLineType_105'
40043          ,p_level    => C_LEVEL_PROCEDURE
40044          ,p_module   => l_log_module);
40045 
40046 END IF;
40047 --
40048 l_component_type             := 'AMB_JLT';
40049 l_component_code             := 'EXP';
40050 l_component_type_code        := 'S';
40051 l_component_appl_id          :=  555;
40052 l_amb_context_code           := 'DEFAULT';
40053 l_entity_code                := 'INVENTORY';
40054 l_event_class_code           := 'DIR_INTERORG_RCPT';
40055 l_event_type_code            := 'DIR_INTERORG_RCPT';
40056 l_line_definition_owner_code := 'S';
40057 l_line_definition_code       := 'DIRECT_XFER_RECV';
40058 --
40059 l_balance_type_code          := 'A';
40060 l_segment                     := NULL;
40061 l_ccid                        := NULL;
40062 l_adr_transaction_coa_id      := NULL;
40063 l_adr_accounting_coa_id       := NULL;
40064 l_adr_flexfield_segment_code  := NULL;
40065 l_adr_flex_value_set_id       := NULL;
40066 l_adr_value_type_code         := NULL;
40067 l_adr_value_combination_id    := NULL;
40068 l_adr_value_segment_code      := NULL;
40069 
40070 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
40071 l_bflow_class_code           := '';    -- 4219869 Business Flow
40072 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
40073 l_budgetary_control_flag     := 'N';
40074 
40075 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
40076 l_bflow_applied_to_amt       := NULL; -- 5132302
40077 l_entered_amt_idx            := NULL;          -- 4262811
40078 l_accted_amt_idx             := NULL;          -- 4262811
40079 l_acc_rev_flag               := NULL;          -- 4262811
40080 l_accrual_line_num           := NULL;          -- 4262811
40081 l_tmp_amt                    := NULL;          -- 4262811
40082 --
40083  
40087 ') =  'EXP'
40084 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40085     l_balance_type_code <> 'B' THEN
40086 IF NVL(p_source_2,'
40088  THEN 
40089 
40090    --
40091    XLA_AE_LINES_PKG.SetNewLine;
40092 
40093    p_balance_type_code          := l_balance_type_code;
40094    -- set the flag so later we will know whether the gain loss line needs to be created
40095    
40096    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40097      p_actual_flag :='A';
40098    END IF;
40099 
40100    --
40101    -- bulk performance
40102    --
40103    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40104                                       p_header_num   => 0); -- 4262811
40105    --
40106    -- set accounting line options
40107    --
40108    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40109            p_natural_side_code          => 'D'
40110          , p_gain_or_loss_flag          => 'N'
40111          , p_gl_transfer_mode_code      => 'D'
40112          , p_acct_entry_type_code       => 'A'
40113          , p_switch_side_flag           => 'Y'
40114          , p_merge_duplicate_code       => 'W'
40115          );
40116    --
40117    l_acc_rev_natural_side_code := 'C';  -- 4262811
40118    -- 
40119    --
40120    -- set accounting line type info
40121    --
40122    xla_ae_lines_pkg.SetAcctLineType
40123       (p_component_type             => l_component_type
40124       ,p_event_type_code            => l_event_type_code
40125       ,p_line_definition_owner_code => l_line_definition_owner_code
40126       ,p_line_definition_code       => l_line_definition_code
40127       ,p_accounting_line_code       => l_component_code
40128       ,p_accounting_line_type_code  => l_component_type_code
40129       ,p_accounting_line_appl_id    => l_component_appl_id
40130       ,p_amb_context_code           => l_amb_context_code
40131       ,p_entity_code                => l_entity_code
40132       ,p_event_class_code           => l_event_class_code);
40133    --
40134    -- set accounting class
40135    --
40136    xla_ae_lines_pkg.SetAcctClass(
40137            p_accounting_class_code  => 'EXPENSE'
40138          , p_ae_header_id           => l_ae_header_id
40139          );
40140 
40141    --
40142    -- set rounding class
40143    --
40144    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40145                       'EXPENSE';
40146 
40147    --
40148    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40149    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40150    --
40151    -- bulk performance
40152    --
40153    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40154 
40155    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40156       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40157 
40158    -- 4955764
40159    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40160       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40161 
40162    -- 4458381 Public Sector Enh
40163    
40164    --
40165    -- set accounting attributes for the line type
40166    --
40167    l_entered_amt_idx := 3;
40168    l_accted_amt_idx  := 8;
40169    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40170    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
40171    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
40172    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
40173    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
40174    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
40175    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
40176    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
40177    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
40178    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
40179    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
40180    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
40181    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
40182    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
40183    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
40184    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
40185    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
40186 
40187    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40188    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40189 
40190    ---------------------------------------------------------------------------------------------------------------
40191    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40192    ---------------------------------------------------------------------------------------------------------------
40193    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40194 
40195    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40199          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40196    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40197 
40198    IF xla_accounting_cache_pkg.GetValueChar
40200          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40201    AND l_bflow_method_code = 'PRIOR_ENTRY'
40202 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40203    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40204          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40205        )
40206    THEN
40207          xla_ae_lines_pkg.BflowUpgEntry
40208            (p_business_method_code    => l_bflow_method_code
40209            ,p_business_class_code     => l_bflow_class_code
40210            ,p_balance_type            => l_balance_type_code);
40211    ELSE
40212       NULL;
40213 -- No business flow processing for business flow method of NONE.
40214    END IF;
40215 
40216    --
40217    -- call analytical criteria
40218    --
40219    
40220    --
40221    -- call description
40222    --
40223    -- No description or it is inherited.
40224    --
40225    -- call ADRs
40226    -- Bug 4922099
40227    --
40228    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40229         (NVL(l_actual_upg_option, 'N') = 'O') OR
40230         (NVL(l_enc_upg_option, 'N') = 'O')
40231       )
40232    THEN
40233    NULL;
40234    --
40235    --
40236    
40237   l_ccid := AcctDerRule_12(
40238            p_application_id           => p_application_id
40239          , p_ae_header_id             => l_ae_header_id 
40240 , p_source_1 => p_source_1
40241 , p_source_2 => p_source_2
40242          , x_transaction_coa_id       => l_adr_transaction_coa_id
40243          , x_accounting_coa_id        => l_adr_accounting_coa_id
40244          , x_value_type_code          => l_adr_value_type_code
40245          , p_side                     => 'NA'
40246    );
40247 
40248    xla_ae_lines_pkg.set_ccid(
40249     p_code_combination_id          => l_ccid
40250   , p_value_type_code              => l_adr_value_type_code
40251   , p_transaction_coa_id           => l_adr_transaction_coa_id
40252   , p_accounting_coa_id            => l_adr_accounting_coa_id
40253   , p_adr_code                     => 'EXP'
40254   , p_adr_type_code                => 'S'
40255   , p_component_type               => l_component_type
40256   , p_component_code               => l_component_code
40257   , p_component_type_code          => l_component_type_code
40258   , p_component_appl_id            => l_component_appl_id
40259   , p_amb_context_code             => l_amb_context_code
40260   , p_side                         => 'NA'
40261   );
40262 
40263 
40264    --
40265    --
40266    END IF;
40267    --
40268    -- Bug 4922099
40269    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40270           (NVL(l_enc_upg_option, 'N') = 'O')
40271         ) AND
40272         (l_bflow_method_code = 'PRIOR_ENTRY')
40273       )
40274    THEN
40275       IF
40276       --
40277       1 = 2
40278       --
40279       THEN
40280       xla_accounting_err_pkg.build_message
40281                                     (p_appli_s_name            => 'XLA'
40282                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40283                                     ,p_token_1                 => 'LINE_NUMBER'
40284                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40285                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40286                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40287                                                                              l_component_type
40288                                                                             ,l_component_code
40289                                                                             ,l_component_type_code
40290                                                                             ,l_component_appl_id
40291                                                                             ,l_amb_context_code
40292                                                                             ,l_entity_code
40293                                                                             ,l_event_class_code
40294                                                                            )
40295                                     ,p_token_3                 => 'OWNER'
40296                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40297                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40298                                                                           ,p_lookup_code    => l_component_type_code
40299                                                                          )
40300                                     ,p_token_4                 => 'PRODUCT_NAME'
40301                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40302                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40303                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40307 
40304                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40305                                     ,p_ae_header_id            =>  NULL
40306                                        );
40308         IF (C_LEVEL_ERROR>= g_log_level) THEN
40309                  trace
40310                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40311                       ,p_level    => C_LEVEL_ERROR
40312                       ,p_module   => l_log_module);
40313         END IF;
40314       END IF;
40315    END IF;
40316    --
40317    --
40318    ------------------------------------------------------------------------------------------------
40319    -- 4219869 Business Flow
40320    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40321    -- Prior Entry.  Currently, the following code is always generated.
40322    ------------------------------------------------------------------------------------------------
40323    XLA_AE_LINES_PKG.ValidateCurrentLine;
40324 
40325    ------------------------------------------------------------------------------------
40326    -- 4219869 Business Flow
40327    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40328    ------------------------------------------------------------------------------------
40329    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40330 
40331    ----------------------------------------------------------------------------------
40332    -- 4219869 Business Flow
40333    -- Update journal entry status -- Need to generate this within IF <condition>
40334    ----------------------------------------------------------------------------------
40335    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40336          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40337          ,p_balance_type_code => l_balance_type_code
40338          );
40339 
40340    -------------------------------------------------------------------------------------------
40341    -- 4262811 - Generate the Accrual Reversal lines
40342    -------------------------------------------------------------------------------------------
40343    BEGIN
40344       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40345                               (g_array_event(p_event_id).array_value_num('header_index'));
40346       IF l_acc_rev_flag IS NULL THEN
40347          l_acc_rev_flag := 'N';
40348       END IF;
40349    EXCEPTION
40350       WHEN OTHERS THEN
40351          l_acc_rev_flag := 'N';
40352    END;
40353    --
40354    IF (l_acc_rev_flag = 'Y') THEN
40355 
40356        -- 4645092  ------------------------------------------------------------------------------
40357        -- To allow MPA report to determine if it should generate report process
40358        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40359        ------------------------------------------------------------------------------------------
40360 
40361        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40362        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40363    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
40364    -- call ADRs
40365    -- Bug 4922099
40366    --
40367    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40368         (NVL(l_actual_upg_option, 'N') = 'O') OR
40369         (NVL(l_enc_upg_option, 'N') = 'O')
40370       )
40371    THEN
40372    NULL;
40373    --
40374    --
40375    
40376   l_ccid := AcctDerRule_12(
40377            p_application_id           => p_application_id
40378          , p_ae_header_id             => l_ae_header_id 
40379 , p_source_1 => p_source_1
40380 , p_source_2 => p_source_2
40381          , x_transaction_coa_id       => l_adr_transaction_coa_id
40382          , x_accounting_coa_id        => l_adr_accounting_coa_id
40383          , x_value_type_code          => l_adr_value_type_code
40384          , p_side                     => 'NA'
40385    );
40386 
40387    xla_ae_lines_pkg.set_ccid(
40388     p_code_combination_id          => l_ccid
40389   , p_value_type_code              => l_adr_value_type_code
40390   , p_transaction_coa_id           => l_adr_transaction_coa_id
40391   , p_accounting_coa_id            => l_adr_accounting_coa_id
40392   , p_adr_code                     => 'EXP'
40393   , p_adr_type_code                => 'S'
40394   , p_component_type               => l_component_type
40395   , p_component_code               => l_component_code
40396   , p_component_type_code          => l_component_type_code
40397   , p_component_appl_id            => l_component_appl_id
40398   , p_amb_context_code             => l_amb_context_code
40399   , p_side                         => 'NA'
40400   );
40401 
40402 
40403    --
40404    --
40405    END IF;
40406 
40407        --
40408        -- Update the line information that should be overwritten
40409        --
40410        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40411                                          p_header_num   => 1);
40412        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40413 
40414        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40415 
40416        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40417           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40421       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40418        END IF;
40419 
40420       --
40422       --
40423       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40424           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40425       ELSE
40426           ---------------------------------------------------------------------------------------------------
40427           -- 4262811a Switch Sign
40428           ---------------------------------------------------------------------------------------------------
40429           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40430           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40431                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40432           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40433                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40434           -- 5132302
40435           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40436                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40437 
40438       END IF;
40439 
40440       -- 4955764
40441       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40442       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40443 
40444 
40445       XLA_AE_LINES_PKG.ValidateCurrentLine;
40446       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40447 
40448       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40449                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
40450                ,p_balance_type_code => l_balance_type_code);
40451 
40452    END IF;
40453 
40454    -----------------------------------------------------------------------------------------
40455    -- 4262811 Multiperiod Accounting
40456    -----------------------------------------------------------------------------------------
40457      -- No MPA option is assigned.
40458 
40459 
40460 END IF;
40461 END IF;
40462 --
40463 
40464 --
40465 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40466    trace
40467       (p_msg      => 'END of AcctLineType_105'
40468       ,p_level    => C_LEVEL_PROCEDURE
40469       ,p_module   => l_log_module);
40470 END IF;
40471 --
40472 EXCEPTION
40473   WHEN xla_exceptions_pkg.application_exception THEN
40474       RAISE;
40475   WHEN OTHERS THEN
40476        xla_exceptions_pkg.raise_message
40477            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_105');
40478 END AcctLineType_105;
40479 --
40480 
40481 ---------------------------------------
40482 --
40483 -- PRIVATE FUNCTION
40484 --         AcctLineType_106
40485 --
40486 ---------------------------------------
40487 PROCEDURE AcctLineType_106 (
40488   p_application_id        IN NUMBER
40489  ,p_event_id              IN NUMBER
40490  ,p_calculate_acctd_flag  IN VARCHAR2
40491  ,p_calculate_g_l_flag    IN VARCHAR2
40492  ,p_actual_flag           IN OUT VARCHAR2
40493  ,p_balance_type_code     OUT VARCHAR2
40494  ,p_gain_or_loss_ref      OUT VARCHAR2
40495  
40496 --Transaction Account
40497  , p_source_1            IN NUMBER
40498 --Journal Line Type
40499  , p_source_2            IN VARCHAR2
40500 --Entered Amount
40501  , p_source_3            IN NUMBER
40502 --First Distribution Identifier
40503  , p_source_5            IN NUMBER
40504 --Distribution Type
40505  , p_source_6            IN VARCHAR2
40506 --Currency Code
40507  , p_source_7            IN VARCHAR2
40508 --Currency Conversion Date
40509  , p_source_8            IN DATE
40510 --Currency Conversion Rate
40511  , p_source_9            IN NUMBER
40512 --Currency Conversion Type
40513  , p_source_10            IN VARCHAR2
40514 --Accounted Amount
40515  , p_source_11            IN NUMBER
40516 )
40517 IS
40518 
40519 l_component_type              VARCHAR2(80);
40520 l_component_code              VARCHAR2(30);
40521 l_component_type_code         VARCHAR2(1);
40522 l_component_appl_id           INTEGER;
40523 l_amb_context_code            VARCHAR2(30);
40524 l_entity_code                 VARCHAR2(30);
40525 l_event_class_code            VARCHAR2(30);
40526 l_ae_header_id                NUMBER;
40527 l_event_type_code             VARCHAR2(30);
40528 l_line_definition_code        VARCHAR2(30);
40529 l_line_definition_owner_code  VARCHAR2(1);
40530 --
40531 -- adr variables
40532 l_segment                     VARCHAR2(30);
40533 l_ccid                        NUMBER;
40534 l_adr_transaction_coa_id      NUMBER;
40535 l_adr_accounting_coa_id       NUMBER;
40536 l_adr_flexfield_segment_code  VARCHAR2(30);
40537 l_adr_flex_value_set_id       NUMBER;
40538 l_adr_value_type_code         VARCHAR2(30);
40539 l_adr_value_combination_id    NUMBER;
40540 l_adr_value_segment_code      VARCHAR2(30);
40541 
40542 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
40543 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
40547 -- 4262811 Variables ------------------------------------------------------------------------------------------
40544 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
40545 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
40546 
40548 l_entered_amt_idx             NUMBER;
40549 l_accted_amt_idx              NUMBER;
40550 l_acc_rev_flag                VARCHAR2(1);
40551 l_accrual_line_num            NUMBER;
40552 l_tmp_amt                     NUMBER;
40553 l_acc_rev_natural_side_code   VARCHAR2(1);
40554 
40555 l_num_entries                 NUMBER;
40556 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
40557 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
40558 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
40559 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
40560 l_recog_line_1                NUMBER;
40561 l_recog_line_2                NUMBER;
40562 
40563 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
40564 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
40565 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
40566 
40567 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40568 
40569 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
40570 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
40571 
40572 ---------------------------------------------------------------------------------------------------------------
40573 
40574 
40575 --
40576 -- bulk performance
40577 --
40578 l_balance_type_code           VARCHAR2(1);
40579 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
40580 l_log_module                  VARCHAR2(240);
40581 
40582 --
40583 -- Upgrade strategy
40584 --
40585 l_actual_upg_option           VARCHAR2(1);
40586 l_enc_upg_option           VARCHAR2(1);
40587 
40588 --
40589 BEGIN
40590 --
40591 IF g_log_enabled THEN
40592       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_106';
40593 END IF;
40594 --
40595 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40596 
40597       trace
40598          (p_msg      => 'BEGIN of AcctLineType_106'
40599          ,p_level    => C_LEVEL_PROCEDURE
40600          ,p_module   => l_log_module);
40601 
40602 END IF;
40603 --
40604 l_component_type             := 'AMB_JLT';
40605 l_component_code             := 'EXP';
40606 l_component_type_code        := 'S';
40607 l_component_appl_id          :=  555;
40608 l_amb_context_code           := 'DEFAULT';
40609 l_entity_code                := 'INVENTORY';
40610 l_event_class_code           := 'INT_ORDER_TO_EXP';
40611 l_event_type_code            := 'EXP_REQ_RCPT';
40612 l_line_definition_owner_code := 'S';
40613 l_line_definition_code       := 'EXP_REQ_RCPT';
40614 --
40615 l_balance_type_code          := 'A';
40616 l_segment                     := NULL;
40617 l_ccid                        := NULL;
40618 l_adr_transaction_coa_id      := NULL;
40619 l_adr_accounting_coa_id       := NULL;
40620 l_adr_flexfield_segment_code  := NULL;
40621 l_adr_flex_value_set_id       := NULL;
40622 l_adr_value_type_code         := NULL;
40623 l_adr_value_combination_id    := NULL;
40624 l_adr_value_segment_code      := NULL;
40625 
40626 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
40627 l_bflow_class_code           := '';    -- 4219869 Business Flow
40628 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
40629 l_budgetary_control_flag     := 'N';
40630 
40631 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
40632 l_bflow_applied_to_amt       := NULL; -- 5132302
40633 l_entered_amt_idx            := NULL;          -- 4262811
40634 l_accted_amt_idx             := NULL;          -- 4262811
40635 l_acc_rev_flag               := NULL;          -- 4262811
40636 l_accrual_line_num           := NULL;          -- 4262811
40637 l_tmp_amt                    := NULL;          -- 4262811
40638 --
40639  
40640 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40641     l_balance_type_code <> 'B' THEN
40642 IF NVL(p_source_2,'
40643 ') =  'EXP'
40644  THEN 
40645 
40646    --
40647    XLA_AE_LINES_PKG.SetNewLine;
40648 
40649    p_balance_type_code          := l_balance_type_code;
40650    -- set the flag so later we will know whether the gain loss line needs to be created
40651    
40652    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40653      p_actual_flag :='A';
40654    END IF;
40655 
40656    --
40657    -- bulk performance
40658    --
40659    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40660                                       p_header_num   => 0); -- 4262811
40661    --
40662    -- set accounting line options
40663    --
40664    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40665            p_natural_side_code          => 'D'
40666          , p_gain_or_loss_flag          => 'N'
40667          , p_gl_transfer_mode_code      => 'D'
40668          , p_acct_entry_type_code       => 'A'
40669          , p_switch_side_flag           => 'Y'
40670          , p_merge_duplicate_code       => 'W'
40671          );
40672    --
40673    l_acc_rev_natural_side_code := 'C';  -- 4262811
40674    -- 
40675    --
40679       (p_component_type             => l_component_type
40676    -- set accounting line type info
40677    --
40678    xla_ae_lines_pkg.SetAcctLineType
40680       ,p_event_type_code            => l_event_type_code
40681       ,p_line_definition_owner_code => l_line_definition_owner_code
40682       ,p_line_definition_code       => l_line_definition_code
40683       ,p_accounting_line_code       => l_component_code
40684       ,p_accounting_line_type_code  => l_component_type_code
40685       ,p_accounting_line_appl_id    => l_component_appl_id
40686       ,p_amb_context_code           => l_amb_context_code
40687       ,p_entity_code                => l_entity_code
40688       ,p_event_class_code           => l_event_class_code);
40689    --
40690    -- set accounting class
40691    --
40692    xla_ae_lines_pkg.SetAcctClass(
40693            p_accounting_class_code  => 'EXPENSE'
40694          , p_ae_header_id           => l_ae_header_id
40695          );
40696 
40697    --
40698    -- set rounding class
40699    --
40700    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40701                       'EXPENSE';
40702 
40703    --
40704    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40705    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40706    --
40707    -- bulk performance
40708    --
40709    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40710 
40711    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40712       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40713 
40714    -- 4955764
40715    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40716       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40717 
40718    -- 4458381 Public Sector Enh
40719    
40720    --
40721    -- set accounting attributes for the line type
40722    --
40723    l_entered_amt_idx := 3;
40724    l_accted_amt_idx  := 8;
40725    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40726    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
40727    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
40728    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
40729    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
40730    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
40731    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
40732    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
40733    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
40734    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
40735    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
40736    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
40737    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
40738    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
40739    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
40740    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
40741    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
40742 
40743    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40744    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40745 
40746    ---------------------------------------------------------------------------------------------------------------
40747    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40748    ---------------------------------------------------------------------------------------------------------------
40749    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40750 
40751    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40752    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40753 
40754    IF xla_accounting_cache_pkg.GetValueChar
40755          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40756          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40757    AND l_bflow_method_code = 'PRIOR_ENTRY'
40758 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40759    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40760          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40761        )
40762    THEN
40763          xla_ae_lines_pkg.BflowUpgEntry
40764            (p_business_method_code    => l_bflow_method_code
40765            ,p_business_class_code     => l_bflow_class_code
40766            ,p_balance_type            => l_balance_type_code);
40767    ELSE
40768       NULL;
40769 -- No business flow processing for business flow method of NONE.
40770    END IF;
40771 
40772    --
40773    -- call analytical criteria
40774    --
40775    
40776    --
40777    -- call description
40778    --
40779    -- No description or it is inherited.
40780    --
40781    -- call ADRs
40782    -- Bug 4922099
40783    --
40784    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40785         (NVL(l_actual_upg_option, 'N') = 'O') OR
40786         (NVL(l_enc_upg_option, 'N') = 'O')
40787       )
40788    THEN
40792    
40789    NULL;
40790    --
40791    --
40793   l_ccid := AcctDerRule_12(
40794            p_application_id           => p_application_id
40795          , p_ae_header_id             => l_ae_header_id 
40796 , p_source_1 => p_source_1
40797 , p_source_2 => p_source_2
40798          , x_transaction_coa_id       => l_adr_transaction_coa_id
40799          , x_accounting_coa_id        => l_adr_accounting_coa_id
40800          , x_value_type_code          => l_adr_value_type_code
40801          , p_side                     => 'NA'
40802    );
40803 
40804    xla_ae_lines_pkg.set_ccid(
40805     p_code_combination_id          => l_ccid
40806   , p_value_type_code              => l_adr_value_type_code
40807   , p_transaction_coa_id           => l_adr_transaction_coa_id
40808   , p_accounting_coa_id            => l_adr_accounting_coa_id
40809   , p_adr_code                     => 'EXP'
40810   , p_adr_type_code                => 'S'
40811   , p_component_type               => l_component_type
40812   , p_component_code               => l_component_code
40813   , p_component_type_code          => l_component_type_code
40814   , p_component_appl_id            => l_component_appl_id
40815   , p_amb_context_code             => l_amb_context_code
40816   , p_side                         => 'NA'
40817   );
40818 
40819 
40820    --
40821    --
40822    END IF;
40823    --
40824    -- Bug 4922099
40825    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40826           (NVL(l_enc_upg_option, 'N') = 'O')
40827         ) AND
40828         (l_bflow_method_code = 'PRIOR_ENTRY')
40829       )
40830    THEN
40831       IF
40832       --
40833       1 = 2
40834       --
40835       THEN
40836       xla_accounting_err_pkg.build_message
40837                                     (p_appli_s_name            => 'XLA'
40838                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40839                                     ,p_token_1                 => 'LINE_NUMBER'
40840                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40841                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40842                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40843                                                                              l_component_type
40844                                                                             ,l_component_code
40845                                                                             ,l_component_type_code
40846                                                                             ,l_component_appl_id
40847                                                                             ,l_amb_context_code
40848                                                                             ,l_entity_code
40849                                                                             ,l_event_class_code
40850                                                                            )
40851                                     ,p_token_3                 => 'OWNER'
40852                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40853                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40854                                                                           ,p_lookup_code    => l_component_type_code
40855                                                                          )
40856                                     ,p_token_4                 => 'PRODUCT_NAME'
40857                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40858                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40859                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40860                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40861                                     ,p_ae_header_id            =>  NULL
40862                                        );
40863 
40864         IF (C_LEVEL_ERROR>= g_log_level) THEN
40865                  trace
40866                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40867                       ,p_level    => C_LEVEL_ERROR
40868                       ,p_module   => l_log_module);
40869         END IF;
40870       END IF;
40871    END IF;
40872    --
40873    --
40874    ------------------------------------------------------------------------------------------------
40875    -- 4219869 Business Flow
40876    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40877    -- Prior Entry.  Currently, the following code is always generated.
40878    ------------------------------------------------------------------------------------------------
40879    XLA_AE_LINES_PKG.ValidateCurrentLine;
40880 
40881    ------------------------------------------------------------------------------------
40882    -- 4219869 Business Flow
40883    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40884    ------------------------------------------------------------------------------------
40885    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40886 
40887    ----------------------------------------------------------------------------------
40888    -- 4219869 Business Flow
40892          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40889    -- Update journal entry status -- Need to generate this within IF <condition>
40890    ----------------------------------------------------------------------------------
40891    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40893          ,p_balance_type_code => l_balance_type_code
40894          );
40895 
40896    -------------------------------------------------------------------------------------------
40897    -- 4262811 - Generate the Accrual Reversal lines
40898    -------------------------------------------------------------------------------------------
40899    BEGIN
40900       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40901                               (g_array_event(p_event_id).array_value_num('header_index'));
40902       IF l_acc_rev_flag IS NULL THEN
40903          l_acc_rev_flag := 'N';
40904       END IF;
40905    EXCEPTION
40906       WHEN OTHERS THEN
40907          l_acc_rev_flag := 'N';
40908    END;
40909    --
40910    IF (l_acc_rev_flag = 'Y') THEN
40911 
40912        -- 4645092  ------------------------------------------------------------------------------
40913        -- To allow MPA report to determine if it should generate report process
40914        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40915        ------------------------------------------------------------------------------------------
40916 
40917        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40918        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40919    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
40920    -- call ADRs
40921    -- Bug 4922099
40922    --
40923    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40924         (NVL(l_actual_upg_option, 'N') = 'O') OR
40925         (NVL(l_enc_upg_option, 'N') = 'O')
40926       )
40927    THEN
40928    NULL;
40929    --
40930    --
40931    
40932   l_ccid := AcctDerRule_12(
40933            p_application_id           => p_application_id
40934          , p_ae_header_id             => l_ae_header_id 
40935 , p_source_1 => p_source_1
40936 , p_source_2 => p_source_2
40937          , x_transaction_coa_id       => l_adr_transaction_coa_id
40938          , x_accounting_coa_id        => l_adr_accounting_coa_id
40939          , x_value_type_code          => l_adr_value_type_code
40940          , p_side                     => 'NA'
40941    );
40942 
40943    xla_ae_lines_pkg.set_ccid(
40944     p_code_combination_id          => l_ccid
40945   , p_value_type_code              => l_adr_value_type_code
40946   , p_transaction_coa_id           => l_adr_transaction_coa_id
40947   , p_accounting_coa_id            => l_adr_accounting_coa_id
40948   , p_adr_code                     => 'EXP'
40949   , p_adr_type_code                => 'S'
40950   , p_component_type               => l_component_type
40951   , p_component_code               => l_component_code
40952   , p_component_type_code          => l_component_type_code
40953   , p_component_appl_id            => l_component_appl_id
40954   , p_amb_context_code             => l_amb_context_code
40955   , p_side                         => 'NA'
40956   );
40957 
40958 
40959    --
40960    --
40961    END IF;
40962 
40963        --
40964        -- Update the line information that should be overwritten
40965        --
40966        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40967                                          p_header_num   => 1);
40968        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40969 
40970        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40971 
40972        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40973           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40974        END IF;
40975 
40976       --
40977       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40978       --
40979       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40980           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40981       ELSE
40982           ---------------------------------------------------------------------------------------------------
40983           -- 4262811a Switch Sign
40984           ---------------------------------------------------------------------------------------------------
40985           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40986           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40987                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40988           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40989                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40990           -- 5132302
40991           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40992                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40993 
40994       END IF;
40995 
40996       -- 4955764
40997       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41001       XLA_AE_LINES_PKG.ValidateCurrentLine;
40998       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40999 
41000 
41002       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41003 
41004       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41005                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41006                ,p_balance_type_code => l_balance_type_code);
41007 
41008    END IF;
41009 
41010    -----------------------------------------------------------------------------------------
41011    -- 4262811 Multiperiod Accounting
41012    -----------------------------------------------------------------------------------------
41013      -- No MPA option is assigned.
41014 
41015 
41016 END IF;
41017 END IF;
41018 --
41019 
41020 --
41021 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41022    trace
41023       (p_msg      => 'END of AcctLineType_106'
41024       ,p_level    => C_LEVEL_PROCEDURE
41025       ,p_module   => l_log_module);
41026 END IF;
41027 --
41028 EXCEPTION
41029   WHEN xla_exceptions_pkg.application_exception THEN
41030       RAISE;
41031   WHEN OTHERS THEN
41032        xla_exceptions_pkg.raise_message
41033            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_106');
41034 END AcctLineType_106;
41035 --
41036 
41037 ---------------------------------------
41038 --
41039 -- PRIVATE FUNCTION
41040 --         AcctLineType_107
41041 --
41042 ---------------------------------------
41043 PROCEDURE AcctLineType_107 (
41044   p_application_id        IN NUMBER
41045  ,p_event_id              IN NUMBER
41046  ,p_calculate_acctd_flag  IN VARCHAR2
41047  ,p_calculate_g_l_flag    IN VARCHAR2
41048  ,p_actual_flag           IN OUT VARCHAR2
41049  ,p_balance_type_code     OUT VARCHAR2
41050  ,p_gain_or_loss_ref      OUT VARCHAR2
41051  
41052 --Transaction Account
41053  , p_source_1            IN NUMBER
41054 --Journal Line Type
41055  , p_source_2            IN VARCHAR2
41056 --Entered Amount
41057  , p_source_3            IN NUMBER
41058 --First Distribution Identifier
41059  , p_source_5            IN NUMBER
41060 --Distribution Type
41061  , p_source_6            IN VARCHAR2
41062 --Currency Code
41063  , p_source_7            IN VARCHAR2
41064 --Currency Conversion Date
41065  , p_source_8            IN DATE
41066 --Currency Conversion Rate
41067  , p_source_9            IN NUMBER
41068 --Currency Conversion Type
41069  , p_source_10            IN VARCHAR2
41070 --Accounted Amount
41071  , p_source_11            IN NUMBER
41072 )
41073 IS
41074 
41075 l_component_type              VARCHAR2(80);
41076 l_component_code              VARCHAR2(30);
41077 l_component_type_code         VARCHAR2(1);
41078 l_component_appl_id           INTEGER;
41079 l_amb_context_code            VARCHAR2(30);
41080 l_entity_code                 VARCHAR2(30);
41081 l_event_class_code            VARCHAR2(30);
41082 l_ae_header_id                NUMBER;
41083 l_event_type_code             VARCHAR2(30);
41084 l_line_definition_code        VARCHAR2(30);
41085 l_line_definition_owner_code  VARCHAR2(1);
41086 --
41087 -- adr variables
41088 l_segment                     VARCHAR2(30);
41089 l_ccid                        NUMBER;
41090 l_adr_transaction_coa_id      NUMBER;
41091 l_adr_accounting_coa_id       NUMBER;
41092 l_adr_flexfield_segment_code  VARCHAR2(30);
41093 l_adr_flex_value_set_id       NUMBER;
41094 l_adr_value_type_code         VARCHAR2(30);
41095 l_adr_value_combination_id    NUMBER;
41096 l_adr_value_segment_code      VARCHAR2(30);
41097 
41098 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41099 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41100 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41101 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41102 
41103 -- 4262811 Variables ------------------------------------------------------------------------------------------
41104 l_entered_amt_idx             NUMBER;
41105 l_accted_amt_idx              NUMBER;
41106 l_acc_rev_flag                VARCHAR2(1);
41107 l_accrual_line_num            NUMBER;
41108 l_tmp_amt                     NUMBER;
41109 l_acc_rev_natural_side_code   VARCHAR2(1);
41110 
41111 l_num_entries                 NUMBER;
41112 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41113 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41114 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41115 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41116 l_recog_line_1                NUMBER;
41117 l_recog_line_2                NUMBER;
41118 
41119 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41120 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41121 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41122 
41123 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41124 
41125 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41126 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41127 
41131 --
41128 ---------------------------------------------------------------------------------------------------------------
41129 
41130 
41132 -- bulk performance
41133 --
41134 l_balance_type_code           VARCHAR2(1);
41135 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41136 l_log_module                  VARCHAR2(240);
41137 
41138 --
41139 -- Upgrade strategy
41140 --
41141 l_actual_upg_option           VARCHAR2(1);
41142 l_enc_upg_option           VARCHAR2(1);
41143 
41144 --
41145 BEGIN
41146 --
41147 IF g_log_enabled THEN
41148       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_107';
41149 END IF;
41150 --
41151 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41152 
41153       trace
41154          (p_msg      => 'BEGIN of AcctLineType_107'
41155          ,p_level    => C_LEVEL_PROCEDURE
41156          ,p_module   => l_log_module);
41157 
41158 END IF;
41159 --
41160 l_component_type             := 'AMB_JLT';
41161 l_component_code             := 'EXP';
41162 l_component_type_code        := 'S';
41163 l_component_appl_id          :=  555;
41164 l_amb_context_code           := 'DEFAULT';
41165 l_entity_code                := 'INVENTORY';
41166 l_event_class_code           := 'INT_ORDER_TO_EXP';
41167 l_event_type_code            := 'INT_ORDER_ISSUE';
41168 l_line_definition_owner_code := 'S';
41169 l_line_definition_code       := 'INT_ORDER_ISSUE';
41170 --
41171 l_balance_type_code          := 'A';
41172 l_segment                     := NULL;
41173 l_ccid                        := NULL;
41174 l_adr_transaction_coa_id      := NULL;
41175 l_adr_accounting_coa_id       := NULL;
41176 l_adr_flexfield_segment_code  := NULL;
41177 l_adr_flex_value_set_id       := NULL;
41178 l_adr_value_type_code         := NULL;
41179 l_adr_value_combination_id    := NULL;
41180 l_adr_value_segment_code      := NULL;
41181 
41182 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
41183 l_bflow_class_code           := '';    -- 4219869 Business Flow
41184 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
41185 l_budgetary_control_flag     := 'N';
41186 
41187 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41188 l_bflow_applied_to_amt       := NULL; -- 5132302
41189 l_entered_amt_idx            := NULL;          -- 4262811
41190 l_accted_amt_idx             := NULL;          -- 4262811
41191 l_acc_rev_flag               := NULL;          -- 4262811
41192 l_accrual_line_num           := NULL;          -- 4262811
41193 l_tmp_amt                    := NULL;          -- 4262811
41194 --
41195  
41196 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41197     l_balance_type_code <> 'B' THEN
41198 IF NVL(p_source_2,'
41199 ') =  'EXP'
41200  THEN 
41201 
41202    --
41203    XLA_AE_LINES_PKG.SetNewLine;
41204 
41205    p_balance_type_code          := l_balance_type_code;
41206    -- set the flag so later we will know whether the gain loss line needs to be created
41207    
41208    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41209      p_actual_flag :='A';
41210    END IF;
41211 
41212    --
41213    -- bulk performance
41214    --
41215    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41216                                       p_header_num   => 0); -- 4262811
41217    --
41218    -- set accounting line options
41219    --
41220    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41221            p_natural_side_code          => 'D'
41222          , p_gain_or_loss_flag          => 'N'
41223          , p_gl_transfer_mode_code      => 'D'
41224          , p_acct_entry_type_code       => 'A'
41225          , p_switch_side_flag           => 'Y'
41226          , p_merge_duplicate_code       => 'W'
41227          );
41228    --
41229    l_acc_rev_natural_side_code := 'C';  -- 4262811
41230    -- 
41231    --
41232    -- set accounting line type info
41233    --
41234    xla_ae_lines_pkg.SetAcctLineType
41235       (p_component_type             => l_component_type
41236       ,p_event_type_code            => l_event_type_code
41237       ,p_line_definition_owner_code => l_line_definition_owner_code
41238       ,p_line_definition_code       => l_line_definition_code
41239       ,p_accounting_line_code       => l_component_code
41240       ,p_accounting_line_type_code  => l_component_type_code
41241       ,p_accounting_line_appl_id    => l_component_appl_id
41242       ,p_amb_context_code           => l_amb_context_code
41243       ,p_entity_code                => l_entity_code
41244       ,p_event_class_code           => l_event_class_code);
41245    --
41246    -- set accounting class
41247    --
41248    xla_ae_lines_pkg.SetAcctClass(
41249            p_accounting_class_code  => 'EXPENSE'
41250          , p_ae_header_id           => l_ae_header_id
41251          );
41252 
41253    --
41254    -- set rounding class
41255    --
41256    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41257                       'EXPENSE';
41258 
41259    --
41260    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41261    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41262    --
41263    -- bulk performance
41267    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41264    --
41265    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41266 
41268       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41269 
41270    -- 4955764
41271    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41272       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41273 
41274    -- 4458381 Public Sector Enh
41275    
41276    --
41277    -- set accounting attributes for the line type
41278    --
41279    l_entered_amt_idx := 3;
41280    l_accted_amt_idx  := 8;
41281    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41282    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41283    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
41284    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
41285    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
41286    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
41287    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
41288    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
41289    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
41290    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
41291    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
41292    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
41293    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
41294    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
41295    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
41296    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
41297    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
41298 
41299    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41300    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41301 
41302    ---------------------------------------------------------------------------------------------------------------
41303    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41304    ---------------------------------------------------------------------------------------------------------------
41305    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41306 
41307    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41308    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41309 
41310    IF xla_accounting_cache_pkg.GetValueChar
41311          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41312          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41313    AND l_bflow_method_code = 'PRIOR_ENTRY'
41314 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41315    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41316          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41317        )
41318    THEN
41319          xla_ae_lines_pkg.BflowUpgEntry
41320            (p_business_method_code    => l_bflow_method_code
41321            ,p_business_class_code     => l_bflow_class_code
41322            ,p_balance_type            => l_balance_type_code);
41323    ELSE
41324       NULL;
41325 -- No business flow processing for business flow method of NONE.
41326    END IF;
41327 
41328    --
41329    -- call analytical criteria
41330    --
41331    
41332    --
41333    -- call description
41334    --
41335    -- No description or it is inherited.
41336    --
41337    -- call ADRs
41338    -- Bug 4922099
41339    --
41340    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41341         (NVL(l_actual_upg_option, 'N') = 'O') OR
41342         (NVL(l_enc_upg_option, 'N') = 'O')
41343       )
41344    THEN
41345    NULL;
41346    --
41347    --
41348    
41349   l_ccid := AcctDerRule_12(
41350            p_application_id           => p_application_id
41351          , p_ae_header_id             => l_ae_header_id 
41352 , p_source_1 => p_source_1
41353 , p_source_2 => p_source_2
41354          , x_transaction_coa_id       => l_adr_transaction_coa_id
41355          , x_accounting_coa_id        => l_adr_accounting_coa_id
41356          , x_value_type_code          => l_adr_value_type_code
41357          , p_side                     => 'NA'
41358    );
41359 
41360    xla_ae_lines_pkg.set_ccid(
41361     p_code_combination_id          => l_ccid
41362   , p_value_type_code              => l_adr_value_type_code
41363   , p_transaction_coa_id           => l_adr_transaction_coa_id
41364   , p_accounting_coa_id            => l_adr_accounting_coa_id
41365   , p_adr_code                     => 'EXP'
41366   , p_adr_type_code                => 'S'
41367   , p_component_type               => l_component_type
41368   , p_component_code               => l_component_code
41369   , p_component_type_code          => l_component_type_code
41370   , p_component_appl_id            => l_component_appl_id
41371   , p_amb_context_code             => l_amb_context_code
41372   , p_side                         => 'NA'
41373   );
41374 
41375 
41376    --
41377    --
41378    END IF;
41379    --
41380    -- Bug 4922099
41384         (l_bflow_method_code = 'PRIOR_ENTRY')
41381    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41382           (NVL(l_enc_upg_option, 'N') = 'O')
41383         ) AND
41385       )
41386    THEN
41387       IF
41388       --
41389       1 = 2
41390       --
41391       THEN
41392       xla_accounting_err_pkg.build_message
41393                                     (p_appli_s_name            => 'XLA'
41394                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41395                                     ,p_token_1                 => 'LINE_NUMBER'
41396                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
41397                                     ,p_token_2                 => 'LINE_TYPE_NAME'
41398                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
41399                                                                              l_component_type
41400                                                                             ,l_component_code
41401                                                                             ,l_component_type_code
41402                                                                             ,l_component_appl_id
41403                                                                             ,l_amb_context_code
41404                                                                             ,l_entity_code
41405                                                                             ,l_event_class_code
41406                                                                            )
41407                                     ,p_token_3                 => 'OWNER'
41408                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
41409                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
41410                                                                           ,p_lookup_code    => l_component_type_code
41411                                                                          )
41412                                     ,p_token_4                 => 'PRODUCT_NAME'
41413                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41414                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41415                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41416                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41417                                     ,p_ae_header_id            =>  NULL
41418                                        );
41419 
41420         IF (C_LEVEL_ERROR>= g_log_level) THEN
41421                  trace
41422                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41423                       ,p_level    => C_LEVEL_ERROR
41424                       ,p_module   => l_log_module);
41425         END IF;
41426       END IF;
41427    END IF;
41428    --
41429    --
41430    ------------------------------------------------------------------------------------------------
41431    -- 4219869 Business Flow
41432    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41433    -- Prior Entry.  Currently, the following code is always generated.
41434    ------------------------------------------------------------------------------------------------
41435    XLA_AE_LINES_PKG.ValidateCurrentLine;
41436 
41437    ------------------------------------------------------------------------------------
41438    -- 4219869 Business Flow
41439    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41440    ------------------------------------------------------------------------------------
41441    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41442 
41443    ----------------------------------------------------------------------------------
41444    -- 4219869 Business Flow
41445    -- Update journal entry status -- Need to generate this within IF <condition>
41446    ----------------------------------------------------------------------------------
41447    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41448          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41449          ,p_balance_type_code => l_balance_type_code
41450          );
41451 
41452    -------------------------------------------------------------------------------------------
41453    -- 4262811 - Generate the Accrual Reversal lines
41454    -------------------------------------------------------------------------------------------
41455    BEGIN
41456       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
41457                               (g_array_event(p_event_id).array_value_num('header_index'));
41458       IF l_acc_rev_flag IS NULL THEN
41459          l_acc_rev_flag := 'N';
41460       END IF;
41461    EXCEPTION
41462       WHEN OTHERS THEN
41463          l_acc_rev_flag := 'N';
41464    END;
41465    --
41466    IF (l_acc_rev_flag = 'Y') THEN
41467 
41468        -- 4645092  ------------------------------------------------------------------------------
41469        -- To allow MPA report to determine if it should generate report process
41470        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41471        ------------------------------------------------------------------------------------------
41475    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
41472 
41473        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41474        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41476    -- call ADRs
41477    -- Bug 4922099
41478    --
41479    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41480         (NVL(l_actual_upg_option, 'N') = 'O') OR
41481         (NVL(l_enc_upg_option, 'N') = 'O')
41482       )
41483    THEN
41484    NULL;
41485    --
41486    --
41487    
41488   l_ccid := AcctDerRule_12(
41489            p_application_id           => p_application_id
41490          , p_ae_header_id             => l_ae_header_id 
41491 , p_source_1 => p_source_1
41492 , p_source_2 => p_source_2
41493          , x_transaction_coa_id       => l_adr_transaction_coa_id
41494          , x_accounting_coa_id        => l_adr_accounting_coa_id
41495          , x_value_type_code          => l_adr_value_type_code
41496          , p_side                     => 'NA'
41497    );
41498 
41499    xla_ae_lines_pkg.set_ccid(
41500     p_code_combination_id          => l_ccid
41501   , p_value_type_code              => l_adr_value_type_code
41502   , p_transaction_coa_id           => l_adr_transaction_coa_id
41503   , p_accounting_coa_id            => l_adr_accounting_coa_id
41504   , p_adr_code                     => 'EXP'
41505   , p_adr_type_code                => 'S'
41506   , p_component_type               => l_component_type
41507   , p_component_code               => l_component_code
41508   , p_component_type_code          => l_component_type_code
41509   , p_component_appl_id            => l_component_appl_id
41510   , p_amb_context_code             => l_amb_context_code
41511   , p_side                         => 'NA'
41512   );
41513 
41514 
41515    --
41516    --
41517    END IF;
41518 
41519        --
41520        -- Update the line information that should be overwritten
41521        --
41522        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41523                                          p_header_num   => 1);
41524        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
41525 
41526        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41527 
41528        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
41529           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41530        END IF;
41531 
41532       --
41533       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41534       --
41535       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41536           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
41537       ELSE
41538           ---------------------------------------------------------------------------------------------------
41539           -- 4262811a Switch Sign
41540           ---------------------------------------------------------------------------------------------------
41541           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
41542           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41543                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41544           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41545                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41546           -- 5132302
41547           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41548                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41549 
41550       END IF;
41551 
41552       -- 4955764
41553       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41554       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41555 
41556 
41557       XLA_AE_LINES_PKG.ValidateCurrentLine;
41558       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41559 
41560       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41561                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41562                ,p_balance_type_code => l_balance_type_code);
41563 
41564    END IF;
41565 
41566    -----------------------------------------------------------------------------------------
41567    -- 4262811 Multiperiod Accounting
41568    -----------------------------------------------------------------------------------------
41569      -- No MPA option is assigned.
41570 
41571 
41572 END IF;
41573 END IF;
41574 --
41575 
41576 --
41577 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41578    trace
41579       (p_msg      => 'END of AcctLineType_107'
41580       ,p_level    => C_LEVEL_PROCEDURE
41581       ,p_module   => l_log_module);
41582 END IF;
41583 --
41584 EXCEPTION
41585   WHEN xla_exceptions_pkg.application_exception THEN
41586       RAISE;
41587   WHEN OTHERS THEN
41588        xla_exceptions_pkg.raise_message
41589            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_107');
41590 END AcctLineType_107;
41591 --
41595 -- PRIVATE FUNCTION
41592 
41593 ---------------------------------------
41594 --
41596 --         AcctLineType_108
41597 --
41598 ---------------------------------------
41599 PROCEDURE AcctLineType_108 (
41600   p_application_id        IN NUMBER
41601  ,p_event_id              IN NUMBER
41602  ,p_calculate_acctd_flag  IN VARCHAR2
41603  ,p_calculate_g_l_flag    IN VARCHAR2
41604  ,p_actual_flag           IN OUT VARCHAR2
41605  ,p_balance_type_code     OUT VARCHAR2
41606  ,p_gain_or_loss_ref      OUT VARCHAR2
41607  
41608 --Transaction Account
41609  , p_source_1            IN NUMBER
41610 --Journal Line Type
41611  , p_source_2            IN VARCHAR2
41612 --Entered Amount
41613  , p_source_3            IN NUMBER
41614 --First Distribution Identifier
41615  , p_source_5            IN NUMBER
41616 --Distribution Type
41617  , p_source_6            IN VARCHAR2
41618 --Currency Code
41619  , p_source_7            IN VARCHAR2
41620 --Currency Conversion Date
41621  , p_source_8            IN DATE
41622 --Currency Conversion Rate
41623  , p_source_9            IN NUMBER
41624 --Currency Conversion Type
41625  , p_source_10            IN VARCHAR2
41626 --Accounted Amount
41627  , p_source_11            IN NUMBER
41628 )
41629 IS
41630 
41631 l_component_type              VARCHAR2(80);
41632 l_component_code              VARCHAR2(30);
41633 l_component_type_code         VARCHAR2(1);
41634 l_component_appl_id           INTEGER;
41635 l_amb_context_code            VARCHAR2(30);
41636 l_entity_code                 VARCHAR2(30);
41637 l_event_class_code            VARCHAR2(30);
41638 l_ae_header_id                NUMBER;
41639 l_event_type_code             VARCHAR2(30);
41640 l_line_definition_code        VARCHAR2(30);
41641 l_line_definition_owner_code  VARCHAR2(1);
41642 --
41643 -- adr variables
41644 l_segment                     VARCHAR2(30);
41645 l_ccid                        NUMBER;
41646 l_adr_transaction_coa_id      NUMBER;
41647 l_adr_accounting_coa_id       NUMBER;
41648 l_adr_flexfield_segment_code  VARCHAR2(30);
41649 l_adr_flex_value_set_id       NUMBER;
41650 l_adr_value_type_code         VARCHAR2(30);
41651 l_adr_value_combination_id    NUMBER;
41652 l_adr_value_segment_code      VARCHAR2(30);
41653 
41654 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41655 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41656 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41657 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41658 
41659 -- 4262811 Variables ------------------------------------------------------------------------------------------
41660 l_entered_amt_idx             NUMBER;
41661 l_accted_amt_idx              NUMBER;
41662 l_acc_rev_flag                VARCHAR2(1);
41663 l_accrual_line_num            NUMBER;
41664 l_tmp_amt                     NUMBER;
41665 l_acc_rev_natural_side_code   VARCHAR2(1);
41666 
41667 l_num_entries                 NUMBER;
41668 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41669 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41670 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41671 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41672 l_recog_line_1                NUMBER;
41673 l_recog_line_2                NUMBER;
41674 
41675 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41676 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41677 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41678 
41679 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41680 
41681 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41682 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41683 
41684 ---------------------------------------------------------------------------------------------------------------
41685 
41686 
41687 --
41688 -- bulk performance
41689 --
41690 l_balance_type_code           VARCHAR2(1);
41691 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41692 l_log_module                  VARCHAR2(240);
41693 
41694 --
41695 -- Upgrade strategy
41696 --
41697 l_actual_upg_option           VARCHAR2(1);
41698 l_enc_upg_option           VARCHAR2(1);
41699 
41700 --
41701 BEGIN
41702 --
41703 IF g_log_enabled THEN
41704       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_108';
41705 END IF;
41706 --
41707 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41708 
41709       trace
41710          (p_msg      => 'BEGIN of AcctLineType_108'
41711          ,p_level    => C_LEVEL_PROCEDURE
41712          ,p_module   => l_log_module);
41713 
41714 END IF;
41715 --
41716 l_component_type             := 'AMB_JLT';
41717 l_component_code             := 'EXP';
41718 l_component_type_code        := 'S';
41719 l_component_appl_id          :=  555;
41720 l_amb_context_code           := 'DEFAULT';
41721 l_entity_code                := 'INVENTORY';
41722 l_event_class_code           := 'LOG_INTERCOMPANY';
41723 l_event_type_code            := 'LOG_IC_SALES_RETURN';
41724 l_line_definition_owner_code := 'S';
41725 l_line_definition_code       := 'LOG_IC_SALES_RETURN';
41726 --
41730 l_adr_transaction_coa_id      := NULL;
41727 l_balance_type_code          := 'A';
41728 l_segment                     := NULL;
41729 l_ccid                        := NULL;
41731 l_adr_accounting_coa_id       := NULL;
41732 l_adr_flexfield_segment_code  := NULL;
41733 l_adr_flex_value_set_id       := NULL;
41734 l_adr_value_type_code         := NULL;
41735 l_adr_value_combination_id    := NULL;
41736 l_adr_value_segment_code      := NULL;
41737 
41738 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
41739 l_bflow_class_code           := '';    -- 4219869 Business Flow
41740 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
41741 l_budgetary_control_flag     := 'N';
41742 
41743 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41744 l_bflow_applied_to_amt       := NULL; -- 5132302
41745 l_entered_amt_idx            := NULL;          -- 4262811
41746 l_accted_amt_idx             := NULL;          -- 4262811
41747 l_acc_rev_flag               := NULL;          -- 4262811
41748 l_accrual_line_num           := NULL;          -- 4262811
41749 l_tmp_amt                    := NULL;          -- 4262811
41750 --
41751  
41752 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41753     l_balance_type_code <> 'B' THEN
41754 IF NVL(p_source_2,'
41755 ') =  'EXP'
41756  THEN 
41757 
41758    --
41759    XLA_AE_LINES_PKG.SetNewLine;
41760 
41761    p_balance_type_code          := l_balance_type_code;
41762    -- set the flag so later we will know whether the gain loss line needs to be created
41763    
41764    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41765      p_actual_flag :='A';
41766    END IF;
41767 
41768    --
41769    -- bulk performance
41770    --
41771    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41772                                       p_header_num   => 0); -- 4262811
41773    --
41774    -- set accounting line options
41775    --
41776    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41777            p_natural_side_code          => 'D'
41778          , p_gain_or_loss_flag          => 'N'
41779          , p_gl_transfer_mode_code      => 'D'
41780          , p_acct_entry_type_code       => 'A'
41781          , p_switch_side_flag           => 'Y'
41782          , p_merge_duplicate_code       => 'W'
41783          );
41784    --
41785    l_acc_rev_natural_side_code := 'C';  -- 4262811
41786    -- 
41787    --
41788    -- set accounting line type info
41789    --
41790    xla_ae_lines_pkg.SetAcctLineType
41791       (p_component_type             => l_component_type
41792       ,p_event_type_code            => l_event_type_code
41793       ,p_line_definition_owner_code => l_line_definition_owner_code
41794       ,p_line_definition_code       => l_line_definition_code
41795       ,p_accounting_line_code       => l_component_code
41796       ,p_accounting_line_type_code  => l_component_type_code
41797       ,p_accounting_line_appl_id    => l_component_appl_id
41798       ,p_amb_context_code           => l_amb_context_code
41799       ,p_entity_code                => l_entity_code
41800       ,p_event_class_code           => l_event_class_code);
41801    --
41802    -- set accounting class
41803    --
41804    xla_ae_lines_pkg.SetAcctClass(
41805            p_accounting_class_code  => 'EXPENSE'
41806          , p_ae_header_id           => l_ae_header_id
41807          );
41808 
41809    --
41810    -- set rounding class
41811    --
41812    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41813                       'EXPENSE';
41814 
41815    --
41816    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41817    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41818    --
41819    -- bulk performance
41820    --
41821    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41822 
41823    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41824       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41825 
41826    -- 4955764
41827    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41828       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41829 
41830    -- 4458381 Public Sector Enh
41831    
41832    --
41833    -- set accounting attributes for the line type
41834    --
41835    l_entered_amt_idx := 3;
41836    l_accted_amt_idx  := 8;
41837    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41838    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41839    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
41840    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
41841    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
41842    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
41843    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
41844    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
41845    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
41846    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
41847    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
41848    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
41852    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
41849    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
41850    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
41851    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
41853    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
41854 
41855    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41856    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41857 
41858    ---------------------------------------------------------------------------------------------------------------
41859    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41860    ---------------------------------------------------------------------------------------------------------------
41861    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41862 
41863    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41864    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41865 
41866    IF xla_accounting_cache_pkg.GetValueChar
41867          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41868          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41869    AND l_bflow_method_code = 'PRIOR_ENTRY'
41870 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41871    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41872          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41873        )
41874    THEN
41875          xla_ae_lines_pkg.BflowUpgEntry
41876            (p_business_method_code    => l_bflow_method_code
41877            ,p_business_class_code     => l_bflow_class_code
41878            ,p_balance_type            => l_balance_type_code);
41879    ELSE
41880       NULL;
41881 -- No business flow processing for business flow method of NONE.
41882    END IF;
41883 
41884    --
41885    -- call analytical criteria
41886    --
41887    
41888    --
41889    -- call description
41890    --
41891    -- No description or it is inherited.
41892    --
41893    -- call ADRs
41894    -- Bug 4922099
41895    --
41896    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41897         (NVL(l_actual_upg_option, 'N') = 'O') OR
41898         (NVL(l_enc_upg_option, 'N') = 'O')
41899       )
41900    THEN
41901    NULL;
41902    --
41903    --
41904    
41905   l_ccid := AcctDerRule_12(
41906            p_application_id           => p_application_id
41907          , p_ae_header_id             => l_ae_header_id 
41908 , p_source_1 => p_source_1
41909 , p_source_2 => p_source_2
41910          , x_transaction_coa_id       => l_adr_transaction_coa_id
41911          , x_accounting_coa_id        => l_adr_accounting_coa_id
41912          , x_value_type_code          => l_adr_value_type_code
41913          , p_side                     => 'NA'
41914    );
41915 
41916    xla_ae_lines_pkg.set_ccid(
41917     p_code_combination_id          => l_ccid
41918   , p_value_type_code              => l_adr_value_type_code
41919   , p_transaction_coa_id           => l_adr_transaction_coa_id
41920   , p_accounting_coa_id            => l_adr_accounting_coa_id
41921   , p_adr_code                     => 'EXP'
41922   , p_adr_type_code                => 'S'
41923   , p_component_type               => l_component_type
41924   , p_component_code               => l_component_code
41925   , p_component_type_code          => l_component_type_code
41926   , p_component_appl_id            => l_component_appl_id
41927   , p_amb_context_code             => l_amb_context_code
41928   , p_side                         => 'NA'
41929   );
41930 
41931 
41932    --
41933    --
41934    END IF;
41935    --
41936    -- Bug 4922099
41937    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41938           (NVL(l_enc_upg_option, 'N') = 'O')
41939         ) AND
41940         (l_bflow_method_code = 'PRIOR_ENTRY')
41941       )
41942    THEN
41943       IF
41944       --
41945       1 = 2
41946       --
41947       THEN
41948       xla_accounting_err_pkg.build_message
41949                                     (p_appli_s_name            => 'XLA'
41950                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41951                                     ,p_token_1                 => 'LINE_NUMBER'
41952                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
41953                                     ,p_token_2                 => 'LINE_TYPE_NAME'
41954                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
41955                                                                              l_component_type
41956                                                                             ,l_component_code
41957                                                                             ,l_component_type_code
41958                                                                             ,l_component_appl_id
41959                                                                             ,l_amb_context_code
41960                                                                             ,l_entity_code
41964                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
41961                                                                             ,l_event_class_code
41962                                                                            )
41963                                     ,p_token_3                 => 'OWNER'
41965                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
41966                                                                           ,p_lookup_code    => l_component_type_code
41967                                                                          )
41968                                     ,p_token_4                 => 'PRODUCT_NAME'
41969                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41970                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41971                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41972                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41973                                     ,p_ae_header_id            =>  NULL
41974                                        );
41975 
41976         IF (C_LEVEL_ERROR>= g_log_level) THEN
41977                  trace
41978                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41979                       ,p_level    => C_LEVEL_ERROR
41980                       ,p_module   => l_log_module);
41981         END IF;
41982       END IF;
41983    END IF;
41984    --
41985    --
41986    ------------------------------------------------------------------------------------------------
41987    -- 4219869 Business Flow
41988    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41989    -- Prior Entry.  Currently, the following code is always generated.
41990    ------------------------------------------------------------------------------------------------
41991    XLA_AE_LINES_PKG.ValidateCurrentLine;
41992 
41993    ------------------------------------------------------------------------------------
41994    -- 4219869 Business Flow
41995    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41996    ------------------------------------------------------------------------------------
41997    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41998 
41999    ----------------------------------------------------------------------------------
42000    -- 4219869 Business Flow
42001    -- Update journal entry status -- Need to generate this within IF <condition>
42002    ----------------------------------------------------------------------------------
42003    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42004          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42005          ,p_balance_type_code => l_balance_type_code
42006          );
42007 
42008    -------------------------------------------------------------------------------------------
42009    -- 4262811 - Generate the Accrual Reversal lines
42010    -------------------------------------------------------------------------------------------
42011    BEGIN
42012       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42013                               (g_array_event(p_event_id).array_value_num('header_index'));
42014       IF l_acc_rev_flag IS NULL THEN
42015          l_acc_rev_flag := 'N';
42016       END IF;
42017    EXCEPTION
42018       WHEN OTHERS THEN
42019          l_acc_rev_flag := 'N';
42020    END;
42021    --
42022    IF (l_acc_rev_flag = 'Y') THEN
42023 
42024        -- 4645092  ------------------------------------------------------------------------------
42025        -- To allow MPA report to determine if it should generate report process
42026        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42027        ------------------------------------------------------------------------------------------
42028 
42029        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42030        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42031    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
42032    -- call ADRs
42033    -- Bug 4922099
42034    --
42035    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42036         (NVL(l_actual_upg_option, 'N') = 'O') OR
42037         (NVL(l_enc_upg_option, 'N') = 'O')
42038       )
42039    THEN
42040    NULL;
42041    --
42042    --
42043    
42044   l_ccid := AcctDerRule_12(
42045            p_application_id           => p_application_id
42046          , p_ae_header_id             => l_ae_header_id 
42047 , p_source_1 => p_source_1
42048 , p_source_2 => p_source_2
42049          , x_transaction_coa_id       => l_adr_transaction_coa_id
42050          , x_accounting_coa_id        => l_adr_accounting_coa_id
42051          , x_value_type_code          => l_adr_value_type_code
42052          , p_side                     => 'NA'
42053    );
42054 
42055    xla_ae_lines_pkg.set_ccid(
42056     p_code_combination_id          => l_ccid
42057   , p_value_type_code              => l_adr_value_type_code
42058   , p_transaction_coa_id           => l_adr_transaction_coa_id
42059   , p_accounting_coa_id            => l_adr_accounting_coa_id
42060   , p_adr_code                     => 'EXP'
42061   , p_adr_type_code                => 'S'
42062   , p_component_type               => l_component_type
42063   , p_component_code               => l_component_code
42067   , p_side                         => 'NA'
42064   , p_component_type_code          => l_component_type_code
42065   , p_component_appl_id            => l_component_appl_id
42066   , p_amb_context_code             => l_amb_context_code
42068   );
42069 
42070 
42071    --
42072    --
42073    END IF;
42074 
42075        --
42076        -- Update the line information that should be overwritten
42077        --
42078        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42079                                          p_header_num   => 1);
42080        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42081 
42082        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42083 
42084        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42085           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42086        END IF;
42087 
42088       --
42089       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42090       --
42091       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42092           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42093       ELSE
42094           ---------------------------------------------------------------------------------------------------
42095           -- 4262811a Switch Sign
42096           ---------------------------------------------------------------------------------------------------
42097           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42098           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42099                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42100           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42101                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42102           -- 5132302
42103           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42104                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42105 
42106       END IF;
42107 
42108       -- 4955764
42109       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42110       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42111 
42112 
42113       XLA_AE_LINES_PKG.ValidateCurrentLine;
42114       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42115 
42116       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42117                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42118                ,p_balance_type_code => l_balance_type_code);
42119 
42120    END IF;
42121 
42122    -----------------------------------------------------------------------------------------
42123    -- 4262811 Multiperiod Accounting
42124    -----------------------------------------------------------------------------------------
42125      -- No MPA option is assigned.
42126 
42127 
42128 END IF;
42129 END IF;
42130 --
42131 
42132 --
42133 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42134    trace
42135       (p_msg      => 'END of AcctLineType_108'
42136       ,p_level    => C_LEVEL_PROCEDURE
42137       ,p_module   => l_log_module);
42138 END IF;
42139 --
42140 EXCEPTION
42141   WHEN xla_exceptions_pkg.application_exception THEN
42142       RAISE;
42143   WHEN OTHERS THEN
42144        xla_exceptions_pkg.raise_message
42145            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_108');
42146 END AcctLineType_108;
42147 --
42148 
42149 ---------------------------------------
42150 --
42151 -- PRIVATE FUNCTION
42152 --         AcctLineType_109
42153 --
42154 ---------------------------------------
42155 PROCEDURE AcctLineType_109 (
42156   p_application_id        IN NUMBER
42157  ,p_event_id              IN NUMBER
42158  ,p_calculate_acctd_flag  IN VARCHAR2
42159  ,p_calculate_g_l_flag    IN VARCHAR2
42160  ,p_actual_flag           IN OUT VARCHAR2
42161  ,p_balance_type_code     OUT VARCHAR2
42162  ,p_gain_or_loss_ref      OUT VARCHAR2
42163  
42164 --Transaction Account
42165  , p_source_1            IN NUMBER
42166 --Journal Line Type
42167  , p_source_2            IN VARCHAR2
42168 --Entered Amount
42169  , p_source_3            IN NUMBER
42170 --First Distribution Identifier
42171  , p_source_5            IN NUMBER
42172 --Distribution Type
42173  , p_source_6            IN VARCHAR2
42174 --Currency Code
42175  , p_source_7            IN VARCHAR2
42176 --Currency Conversion Date
42177  , p_source_8            IN DATE
42178 --Currency Conversion Rate
42179  , p_source_9            IN NUMBER
42180 --Currency Conversion Type
42181  , p_source_10            IN VARCHAR2
42182 --Accounted Amount
42183  , p_source_11            IN NUMBER
42184 )
42185 IS
42186 
42187 l_component_type              VARCHAR2(80);
42188 l_component_code              VARCHAR2(30);
42189 l_component_type_code         VARCHAR2(1);
42190 l_component_appl_id           INTEGER;
42194 l_ae_header_id                NUMBER;
42191 l_amb_context_code            VARCHAR2(30);
42192 l_entity_code                 VARCHAR2(30);
42193 l_event_class_code            VARCHAR2(30);
42195 l_event_type_code             VARCHAR2(30);
42196 l_line_definition_code        VARCHAR2(30);
42197 l_line_definition_owner_code  VARCHAR2(1);
42198 --
42199 -- adr variables
42200 l_segment                     VARCHAR2(30);
42201 l_ccid                        NUMBER;
42202 l_adr_transaction_coa_id      NUMBER;
42203 l_adr_accounting_coa_id       NUMBER;
42204 l_adr_flexfield_segment_code  VARCHAR2(30);
42205 l_adr_flex_value_set_id       NUMBER;
42206 l_adr_value_type_code         VARCHAR2(30);
42207 l_adr_value_combination_id    NUMBER;
42208 l_adr_value_segment_code      VARCHAR2(30);
42209 
42210 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42211 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42212 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42213 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42214 
42215 -- 4262811 Variables ------------------------------------------------------------------------------------------
42216 l_entered_amt_idx             NUMBER;
42217 l_accted_amt_idx              NUMBER;
42218 l_acc_rev_flag                VARCHAR2(1);
42219 l_accrual_line_num            NUMBER;
42220 l_tmp_amt                     NUMBER;
42221 l_acc_rev_natural_side_code   VARCHAR2(1);
42222 
42223 l_num_entries                 NUMBER;
42224 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42225 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42226 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42227 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42228 l_recog_line_1                NUMBER;
42229 l_recog_line_2                NUMBER;
42230 
42231 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42232 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42233 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42234 
42235 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42236 
42237 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42238 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42239 
42240 ---------------------------------------------------------------------------------------------------------------
42241 
42242 
42243 --
42244 -- bulk performance
42245 --
42246 l_balance_type_code           VARCHAR2(1);
42247 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42248 l_log_module                  VARCHAR2(240);
42249 
42250 --
42251 -- Upgrade strategy
42252 --
42253 l_actual_upg_option           VARCHAR2(1);
42254 l_enc_upg_option           VARCHAR2(1);
42255 
42256 --
42257 BEGIN
42258 --
42259 IF g_log_enabled THEN
42260       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_109';
42261 END IF;
42262 --
42263 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42264 
42265       trace
42266          (p_msg      => 'BEGIN of AcctLineType_109'
42267          ,p_level    => C_LEVEL_PROCEDURE
42268          ,p_module   => l_log_module);
42269 
42270 END IF;
42271 --
42272 l_component_type             := 'AMB_JLT';
42273 l_component_code             := 'EXP';
42274 l_component_type_code        := 'S';
42275 l_component_appl_id          :=  555;
42276 l_amb_context_code           := 'DEFAULT';
42277 l_entity_code                := 'PURCHASING';
42278 l_event_class_code           := 'DELIVER';
42279 l_event_type_code            := 'XFER_TO_CONSIGNED';
42280 l_line_definition_owner_code := 'S';
42281 l_line_definition_code       := 'XFER_TO_CONSIGN';
42282 --
42283 l_balance_type_code          := 'A';
42284 l_segment                     := NULL;
42285 l_ccid                        := NULL;
42286 l_adr_transaction_coa_id      := NULL;
42287 l_adr_accounting_coa_id       := NULL;
42288 l_adr_flexfield_segment_code  := NULL;
42289 l_adr_flex_value_set_id       := NULL;
42290 l_adr_value_type_code         := NULL;
42291 l_adr_value_combination_id    := NULL;
42292 l_adr_value_segment_code      := NULL;
42293 
42294 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
42295 l_bflow_class_code           := '';    -- 4219869 Business Flow
42296 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
42297 l_budgetary_control_flag     := 'N';
42298 
42299 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42300 l_bflow_applied_to_amt       := NULL; -- 5132302
42301 l_entered_amt_idx            := NULL;          -- 4262811
42302 l_accted_amt_idx             := NULL;          -- 4262811
42303 l_acc_rev_flag               := NULL;          -- 4262811
42304 l_accrual_line_num           := NULL;          -- 4262811
42305 l_tmp_amt                    := NULL;          -- 4262811
42306 --
42307  
42308 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42309     l_balance_type_code <> 'B' THEN
42310 IF NVL(p_source_2,'
42311 ') =  'EXP'
42312  THEN 
42313 
42314    --
42315    XLA_AE_LINES_PKG.SetNewLine;
42316 
42317    p_balance_type_code          := l_balance_type_code;
42321      p_actual_flag :='A';
42318    -- set the flag so later we will know whether the gain loss line needs to be created
42319    
42320    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42322    END IF;
42323 
42324    --
42325    -- bulk performance
42326    --
42327    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42328                                       p_header_num   => 0); -- 4262811
42329    --
42330    -- set accounting line options
42331    --
42332    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42333            p_natural_side_code          => 'D'
42334          , p_gain_or_loss_flag          => 'N'
42335          , p_gl_transfer_mode_code      => 'D'
42336          , p_acct_entry_type_code       => 'A'
42337          , p_switch_side_flag           => 'Y'
42338          , p_merge_duplicate_code       => 'W'
42339          );
42340    --
42341    l_acc_rev_natural_side_code := 'C';  -- 4262811
42342    -- 
42343    --
42344    -- set accounting line type info
42345    --
42346    xla_ae_lines_pkg.SetAcctLineType
42347       (p_component_type             => l_component_type
42348       ,p_event_type_code            => l_event_type_code
42349       ,p_line_definition_owner_code => l_line_definition_owner_code
42350       ,p_line_definition_code       => l_line_definition_code
42351       ,p_accounting_line_code       => l_component_code
42352       ,p_accounting_line_type_code  => l_component_type_code
42353       ,p_accounting_line_appl_id    => l_component_appl_id
42354       ,p_amb_context_code           => l_amb_context_code
42355       ,p_entity_code                => l_entity_code
42356       ,p_event_class_code           => l_event_class_code);
42357    --
42358    -- set accounting class
42359    --
42360    xla_ae_lines_pkg.SetAcctClass(
42361            p_accounting_class_code  => 'EXPENSE'
42362          , p_ae_header_id           => l_ae_header_id
42363          );
42364 
42365    --
42366    -- set rounding class
42367    --
42368    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42369                       'EXPENSE';
42370 
42371    --
42372    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42373    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42374    --
42375    -- bulk performance
42376    --
42377    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42378 
42379    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42380       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42381 
42382    -- 4955764
42383    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42384       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42385 
42386    -- 4458381 Public Sector Enh
42387    
42388    --
42389    -- set accounting attributes for the line type
42390    --
42391    l_entered_amt_idx := 3;
42392    l_accted_amt_idx  := 8;
42393    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
42394    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
42395    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
42396    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
42397    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
42398    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
42399    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
42400    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
42401    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
42402    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
42403    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
42404    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
42405    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
42406    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
42407    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
42408    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
42409    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
42410 
42411    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42412    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42413 
42414    ---------------------------------------------------------------------------------------------------------------
42415    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42416    ---------------------------------------------------------------------------------------------------------------
42417    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42418 
42419    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42420    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42421 
42422    IF xla_accounting_cache_pkg.GetValueChar
42423          (p_source_code         => 'LEDGER_CATEGORY_CODE'
42424          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42428          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42425    AND l_bflow_method_code = 'PRIOR_ENTRY'
42426 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42427    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42429        )
42430    THEN
42431          xla_ae_lines_pkg.BflowUpgEntry
42432            (p_business_method_code    => l_bflow_method_code
42433            ,p_business_class_code     => l_bflow_class_code
42434            ,p_balance_type            => l_balance_type_code);
42435    ELSE
42436       NULL;
42437 -- No business flow processing for business flow method of NONE.
42438    END IF;
42439 
42440    --
42441    -- call analytical criteria
42442    --
42443    
42444    --
42445    -- call description
42446    --
42447    -- No description or it is inherited.
42448    --
42449    -- call ADRs
42450    -- Bug 4922099
42451    --
42452    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42453         (NVL(l_actual_upg_option, 'N') = 'O') OR
42454         (NVL(l_enc_upg_option, 'N') = 'O')
42455       )
42456    THEN
42457    NULL;
42458    --
42459    --
42460    
42461   l_ccid := AcctDerRule_12(
42462            p_application_id           => p_application_id
42463          , p_ae_header_id             => l_ae_header_id 
42464 , p_source_1 => p_source_1
42465 , p_source_2 => p_source_2
42466          , x_transaction_coa_id       => l_adr_transaction_coa_id
42467          , x_accounting_coa_id        => l_adr_accounting_coa_id
42468          , x_value_type_code          => l_adr_value_type_code
42469          , p_side                     => 'NA'
42470    );
42471 
42472    xla_ae_lines_pkg.set_ccid(
42473     p_code_combination_id          => l_ccid
42474   , p_value_type_code              => l_adr_value_type_code
42475   , p_transaction_coa_id           => l_adr_transaction_coa_id
42476   , p_accounting_coa_id            => l_adr_accounting_coa_id
42477   , p_adr_code                     => 'EXP'
42478   , p_adr_type_code                => 'S'
42479   , p_component_type               => l_component_type
42480   , p_component_code               => l_component_code
42481   , p_component_type_code          => l_component_type_code
42482   , p_component_appl_id            => l_component_appl_id
42483   , p_amb_context_code             => l_amb_context_code
42484   , p_side                         => 'NA'
42485   );
42486 
42487 
42488    --
42489    --
42490    END IF;
42491    --
42492    -- Bug 4922099
42493    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42494           (NVL(l_enc_upg_option, 'N') = 'O')
42495         ) AND
42496         (l_bflow_method_code = 'PRIOR_ENTRY')
42497       )
42498    THEN
42499       IF
42500       --
42501       1 = 2
42502       --
42503       THEN
42504       xla_accounting_err_pkg.build_message
42505                                     (p_appli_s_name            => 'XLA'
42506                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42507                                     ,p_token_1                 => 'LINE_NUMBER'
42508                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
42509                                     ,p_token_2                 => 'LINE_TYPE_NAME'
42510                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
42511                                                                              l_component_type
42512                                                                             ,l_component_code
42513                                                                             ,l_component_type_code
42514                                                                             ,l_component_appl_id
42515                                                                             ,l_amb_context_code
42516                                                                             ,l_entity_code
42517                                                                             ,l_event_class_code
42518                                                                            )
42519                                     ,p_token_3                 => 'OWNER'
42520                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
42521                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
42522                                                                           ,p_lookup_code    => l_component_type_code
42523                                                                          )
42524                                     ,p_token_4                 => 'PRODUCT_NAME'
42525                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42526                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42527                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42528                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42529                                     ,p_ae_header_id            =>  NULL
42530                                        );
42531 
42532         IF (C_LEVEL_ERROR>= g_log_level) THEN
42533                  trace
42534                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42535                       ,p_level    => C_LEVEL_ERROR
42539    END IF;
42536                       ,p_module   => l_log_module);
42537         END IF;
42538       END IF;
42540    --
42541    --
42542    ------------------------------------------------------------------------------------------------
42543    -- 4219869 Business Flow
42544    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42545    -- Prior Entry.  Currently, the following code is always generated.
42546    ------------------------------------------------------------------------------------------------
42547    XLA_AE_LINES_PKG.ValidateCurrentLine;
42548 
42549    ------------------------------------------------------------------------------------
42550    -- 4219869 Business Flow
42551    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42552    ------------------------------------------------------------------------------------
42553    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42554 
42555    ----------------------------------------------------------------------------------
42556    -- 4219869 Business Flow
42557    -- Update journal entry status -- Need to generate this within IF <condition>
42558    ----------------------------------------------------------------------------------
42559    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42560          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42561          ,p_balance_type_code => l_balance_type_code
42562          );
42563 
42564    -------------------------------------------------------------------------------------------
42565    -- 4262811 - Generate the Accrual Reversal lines
42566    -------------------------------------------------------------------------------------------
42567    BEGIN
42568       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42569                               (g_array_event(p_event_id).array_value_num('header_index'));
42570       IF l_acc_rev_flag IS NULL THEN
42571          l_acc_rev_flag := 'N';
42572       END IF;
42573    EXCEPTION
42574       WHEN OTHERS THEN
42575          l_acc_rev_flag := 'N';
42576    END;
42577    --
42578    IF (l_acc_rev_flag = 'Y') THEN
42579 
42580        -- 4645092  ------------------------------------------------------------------------------
42581        -- To allow MPA report to determine if it should generate report process
42582        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42583        ------------------------------------------------------------------------------------------
42584 
42585        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42586        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42587    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
42588    -- call ADRs
42589    -- Bug 4922099
42590    --
42591    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42592         (NVL(l_actual_upg_option, 'N') = 'O') OR
42593         (NVL(l_enc_upg_option, 'N') = 'O')
42594       )
42595    THEN
42596    NULL;
42597    --
42598    --
42599    
42600   l_ccid := AcctDerRule_12(
42601            p_application_id           => p_application_id
42602          , p_ae_header_id             => l_ae_header_id 
42603 , p_source_1 => p_source_1
42604 , p_source_2 => p_source_2
42605          , x_transaction_coa_id       => l_adr_transaction_coa_id
42606          , x_accounting_coa_id        => l_adr_accounting_coa_id
42607          , x_value_type_code          => l_adr_value_type_code
42608          , p_side                     => 'NA'
42609    );
42610 
42611    xla_ae_lines_pkg.set_ccid(
42612     p_code_combination_id          => l_ccid
42613   , p_value_type_code              => l_adr_value_type_code
42614   , p_transaction_coa_id           => l_adr_transaction_coa_id
42615   , p_accounting_coa_id            => l_adr_accounting_coa_id
42616   , p_adr_code                     => 'EXP'
42617   , p_adr_type_code                => 'S'
42618   , p_component_type               => l_component_type
42619   , p_component_code               => l_component_code
42620   , p_component_type_code          => l_component_type_code
42621   , p_component_appl_id            => l_component_appl_id
42622   , p_amb_context_code             => l_amb_context_code
42623   , p_side                         => 'NA'
42624   );
42625 
42626 
42627    --
42628    --
42629    END IF;
42630 
42631        --
42632        -- Update the line information that should be overwritten
42633        --
42634        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42635                                          p_header_num   => 1);
42636        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42637 
42638        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42639 
42640        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42641           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42642        END IF;
42643 
42644       --
42645       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42646       --
42647       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42648           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42649       ELSE
42653           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42650           ---------------------------------------------------------------------------------------------------
42651           -- 4262811a Switch Sign
42652           ---------------------------------------------------------------------------------------------------
42654           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42655                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42656           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42657                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42658           -- 5132302
42659           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42660                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42661 
42662       END IF;
42663 
42664       -- 4955764
42665       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42666       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42667 
42668 
42669       XLA_AE_LINES_PKG.ValidateCurrentLine;
42670       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42671 
42672       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42673                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42674                ,p_balance_type_code => l_balance_type_code);
42675 
42676    END IF;
42677 
42678    -----------------------------------------------------------------------------------------
42679    -- 4262811 Multiperiod Accounting
42680    -----------------------------------------------------------------------------------------
42681      -- No MPA option is assigned.
42682 
42683 
42684 END IF;
42685 END IF;
42686 --
42687 
42688 --
42689 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42690    trace
42691       (p_msg      => 'END of AcctLineType_109'
42692       ,p_level    => C_LEVEL_PROCEDURE
42693       ,p_module   => l_log_module);
42694 END IF;
42695 --
42696 EXCEPTION
42697   WHEN xla_exceptions_pkg.application_exception THEN
42698       RAISE;
42699   WHEN OTHERS THEN
42700        xla_exceptions_pkg.raise_message
42701            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_109');
42702 END AcctLineType_109;
42703 --
42704 
42705 ---------------------------------------
42706 --
42707 -- PRIVATE FUNCTION
42708 --         AcctLineType_110
42709 --
42710 ---------------------------------------
42711 PROCEDURE AcctLineType_110 (
42712   p_application_id        IN NUMBER
42713  ,p_event_id              IN NUMBER
42714  ,p_calculate_acctd_flag  IN VARCHAR2
42715  ,p_calculate_g_l_flag    IN VARCHAR2
42716  ,p_actual_flag           IN OUT VARCHAR2
42717  ,p_balance_type_code     OUT VARCHAR2
42718  ,p_gain_or_loss_ref      OUT VARCHAR2
42719  
42720 --Transaction Account
42721  , p_source_1            IN NUMBER
42722 --Journal Line Type
42723  , p_source_2            IN VARCHAR2
42724 --Entered Amount
42725  , p_source_3            IN NUMBER
42726 --Line Number
42727  , p_source_4            IN NUMBER
42728 --First Distribution Identifier
42729  , p_source_5            IN NUMBER
42730 --Distribution Type
42731  , p_source_6            IN VARCHAR2
42732 --Currency Code
42733  , p_source_7            IN VARCHAR2
42734 --Currency Conversion Date
42735  , p_source_8            IN DATE
42736 --Currency Conversion Rate
42737  , p_source_9            IN NUMBER
42738 --Currency Conversion Type
42739  , p_source_10            IN VARCHAR2
42740 --Accounted Amount
42741  , p_source_11            IN NUMBER
42742 )
42743 IS
42744 
42745 l_component_type              VARCHAR2(80);
42746 l_component_code              VARCHAR2(30);
42747 l_component_type_code         VARCHAR2(1);
42748 l_component_appl_id           INTEGER;
42749 l_amb_context_code            VARCHAR2(30);
42750 l_entity_code                 VARCHAR2(30);
42751 l_event_class_code            VARCHAR2(30);
42752 l_ae_header_id                NUMBER;
42753 l_event_type_code             VARCHAR2(30);
42754 l_line_definition_code        VARCHAR2(30);
42755 l_line_definition_owner_code  VARCHAR2(1);
42756 --
42757 -- adr variables
42758 l_segment                     VARCHAR2(30);
42759 l_ccid                        NUMBER;
42760 l_adr_transaction_coa_id      NUMBER;
42761 l_adr_accounting_coa_id       NUMBER;
42762 l_adr_flexfield_segment_code  VARCHAR2(30);
42763 l_adr_flex_value_set_id       NUMBER;
42764 l_adr_value_type_code         VARCHAR2(30);
42765 l_adr_value_combination_id    NUMBER;
42766 l_adr_value_segment_code      VARCHAR2(30);
42767 
42768 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42769 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42770 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42771 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42772 
42773 -- 4262811 Variables ------------------------------------------------------------------------------------------
42774 l_entered_amt_idx             NUMBER;
42775 l_accted_amt_idx              NUMBER;
42779 l_acc_rev_natural_side_code   VARCHAR2(1);
42776 l_acc_rev_flag                VARCHAR2(1);
42777 l_accrual_line_num            NUMBER;
42778 l_tmp_amt                     NUMBER;
42780 
42781 l_num_entries                 NUMBER;
42782 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42783 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42784 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42785 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42786 l_recog_line_1                NUMBER;
42787 l_recog_line_2                NUMBER;
42788 
42789 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42790 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42791 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42792 
42793 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42794 
42795 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42796 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42797 
42798 ---------------------------------------------------------------------------------------------------------------
42799 
42800 
42801 --
42802 -- bulk performance
42803 --
42804 l_balance_type_code           VARCHAR2(1);
42805 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42806 l_log_module                  VARCHAR2(240);
42807 
42808 --
42809 -- Upgrade strategy
42810 --
42811 l_actual_upg_option           VARCHAR2(1);
42812 l_enc_upg_option           VARCHAR2(1);
42813 
42814 --
42815 BEGIN
42816 --
42817 IF g_log_enabled THEN
42818       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_110';
42819 END IF;
42820 --
42821 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42822 
42823       trace
42824          (p_msg      => 'BEGIN of AcctLineType_110'
42825          ,p_level    => C_LEVEL_PROCEDURE
42826          ,p_module   => l_log_module);
42827 
42828 END IF;
42829 --
42830 l_component_type             := 'AMB_JLT';
42831 l_component_code             := 'EXP_SUB_FROM';
42832 l_component_type_code        := 'S';
42833 l_component_appl_id          :=  555;
42834 l_amb_context_code           := 'DEFAULT';
42835 l_entity_code                := 'INVENTORY';
42836 l_event_class_code           := 'SUBINV_XFER';
42837 l_event_type_code            := 'SUBINV_XFER_ALL';
42838 l_line_definition_owner_code := 'S';
42839 l_line_definition_code       := 'SUBINV_XFER';
42840 --
42841 l_balance_type_code          := 'A';
42842 l_segment                     := NULL;
42843 l_ccid                        := NULL;
42844 l_adr_transaction_coa_id      := NULL;
42845 l_adr_accounting_coa_id       := NULL;
42846 l_adr_flexfield_segment_code  := NULL;
42847 l_adr_flex_value_set_id       := NULL;
42848 l_adr_value_type_code         := NULL;
42849 l_adr_value_combination_id    := NULL;
42850 l_adr_value_segment_code      := NULL;
42851 
42852 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
42853 l_bflow_class_code           := '';    -- 4219869 Business Flow
42854 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
42855 l_budgetary_control_flag     := 'N';
42856 
42857 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42858 l_bflow_applied_to_amt       := NULL; -- 5132302
42859 l_entered_amt_idx            := NULL;          -- 4262811
42860 l_accted_amt_idx             := NULL;          -- 4262811
42861 l_acc_rev_flag               := NULL;          -- 4262811
42862 l_accrual_line_num           := NULL;          -- 4262811
42863 l_tmp_amt                    := NULL;          -- 4262811
42864 --
42865  
42866 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42867     l_balance_type_code <> 'B' THEN
42868 IF (NVL(p_source_2,'
42869 ') =  'EXP' AND 
42870 p_source_3 <  0) OR 
42871 (NVL(p_source_2,'
42872 ') =  'EXP' AND 
42873 NVL(p_source_3,9E125) =  0 AND 
42874 NVL(p_source_4,9E125) =  1)
42875  THEN 
42876 
42877    --
42878    XLA_AE_LINES_PKG.SetNewLine;
42879 
42880    p_balance_type_code          := l_balance_type_code;
42881    -- set the flag so later we will know whether the gain loss line needs to be created
42882    
42883    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42884      p_actual_flag :='A';
42885    END IF;
42886 
42887    --
42888    -- bulk performance
42889    --
42890    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42891                                       p_header_num   => 0); -- 4262811
42892    --
42893    -- set accounting line options
42894    --
42895    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42896            p_natural_side_code          => 'D'
42897          , p_gain_or_loss_flag          => 'N'
42898          , p_gl_transfer_mode_code      => 'D'
42899          , p_acct_entry_type_code       => 'A'
42900          , p_switch_side_flag           => 'Y'
42901          , p_merge_duplicate_code       => 'W'
42902          );
42903    --
42904    l_acc_rev_natural_side_code := 'C';  -- 4262811
42905    -- 
42906    --
42907    -- set accounting line type info
42908    --
42909    xla_ae_lines_pkg.SetAcctLineType
42910       (p_component_type             => l_component_type
42914       ,p_accounting_line_code       => l_component_code
42911       ,p_event_type_code            => l_event_type_code
42912       ,p_line_definition_owner_code => l_line_definition_owner_code
42913       ,p_line_definition_code       => l_line_definition_code
42915       ,p_accounting_line_type_code  => l_component_type_code
42916       ,p_accounting_line_appl_id    => l_component_appl_id
42917       ,p_amb_context_code           => l_amb_context_code
42918       ,p_entity_code                => l_entity_code
42919       ,p_event_class_code           => l_event_class_code);
42920    --
42921    -- set accounting class
42922    --
42923    xla_ae_lines_pkg.SetAcctClass(
42924            p_accounting_class_code  => 'XFR'
42925          , p_ae_header_id           => l_ae_header_id
42926          );
42927 
42928    --
42929    -- set rounding class
42930    --
42931    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42932                       'XFR';
42933 
42934    --
42935    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42936    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42937    --
42938    -- bulk performance
42939    --
42940    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42941 
42942    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42943       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42944 
42945    -- 4955764
42946    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42947       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42948 
42949    -- 4458381 Public Sector Enh
42950    
42951    --
42952    -- set accounting attributes for the line type
42953    --
42954    l_entered_amt_idx := 3;
42955    l_accted_amt_idx  := 8;
42956    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
42957    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
42958    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
42959    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
42960    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
42961    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
42962    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
42963    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
42964    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
42965    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
42966    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
42967    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
42968    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
42969    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
42970    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
42971    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
42972    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
42973 
42974    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42975    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42976 
42977    ---------------------------------------------------------------------------------------------------------------
42978    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42979    ---------------------------------------------------------------------------------------------------------------
42980    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42981 
42982    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42983    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42984 
42985    IF xla_accounting_cache_pkg.GetValueChar
42986          (p_source_code         => 'LEDGER_CATEGORY_CODE'
42987          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42988    AND l_bflow_method_code = 'PRIOR_ENTRY'
42989 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42990    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42991          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42992        )
42993    THEN
42994          xla_ae_lines_pkg.BflowUpgEntry
42995            (p_business_method_code    => l_bflow_method_code
42996            ,p_business_class_code     => l_bflow_class_code
42997            ,p_balance_type            => l_balance_type_code);
42998    ELSE
42999       NULL;
43000 -- No business flow processing for business flow method of NONE.
43001    END IF;
43002 
43003    --
43004    -- call analytical criteria
43005    --
43006    
43007    --
43008    -- call description
43009    --
43010    -- No description or it is inherited.
43011    --
43012    -- call ADRs
43013    -- Bug 4922099
43014    --
43015    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43016         (NVL(l_actual_upg_option, 'N') = 'O') OR
43017         (NVL(l_enc_upg_option, 'N') = 'O')
43018       )
43019    THEN
43020    NULL;
43021    --
43022    --
43023    
43024   l_ccid := AcctDerRule_12(
43028 , p_source_2 => p_source_2
43025            p_application_id           => p_application_id
43026          , p_ae_header_id             => l_ae_header_id 
43027 , p_source_1 => p_source_1
43029          , x_transaction_coa_id       => l_adr_transaction_coa_id
43030          , x_accounting_coa_id        => l_adr_accounting_coa_id
43031          , x_value_type_code          => l_adr_value_type_code
43032          , p_side                     => 'NA'
43033    );
43034 
43035    xla_ae_lines_pkg.set_ccid(
43036     p_code_combination_id          => l_ccid
43037   , p_value_type_code              => l_adr_value_type_code
43038   , p_transaction_coa_id           => l_adr_transaction_coa_id
43039   , p_accounting_coa_id            => l_adr_accounting_coa_id
43040   , p_adr_code                     => 'EXP'
43041   , p_adr_type_code                => 'S'
43042   , p_component_type               => l_component_type
43043   , p_component_code               => l_component_code
43044   , p_component_type_code          => l_component_type_code
43045   , p_component_appl_id            => l_component_appl_id
43046   , p_amb_context_code             => l_amb_context_code
43047   , p_side                         => 'NA'
43048   );
43049 
43050 
43051    --
43052    --
43053    END IF;
43054    --
43055    -- Bug 4922099
43056    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43057           (NVL(l_enc_upg_option, 'N') = 'O')
43058         ) AND
43059         (l_bflow_method_code = 'PRIOR_ENTRY')
43060       )
43061    THEN
43062       IF
43063       --
43064       1 = 2
43065       --
43066       THEN
43067       xla_accounting_err_pkg.build_message
43068                                     (p_appli_s_name            => 'XLA'
43069                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43070                                     ,p_token_1                 => 'LINE_NUMBER'
43071                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43072                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43073                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43074                                                                              l_component_type
43075                                                                             ,l_component_code
43076                                                                             ,l_component_type_code
43077                                                                             ,l_component_appl_id
43078                                                                             ,l_amb_context_code
43079                                                                             ,l_entity_code
43080                                                                             ,l_event_class_code
43081                                                                            )
43082                                     ,p_token_3                 => 'OWNER'
43083                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43084                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43085                                                                           ,p_lookup_code    => l_component_type_code
43086                                                                          )
43087                                     ,p_token_4                 => 'PRODUCT_NAME'
43088                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43089                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43090                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43091                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43092                                     ,p_ae_header_id            =>  NULL
43093                                        );
43094 
43095         IF (C_LEVEL_ERROR>= g_log_level) THEN
43096                  trace
43097                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43098                       ,p_level    => C_LEVEL_ERROR
43099                       ,p_module   => l_log_module);
43100         END IF;
43101       END IF;
43102    END IF;
43103    --
43104    --
43105    ------------------------------------------------------------------------------------------------
43106    -- 4219869 Business Flow
43107    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43108    -- Prior Entry.  Currently, the following code is always generated.
43109    ------------------------------------------------------------------------------------------------
43110    XLA_AE_LINES_PKG.ValidateCurrentLine;
43111 
43112    ------------------------------------------------------------------------------------
43113    -- 4219869 Business Flow
43114    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43115    ------------------------------------------------------------------------------------
43116    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43117 
43118    ----------------------------------------------------------------------------------
43119    -- 4219869 Business Flow
43120    -- Update journal entry status -- Need to generate this within IF <condition>
43124          ,p_balance_type_code => l_balance_type_code
43121    ----------------------------------------------------------------------------------
43122    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43123          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43125          );
43126 
43127    -------------------------------------------------------------------------------------------
43128    -- 4262811 - Generate the Accrual Reversal lines
43129    -------------------------------------------------------------------------------------------
43130    BEGIN
43131       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43132                               (g_array_event(p_event_id).array_value_num('header_index'));
43133       IF l_acc_rev_flag IS NULL THEN
43134          l_acc_rev_flag := 'N';
43135       END IF;
43136    EXCEPTION
43137       WHEN OTHERS THEN
43138          l_acc_rev_flag := 'N';
43139    END;
43140    --
43141    IF (l_acc_rev_flag = 'Y') THEN
43142 
43143        -- 4645092  ------------------------------------------------------------------------------
43144        -- To allow MPA report to determine if it should generate report process
43145        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43146        ------------------------------------------------------------------------------------------
43147 
43148        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43149        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43150    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
43151    -- call ADRs
43152    -- Bug 4922099
43153    --
43154    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43155         (NVL(l_actual_upg_option, 'N') = 'O') OR
43156         (NVL(l_enc_upg_option, 'N') = 'O')
43157       )
43158    THEN
43159    NULL;
43160    --
43161    --
43162    
43163   l_ccid := AcctDerRule_12(
43164            p_application_id           => p_application_id
43165          , p_ae_header_id             => l_ae_header_id 
43166 , p_source_1 => p_source_1
43167 , p_source_2 => p_source_2
43168          , x_transaction_coa_id       => l_adr_transaction_coa_id
43169          , x_accounting_coa_id        => l_adr_accounting_coa_id
43170          , x_value_type_code          => l_adr_value_type_code
43171          , p_side                     => 'NA'
43172    );
43173 
43174    xla_ae_lines_pkg.set_ccid(
43175     p_code_combination_id          => l_ccid
43176   , p_value_type_code              => l_adr_value_type_code
43177   , p_transaction_coa_id           => l_adr_transaction_coa_id
43178   , p_accounting_coa_id            => l_adr_accounting_coa_id
43179   , p_adr_code                     => 'EXP'
43180   , p_adr_type_code                => 'S'
43181   , p_component_type               => l_component_type
43182   , p_component_code               => l_component_code
43183   , p_component_type_code          => l_component_type_code
43184   , p_component_appl_id            => l_component_appl_id
43185   , p_amb_context_code             => l_amb_context_code
43186   , p_side                         => 'NA'
43187   );
43188 
43189 
43190    --
43191    --
43192    END IF;
43193 
43194        --
43195        -- Update the line information that should be overwritten
43196        --
43197        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43198                                          p_header_num   => 1);
43199        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43200 
43201        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43202 
43203        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43204           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43205        END IF;
43206 
43207       --
43208       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43209       --
43210       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43211           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43212       ELSE
43213           ---------------------------------------------------------------------------------------------------
43214           -- 4262811a Switch Sign
43215           ---------------------------------------------------------------------------------------------------
43216           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43217           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43218                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43219           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43220                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43221           -- 5132302
43222           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43223                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43224 
43225       END IF;
43226 
43227       -- 4955764
43228       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43229       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43230 
43231 
43235       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43232       XLA_AE_LINES_PKG.ValidateCurrentLine;
43233       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43234 
43236                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43237                ,p_balance_type_code => l_balance_type_code);
43238 
43239    END IF;
43240 
43241    -----------------------------------------------------------------------------------------
43242    -- 4262811 Multiperiod Accounting
43243    -----------------------------------------------------------------------------------------
43244      -- No MPA option is assigned.
43245 
43246 
43247 END IF;
43248 END IF;
43249 --
43250 
43251 --
43252 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43253    trace
43254       (p_msg      => 'END of AcctLineType_110'
43255       ,p_level    => C_LEVEL_PROCEDURE
43256       ,p_module   => l_log_module);
43257 END IF;
43258 --
43259 EXCEPTION
43260   WHEN xla_exceptions_pkg.application_exception THEN
43261       RAISE;
43262   WHEN OTHERS THEN
43263        xla_exceptions_pkg.raise_message
43264            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_110');
43265 END AcctLineType_110;
43266 --
43267 
43268 ---------------------------------------
43269 --
43270 -- PRIVATE FUNCTION
43271 --         AcctLineType_111
43272 --
43273 ---------------------------------------
43274 PROCEDURE AcctLineType_111 (
43275   p_application_id        IN NUMBER
43276  ,p_event_id              IN NUMBER
43277  ,p_calculate_acctd_flag  IN VARCHAR2
43278  ,p_calculate_g_l_flag    IN VARCHAR2
43279  ,p_actual_flag           IN OUT VARCHAR2
43280  ,p_balance_type_code     OUT VARCHAR2
43281  ,p_gain_or_loss_ref      OUT VARCHAR2
43282  
43283 --Transaction Account
43284  , p_source_1            IN NUMBER
43285 --Journal Line Type
43286  , p_source_2            IN VARCHAR2
43287 --Entered Amount
43288  , p_source_3            IN NUMBER
43289 --Line Number
43290  , p_source_4            IN NUMBER
43291 --First Distribution Identifier
43292  , p_source_5            IN NUMBER
43293 --Distribution Type
43294  , p_source_6            IN VARCHAR2
43295 --Currency Code
43296  , p_source_7            IN VARCHAR2
43297 --Currency Conversion Date
43298  , p_source_8            IN DATE
43299 --Currency Conversion Rate
43300  , p_source_9            IN NUMBER
43301 --Currency Conversion Type
43302  , p_source_10            IN VARCHAR2
43303 --Accounted Amount
43304  , p_source_11            IN NUMBER
43305 )
43306 IS
43307 
43308 l_component_type              VARCHAR2(80);
43309 l_component_code              VARCHAR2(30);
43310 l_component_type_code         VARCHAR2(1);
43311 l_component_appl_id           INTEGER;
43312 l_amb_context_code            VARCHAR2(30);
43313 l_entity_code                 VARCHAR2(30);
43314 l_event_class_code            VARCHAR2(30);
43315 l_ae_header_id                NUMBER;
43316 l_event_type_code             VARCHAR2(30);
43317 l_line_definition_code        VARCHAR2(30);
43318 l_line_definition_owner_code  VARCHAR2(1);
43319 --
43320 -- adr variables
43321 l_segment                     VARCHAR2(30);
43322 l_ccid                        NUMBER;
43323 l_adr_transaction_coa_id      NUMBER;
43324 l_adr_accounting_coa_id       NUMBER;
43325 l_adr_flexfield_segment_code  VARCHAR2(30);
43326 l_adr_flex_value_set_id       NUMBER;
43327 l_adr_value_type_code         VARCHAR2(30);
43328 l_adr_value_combination_id    NUMBER;
43329 l_adr_value_segment_code      VARCHAR2(30);
43330 
43331 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
43332 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
43333 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
43334 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
43335 
43336 -- 4262811 Variables ------------------------------------------------------------------------------------------
43337 l_entered_amt_idx             NUMBER;
43338 l_accted_amt_idx              NUMBER;
43339 l_acc_rev_flag                VARCHAR2(1);
43340 l_accrual_line_num            NUMBER;
43341 l_tmp_amt                     NUMBER;
43342 l_acc_rev_natural_side_code   VARCHAR2(1);
43343 
43344 l_num_entries                 NUMBER;
43345 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
43346 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
43347 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
43348 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
43349 l_recog_line_1                NUMBER;
43350 l_recog_line_2                NUMBER;
43351 
43352 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
43353 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
43354 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
43355 
43356 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43357 
43358 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
43359 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
43360 
43361 ---------------------------------------------------------------------------------------------------------------
43362 
43366 --
43363 
43364 --
43365 -- bulk performance
43367 l_balance_type_code           VARCHAR2(1);
43368 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
43369 l_log_module                  VARCHAR2(240);
43370 
43371 --
43372 -- Upgrade strategy
43373 --
43374 l_actual_upg_option           VARCHAR2(1);
43375 l_enc_upg_option           VARCHAR2(1);
43376 
43377 --
43378 BEGIN
43379 --
43380 IF g_log_enabled THEN
43381       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_111';
43382 END IF;
43383 --
43384 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43385 
43386       trace
43387          (p_msg      => 'BEGIN of AcctLineType_111'
43388          ,p_level    => C_LEVEL_PROCEDURE
43389          ,p_module   => l_log_module);
43390 
43391 END IF;
43392 --
43393 l_component_type             := 'AMB_JLT';
43394 l_component_code             := 'EXP_SUB_TO';
43395 l_component_type_code        := 'S';
43396 l_component_appl_id          :=  555;
43397 l_amb_context_code           := 'DEFAULT';
43398 l_entity_code                := 'INVENTORY';
43399 l_event_class_code           := 'SUBINV_XFER';
43400 l_event_type_code            := 'SUBINV_XFER_ALL';
43401 l_line_definition_owner_code := 'S';
43402 l_line_definition_code       := 'SUBINV_XFER';
43403 --
43404 l_balance_type_code          := 'A';
43405 l_segment                     := NULL;
43406 l_ccid                        := NULL;
43407 l_adr_transaction_coa_id      := NULL;
43408 l_adr_accounting_coa_id       := NULL;
43409 l_adr_flexfield_segment_code  := NULL;
43410 l_adr_flex_value_set_id       := NULL;
43411 l_adr_value_type_code         := NULL;
43412 l_adr_value_combination_id    := NULL;
43413 l_adr_value_segment_code      := NULL;
43414 
43415 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
43416 l_bflow_class_code           := '';    -- 4219869 Business Flow
43417 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
43418 l_budgetary_control_flag     := 'N';
43419 
43420 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
43421 l_bflow_applied_to_amt       := NULL; -- 5132302
43422 l_entered_amt_idx            := NULL;          -- 4262811
43423 l_accted_amt_idx             := NULL;          -- 4262811
43424 l_acc_rev_flag               := NULL;          -- 4262811
43425 l_accrual_line_num           := NULL;          -- 4262811
43426 l_tmp_amt                    := NULL;          -- 4262811
43427 --
43428  
43429 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43430     l_balance_type_code <> 'B' THEN
43431 IF (NVL(p_source_2,'
43432 ') =  'EXP' AND 
43433 p_source_3 >  0) OR 
43434 (NVL(p_source_2,'
43435 ') =  'EXP' AND 
43436 NVL(p_source_3,9E125) =  0 AND 
43437 NVL(p_source_4,9E125) =  2)
43438  THEN 
43439 
43440    --
43441    XLA_AE_LINES_PKG.SetNewLine;
43442 
43443    p_balance_type_code          := l_balance_type_code;
43444    -- set the flag so later we will know whether the gain loss line needs to be created
43445    
43446    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43447      p_actual_flag :='A';
43448    END IF;
43449 
43450    --
43451    -- bulk performance
43452    --
43453    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43454                                       p_header_num   => 0); -- 4262811
43455    --
43456    -- set accounting line options
43457    --
43458    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43459            p_natural_side_code          => 'D'
43460          , p_gain_or_loss_flag          => 'N'
43461          , p_gl_transfer_mode_code      => 'D'
43462          , p_acct_entry_type_code       => 'A'
43463          , p_switch_side_flag           => 'Y'
43464          , p_merge_duplicate_code       => 'W'
43465          );
43466    --
43467    l_acc_rev_natural_side_code := 'C';  -- 4262811
43468    -- 
43469    --
43470    -- set accounting line type info
43471    --
43472    xla_ae_lines_pkg.SetAcctLineType
43473       (p_component_type             => l_component_type
43474       ,p_event_type_code            => l_event_type_code
43475       ,p_line_definition_owner_code => l_line_definition_owner_code
43476       ,p_line_definition_code       => l_line_definition_code
43477       ,p_accounting_line_code       => l_component_code
43478       ,p_accounting_line_type_code  => l_component_type_code
43479       ,p_accounting_line_appl_id    => l_component_appl_id
43480       ,p_amb_context_code           => l_amb_context_code
43481       ,p_entity_code                => l_entity_code
43482       ,p_event_class_code           => l_event_class_code);
43483    --
43484    -- set accounting class
43485    --
43486    xla_ae_lines_pkg.SetAcctClass(
43487            p_accounting_class_code  => 'XFR'
43488          , p_ae_header_id           => l_ae_header_id
43489          );
43490 
43491    --
43492    -- set rounding class
43493    --
43494    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43495                       'XFR';
43496 
43497    --
43498    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43499    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43503    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43500    --
43501    -- bulk performance
43502    --
43504 
43505    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43506       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43507 
43508    -- 4955764
43509    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43510       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43511 
43512    -- 4458381 Public Sector Enh
43513    
43514    --
43515    -- set accounting attributes for the line type
43516    --
43517    l_entered_amt_idx := 3;
43518    l_accted_amt_idx  := 8;
43519    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
43520    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
43521    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
43522    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
43523    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
43524    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
43525    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
43526    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
43527    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
43528    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
43529    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
43530    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
43531    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
43532    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
43533    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
43534    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
43535    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
43536 
43537    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43538    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43539 
43540    ---------------------------------------------------------------------------------------------------------------
43541    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43542    ---------------------------------------------------------------------------------------------------------------
43543    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43544 
43545    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43546    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43547 
43548    IF xla_accounting_cache_pkg.GetValueChar
43549          (p_source_code         => 'LEDGER_CATEGORY_CODE'
43550          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43551    AND l_bflow_method_code = 'PRIOR_ENTRY'
43552 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43553    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43554          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43555        )
43556    THEN
43557          xla_ae_lines_pkg.BflowUpgEntry
43558            (p_business_method_code    => l_bflow_method_code
43559            ,p_business_class_code     => l_bflow_class_code
43560            ,p_balance_type            => l_balance_type_code);
43561    ELSE
43562       NULL;
43563 -- No business flow processing for business flow method of NONE.
43564    END IF;
43565 
43566    --
43567    -- call analytical criteria
43568    --
43569    
43570    --
43571    -- call description
43572    --
43573    -- No description or it is inherited.
43574    --
43575    -- call ADRs
43576    -- Bug 4922099
43577    --
43578    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43579         (NVL(l_actual_upg_option, 'N') = 'O') OR
43580         (NVL(l_enc_upg_option, 'N') = 'O')
43581       )
43582    THEN
43583    NULL;
43584    --
43585    --
43586    
43587   l_ccid := AcctDerRule_12(
43588            p_application_id           => p_application_id
43589          , p_ae_header_id             => l_ae_header_id 
43590 , p_source_1 => p_source_1
43591 , p_source_2 => p_source_2
43592          , x_transaction_coa_id       => l_adr_transaction_coa_id
43593          , x_accounting_coa_id        => l_adr_accounting_coa_id
43594          , x_value_type_code          => l_adr_value_type_code
43595          , p_side                     => 'NA'
43596    );
43597 
43598    xla_ae_lines_pkg.set_ccid(
43599     p_code_combination_id          => l_ccid
43600   , p_value_type_code              => l_adr_value_type_code
43601   , p_transaction_coa_id           => l_adr_transaction_coa_id
43602   , p_accounting_coa_id            => l_adr_accounting_coa_id
43603   , p_adr_code                     => 'EXP'
43604   , p_adr_type_code                => 'S'
43605   , p_component_type               => l_component_type
43606   , p_component_code               => l_component_code
43607   , p_component_type_code          => l_component_type_code
43608   , p_component_appl_id            => l_component_appl_id
43609   , p_amb_context_code             => l_amb_context_code
43610   , p_side                         => 'NA'
43611   );
43612 
43613 
43614    --
43615    --
43616    END IF;
43620           (NVL(l_enc_upg_option, 'N') = 'O')
43617    --
43618    -- Bug 4922099
43619    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43621         ) AND
43622         (l_bflow_method_code = 'PRIOR_ENTRY')
43623       )
43624    THEN
43625       IF
43626       --
43627       1 = 2
43628       --
43629       THEN
43630       xla_accounting_err_pkg.build_message
43631                                     (p_appli_s_name            => 'XLA'
43632                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43633                                     ,p_token_1                 => 'LINE_NUMBER'
43634                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43635                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43636                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43637                                                                              l_component_type
43638                                                                             ,l_component_code
43639                                                                             ,l_component_type_code
43640                                                                             ,l_component_appl_id
43641                                                                             ,l_amb_context_code
43642                                                                             ,l_entity_code
43643                                                                             ,l_event_class_code
43644                                                                            )
43645                                     ,p_token_3                 => 'OWNER'
43646                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43647                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43648                                                                           ,p_lookup_code    => l_component_type_code
43649                                                                          )
43650                                     ,p_token_4                 => 'PRODUCT_NAME'
43651                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43652                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43653                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43654                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43655                                     ,p_ae_header_id            =>  NULL
43656                                        );
43657 
43658         IF (C_LEVEL_ERROR>= g_log_level) THEN
43659                  trace
43660                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43661                       ,p_level    => C_LEVEL_ERROR
43662                       ,p_module   => l_log_module);
43663         END IF;
43664       END IF;
43665    END IF;
43666    --
43667    --
43668    ------------------------------------------------------------------------------------------------
43669    -- 4219869 Business Flow
43670    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43671    -- Prior Entry.  Currently, the following code is always generated.
43672    ------------------------------------------------------------------------------------------------
43673    XLA_AE_LINES_PKG.ValidateCurrentLine;
43674 
43675    ------------------------------------------------------------------------------------
43676    -- 4219869 Business Flow
43677    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43678    ------------------------------------------------------------------------------------
43679    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43680 
43681    ----------------------------------------------------------------------------------
43682    -- 4219869 Business Flow
43683    -- Update journal entry status -- Need to generate this within IF <condition>
43684    ----------------------------------------------------------------------------------
43685    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43686          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43687          ,p_balance_type_code => l_balance_type_code
43688          );
43689 
43690    -------------------------------------------------------------------------------------------
43691    -- 4262811 - Generate the Accrual Reversal lines
43692    -------------------------------------------------------------------------------------------
43693    BEGIN
43694       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43695                               (g_array_event(p_event_id).array_value_num('header_index'));
43696       IF l_acc_rev_flag IS NULL THEN
43697          l_acc_rev_flag := 'N';
43698       END IF;
43699    EXCEPTION
43700       WHEN OTHERS THEN
43701          l_acc_rev_flag := 'N';
43702    END;
43703    --
43704    IF (l_acc_rev_flag = 'Y') THEN
43705 
43706        -- 4645092  ------------------------------------------------------------------------------
43707        -- To allow MPA report to determine if it should generate report process
43708        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43709        ------------------------------------------------------------------------------------------
43710 
43714    -- call ADRs
43711        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43712        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43713    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
43715    -- Bug 4922099
43716    --
43717    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43718         (NVL(l_actual_upg_option, 'N') = 'O') OR
43719         (NVL(l_enc_upg_option, 'N') = 'O')
43720       )
43721    THEN
43722    NULL;
43723    --
43724    --
43725    
43726   l_ccid := AcctDerRule_12(
43727            p_application_id           => p_application_id
43728          , p_ae_header_id             => l_ae_header_id 
43729 , p_source_1 => p_source_1
43730 , p_source_2 => p_source_2
43731          , x_transaction_coa_id       => l_adr_transaction_coa_id
43732          , x_accounting_coa_id        => l_adr_accounting_coa_id
43733          , x_value_type_code          => l_adr_value_type_code
43734          , p_side                     => 'NA'
43735    );
43736 
43737    xla_ae_lines_pkg.set_ccid(
43738     p_code_combination_id          => l_ccid
43739   , p_value_type_code              => l_adr_value_type_code
43740   , p_transaction_coa_id           => l_adr_transaction_coa_id
43741   , p_accounting_coa_id            => l_adr_accounting_coa_id
43742   , p_adr_code                     => 'EXP'
43743   , p_adr_type_code                => 'S'
43744   , p_component_type               => l_component_type
43745   , p_component_code               => l_component_code
43746   , p_component_type_code          => l_component_type_code
43747   , p_component_appl_id            => l_component_appl_id
43748   , p_amb_context_code             => l_amb_context_code
43749   , p_side                         => 'NA'
43750   );
43751 
43752 
43753    --
43754    --
43755    END IF;
43756 
43757        --
43758        -- Update the line information that should be overwritten
43759        --
43760        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43761                                          p_header_num   => 1);
43762        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43763 
43764        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43765 
43766        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43767           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43768        END IF;
43769 
43770       --
43771       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43772       --
43773       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43774           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43775       ELSE
43776           ---------------------------------------------------------------------------------------------------
43777           -- 4262811a Switch Sign
43778           ---------------------------------------------------------------------------------------------------
43779           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43780           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43781                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43782           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43783                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43784           -- 5132302
43785           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43786                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43787 
43788       END IF;
43789 
43790       -- 4955764
43791       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43792       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43793 
43794 
43795       XLA_AE_LINES_PKG.ValidateCurrentLine;
43796       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43797 
43798       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43799                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43800                ,p_balance_type_code => l_balance_type_code);
43801 
43802    END IF;
43803 
43804    -----------------------------------------------------------------------------------------
43805    -- 4262811 Multiperiod Accounting
43806    -----------------------------------------------------------------------------------------
43807      -- No MPA option is assigned.
43808 
43809 
43810 END IF;
43811 END IF;
43812 --
43813 
43814 --
43815 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43816    trace
43817       (p_msg      => 'END of AcctLineType_111'
43818       ,p_level    => C_LEVEL_PROCEDURE
43819       ,p_module   => l_log_module);
43820 END IF;
43821 --
43822 EXCEPTION
43823   WHEN xla_exceptions_pkg.application_exception THEN
43824       RAISE;
43825   WHEN OTHERS THEN
43826        xla_exceptions_pkg.raise_message
43830 
43827            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_111');
43828 END AcctLineType_111;
43829 --
43831 ---------------------------------------
43832 --
43833 -- PRIVATE FUNCTION
43834 --         AcctLineType_112
43835 --
43836 ---------------------------------------
43837 PROCEDURE AcctLineType_112 (
43838   p_application_id        IN NUMBER
43839  ,p_event_id              IN NUMBER
43840  ,p_calculate_acctd_flag  IN VARCHAR2
43841  ,p_calculate_g_l_flag    IN VARCHAR2
43842  ,p_actual_flag           IN OUT VARCHAR2
43843  ,p_balance_type_code     OUT VARCHAR2
43844  ,p_gain_or_loss_ref      OUT VARCHAR2
43845  
43846 --Transaction Account
43847  , p_source_1            IN NUMBER
43848 --Journal Line Type
43849  , p_source_2            IN VARCHAR2
43850 --Entered Amount
43851  , p_source_3            IN NUMBER
43852 --First Distribution Identifier
43853  , p_source_5            IN NUMBER
43854 --Distribution Type
43855  , p_source_6            IN VARCHAR2
43856 --Currency Code
43857  , p_source_7            IN VARCHAR2
43858 --Currency Conversion Date
43859  , p_source_8            IN DATE
43860 --Currency Conversion Rate
43861  , p_source_9            IN NUMBER
43862 --Currency Conversion Type
43863  , p_source_10            IN VARCHAR2
43864 --Accounted Amount
43865  , p_source_11            IN NUMBER
43866 )
43867 IS
43868 
43869 l_component_type              VARCHAR2(80);
43870 l_component_code              VARCHAR2(30);
43871 l_component_type_code         VARCHAR2(1);
43872 l_component_appl_id           INTEGER;
43873 l_amb_context_code            VARCHAR2(30);
43874 l_entity_code                 VARCHAR2(30);
43875 l_event_class_code            VARCHAR2(30);
43876 l_ae_header_id                NUMBER;
43877 l_event_type_code             VARCHAR2(30);
43878 l_line_definition_code        VARCHAR2(30);
43879 l_line_definition_owner_code  VARCHAR2(1);
43880 --
43881 -- adr variables
43882 l_segment                     VARCHAR2(30);
43883 l_ccid                        NUMBER;
43884 l_adr_transaction_coa_id      NUMBER;
43885 l_adr_accounting_coa_id       NUMBER;
43886 l_adr_flexfield_segment_code  VARCHAR2(30);
43887 l_adr_flex_value_set_id       NUMBER;
43888 l_adr_value_type_code         VARCHAR2(30);
43889 l_adr_value_combination_id    NUMBER;
43890 l_adr_value_segment_code      VARCHAR2(30);
43891 
43892 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
43893 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
43894 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
43895 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
43896 
43897 -- 4262811 Variables ------------------------------------------------------------------------------------------
43898 l_entered_amt_idx             NUMBER;
43899 l_accted_amt_idx              NUMBER;
43900 l_acc_rev_flag                VARCHAR2(1);
43901 l_accrual_line_num            NUMBER;
43902 l_tmp_amt                     NUMBER;
43903 l_acc_rev_natural_side_code   VARCHAR2(1);
43904 
43905 l_num_entries                 NUMBER;
43906 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
43907 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
43908 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
43909 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
43910 l_recog_line_1                NUMBER;
43911 l_recog_line_2                NUMBER;
43912 
43913 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
43914 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
43915 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
43916 
43917 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43918 
43919 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
43920 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
43921 
43922 ---------------------------------------------------------------------------------------------------------------
43923 
43924 
43925 --
43926 -- bulk performance
43927 --
43928 l_balance_type_code           VARCHAR2(1);
43929 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
43930 l_log_module                  VARCHAR2(240);
43931 
43932 --
43933 -- Upgrade strategy
43934 --
43935 l_actual_upg_option           VARCHAR2(1);
43936 l_enc_upg_option           VARCHAR2(1);
43937 
43938 --
43939 BEGIN
43940 --
43941 IF g_log_enabled THEN
43942       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_112';
43943 END IF;
43944 --
43945 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43946 
43947       trace
43948          (p_msg      => 'BEGIN of AcctLineType_112'
43949          ,p_level    => C_LEVEL_PROCEDURE
43950          ,p_module   => l_log_module);
43951 
43952 END IF;
43953 --
43954 l_component_type             := 'AMB_JLT';
43955 l_component_code             := 'FRT';
43956 l_component_type_code        := 'S';
43957 l_component_appl_id          :=  555;
43958 l_amb_context_code           := 'DEFAULT';
43959 l_entity_code                := 'INVENTORY';
43960 l_event_class_code           := 'DIR_INTERORG_SHIP';
43961 l_event_type_code            := 'DIR_INTERORG_SHIP_TP';
43962 l_line_definition_owner_code := 'S';
43966 l_segment                     := NULL;
43963 l_line_definition_code       := 'DIRECT_XFER_SHIP_TP';
43964 --
43965 l_balance_type_code          := 'A';
43967 l_ccid                        := NULL;
43968 l_adr_transaction_coa_id      := NULL;
43969 l_adr_accounting_coa_id       := NULL;
43970 l_adr_flexfield_segment_code  := NULL;
43971 l_adr_flex_value_set_id       := NULL;
43972 l_adr_value_type_code         := NULL;
43973 l_adr_value_combination_id    := NULL;
43974 l_adr_value_segment_code      := NULL;
43975 
43976 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
43977 l_bflow_class_code           := '';    -- 4219869 Business Flow
43978 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
43979 l_budgetary_control_flag     := 'N';
43980 
43981 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
43982 l_bflow_applied_to_amt       := NULL; -- 5132302
43983 l_entered_amt_idx            := NULL;          -- 4262811
43984 l_accted_amt_idx             := NULL;          -- 4262811
43985 l_acc_rev_flag               := NULL;          -- 4262811
43986 l_accrual_line_num           := NULL;          -- 4262811
43987 l_tmp_amt                    := NULL;          -- 4262811
43988 --
43989  
43990 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43991     l_balance_type_code <> 'B' THEN
43992 IF NVL(p_source_2,'
43993 ') =  'FRT'
43994  THEN 
43995 
43996    --
43997    XLA_AE_LINES_PKG.SetNewLine;
43998 
43999    p_balance_type_code          := l_balance_type_code;
44000    -- set the flag so later we will know whether the gain loss line needs to be created
44001    
44002    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44003      p_actual_flag :='A';
44004    END IF;
44005 
44006    --
44007    -- bulk performance
44008    --
44009    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44010                                       p_header_num   => 0); -- 4262811
44011    --
44012    -- set accounting line options
44013    --
44014    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44015            p_natural_side_code          => 'D'
44016          , p_gain_or_loss_flag          => 'N'
44017          , p_gl_transfer_mode_code      => 'D'
44018          , p_acct_entry_type_code       => 'A'
44019          , p_switch_side_flag           => 'Y'
44020          , p_merge_duplicate_code       => 'W'
44021          );
44022    --
44023    l_acc_rev_natural_side_code := 'C';  -- 4262811
44024    -- 
44025    --
44026    -- set accounting line type info
44027    --
44028    xla_ae_lines_pkg.SetAcctLineType
44029       (p_component_type             => l_component_type
44030       ,p_event_type_code            => l_event_type_code
44031       ,p_line_definition_owner_code => l_line_definition_owner_code
44032       ,p_line_definition_code       => l_line_definition_code
44033       ,p_accounting_line_code       => l_component_code
44034       ,p_accounting_line_type_code  => l_component_type_code
44035       ,p_accounting_line_appl_id    => l_component_appl_id
44036       ,p_amb_context_code           => l_amb_context_code
44037       ,p_entity_code                => l_entity_code
44038       ,p_event_class_code           => l_event_class_code);
44039    --
44040    -- set accounting class
44041    --
44042    xla_ae_lines_pkg.SetAcctClass(
44043            p_accounting_class_code  => 'FRT'
44044          , p_ae_header_id           => l_ae_header_id
44045          );
44046 
44047    --
44048    -- set rounding class
44049    --
44050    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44051                       'FRT';
44052 
44053    --
44054    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44055    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44056    --
44057    -- bulk performance
44058    --
44059    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44060 
44061    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44062       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44063 
44064    -- 4955764
44065    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44066       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44067 
44068    -- 4458381 Public Sector Enh
44069    
44070    --
44071    -- set accounting attributes for the line type
44072    --
44073    l_entered_amt_idx := 3;
44074    l_accted_amt_idx  := 8;
44075    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
44076    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
44077    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
44078    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
44079    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
44080    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
44081    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
44082    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
44083    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
44087    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
44084    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
44085    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
44086    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
44088    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
44089    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
44090    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
44091    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
44092 
44093    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44094    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44095 
44096    ---------------------------------------------------------------------------------------------------------------
44097    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44098    ---------------------------------------------------------------------------------------------------------------
44099    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44100 
44101    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44102    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44103 
44104    IF xla_accounting_cache_pkg.GetValueChar
44105          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44106          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44107    AND l_bflow_method_code = 'PRIOR_ENTRY'
44108 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44109    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44110          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44111        )
44112    THEN
44113          xla_ae_lines_pkg.BflowUpgEntry
44114            (p_business_method_code    => l_bflow_method_code
44115            ,p_business_class_code     => l_bflow_class_code
44116            ,p_balance_type            => l_balance_type_code);
44117    ELSE
44118       NULL;
44119 -- No business flow processing for business flow method of NONE.
44120    END IF;
44121 
44122    --
44123    -- call analytical criteria
44124    --
44125    
44126    --
44127    -- call description
44128    --
44129    -- No description or it is inherited.
44130    --
44131    -- call ADRs
44132    -- Bug 4922099
44133    --
44134    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44135         (NVL(l_actual_upg_option, 'N') = 'O') OR
44136         (NVL(l_enc_upg_option, 'N') = 'O')
44137       )
44138    THEN
44139    NULL;
44140    --
44141    --
44142    
44143   l_ccid := AcctDerRule_13(
44144            p_application_id           => p_application_id
44145          , p_ae_header_id             => l_ae_header_id 
44146 , p_source_1 => p_source_1
44147 , p_source_2 => p_source_2
44148          , x_transaction_coa_id       => l_adr_transaction_coa_id
44149          , x_accounting_coa_id        => l_adr_accounting_coa_id
44150          , x_value_type_code          => l_adr_value_type_code
44151          , p_side                     => 'NA'
44152    );
44153 
44154    xla_ae_lines_pkg.set_ccid(
44155     p_code_combination_id          => l_ccid
44156   , p_value_type_code              => l_adr_value_type_code
44157   , p_transaction_coa_id           => l_adr_transaction_coa_id
44158   , p_accounting_coa_id            => l_adr_accounting_coa_id
44159   , p_adr_code                     => 'FRT'
44160   , p_adr_type_code                => 'S'
44161   , p_component_type               => l_component_type
44162   , p_component_code               => l_component_code
44163   , p_component_type_code          => l_component_type_code
44164   , p_component_appl_id            => l_component_appl_id
44165   , p_amb_context_code             => l_amb_context_code
44166   , p_side                         => 'NA'
44167   );
44168 
44169 
44170    --
44171    --
44172    END IF;
44173    --
44174    -- Bug 4922099
44175    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44176           (NVL(l_enc_upg_option, 'N') = 'O')
44177         ) AND
44178         (l_bflow_method_code = 'PRIOR_ENTRY')
44179       )
44180    THEN
44181       IF
44182       --
44183       1 = 2
44184       --
44185       THEN
44186       xla_accounting_err_pkg.build_message
44187                                     (p_appli_s_name            => 'XLA'
44188                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44189                                     ,p_token_1                 => 'LINE_NUMBER'
44190                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
44191                                     ,p_token_2                 => 'LINE_TYPE_NAME'
44192                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
44193                                                                              l_component_type
44194                                                                             ,l_component_code
44195                                                                             ,l_component_type_code
44196                                                                             ,l_component_appl_id
44197                                                                             ,l_amb_context_code
44201                                     ,p_token_3                 => 'OWNER'
44198                                                                             ,l_entity_code
44199                                                                             ,l_event_class_code
44200                                                                            )
44202                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
44203                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
44204                                                                           ,p_lookup_code    => l_component_type_code
44205                                                                          )
44206                                     ,p_token_4                 => 'PRODUCT_NAME'
44207                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44208                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44209                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44210                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44211                                     ,p_ae_header_id            =>  NULL
44212                                        );
44213 
44214         IF (C_LEVEL_ERROR>= g_log_level) THEN
44215                  trace
44216                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44217                       ,p_level    => C_LEVEL_ERROR
44218                       ,p_module   => l_log_module);
44219         END IF;
44220       END IF;
44221    END IF;
44222    --
44223    --
44224    ------------------------------------------------------------------------------------------------
44225    -- 4219869 Business Flow
44226    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44227    -- Prior Entry.  Currently, the following code is always generated.
44228    ------------------------------------------------------------------------------------------------
44229    XLA_AE_LINES_PKG.ValidateCurrentLine;
44230 
44231    ------------------------------------------------------------------------------------
44232    -- 4219869 Business Flow
44233    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44234    ------------------------------------------------------------------------------------
44235    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44236 
44237    ----------------------------------------------------------------------------------
44238    -- 4219869 Business Flow
44239    -- Update journal entry status -- Need to generate this within IF <condition>
44240    ----------------------------------------------------------------------------------
44241    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44242          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44243          ,p_balance_type_code => l_balance_type_code
44244          );
44245 
44246    -------------------------------------------------------------------------------------------
44247    -- 4262811 - Generate the Accrual Reversal lines
44248    -------------------------------------------------------------------------------------------
44249    BEGIN
44250       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44251                               (g_array_event(p_event_id).array_value_num('header_index'));
44252       IF l_acc_rev_flag IS NULL THEN
44253          l_acc_rev_flag := 'N';
44254       END IF;
44255    EXCEPTION
44256       WHEN OTHERS THEN
44257          l_acc_rev_flag := 'N';
44258    END;
44259    --
44260    IF (l_acc_rev_flag = 'Y') THEN
44261 
44262        -- 4645092  ------------------------------------------------------------------------------
44263        -- To allow MPA report to determine if it should generate report process
44264        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44265        ------------------------------------------------------------------------------------------
44266 
44267        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44268        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44269    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
44270    -- call ADRs
44271    -- Bug 4922099
44272    --
44273    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44274         (NVL(l_actual_upg_option, 'N') = 'O') OR
44275         (NVL(l_enc_upg_option, 'N') = 'O')
44276       )
44277    THEN
44278    NULL;
44279    --
44280    --
44281    
44282   l_ccid := AcctDerRule_13(
44283            p_application_id           => p_application_id
44284          , p_ae_header_id             => l_ae_header_id 
44285 , p_source_1 => p_source_1
44286 , p_source_2 => p_source_2
44287          , x_transaction_coa_id       => l_adr_transaction_coa_id
44288          , x_accounting_coa_id        => l_adr_accounting_coa_id
44289          , x_value_type_code          => l_adr_value_type_code
44290          , p_side                     => 'NA'
44291    );
44292 
44293    xla_ae_lines_pkg.set_ccid(
44294     p_code_combination_id          => l_ccid
44295   , p_value_type_code              => l_adr_value_type_code
44296   , p_transaction_coa_id           => l_adr_transaction_coa_id
44297   , p_accounting_coa_id            => l_adr_accounting_coa_id
44298   , p_adr_code                     => 'FRT'
44302   , p_component_type_code          => l_component_type_code
44299   , p_adr_type_code                => 'S'
44300   , p_component_type               => l_component_type
44301   , p_component_code               => l_component_code
44303   , p_component_appl_id            => l_component_appl_id
44304   , p_amb_context_code             => l_amb_context_code
44305   , p_side                         => 'NA'
44306   );
44307 
44308 
44309    --
44310    --
44311    END IF;
44312 
44313        --
44314        -- Update the line information that should be overwritten
44315        --
44316        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44317                                          p_header_num   => 1);
44318        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
44319 
44320        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44321 
44322        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
44323           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44324        END IF;
44325 
44326       --
44327       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44328       --
44329       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44330           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
44331       ELSE
44332           ---------------------------------------------------------------------------------------------------
44333           -- 4262811a Switch Sign
44334           ---------------------------------------------------------------------------------------------------
44335           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
44336           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44337                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44338           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44339                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44340           -- 5132302
44341           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44342                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44343 
44344       END IF;
44345 
44346       -- 4955764
44347       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44348       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44349 
44350 
44351       XLA_AE_LINES_PKG.ValidateCurrentLine;
44352       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44353 
44354       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44355                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44356                ,p_balance_type_code => l_balance_type_code);
44357 
44358    END IF;
44359 
44360    -----------------------------------------------------------------------------------------
44361    -- 4262811 Multiperiod Accounting
44362    -----------------------------------------------------------------------------------------
44363      -- No MPA option is assigned.
44364 
44365 
44366 END IF;
44367 END IF;
44368 --
44369 
44370 --
44371 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44372    trace
44373       (p_msg      => 'END of AcctLineType_112'
44374       ,p_level    => C_LEVEL_PROCEDURE
44375       ,p_module   => l_log_module);
44376 END IF;
44377 --
44378 EXCEPTION
44379   WHEN xla_exceptions_pkg.application_exception THEN
44380       RAISE;
44381   WHEN OTHERS THEN
44382        xla_exceptions_pkg.raise_message
44383            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_112');
44384 END AcctLineType_112;
44385 --
44386 
44387 ---------------------------------------
44388 --
44389 -- PRIVATE FUNCTION
44390 --         AcctLineType_113
44391 --
44392 ---------------------------------------
44393 PROCEDURE AcctLineType_113 (
44394   p_application_id        IN NUMBER
44395  ,p_event_id              IN NUMBER
44396  ,p_calculate_acctd_flag  IN VARCHAR2
44397  ,p_calculate_g_l_flag    IN VARCHAR2
44398  ,p_actual_flag           IN OUT VARCHAR2
44399  ,p_balance_type_code     OUT VARCHAR2
44400  ,p_gain_or_loss_ref      OUT VARCHAR2
44401  
44402 --Transaction Account
44403  , p_source_1            IN NUMBER
44404 --Journal Line Type
44405  , p_source_2            IN VARCHAR2
44406 --Entered Amount
44407  , p_source_3            IN NUMBER
44408 --First Distribution Identifier
44409  , p_source_5            IN NUMBER
44410 --Distribution Type
44411  , p_source_6            IN VARCHAR2
44412 --Currency Code
44413  , p_source_7            IN VARCHAR2
44414 --Currency Conversion Date
44415  , p_source_8            IN DATE
44416 --Currency Conversion Rate
44417  , p_source_9            IN NUMBER
44418 --Currency Conversion Type
44419  , p_source_10            IN VARCHAR2
44420 --Accounted Amount
44421  , p_source_11            IN NUMBER
44422 )
44423 IS
44424 
44428 l_component_appl_id           INTEGER;
44425 l_component_type              VARCHAR2(80);
44426 l_component_code              VARCHAR2(30);
44427 l_component_type_code         VARCHAR2(1);
44429 l_amb_context_code            VARCHAR2(30);
44430 l_entity_code                 VARCHAR2(30);
44431 l_event_class_code            VARCHAR2(30);
44432 l_ae_header_id                NUMBER;
44433 l_event_type_code             VARCHAR2(30);
44434 l_line_definition_code        VARCHAR2(30);
44435 l_line_definition_owner_code  VARCHAR2(1);
44436 --
44437 -- adr variables
44438 l_segment                     VARCHAR2(30);
44439 l_ccid                        NUMBER;
44440 l_adr_transaction_coa_id      NUMBER;
44441 l_adr_accounting_coa_id       NUMBER;
44442 l_adr_flexfield_segment_code  VARCHAR2(30);
44443 l_adr_flex_value_set_id       NUMBER;
44444 l_adr_value_type_code         VARCHAR2(30);
44445 l_adr_value_combination_id    NUMBER;
44446 l_adr_value_segment_code      VARCHAR2(30);
44447 
44448 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
44449 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
44450 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
44451 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
44452 
44453 -- 4262811 Variables ------------------------------------------------------------------------------------------
44454 l_entered_amt_idx             NUMBER;
44455 l_accted_amt_idx              NUMBER;
44456 l_acc_rev_flag                VARCHAR2(1);
44457 l_accrual_line_num            NUMBER;
44458 l_tmp_amt                     NUMBER;
44459 l_acc_rev_natural_side_code   VARCHAR2(1);
44460 
44461 l_num_entries                 NUMBER;
44462 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
44463 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
44464 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
44465 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
44466 l_recog_line_1                NUMBER;
44467 l_recog_line_2                NUMBER;
44468 
44469 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
44470 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
44471 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
44472 
44473 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44474 
44475 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
44476 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
44477 
44478 ---------------------------------------------------------------------------------------------------------------
44479 
44480 
44481 --
44482 -- bulk performance
44483 --
44484 l_balance_type_code           VARCHAR2(1);
44485 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
44486 l_log_module                  VARCHAR2(240);
44487 
44488 --
44489 -- Upgrade strategy
44490 --
44491 l_actual_upg_option           VARCHAR2(1);
44492 l_enc_upg_option           VARCHAR2(1);
44493 
44494 --
44495 BEGIN
44496 --
44497 IF g_log_enabled THEN
44498       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_113';
44499 END IF;
44500 --
44501 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44502 
44503       trace
44504          (p_msg      => 'BEGIN of AcctLineType_113'
44505          ,p_level    => C_LEVEL_PROCEDURE
44506          ,p_module   => l_log_module);
44507 
44508 END IF;
44509 --
44510 l_component_type             := 'AMB_JLT';
44511 l_component_code             := 'FRT';
44512 l_component_type_code        := 'S';
44513 l_component_appl_id          :=  555;
44514 l_amb_context_code           := 'DEFAULT';
44515 l_entity_code                := 'INVENTORY';
44516 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
44517 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_NO_TP';
44518 l_line_definition_owner_code := 'S';
44519 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT_NO_TP';
44520 --
44521 l_balance_type_code          := 'A';
44522 l_segment                     := NULL;
44523 l_ccid                        := NULL;
44524 l_adr_transaction_coa_id      := NULL;
44525 l_adr_accounting_coa_id       := NULL;
44526 l_adr_flexfield_segment_code  := NULL;
44527 l_adr_flex_value_set_id       := NULL;
44528 l_adr_value_type_code         := NULL;
44529 l_adr_value_combination_id    := NULL;
44530 l_adr_value_segment_code      := NULL;
44531 
44532 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
44533 l_bflow_class_code           := '';    -- 4219869 Business Flow
44534 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
44535 l_budgetary_control_flag     := 'N';
44536 
44537 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
44538 l_bflow_applied_to_amt       := NULL; -- 5132302
44539 l_entered_amt_idx            := NULL;          -- 4262811
44540 l_accted_amt_idx             := NULL;          -- 4262811
44541 l_acc_rev_flag               := NULL;          -- 4262811
44542 l_accrual_line_num           := NULL;          -- 4262811
44543 l_tmp_amt                    := NULL;          -- 4262811
44544 --
44545  
44546 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44550  THEN 
44547     l_balance_type_code <> 'B' THEN
44548 IF NVL(p_source_2,'
44549 ') =  'FRT'
44551 
44552    --
44553    XLA_AE_LINES_PKG.SetNewLine;
44554 
44555    p_balance_type_code          := l_balance_type_code;
44556    -- set the flag so later we will know whether the gain loss line needs to be created
44557    
44558    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44559      p_actual_flag :='A';
44560    END IF;
44561 
44562    --
44563    -- bulk performance
44564    --
44565    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44566                                       p_header_num   => 0); -- 4262811
44567    --
44568    -- set accounting line options
44569    --
44570    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44571            p_natural_side_code          => 'D'
44572          , p_gain_or_loss_flag          => 'N'
44573          , p_gl_transfer_mode_code      => 'D'
44574          , p_acct_entry_type_code       => 'A'
44575          , p_switch_side_flag           => 'Y'
44576          , p_merge_duplicate_code       => 'W'
44577          );
44578    --
44579    l_acc_rev_natural_side_code := 'C';  -- 4262811
44580    -- 
44581    --
44582    -- set accounting line type info
44583    --
44584    xla_ae_lines_pkg.SetAcctLineType
44585       (p_component_type             => l_component_type
44586       ,p_event_type_code            => l_event_type_code
44587       ,p_line_definition_owner_code => l_line_definition_owner_code
44588       ,p_line_definition_code       => l_line_definition_code
44589       ,p_accounting_line_code       => l_component_code
44590       ,p_accounting_line_type_code  => l_component_type_code
44591       ,p_accounting_line_appl_id    => l_component_appl_id
44592       ,p_amb_context_code           => l_amb_context_code
44593       ,p_entity_code                => l_entity_code
44594       ,p_event_class_code           => l_event_class_code);
44595    --
44596    -- set accounting class
44597    --
44598    xla_ae_lines_pkg.SetAcctClass(
44599            p_accounting_class_code  => 'FRT'
44600          , p_ae_header_id           => l_ae_header_id
44601          );
44602 
44603    --
44604    -- set rounding class
44605    --
44606    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44607                       'FRT';
44608 
44609    --
44610    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44611    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44612    --
44613    -- bulk performance
44614    --
44615    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44616 
44617    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44618       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44619 
44620    -- 4955764
44621    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44622       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44623 
44624    -- 4458381 Public Sector Enh
44625    
44626    --
44627    -- set accounting attributes for the line type
44628    --
44629    l_entered_amt_idx := 3;
44630    l_accted_amt_idx  := 8;
44631    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
44632    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
44633    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
44634    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
44635    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
44636    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
44637    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
44638    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
44639    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
44640    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
44641    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
44642    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
44643    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
44644    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
44645    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
44646    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
44647    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
44648 
44649    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44650    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44651 
44652    ---------------------------------------------------------------------------------------------------------------
44653    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44654    ---------------------------------------------------------------------------------------------------------------
44655    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44656 
44657    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44658    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44659 
44660    IF xla_accounting_cache_pkg.GetValueChar
44661          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44665    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44662          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44663    AND l_bflow_method_code = 'PRIOR_ENTRY'
44664 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44666          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44667        )
44668    THEN
44669          xla_ae_lines_pkg.BflowUpgEntry
44670            (p_business_method_code    => l_bflow_method_code
44671            ,p_business_class_code     => l_bflow_class_code
44672            ,p_balance_type            => l_balance_type_code);
44673    ELSE
44674       NULL;
44675 -- No business flow processing for business flow method of NONE.
44676    END IF;
44677 
44678    --
44679    -- call analytical criteria
44680    --
44681    
44682    --
44683    -- call description
44684    --
44685    -- No description or it is inherited.
44686    --
44687    -- call ADRs
44688    -- Bug 4922099
44689    --
44690    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44691         (NVL(l_actual_upg_option, 'N') = 'O') OR
44692         (NVL(l_enc_upg_option, 'N') = 'O')
44693       )
44694    THEN
44695    NULL;
44696    --
44697    --
44698    
44699   l_ccid := AcctDerRule_13(
44700            p_application_id           => p_application_id
44701          , p_ae_header_id             => l_ae_header_id 
44702 , p_source_1 => p_source_1
44703 , p_source_2 => p_source_2
44704          , x_transaction_coa_id       => l_adr_transaction_coa_id
44705          , x_accounting_coa_id        => l_adr_accounting_coa_id
44706          , x_value_type_code          => l_adr_value_type_code
44707          , p_side                     => 'NA'
44708    );
44709 
44710    xla_ae_lines_pkg.set_ccid(
44711     p_code_combination_id          => l_ccid
44712   , p_value_type_code              => l_adr_value_type_code
44713   , p_transaction_coa_id           => l_adr_transaction_coa_id
44714   , p_accounting_coa_id            => l_adr_accounting_coa_id
44715   , p_adr_code                     => 'FRT'
44716   , p_adr_type_code                => 'S'
44717   , p_component_type               => l_component_type
44718   , p_component_code               => l_component_code
44719   , p_component_type_code          => l_component_type_code
44720   , p_component_appl_id            => l_component_appl_id
44721   , p_amb_context_code             => l_amb_context_code
44722   , p_side                         => 'NA'
44723   );
44724 
44725 
44726    --
44727    --
44728    END IF;
44729    --
44730    -- Bug 4922099
44731    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44732           (NVL(l_enc_upg_option, 'N') = 'O')
44733         ) AND
44734         (l_bflow_method_code = 'PRIOR_ENTRY')
44735       )
44736    THEN
44737       IF
44738       --
44739       1 = 2
44740       --
44741       THEN
44742       xla_accounting_err_pkg.build_message
44743                                     (p_appli_s_name            => 'XLA'
44744                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44745                                     ,p_token_1                 => 'LINE_NUMBER'
44746                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
44747                                     ,p_token_2                 => 'LINE_TYPE_NAME'
44748                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
44749                                                                              l_component_type
44750                                                                             ,l_component_code
44751                                                                             ,l_component_type_code
44752                                                                             ,l_component_appl_id
44753                                                                             ,l_amb_context_code
44754                                                                             ,l_entity_code
44755                                                                             ,l_event_class_code
44756                                                                            )
44757                                     ,p_token_3                 => 'OWNER'
44758                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
44759                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
44760                                                                           ,p_lookup_code    => l_component_type_code
44761                                                                          )
44762                                     ,p_token_4                 => 'PRODUCT_NAME'
44763                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44764                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44765                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44766                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44767                                     ,p_ae_header_id            =>  NULL
44768                                        );
44769 
44770         IF (C_LEVEL_ERROR>= g_log_level) THEN
44771                  trace
44775         END IF;
44772                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44773                       ,p_level    => C_LEVEL_ERROR
44774                       ,p_module   => l_log_module);
44776       END IF;
44777    END IF;
44778    --
44779    --
44780    ------------------------------------------------------------------------------------------------
44781    -- 4219869 Business Flow
44782    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44783    -- Prior Entry.  Currently, the following code is always generated.
44784    ------------------------------------------------------------------------------------------------
44785    XLA_AE_LINES_PKG.ValidateCurrentLine;
44786 
44787    ------------------------------------------------------------------------------------
44788    -- 4219869 Business Flow
44789    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44790    ------------------------------------------------------------------------------------
44791    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44792 
44793    ----------------------------------------------------------------------------------
44794    -- 4219869 Business Flow
44795    -- Update journal entry status -- Need to generate this within IF <condition>
44796    ----------------------------------------------------------------------------------
44797    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44798          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44799          ,p_balance_type_code => l_balance_type_code
44800          );
44801 
44802    -------------------------------------------------------------------------------------------
44803    -- 4262811 - Generate the Accrual Reversal lines
44804    -------------------------------------------------------------------------------------------
44805    BEGIN
44806       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44807                               (g_array_event(p_event_id).array_value_num('header_index'));
44808       IF l_acc_rev_flag IS NULL THEN
44809          l_acc_rev_flag := 'N';
44810       END IF;
44811    EXCEPTION
44812       WHEN OTHERS THEN
44813          l_acc_rev_flag := 'N';
44814    END;
44815    --
44816    IF (l_acc_rev_flag = 'Y') THEN
44817 
44818        -- 4645092  ------------------------------------------------------------------------------
44819        -- To allow MPA report to determine if it should generate report process
44820        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44821        ------------------------------------------------------------------------------------------
44822 
44823        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44824        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44825    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
44826    -- call ADRs
44827    -- Bug 4922099
44828    --
44829    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44830         (NVL(l_actual_upg_option, 'N') = 'O') OR
44831         (NVL(l_enc_upg_option, 'N') = 'O')
44832       )
44833    THEN
44834    NULL;
44835    --
44836    --
44837    
44838   l_ccid := AcctDerRule_13(
44839            p_application_id           => p_application_id
44840          , p_ae_header_id             => l_ae_header_id 
44841 , p_source_1 => p_source_1
44842 , p_source_2 => p_source_2
44843          , x_transaction_coa_id       => l_adr_transaction_coa_id
44844          , x_accounting_coa_id        => l_adr_accounting_coa_id
44845          , x_value_type_code          => l_adr_value_type_code
44846          , p_side                     => 'NA'
44847    );
44848 
44849    xla_ae_lines_pkg.set_ccid(
44850     p_code_combination_id          => l_ccid
44851   , p_value_type_code              => l_adr_value_type_code
44852   , p_transaction_coa_id           => l_adr_transaction_coa_id
44853   , p_accounting_coa_id            => l_adr_accounting_coa_id
44854   , p_adr_code                     => 'FRT'
44855   , p_adr_type_code                => 'S'
44856   , p_component_type               => l_component_type
44857   , p_component_code               => l_component_code
44858   , p_component_type_code          => l_component_type_code
44859   , p_component_appl_id            => l_component_appl_id
44860   , p_amb_context_code             => l_amb_context_code
44861   , p_side                         => 'NA'
44862   );
44863 
44864 
44865    --
44866    --
44867    END IF;
44868 
44869        --
44870        -- Update the line information that should be overwritten
44871        --
44872        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44873                                          p_header_num   => 1);
44874        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
44875 
44876        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44877 
44878        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
44879           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44880        END IF;
44881 
44882       --
44883       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44884       --
44885       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44889           -- 4262811a Switch Sign
44886           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
44887       ELSE
44888           ---------------------------------------------------------------------------------------------------
44890           ---------------------------------------------------------------------------------------------------
44891           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
44892           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44893                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44894           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44895                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44896           -- 5132302
44897           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44898                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44899 
44900       END IF;
44901 
44902       -- 4955764
44903       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44904       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44905 
44906 
44907       XLA_AE_LINES_PKG.ValidateCurrentLine;
44908       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44909 
44910       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44911                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44912                ,p_balance_type_code => l_balance_type_code);
44913 
44914    END IF;
44915 
44916    -----------------------------------------------------------------------------------------
44917    -- 4262811 Multiperiod Accounting
44918    -----------------------------------------------------------------------------------------
44919      -- No MPA option is assigned.
44920 
44921 
44922 END IF;
44923 END IF;
44924 --
44925 
44926 --
44927 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44928    trace
44929       (p_msg      => 'END of AcctLineType_113'
44930       ,p_level    => C_LEVEL_PROCEDURE
44931       ,p_module   => l_log_module);
44932 END IF;
44933 --
44934 EXCEPTION
44935   WHEN xla_exceptions_pkg.application_exception THEN
44936       RAISE;
44937   WHEN OTHERS THEN
44938        xla_exceptions_pkg.raise_message
44939            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_113');
44940 END AcctLineType_113;
44941 --
44942 
44943 ---------------------------------------
44944 --
44945 -- PRIVATE FUNCTION
44946 --         AcctLineType_114
44947 --
44948 ---------------------------------------
44949 PROCEDURE AcctLineType_114 (
44950   p_application_id        IN NUMBER
44951  ,p_event_id              IN NUMBER
44952  ,p_calculate_acctd_flag  IN VARCHAR2
44953  ,p_calculate_g_l_flag    IN VARCHAR2
44954  ,p_actual_flag           IN OUT VARCHAR2
44955  ,p_balance_type_code     OUT VARCHAR2
44956  ,p_gain_or_loss_ref      OUT VARCHAR2
44957  
44958 --Transaction Account
44959  , p_source_1            IN NUMBER
44960 --Journal Line Type
44961  , p_source_2            IN VARCHAR2
44962 --Entered Amount
44963  , p_source_3            IN NUMBER
44964 --First Distribution Identifier
44965  , p_source_5            IN NUMBER
44966 --Distribution Type
44967  , p_source_6            IN VARCHAR2
44968 --Currency Code
44969  , p_source_7            IN VARCHAR2
44970 --Currency Conversion Date
44971  , p_source_8            IN DATE
44972 --Currency Conversion Rate
44973  , p_source_9            IN NUMBER
44974 --Currency Conversion Type
44975  , p_source_10            IN VARCHAR2
44976 --Accounted Amount
44977  , p_source_11            IN NUMBER
44978 )
44979 IS
44980 
44981 l_component_type              VARCHAR2(80);
44982 l_component_code              VARCHAR2(30);
44983 l_component_type_code         VARCHAR2(1);
44984 l_component_appl_id           INTEGER;
44985 l_amb_context_code            VARCHAR2(30);
44986 l_entity_code                 VARCHAR2(30);
44987 l_event_class_code            VARCHAR2(30);
44988 l_ae_header_id                NUMBER;
44989 l_event_type_code             VARCHAR2(30);
44990 l_line_definition_code        VARCHAR2(30);
44991 l_line_definition_owner_code  VARCHAR2(1);
44992 --
44993 -- adr variables
44994 l_segment                     VARCHAR2(30);
44995 l_ccid                        NUMBER;
44996 l_adr_transaction_coa_id      NUMBER;
44997 l_adr_accounting_coa_id       NUMBER;
44998 l_adr_flexfield_segment_code  VARCHAR2(30);
44999 l_adr_flex_value_set_id       NUMBER;
45000 l_adr_value_type_code         VARCHAR2(30);
45001 l_adr_value_combination_id    NUMBER;
45002 l_adr_value_segment_code      VARCHAR2(30);
45003 
45004 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
45005 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
45006 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
45007 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45008 
45009 -- 4262811 Variables ------------------------------------------------------------------------------------------
45010 l_entered_amt_idx             NUMBER;
45011 l_accted_amt_idx              NUMBER;
45015 l_acc_rev_natural_side_code   VARCHAR2(1);
45012 l_acc_rev_flag                VARCHAR2(1);
45013 l_accrual_line_num            NUMBER;
45014 l_tmp_amt                     NUMBER;
45016 
45017 l_num_entries                 NUMBER;
45018 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45019 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45020 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45021 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45022 l_recog_line_1                NUMBER;
45023 l_recog_line_2                NUMBER;
45024 
45025 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45026 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45027 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45028 
45029 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45030 
45031 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45032 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45033 
45034 ---------------------------------------------------------------------------------------------------------------
45035 
45036 
45037 --
45038 -- bulk performance
45039 --
45040 l_balance_type_code           VARCHAR2(1);
45041 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
45042 l_log_module                  VARCHAR2(240);
45043 
45044 --
45045 -- Upgrade strategy
45046 --
45047 l_actual_upg_option           VARCHAR2(1);
45048 l_enc_upg_option           VARCHAR2(1);
45049 
45050 --
45051 BEGIN
45052 --
45053 IF g_log_enabled THEN
45054       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_114';
45055 END IF;
45056 --
45057 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45058 
45059       trace
45060          (p_msg      => 'BEGIN of AcctLineType_114'
45061          ,p_level    => C_LEVEL_PROCEDURE
45062          ,p_module   => l_log_module);
45063 
45064 END IF;
45065 --
45066 l_component_type             := 'AMB_JLT';
45067 l_component_code             := 'FRT';
45068 l_component_type_code        := 'S';
45069 l_component_appl_id          :=  555;
45070 l_amb_context_code           := 'DEFAULT';
45071 l_entity_code                := 'INVENTORY';
45072 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
45073 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
45074 l_line_definition_owner_code := 'S';
45075 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
45076 --
45077 l_balance_type_code          := 'A';
45078 l_segment                     := NULL;
45079 l_ccid                        := NULL;
45080 l_adr_transaction_coa_id      := NULL;
45081 l_adr_accounting_coa_id       := NULL;
45082 l_adr_flexfield_segment_code  := NULL;
45083 l_adr_flex_value_set_id       := NULL;
45084 l_adr_value_type_code         := NULL;
45085 l_adr_value_combination_id    := NULL;
45086 l_adr_value_segment_code      := NULL;
45087 
45088 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
45089 l_bflow_class_code           := '';    -- 4219869 Business Flow
45090 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
45091 l_budgetary_control_flag     := 'N';
45092 
45093 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
45094 l_bflow_applied_to_amt       := NULL; -- 5132302
45095 l_entered_amt_idx            := NULL;          -- 4262811
45096 l_accted_amt_idx             := NULL;          -- 4262811
45097 l_acc_rev_flag               := NULL;          -- 4262811
45098 l_accrual_line_num           := NULL;          -- 4262811
45099 l_tmp_amt                    := NULL;          -- 4262811
45100 --
45101  
45102 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45103     l_balance_type_code <> 'B' THEN
45104 IF NVL(p_source_2,'
45105 ') =  'FRT'
45106  THEN 
45107 
45108    --
45109    XLA_AE_LINES_PKG.SetNewLine;
45110 
45111    p_balance_type_code          := l_balance_type_code;
45112    -- set the flag so later we will know whether the gain loss line needs to be created
45113    
45114    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45115      p_actual_flag :='A';
45116    END IF;
45117 
45118    --
45119    -- bulk performance
45120    --
45121    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45122                                       p_header_num   => 0); -- 4262811
45123    --
45124    -- set accounting line options
45125    --
45126    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45127            p_natural_side_code          => 'D'
45128          , p_gain_or_loss_flag          => 'N'
45129          , p_gl_transfer_mode_code      => 'D'
45130          , p_acct_entry_type_code       => 'A'
45131          , p_switch_side_flag           => 'Y'
45132          , p_merge_duplicate_code       => 'W'
45133          );
45134    --
45135    l_acc_rev_natural_side_code := 'C';  -- 4262811
45136    -- 
45137    --
45138    -- set accounting line type info
45139    --
45140    xla_ae_lines_pkg.SetAcctLineType
45141       (p_component_type             => l_component_type
45145       ,p_accounting_line_code       => l_component_code
45142       ,p_event_type_code            => l_event_type_code
45143       ,p_line_definition_owner_code => l_line_definition_owner_code
45144       ,p_line_definition_code       => l_line_definition_code
45146       ,p_accounting_line_type_code  => l_component_type_code
45147       ,p_accounting_line_appl_id    => l_component_appl_id
45148       ,p_amb_context_code           => l_amb_context_code
45149       ,p_entity_code                => l_entity_code
45150       ,p_event_class_code           => l_event_class_code);
45151    --
45152    -- set accounting class
45153    --
45154    xla_ae_lines_pkg.SetAcctClass(
45155            p_accounting_class_code  => 'FRT'
45156          , p_ae_header_id           => l_ae_header_id
45157          );
45158 
45159    --
45160    -- set rounding class
45161    --
45162    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45163                       'FRT';
45164 
45165    --
45166    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45167    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45168    --
45169    -- bulk performance
45170    --
45171    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45172 
45173    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45174       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45175 
45176    -- 4955764
45177    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45178       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45179 
45180    -- 4458381 Public Sector Enh
45181    
45182    --
45183    -- set accounting attributes for the line type
45184    --
45185    l_entered_amt_idx := 3;
45186    l_accted_amt_idx  := 8;
45187    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
45188    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
45189    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
45190    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
45191    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
45192    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
45193    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
45194    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
45195    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
45196    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
45197    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
45198    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
45199    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
45200    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
45201    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
45202    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
45203    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
45204 
45205    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45206    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45207 
45208    ---------------------------------------------------------------------------------------------------------------
45209    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45210    ---------------------------------------------------------------------------------------------------------------
45211    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45212 
45213    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45214    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45215 
45216    IF xla_accounting_cache_pkg.GetValueChar
45217          (p_source_code         => 'LEDGER_CATEGORY_CODE'
45218          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45219    AND l_bflow_method_code = 'PRIOR_ENTRY'
45220 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45221    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45222          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45223        )
45224    THEN
45225          xla_ae_lines_pkg.BflowUpgEntry
45226            (p_business_method_code    => l_bflow_method_code
45227            ,p_business_class_code     => l_bflow_class_code
45228            ,p_balance_type            => l_balance_type_code);
45229    ELSE
45230       NULL;
45231 -- No business flow processing for business flow method of NONE.
45232    END IF;
45233 
45234    --
45235    -- call analytical criteria
45236    --
45237    
45238    --
45239    -- call description
45240    --
45241    -- No description or it is inherited.
45242    --
45243    -- call ADRs
45244    -- Bug 4922099
45245    --
45246    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45247         (NVL(l_actual_upg_option, 'N') = 'O') OR
45248         (NVL(l_enc_upg_option, 'N') = 'O')
45249       )
45250    THEN
45251    NULL;
45252    --
45253    --
45254    
45255   l_ccid := AcctDerRule_13(
45256            p_application_id           => p_application_id
45257          , p_ae_header_id             => l_ae_header_id 
45258 , p_source_1 => p_source_1
45259 , p_source_2 => p_source_2
45263          , p_side                     => 'NA'
45260          , x_transaction_coa_id       => l_adr_transaction_coa_id
45261          , x_accounting_coa_id        => l_adr_accounting_coa_id
45262          , x_value_type_code          => l_adr_value_type_code
45264    );
45265 
45266    xla_ae_lines_pkg.set_ccid(
45267     p_code_combination_id          => l_ccid
45268   , p_value_type_code              => l_adr_value_type_code
45269   , p_transaction_coa_id           => l_adr_transaction_coa_id
45270   , p_accounting_coa_id            => l_adr_accounting_coa_id
45271   , p_adr_code                     => 'FRT'
45272   , p_adr_type_code                => 'S'
45273   , p_component_type               => l_component_type
45274   , p_component_code               => l_component_code
45275   , p_component_type_code          => l_component_type_code
45276   , p_component_appl_id            => l_component_appl_id
45277   , p_amb_context_code             => l_amb_context_code
45278   , p_side                         => 'NA'
45279   );
45280 
45281 
45282    --
45283    --
45284    END IF;
45285    --
45286    -- Bug 4922099
45287    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45288           (NVL(l_enc_upg_option, 'N') = 'O')
45289         ) AND
45290         (l_bflow_method_code = 'PRIOR_ENTRY')
45291       )
45292    THEN
45293       IF
45294       --
45295       1 = 2
45296       --
45297       THEN
45298       xla_accounting_err_pkg.build_message
45299                                     (p_appli_s_name            => 'XLA'
45300                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45301                                     ,p_token_1                 => 'LINE_NUMBER'
45302                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
45303                                     ,p_token_2                 => 'LINE_TYPE_NAME'
45304                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
45305                                                                              l_component_type
45306                                                                             ,l_component_code
45307                                                                             ,l_component_type_code
45308                                                                             ,l_component_appl_id
45309                                                                             ,l_amb_context_code
45310                                                                             ,l_entity_code
45311                                                                             ,l_event_class_code
45312                                                                            )
45313                                     ,p_token_3                 => 'OWNER'
45314                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
45315                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
45316                                                                           ,p_lookup_code    => l_component_type_code
45317                                                                          )
45318                                     ,p_token_4                 => 'PRODUCT_NAME'
45319                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45320                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45321                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45322                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45323                                     ,p_ae_header_id            =>  NULL
45324                                        );
45325 
45326         IF (C_LEVEL_ERROR>= g_log_level) THEN
45327                  trace
45328                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45329                       ,p_level    => C_LEVEL_ERROR
45330                       ,p_module   => l_log_module);
45331         END IF;
45332       END IF;
45333    END IF;
45334    --
45335    --
45336    ------------------------------------------------------------------------------------------------
45337    -- 4219869 Business Flow
45338    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45339    -- Prior Entry.  Currently, the following code is always generated.
45340    ------------------------------------------------------------------------------------------------
45341    XLA_AE_LINES_PKG.ValidateCurrentLine;
45342 
45343    ------------------------------------------------------------------------------------
45344    -- 4219869 Business Flow
45345    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45346    ------------------------------------------------------------------------------------
45347    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45348 
45349    ----------------------------------------------------------------------------------
45350    -- 4219869 Business Flow
45351    -- Update journal entry status -- Need to generate this within IF <condition>
45352    ----------------------------------------------------------------------------------
45353    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45354          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45358    -------------------------------------------------------------------------------------------
45355          ,p_balance_type_code => l_balance_type_code
45356          );
45357 
45359    -- 4262811 - Generate the Accrual Reversal lines
45360    -------------------------------------------------------------------------------------------
45361    BEGIN
45362       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45363                               (g_array_event(p_event_id).array_value_num('header_index'));
45364       IF l_acc_rev_flag IS NULL THEN
45365          l_acc_rev_flag := 'N';
45366       END IF;
45367    EXCEPTION
45368       WHEN OTHERS THEN
45369          l_acc_rev_flag := 'N';
45370    END;
45371    --
45372    IF (l_acc_rev_flag = 'Y') THEN
45373 
45374        -- 4645092  ------------------------------------------------------------------------------
45375        -- To allow MPA report to determine if it should generate report process
45376        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45377        ------------------------------------------------------------------------------------------
45378 
45379        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45380        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45381    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
45382    -- call ADRs
45383    -- Bug 4922099
45384    --
45385    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45386         (NVL(l_actual_upg_option, 'N') = 'O') OR
45387         (NVL(l_enc_upg_option, 'N') = 'O')
45388       )
45389    THEN
45390    NULL;
45391    --
45392    --
45393    
45394   l_ccid := AcctDerRule_13(
45395            p_application_id           => p_application_id
45396          , p_ae_header_id             => l_ae_header_id 
45397 , p_source_1 => p_source_1
45398 , p_source_2 => p_source_2
45399          , x_transaction_coa_id       => l_adr_transaction_coa_id
45400          , x_accounting_coa_id        => l_adr_accounting_coa_id
45401          , x_value_type_code          => l_adr_value_type_code
45402          , p_side                     => 'NA'
45403    );
45404 
45405    xla_ae_lines_pkg.set_ccid(
45406     p_code_combination_id          => l_ccid
45407   , p_value_type_code              => l_adr_value_type_code
45408   , p_transaction_coa_id           => l_adr_transaction_coa_id
45409   , p_accounting_coa_id            => l_adr_accounting_coa_id
45410   , p_adr_code                     => 'FRT'
45411   , p_adr_type_code                => 'S'
45412   , p_component_type               => l_component_type
45413   , p_component_code               => l_component_code
45414   , p_component_type_code          => l_component_type_code
45415   , p_component_appl_id            => l_component_appl_id
45416   , p_amb_context_code             => l_amb_context_code
45417   , p_side                         => 'NA'
45418   );
45419 
45420 
45421    --
45422    --
45423    END IF;
45424 
45425        --
45426        -- Update the line information that should be overwritten
45427        --
45428        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45429                                          p_header_num   => 1);
45430        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45431 
45432        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45433 
45434        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
45435           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45436        END IF;
45437 
45438       --
45439       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45440       --
45441       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45442           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
45443       ELSE
45444           ---------------------------------------------------------------------------------------------------
45445           -- 4262811a Switch Sign
45446           ---------------------------------------------------------------------------------------------------
45447           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
45448           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45449                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45450           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45451                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45452           -- 5132302
45453           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45454                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45455 
45456       END IF;
45457 
45458       -- 4955764
45459       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45460       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45461 
45462 
45463       XLA_AE_LINES_PKG.ValidateCurrentLine;
45464       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45468                ,p_balance_type_code => l_balance_type_code);
45465 
45466       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45467                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45469 
45470    END IF;
45471 
45472    -----------------------------------------------------------------------------------------
45473    -- 4262811 Multiperiod Accounting
45474    -----------------------------------------------------------------------------------------
45475      -- No MPA option is assigned.
45476 
45477 
45478 END IF;
45479 END IF;
45480 --
45481 
45482 --
45483 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45484    trace
45485       (p_msg      => 'END of AcctLineType_114'
45486       ,p_level    => C_LEVEL_PROCEDURE
45487       ,p_module   => l_log_module);
45488 END IF;
45489 --
45490 EXCEPTION
45491   WHEN xla_exceptions_pkg.application_exception THEN
45492       RAISE;
45493   WHEN OTHERS THEN
45494        xla_exceptions_pkg.raise_message
45495            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_114');
45496 END AcctLineType_114;
45497 --
45498 
45499 ---------------------------------------
45500 --
45501 -- PRIVATE FUNCTION
45502 --         AcctLineType_115
45503 --
45504 ---------------------------------------
45505 PROCEDURE AcctLineType_115 (
45506   p_application_id        IN NUMBER
45507  ,p_event_id              IN NUMBER
45508  ,p_calculate_acctd_flag  IN VARCHAR2
45509  ,p_calculate_g_l_flag    IN VARCHAR2
45510  ,p_actual_flag           IN OUT VARCHAR2
45511  ,p_balance_type_code     OUT VARCHAR2
45512  ,p_gain_or_loss_ref      OUT VARCHAR2
45513  
45514 --Transaction Account
45515  , p_source_1            IN NUMBER
45516 --Journal Line Type
45517  , p_source_2            IN VARCHAR2
45518 --Entered Amount
45519  , p_source_3            IN NUMBER
45520 --First Distribution Identifier
45521  , p_source_5            IN NUMBER
45522 --Distribution Type
45523  , p_source_6            IN VARCHAR2
45524 --Currency Code
45525  , p_source_7            IN VARCHAR2
45526 --Currency Conversion Date
45527  , p_source_8            IN DATE
45528 --Currency Conversion Rate
45529  , p_source_9            IN NUMBER
45530 --Currency Conversion Type
45531  , p_source_10            IN VARCHAR2
45532 --Accounted Amount
45533  , p_source_11            IN NUMBER
45534 )
45535 IS
45536 
45537 l_component_type              VARCHAR2(80);
45538 l_component_code              VARCHAR2(30);
45539 l_component_type_code         VARCHAR2(1);
45540 l_component_appl_id           INTEGER;
45541 l_amb_context_code            VARCHAR2(30);
45542 l_entity_code                 VARCHAR2(30);
45543 l_event_class_code            VARCHAR2(30);
45544 l_ae_header_id                NUMBER;
45545 l_event_type_code             VARCHAR2(30);
45546 l_line_definition_code        VARCHAR2(30);
45547 l_line_definition_owner_code  VARCHAR2(1);
45548 --
45549 -- adr variables
45550 l_segment                     VARCHAR2(30);
45551 l_ccid                        NUMBER;
45552 l_adr_transaction_coa_id      NUMBER;
45553 l_adr_accounting_coa_id       NUMBER;
45554 l_adr_flexfield_segment_code  VARCHAR2(30);
45555 l_adr_flex_value_set_id       NUMBER;
45556 l_adr_value_type_code         VARCHAR2(30);
45557 l_adr_value_combination_id    NUMBER;
45558 l_adr_value_segment_code      VARCHAR2(30);
45559 
45560 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
45561 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
45562 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
45563 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45564 
45565 -- 4262811 Variables ------------------------------------------------------------------------------------------
45566 l_entered_amt_idx             NUMBER;
45567 l_accted_amt_idx              NUMBER;
45568 l_acc_rev_flag                VARCHAR2(1);
45569 l_accrual_line_num            NUMBER;
45570 l_tmp_amt                     NUMBER;
45571 l_acc_rev_natural_side_code   VARCHAR2(1);
45572 
45573 l_num_entries                 NUMBER;
45574 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45575 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45576 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45577 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45578 l_recog_line_1                NUMBER;
45579 l_recog_line_2                NUMBER;
45580 
45581 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45582 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45583 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45584 
45585 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45586 
45587 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45588 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45589 
45590 ---------------------------------------------------------------------------------------------------------------
45591 
45592 
45593 --
45594 -- bulk performance
45595 --
45599 
45596 l_balance_type_code           VARCHAR2(1);
45597 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
45598 l_log_module                  VARCHAR2(240);
45600 --
45601 -- Upgrade strategy
45602 --
45603 l_actual_upg_option           VARCHAR2(1);
45604 l_enc_upg_option           VARCHAR2(1);
45605 
45606 --
45607 BEGIN
45608 --
45609 IF g_log_enabled THEN
45610       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_115';
45611 END IF;
45612 --
45613 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45614 
45615       trace
45616          (p_msg      => 'BEGIN of AcctLineType_115'
45617          ,p_level    => C_LEVEL_PROCEDURE
45618          ,p_module   => l_log_module);
45619 
45620 END IF;
45621 --
45622 l_component_type             := 'AMB_JLT';
45623 l_component_code             := 'FRT';
45624 l_component_type_code        := 'S';
45625 l_component_appl_id          :=  555;
45626 l_amb_context_code           := 'DEFAULT';
45627 l_entity_code                := 'INVENTORY';
45628 l_event_class_code           := 'DIR_INTERORG_SHIP';
45629 l_event_type_code            := 'DIR_INTERORG_SHIP';
45630 l_line_definition_owner_code := 'S';
45631 l_line_definition_code       := 'DIRECT_XFER_SHIP';
45632 --
45633 l_balance_type_code          := 'A';
45634 l_segment                     := NULL;
45635 l_ccid                        := NULL;
45636 l_adr_transaction_coa_id      := NULL;
45637 l_adr_accounting_coa_id       := NULL;
45638 l_adr_flexfield_segment_code  := NULL;
45639 l_adr_flex_value_set_id       := NULL;
45640 l_adr_value_type_code         := NULL;
45641 l_adr_value_combination_id    := NULL;
45642 l_adr_value_segment_code      := NULL;
45643 
45644 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
45645 l_bflow_class_code           := '';    -- 4219869 Business Flow
45646 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
45647 l_budgetary_control_flag     := 'N';
45648 
45649 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
45650 l_bflow_applied_to_amt       := NULL; -- 5132302
45651 l_entered_amt_idx            := NULL;          -- 4262811
45652 l_accted_amt_idx             := NULL;          -- 4262811
45653 l_acc_rev_flag               := NULL;          -- 4262811
45654 l_accrual_line_num           := NULL;          -- 4262811
45655 l_tmp_amt                    := NULL;          -- 4262811
45656 --
45657  
45658 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45659     l_balance_type_code <> 'B' THEN
45660 IF NVL(p_source_2,'
45661 ') =  'FRT'
45662  THEN 
45663 
45664    --
45665    XLA_AE_LINES_PKG.SetNewLine;
45666 
45667    p_balance_type_code          := l_balance_type_code;
45668    -- set the flag so later we will know whether the gain loss line needs to be created
45669    
45670    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45671      p_actual_flag :='A';
45672    END IF;
45673 
45674    --
45675    -- bulk performance
45676    --
45677    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45678                                       p_header_num   => 0); -- 4262811
45679    --
45680    -- set accounting line options
45681    --
45682    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45683            p_natural_side_code          => 'D'
45684          , p_gain_or_loss_flag          => 'N'
45685          , p_gl_transfer_mode_code      => 'D'
45686          , p_acct_entry_type_code       => 'A'
45687          , p_switch_side_flag           => 'Y'
45688          , p_merge_duplicate_code       => 'W'
45689          );
45690    --
45691    l_acc_rev_natural_side_code := 'C';  -- 4262811
45692    -- 
45693    --
45694    -- set accounting line type info
45695    --
45696    xla_ae_lines_pkg.SetAcctLineType
45697       (p_component_type             => l_component_type
45698       ,p_event_type_code            => l_event_type_code
45699       ,p_line_definition_owner_code => l_line_definition_owner_code
45700       ,p_line_definition_code       => l_line_definition_code
45701       ,p_accounting_line_code       => l_component_code
45702       ,p_accounting_line_type_code  => l_component_type_code
45703       ,p_accounting_line_appl_id    => l_component_appl_id
45704       ,p_amb_context_code           => l_amb_context_code
45705       ,p_entity_code                => l_entity_code
45706       ,p_event_class_code           => l_event_class_code);
45707    --
45708    -- set accounting class
45709    --
45710    xla_ae_lines_pkg.SetAcctClass(
45711            p_accounting_class_code  => 'FRT'
45712          , p_ae_header_id           => l_ae_header_id
45713          );
45714 
45715    --
45716    -- set rounding class
45717    --
45718    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45719                       'FRT';
45720 
45721    --
45722    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45723    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45724    --
45725    -- bulk performance
45726    --
45727    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45728 
45729    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45733    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45730       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45731 
45732    -- 4955764
45734       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45735 
45736    -- 4458381 Public Sector Enh
45737    
45738    --
45739    -- set accounting attributes for the line type
45740    --
45741    l_entered_amt_idx := 3;
45742    l_accted_amt_idx  := 8;
45743    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
45744    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
45745    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
45746    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
45747    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
45748    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
45749    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
45750    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
45751    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
45752    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
45753    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
45754    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
45755    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
45756    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
45757    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
45758    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
45759    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
45760 
45761    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45762    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45763 
45764    ---------------------------------------------------------------------------------------------------------------
45765    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45766    ---------------------------------------------------------------------------------------------------------------
45767    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45768 
45769    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45770    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45771 
45772    IF xla_accounting_cache_pkg.GetValueChar
45773          (p_source_code         => 'LEDGER_CATEGORY_CODE'
45774          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45775    AND l_bflow_method_code = 'PRIOR_ENTRY'
45776 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45777    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45778          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45779        )
45780    THEN
45781          xla_ae_lines_pkg.BflowUpgEntry
45782            (p_business_method_code    => l_bflow_method_code
45783            ,p_business_class_code     => l_bflow_class_code
45784            ,p_balance_type            => l_balance_type_code);
45785    ELSE
45786       NULL;
45787 -- No business flow processing for business flow method of NONE.
45788    END IF;
45789 
45790    --
45791    -- call analytical criteria
45792    --
45793    
45794    --
45795    -- call description
45796    --
45797    -- No description or it is inherited.
45798    --
45799    -- call ADRs
45800    -- Bug 4922099
45801    --
45802    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45803         (NVL(l_actual_upg_option, 'N') = 'O') OR
45804         (NVL(l_enc_upg_option, 'N') = 'O')
45805       )
45806    THEN
45807    NULL;
45808    --
45809    --
45810    
45811   l_ccid := AcctDerRule_13(
45812            p_application_id           => p_application_id
45813          , p_ae_header_id             => l_ae_header_id 
45814 , p_source_1 => p_source_1
45815 , p_source_2 => p_source_2
45816          , x_transaction_coa_id       => l_adr_transaction_coa_id
45817          , x_accounting_coa_id        => l_adr_accounting_coa_id
45818          , x_value_type_code          => l_adr_value_type_code
45819          , p_side                     => 'NA'
45820    );
45821 
45822    xla_ae_lines_pkg.set_ccid(
45823     p_code_combination_id          => l_ccid
45824   , p_value_type_code              => l_adr_value_type_code
45825   , p_transaction_coa_id           => l_adr_transaction_coa_id
45826   , p_accounting_coa_id            => l_adr_accounting_coa_id
45827   , p_adr_code                     => 'FRT'
45828   , p_adr_type_code                => 'S'
45829   , p_component_type               => l_component_type
45830   , p_component_code               => l_component_code
45831   , p_component_type_code          => l_component_type_code
45832   , p_component_appl_id            => l_component_appl_id
45833   , p_amb_context_code             => l_amb_context_code
45834   , p_side                         => 'NA'
45835   );
45836 
45837 
45838    --
45839    --
45840    END IF;
45841    --
45842    -- Bug 4922099
45843    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45844           (NVL(l_enc_upg_option, 'N') = 'O')
45845         ) AND
45846         (l_bflow_method_code = 'PRIOR_ENTRY')
45847       )
45848    THEN
45852       --
45849       IF
45850       --
45851       1 = 2
45853       THEN
45854       xla_accounting_err_pkg.build_message
45855                                     (p_appli_s_name            => 'XLA'
45856                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45857                                     ,p_token_1                 => 'LINE_NUMBER'
45858                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
45859                                     ,p_token_2                 => 'LINE_TYPE_NAME'
45860                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
45861                                                                              l_component_type
45862                                                                             ,l_component_code
45863                                                                             ,l_component_type_code
45864                                                                             ,l_component_appl_id
45865                                                                             ,l_amb_context_code
45866                                                                             ,l_entity_code
45867                                                                             ,l_event_class_code
45868                                                                            )
45869                                     ,p_token_3                 => 'OWNER'
45870                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
45871                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
45872                                                                           ,p_lookup_code    => l_component_type_code
45873                                                                          )
45874                                     ,p_token_4                 => 'PRODUCT_NAME'
45875                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45876                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45877                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45878                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45879                                     ,p_ae_header_id            =>  NULL
45880                                        );
45881 
45882         IF (C_LEVEL_ERROR>= g_log_level) THEN
45883                  trace
45884                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45885                       ,p_level    => C_LEVEL_ERROR
45886                       ,p_module   => l_log_module);
45887         END IF;
45888       END IF;
45889    END IF;
45890    --
45891    --
45892    ------------------------------------------------------------------------------------------------
45893    -- 4219869 Business Flow
45894    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45895    -- Prior Entry.  Currently, the following code is always generated.
45896    ------------------------------------------------------------------------------------------------
45897    XLA_AE_LINES_PKG.ValidateCurrentLine;
45898 
45899    ------------------------------------------------------------------------------------
45900    -- 4219869 Business Flow
45901    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45902    ------------------------------------------------------------------------------------
45903    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45904 
45905    ----------------------------------------------------------------------------------
45906    -- 4219869 Business Flow
45907    -- Update journal entry status -- Need to generate this within IF <condition>
45908    ----------------------------------------------------------------------------------
45909    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45910          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45911          ,p_balance_type_code => l_balance_type_code
45912          );
45913 
45914    -------------------------------------------------------------------------------------------
45915    -- 4262811 - Generate the Accrual Reversal lines
45916    -------------------------------------------------------------------------------------------
45917    BEGIN
45918       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45919                               (g_array_event(p_event_id).array_value_num('header_index'));
45920       IF l_acc_rev_flag IS NULL THEN
45921          l_acc_rev_flag := 'N';
45922       END IF;
45923    EXCEPTION
45924       WHEN OTHERS THEN
45925          l_acc_rev_flag := 'N';
45926    END;
45927    --
45928    IF (l_acc_rev_flag = 'Y') THEN
45929 
45930        -- 4645092  ------------------------------------------------------------------------------
45931        -- To allow MPA report to determine if it should generate report process
45932        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45933        ------------------------------------------------------------------------------------------
45934 
45935        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45936        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45937    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
45938    -- call ADRs
45942         (NVL(l_actual_upg_option, 'N') = 'O') OR
45939    -- Bug 4922099
45940    --
45941    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45943         (NVL(l_enc_upg_option, 'N') = 'O')
45944       )
45945    THEN
45946    NULL;
45947    --
45948    --
45949    
45950   l_ccid := AcctDerRule_13(
45951            p_application_id           => p_application_id
45952          , p_ae_header_id             => l_ae_header_id 
45953 , p_source_1 => p_source_1
45954 , p_source_2 => p_source_2
45955          , x_transaction_coa_id       => l_adr_transaction_coa_id
45956          , x_accounting_coa_id        => l_adr_accounting_coa_id
45957          , x_value_type_code          => l_adr_value_type_code
45958          , p_side                     => 'NA'
45959    );
45960 
45961    xla_ae_lines_pkg.set_ccid(
45962     p_code_combination_id          => l_ccid
45963   , p_value_type_code              => l_adr_value_type_code
45964   , p_transaction_coa_id           => l_adr_transaction_coa_id
45965   , p_accounting_coa_id            => l_adr_accounting_coa_id
45966   , p_adr_code                     => 'FRT'
45967   , p_adr_type_code                => 'S'
45968   , p_component_type               => l_component_type
45969   , p_component_code               => l_component_code
45970   , p_component_type_code          => l_component_type_code
45971   , p_component_appl_id            => l_component_appl_id
45972   , p_amb_context_code             => l_amb_context_code
45973   , p_side                         => 'NA'
45974   );
45975 
45976 
45977    --
45978    --
45979    END IF;
45980 
45981        --
45982        -- Update the line information that should be overwritten
45983        --
45984        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45985                                          p_header_num   => 1);
45986        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45987 
45988        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45989 
45990        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
45991           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45992        END IF;
45993 
45994       --
45995       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45996       --
45997       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45998           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
45999       ELSE
46000           ---------------------------------------------------------------------------------------------------
46001           -- 4262811a Switch Sign
46002           ---------------------------------------------------------------------------------------------------
46003           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
46004           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46005                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46006           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46007                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46008           -- 5132302
46009           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46010                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46011 
46012       END IF;
46013 
46014       -- 4955764
46015       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46016       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46017 
46018 
46019       XLA_AE_LINES_PKG.ValidateCurrentLine;
46020       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46021 
46022       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46023                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46024                ,p_balance_type_code => l_balance_type_code);
46025 
46026    END IF;
46027 
46028    -----------------------------------------------------------------------------------------
46029    -- 4262811 Multiperiod Accounting
46030    -----------------------------------------------------------------------------------------
46031      -- No MPA option is assigned.
46032 
46033 
46034 END IF;
46035 END IF;
46036 --
46037 
46038 --
46039 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46040    trace
46041       (p_msg      => 'END of AcctLineType_115'
46042       ,p_level    => C_LEVEL_PROCEDURE
46043       ,p_module   => l_log_module);
46044 END IF;
46045 --
46046 EXCEPTION
46047   WHEN xla_exceptions_pkg.application_exception THEN
46048       RAISE;
46049   WHEN OTHERS THEN
46050        xla_exceptions_pkg.raise_message
46051            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_115');
46052 END AcctLineType_115;
46053 --
46054 
46055 ---------------------------------------
46056 --
46057 -- PRIVATE FUNCTION
46058 --         AcctLineType_116
46059 --
46060 ---------------------------------------
46061 PROCEDURE AcctLineType_116 (
46065  ,p_calculate_g_l_flag    IN VARCHAR2
46062   p_application_id        IN NUMBER
46063  ,p_event_id              IN NUMBER
46064  ,p_calculate_acctd_flag  IN VARCHAR2
46066  ,p_actual_flag           IN OUT VARCHAR2
46067  ,p_balance_type_code     OUT VARCHAR2
46068  ,p_gain_or_loss_ref      OUT VARCHAR2
46069  
46070 --Transaction Account
46071  , p_source_1            IN NUMBER
46072 --Journal Line Type
46073  , p_source_2            IN VARCHAR2
46074 --Entered Amount
46075  , p_source_3            IN NUMBER
46076 --First Distribution Identifier
46077  , p_source_5            IN NUMBER
46078 --Distribution Type
46079  , p_source_6            IN VARCHAR2
46080 --Currency Code
46081  , p_source_7            IN VARCHAR2
46082 --Currency Conversion Date
46083  , p_source_8            IN DATE
46084 --Currency Conversion Rate
46085  , p_source_9            IN NUMBER
46086 --Currency Conversion Type
46087  , p_source_10            IN VARCHAR2
46088 --Accounted Amount
46089  , p_source_11            IN NUMBER
46090 )
46091 IS
46092 
46093 l_component_type              VARCHAR2(80);
46094 l_component_code              VARCHAR2(30);
46095 l_component_type_code         VARCHAR2(1);
46096 l_component_appl_id           INTEGER;
46097 l_amb_context_code            VARCHAR2(30);
46098 l_entity_code                 VARCHAR2(30);
46099 l_event_class_code            VARCHAR2(30);
46100 l_ae_header_id                NUMBER;
46101 l_event_type_code             VARCHAR2(30);
46102 l_line_definition_code        VARCHAR2(30);
46103 l_line_definition_owner_code  VARCHAR2(1);
46104 --
46105 -- adr variables
46106 l_segment                     VARCHAR2(30);
46107 l_ccid                        NUMBER;
46108 l_adr_transaction_coa_id      NUMBER;
46109 l_adr_accounting_coa_id       NUMBER;
46110 l_adr_flexfield_segment_code  VARCHAR2(30);
46111 l_adr_flex_value_set_id       NUMBER;
46112 l_adr_value_type_code         VARCHAR2(30);
46113 l_adr_value_combination_id    NUMBER;
46114 l_adr_value_segment_code      VARCHAR2(30);
46115 
46116 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
46117 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
46118 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
46119 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
46120 
46121 -- 4262811 Variables ------------------------------------------------------------------------------------------
46122 l_entered_amt_idx             NUMBER;
46123 l_accted_amt_idx              NUMBER;
46124 l_acc_rev_flag                VARCHAR2(1);
46125 l_accrual_line_num            NUMBER;
46126 l_tmp_amt                     NUMBER;
46127 l_acc_rev_natural_side_code   VARCHAR2(1);
46128 
46129 l_num_entries                 NUMBER;
46130 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
46131 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
46132 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
46133 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
46134 l_recog_line_1                NUMBER;
46135 l_recog_line_2                NUMBER;
46136 
46137 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
46138 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
46139 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
46140 
46141 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46142 
46143 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
46144 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
46145 
46146 ---------------------------------------------------------------------------------------------------------------
46147 
46148 
46149 --
46150 -- bulk performance
46151 --
46152 l_balance_type_code           VARCHAR2(1);
46153 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
46154 l_log_module                  VARCHAR2(240);
46155 
46156 --
46157 -- Upgrade strategy
46158 --
46159 l_actual_upg_option           VARCHAR2(1);
46160 l_enc_upg_option           VARCHAR2(1);
46161 
46162 --
46163 BEGIN
46164 --
46165 IF g_log_enabled THEN
46166       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_116';
46167 END IF;
46168 --
46169 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46170 
46171       trace
46172          (p_msg      => 'BEGIN of AcctLineType_116'
46173          ,p_level    => C_LEVEL_PROCEDURE
46174          ,p_module   => l_log_module);
46175 
46176 END IF;
46177 --
46178 l_component_type             := 'AMB_JLT';
46179 l_component_code             := 'FRT';
46180 l_component_type_code        := 'S';
46181 l_component_appl_id          :=  555;
46182 l_amb_context_code           := 'DEFAULT';
46183 l_entity_code                := 'INVENTORY';
46184 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
46185 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_TP';
46186 l_line_definition_owner_code := 'S';
46187 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP_TP';
46188 --
46189 l_balance_type_code          := 'A';
46190 l_segment                     := NULL;
46191 l_ccid                        := NULL;
46192 l_adr_transaction_coa_id      := NULL;
46193 l_adr_accounting_coa_id       := NULL;
46197 l_adr_value_combination_id    := NULL;
46194 l_adr_flexfield_segment_code  := NULL;
46195 l_adr_flex_value_set_id       := NULL;
46196 l_adr_value_type_code         := NULL;
46198 l_adr_value_segment_code      := NULL;
46199 
46200 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
46201 l_bflow_class_code           := '';    -- 4219869 Business Flow
46202 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
46203 l_budgetary_control_flag     := 'N';
46204 
46205 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
46206 l_bflow_applied_to_amt       := NULL; -- 5132302
46207 l_entered_amt_idx            := NULL;          -- 4262811
46208 l_accted_amt_idx             := NULL;          -- 4262811
46209 l_acc_rev_flag               := NULL;          -- 4262811
46210 l_accrual_line_num           := NULL;          -- 4262811
46211 l_tmp_amt                    := NULL;          -- 4262811
46212 --
46213  
46214 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46215     l_balance_type_code <> 'B' THEN
46216 IF NVL(p_source_2,'
46217 ') =  'FRT'
46218  THEN 
46219 
46220    --
46221    XLA_AE_LINES_PKG.SetNewLine;
46222 
46223    p_balance_type_code          := l_balance_type_code;
46224    -- set the flag so later we will know whether the gain loss line needs to be created
46225    
46226    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46227      p_actual_flag :='A';
46228    END IF;
46229 
46230    --
46231    -- bulk performance
46232    --
46233    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46234                                       p_header_num   => 0); -- 4262811
46235    --
46236    -- set accounting line options
46237    --
46238    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46239            p_natural_side_code          => 'D'
46240          , p_gain_or_loss_flag          => 'N'
46241          , p_gl_transfer_mode_code      => 'D'
46242          , p_acct_entry_type_code       => 'A'
46243          , p_switch_side_flag           => 'Y'
46244          , p_merge_duplicate_code       => 'W'
46245          );
46246    --
46247    l_acc_rev_natural_side_code := 'C';  -- 4262811
46248    -- 
46249    --
46250    -- set accounting line type info
46251    --
46252    xla_ae_lines_pkg.SetAcctLineType
46253       (p_component_type             => l_component_type
46254       ,p_event_type_code            => l_event_type_code
46255       ,p_line_definition_owner_code => l_line_definition_owner_code
46256       ,p_line_definition_code       => l_line_definition_code
46257       ,p_accounting_line_code       => l_component_code
46258       ,p_accounting_line_type_code  => l_component_type_code
46259       ,p_accounting_line_appl_id    => l_component_appl_id
46260       ,p_amb_context_code           => l_amb_context_code
46261       ,p_entity_code                => l_entity_code
46262       ,p_event_class_code           => l_event_class_code);
46263    --
46264    -- set accounting class
46265    --
46266    xla_ae_lines_pkg.SetAcctClass(
46267            p_accounting_class_code  => 'FRT'
46268          , p_ae_header_id           => l_ae_header_id
46269          );
46270 
46271    --
46272    -- set rounding class
46273    --
46274    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46275                       'FRT';
46276 
46277    --
46278    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46279    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46280    --
46281    -- bulk performance
46282    --
46283    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46284 
46285    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46286       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46287 
46288    -- 4955764
46289    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46290       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46291 
46292    -- 4458381 Public Sector Enh
46293    
46294    --
46295    -- set accounting attributes for the line type
46296    --
46297    l_entered_amt_idx := 3;
46298    l_accted_amt_idx  := 8;
46299    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
46300    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
46301    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
46302    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
46303    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
46304    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
46305    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
46306    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
46307    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
46308    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
46309    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
46310    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
46311    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
46312    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
46313    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
46314    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
46318    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46315    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
46316 
46317    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46319 
46320    ---------------------------------------------------------------------------------------------------------------
46321    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46322    ---------------------------------------------------------------------------------------------------------------
46323    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46324 
46325    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46326    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46327 
46328    IF xla_accounting_cache_pkg.GetValueChar
46329          (p_source_code         => 'LEDGER_CATEGORY_CODE'
46330          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46331    AND l_bflow_method_code = 'PRIOR_ENTRY'
46332 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46333    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46334          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46335        )
46336    THEN
46337          xla_ae_lines_pkg.BflowUpgEntry
46338            (p_business_method_code    => l_bflow_method_code
46339            ,p_business_class_code     => l_bflow_class_code
46340            ,p_balance_type            => l_balance_type_code);
46341    ELSE
46342       NULL;
46343 -- No business flow processing for business flow method of NONE.
46344    END IF;
46345 
46346    --
46347    -- call analytical criteria
46348    --
46349    
46350    --
46351    -- call description
46352    --
46353    -- No description or it is inherited.
46354    --
46355    -- call ADRs
46356    -- Bug 4922099
46357    --
46358    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46359         (NVL(l_actual_upg_option, 'N') = 'O') OR
46360         (NVL(l_enc_upg_option, 'N') = 'O')
46361       )
46362    THEN
46363    NULL;
46364    --
46365    --
46366    
46367   l_ccid := AcctDerRule_13(
46368            p_application_id           => p_application_id
46369          , p_ae_header_id             => l_ae_header_id 
46370 , p_source_1 => p_source_1
46371 , p_source_2 => p_source_2
46372          , x_transaction_coa_id       => l_adr_transaction_coa_id
46373          , x_accounting_coa_id        => l_adr_accounting_coa_id
46374          , x_value_type_code          => l_adr_value_type_code
46375          , p_side                     => 'NA'
46376    );
46377 
46378    xla_ae_lines_pkg.set_ccid(
46379     p_code_combination_id          => l_ccid
46380   , p_value_type_code              => l_adr_value_type_code
46381   , p_transaction_coa_id           => l_adr_transaction_coa_id
46382   , p_accounting_coa_id            => l_adr_accounting_coa_id
46383   , p_adr_code                     => 'FRT'
46384   , p_adr_type_code                => 'S'
46385   , p_component_type               => l_component_type
46386   , p_component_code               => l_component_code
46387   , p_component_type_code          => l_component_type_code
46388   , p_component_appl_id            => l_component_appl_id
46389   , p_amb_context_code             => l_amb_context_code
46390   , p_side                         => 'NA'
46391   );
46392 
46393 
46394    --
46395    --
46396    END IF;
46397    --
46398    -- Bug 4922099
46399    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46400           (NVL(l_enc_upg_option, 'N') = 'O')
46401         ) AND
46402         (l_bflow_method_code = 'PRIOR_ENTRY')
46403       )
46404    THEN
46405       IF
46406       --
46407       1 = 2
46408       --
46409       THEN
46410       xla_accounting_err_pkg.build_message
46411                                     (p_appli_s_name            => 'XLA'
46412                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46413                                     ,p_token_1                 => 'LINE_NUMBER'
46414                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
46415                                     ,p_token_2                 => 'LINE_TYPE_NAME'
46416                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
46417                                                                              l_component_type
46418                                                                             ,l_component_code
46419                                                                             ,l_component_type_code
46420                                                                             ,l_component_appl_id
46421                                                                             ,l_amb_context_code
46422                                                                             ,l_entity_code
46423                                                                             ,l_event_class_code
46424                                                                            )
46425                                     ,p_token_3                 => 'OWNER'
46429                                                                          )
46426                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
46427                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
46428                                                                           ,p_lookup_code    => l_component_type_code
46430                                     ,p_token_4                 => 'PRODUCT_NAME'
46431                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
46432                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
46433                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
46434                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
46435                                     ,p_ae_header_id            =>  NULL
46436                                        );
46437 
46438         IF (C_LEVEL_ERROR>= g_log_level) THEN
46439                  trace
46440                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46441                       ,p_level    => C_LEVEL_ERROR
46442                       ,p_module   => l_log_module);
46443         END IF;
46444       END IF;
46445    END IF;
46446    --
46447    --
46448    ------------------------------------------------------------------------------------------------
46449    -- 4219869 Business Flow
46450    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
46451    -- Prior Entry.  Currently, the following code is always generated.
46452    ------------------------------------------------------------------------------------------------
46453    XLA_AE_LINES_PKG.ValidateCurrentLine;
46454 
46455    ------------------------------------------------------------------------------------
46456    -- 4219869 Business Flow
46457    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
46458    ------------------------------------------------------------------------------------
46459    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46460 
46461    ----------------------------------------------------------------------------------
46462    -- 4219869 Business Flow
46463    -- Update journal entry status -- Need to generate this within IF <condition>
46464    ----------------------------------------------------------------------------------
46465    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46466          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
46467          ,p_balance_type_code => l_balance_type_code
46468          );
46469 
46470    -------------------------------------------------------------------------------------------
46471    -- 4262811 - Generate the Accrual Reversal lines
46472    -------------------------------------------------------------------------------------------
46473    BEGIN
46474       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
46475                               (g_array_event(p_event_id).array_value_num('header_index'));
46476       IF l_acc_rev_flag IS NULL THEN
46477          l_acc_rev_flag := 'N';
46478       END IF;
46479    EXCEPTION
46480       WHEN OTHERS THEN
46481          l_acc_rev_flag := 'N';
46482    END;
46483    --
46484    IF (l_acc_rev_flag = 'Y') THEN
46485 
46486        -- 4645092  ------------------------------------------------------------------------------
46487        -- To allow MPA report to determine if it should generate report process
46488        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
46489        ------------------------------------------------------------------------------------------
46490 
46491        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
46492        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
46493    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
46494    -- call ADRs
46495    -- Bug 4922099
46496    --
46497    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46498         (NVL(l_actual_upg_option, 'N') = 'O') OR
46499         (NVL(l_enc_upg_option, 'N') = 'O')
46500       )
46501    THEN
46502    NULL;
46503    --
46504    --
46505    
46506   l_ccid := AcctDerRule_13(
46507            p_application_id           => p_application_id
46508          , p_ae_header_id             => l_ae_header_id 
46509 , p_source_1 => p_source_1
46510 , p_source_2 => p_source_2
46511          , x_transaction_coa_id       => l_adr_transaction_coa_id
46512          , x_accounting_coa_id        => l_adr_accounting_coa_id
46513          , x_value_type_code          => l_adr_value_type_code
46514          , p_side                     => 'NA'
46515    );
46516 
46517    xla_ae_lines_pkg.set_ccid(
46518     p_code_combination_id          => l_ccid
46519   , p_value_type_code              => l_adr_value_type_code
46520   , p_transaction_coa_id           => l_adr_transaction_coa_id
46521   , p_accounting_coa_id            => l_adr_accounting_coa_id
46522   , p_adr_code                     => 'FRT'
46523   , p_adr_type_code                => 'S'
46524   , p_component_type               => l_component_type
46525   , p_component_code               => l_component_code
46526   , p_component_type_code          => l_component_type_code
46527   , p_component_appl_id            => l_component_appl_id
46531 
46528   , p_amb_context_code             => l_amb_context_code
46529   , p_side                         => 'NA'
46530   );
46532 
46533    --
46534    --
46535    END IF;
46536 
46537        --
46538        -- Update the line information that should be overwritten
46539        --
46540        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
46541                                          p_header_num   => 1);
46542        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
46543 
46544        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
46545 
46546        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
46547           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
46548        END IF;
46549 
46550       --
46551       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46552       --
46553       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46554           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
46555       ELSE
46556           ---------------------------------------------------------------------------------------------------
46557           -- 4262811a Switch Sign
46558           ---------------------------------------------------------------------------------------------------
46559           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
46560           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46561                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46562           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46563                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46564           -- 5132302
46565           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46566                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46567 
46568       END IF;
46569 
46570       -- 4955764
46571       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46572       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46573 
46574 
46575       XLA_AE_LINES_PKG.ValidateCurrentLine;
46576       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46577 
46578       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46579                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46580                ,p_balance_type_code => l_balance_type_code);
46581 
46582    END IF;
46583 
46584    -----------------------------------------------------------------------------------------
46585    -- 4262811 Multiperiod Accounting
46586    -----------------------------------------------------------------------------------------
46587      -- No MPA option is assigned.
46588 
46589 
46590 END IF;
46591 END IF;
46592 --
46593 
46594 --
46595 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46596    trace
46597       (p_msg      => 'END of AcctLineType_116'
46598       ,p_level    => C_LEVEL_PROCEDURE
46599       ,p_module   => l_log_module);
46600 END IF;
46601 --
46602 EXCEPTION
46603   WHEN xla_exceptions_pkg.application_exception THEN
46604       RAISE;
46605   WHEN OTHERS THEN
46606        xla_exceptions_pkg.raise_message
46607            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_116');
46608 END AcctLineType_116;
46609 --
46610 
46611 ---------------------------------------
46612 --
46613 -- PRIVATE FUNCTION
46614 --         AcctLineType_117
46615 --
46616 ---------------------------------------
46617 PROCEDURE AcctLineType_117 (
46618   p_application_id        IN NUMBER
46619  ,p_event_id              IN NUMBER
46620  ,p_calculate_acctd_flag  IN VARCHAR2
46621  ,p_calculate_g_l_flag    IN VARCHAR2
46622  ,p_actual_flag           IN OUT VARCHAR2
46623  ,p_balance_type_code     OUT VARCHAR2
46624  ,p_gain_or_loss_ref      OUT VARCHAR2
46625  
46626 --Transaction Account
46627  , p_source_1            IN NUMBER
46628 --Journal Line Type
46629  , p_source_2            IN VARCHAR2
46630 --Entered Amount
46631  , p_source_3            IN NUMBER
46632 --First Distribution Identifier
46633  , p_source_5            IN NUMBER
46634 --Distribution Type
46635  , p_source_6            IN VARCHAR2
46636 --Currency Code
46637  , p_source_7            IN VARCHAR2
46638 --Currency Conversion Date
46639  , p_source_8            IN DATE
46640 --Currency Conversion Rate
46641  , p_source_9            IN NUMBER
46642 --Currency Conversion Type
46643  , p_source_10            IN VARCHAR2
46644 --Accounted Amount
46645  , p_source_11            IN NUMBER
46646 )
46647 IS
46648 
46649 l_component_type              VARCHAR2(80);
46650 l_component_code              VARCHAR2(30);
46651 l_component_type_code         VARCHAR2(1);
46652 l_component_appl_id           INTEGER;
46653 l_amb_context_code            VARCHAR2(30);
46654 l_entity_code                 VARCHAR2(30);
46658 l_line_definition_code        VARCHAR2(30);
46655 l_event_class_code            VARCHAR2(30);
46656 l_ae_header_id                NUMBER;
46657 l_event_type_code             VARCHAR2(30);
46659 l_line_definition_owner_code  VARCHAR2(1);
46660 --
46661 -- adr variables
46662 l_segment                     VARCHAR2(30);
46663 l_ccid                        NUMBER;
46664 l_adr_transaction_coa_id      NUMBER;
46665 l_adr_accounting_coa_id       NUMBER;
46666 l_adr_flexfield_segment_code  VARCHAR2(30);
46667 l_adr_flex_value_set_id       NUMBER;
46668 l_adr_value_type_code         VARCHAR2(30);
46669 l_adr_value_combination_id    NUMBER;
46670 l_adr_value_segment_code      VARCHAR2(30);
46671 
46672 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
46673 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
46674 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
46675 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
46676 
46677 -- 4262811 Variables ------------------------------------------------------------------------------------------
46678 l_entered_amt_idx             NUMBER;
46679 l_accted_amt_idx              NUMBER;
46680 l_acc_rev_flag                VARCHAR2(1);
46681 l_accrual_line_num            NUMBER;
46682 l_tmp_amt                     NUMBER;
46683 l_acc_rev_natural_side_code   VARCHAR2(1);
46684 
46685 l_num_entries                 NUMBER;
46686 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
46687 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
46688 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
46689 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
46690 l_recog_line_1                NUMBER;
46691 l_recog_line_2                NUMBER;
46692 
46693 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
46694 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
46695 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
46696 
46697 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46698 
46699 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
46700 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
46701 
46702 ---------------------------------------------------------------------------------------------------------------
46703 
46704 
46705 --
46706 -- bulk performance
46707 --
46708 l_balance_type_code           VARCHAR2(1);
46709 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
46710 l_log_module                  VARCHAR2(240);
46711 
46712 --
46713 -- Upgrade strategy
46714 --
46715 l_actual_upg_option           VARCHAR2(1);
46716 l_enc_upg_option           VARCHAR2(1);
46717 
46718 --
46719 BEGIN
46720 --
46721 IF g_log_enabled THEN
46722       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_117';
46723 END IF;
46724 --
46725 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46726 
46727       trace
46728          (p_msg      => 'BEGIN of AcctLineType_117'
46729          ,p_level    => C_LEVEL_PROCEDURE
46730          ,p_module   => l_log_module);
46731 
46732 END IF;
46733 --
46734 l_component_type             := 'AMB_JLT';
46735 l_component_code             := 'FRT';
46736 l_component_type_code        := 'S';
46737 l_component_appl_id          :=  555;
46738 l_amb_context_code           := 'DEFAULT';
46739 l_entity_code                := 'INVENTORY';
46740 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
46741 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_TP';
46742 l_line_definition_owner_code := 'S';
46743 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT_TP';
46744 --
46745 l_balance_type_code          := 'A';
46746 l_segment                     := NULL;
46747 l_ccid                        := NULL;
46748 l_adr_transaction_coa_id      := NULL;
46749 l_adr_accounting_coa_id       := NULL;
46750 l_adr_flexfield_segment_code  := NULL;
46751 l_adr_flex_value_set_id       := NULL;
46752 l_adr_value_type_code         := NULL;
46753 l_adr_value_combination_id    := NULL;
46754 l_adr_value_segment_code      := NULL;
46755 
46756 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
46757 l_bflow_class_code           := '';    -- 4219869 Business Flow
46758 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
46759 l_budgetary_control_flag     := 'N';
46760 
46761 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
46762 l_bflow_applied_to_amt       := NULL; -- 5132302
46763 l_entered_amt_idx            := NULL;          -- 4262811
46764 l_accted_amt_idx             := NULL;          -- 4262811
46765 l_acc_rev_flag               := NULL;          -- 4262811
46766 l_accrual_line_num           := NULL;          -- 4262811
46767 l_tmp_amt                    := NULL;          -- 4262811
46768 --
46769  
46770 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46771     l_balance_type_code <> 'B' THEN
46772 IF NVL(p_source_2,'
46773 ') =  'FRT'
46774  THEN 
46775 
46776    --
46777    XLA_AE_LINES_PKG.SetNewLine;
46778 
46779    p_balance_type_code          := l_balance_type_code;
46780    -- set the flag so later we will know whether the gain loss line needs to be created
46781    
46785 
46782    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46783      p_actual_flag :='A';
46784    END IF;
46786    --
46787    -- bulk performance
46788    --
46789    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46790                                       p_header_num   => 0); -- 4262811
46791    --
46792    -- set accounting line options
46793    --
46794    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46795            p_natural_side_code          => 'D'
46796          , p_gain_or_loss_flag          => 'N'
46797          , p_gl_transfer_mode_code      => 'D'
46798          , p_acct_entry_type_code       => 'A'
46799          , p_switch_side_flag           => 'Y'
46800          , p_merge_duplicate_code       => 'W'
46801          );
46802    --
46803    l_acc_rev_natural_side_code := 'C';  -- 4262811
46804    -- 
46805    --
46806    -- set accounting line type info
46807    --
46808    xla_ae_lines_pkg.SetAcctLineType
46809       (p_component_type             => l_component_type
46810       ,p_event_type_code            => l_event_type_code
46811       ,p_line_definition_owner_code => l_line_definition_owner_code
46812       ,p_line_definition_code       => l_line_definition_code
46813       ,p_accounting_line_code       => l_component_code
46814       ,p_accounting_line_type_code  => l_component_type_code
46815       ,p_accounting_line_appl_id    => l_component_appl_id
46816       ,p_amb_context_code           => l_amb_context_code
46817       ,p_entity_code                => l_entity_code
46818       ,p_event_class_code           => l_event_class_code);
46819    --
46820    -- set accounting class
46821    --
46822    xla_ae_lines_pkg.SetAcctClass(
46823            p_accounting_class_code  => 'FRT'
46824          , p_ae_header_id           => l_ae_header_id
46825          );
46826 
46827    --
46828    -- set rounding class
46829    --
46830    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46831                       'FRT';
46832 
46833    --
46834    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46835    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46836    --
46837    -- bulk performance
46838    --
46839    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46840 
46841    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46842       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46843 
46844    -- 4955764
46845    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46846       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46847 
46848    -- 4458381 Public Sector Enh
46849    
46850    --
46851    -- set accounting attributes for the line type
46852    --
46853    l_entered_amt_idx := 3;
46854    l_accted_amt_idx  := 8;
46855    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
46856    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
46857    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
46858    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
46859    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
46860    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
46861    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
46862    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
46863    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
46864    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
46865    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
46866    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
46867    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
46868    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
46869    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
46870    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
46871    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
46872 
46873    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46874    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46875 
46876    ---------------------------------------------------------------------------------------------------------------
46877    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46878    ---------------------------------------------------------------------------------------------------------------
46879    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46880 
46881    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46882    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46883 
46884    IF xla_accounting_cache_pkg.GetValueChar
46885          (p_source_code         => 'LEDGER_CATEGORY_CODE'
46886          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46887    AND l_bflow_method_code = 'PRIOR_ENTRY'
46888 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46889    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46890          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46894            (p_business_method_code    => l_bflow_method_code
46891        )
46892    THEN
46893          xla_ae_lines_pkg.BflowUpgEntry
46895            ,p_business_class_code     => l_bflow_class_code
46896            ,p_balance_type            => l_balance_type_code);
46897    ELSE
46898       NULL;
46899 -- No business flow processing for business flow method of NONE.
46900    END IF;
46901 
46902    --
46903    -- call analytical criteria
46904    --
46905    
46906    --
46907    -- call description
46908    --
46909    -- No description or it is inherited.
46910    --
46911    -- call ADRs
46912    -- Bug 4922099
46913    --
46914    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46915         (NVL(l_actual_upg_option, 'N') = 'O') OR
46916         (NVL(l_enc_upg_option, 'N') = 'O')
46917       )
46918    THEN
46919    NULL;
46920    --
46921    --
46922    
46923   l_ccid := AcctDerRule_13(
46924            p_application_id           => p_application_id
46925          , p_ae_header_id             => l_ae_header_id 
46926 , p_source_1 => p_source_1
46927 , p_source_2 => p_source_2
46928          , x_transaction_coa_id       => l_adr_transaction_coa_id
46929          , x_accounting_coa_id        => l_adr_accounting_coa_id
46930          , x_value_type_code          => l_adr_value_type_code
46931          , p_side                     => 'NA'
46932    );
46933 
46934    xla_ae_lines_pkg.set_ccid(
46935     p_code_combination_id          => l_ccid
46936   , p_value_type_code              => l_adr_value_type_code
46937   , p_transaction_coa_id           => l_adr_transaction_coa_id
46938   , p_accounting_coa_id            => l_adr_accounting_coa_id
46939   , p_adr_code                     => 'FRT'
46940   , p_adr_type_code                => 'S'
46941   , p_component_type               => l_component_type
46942   , p_component_code               => l_component_code
46943   , p_component_type_code          => l_component_type_code
46944   , p_component_appl_id            => l_component_appl_id
46945   , p_amb_context_code             => l_amb_context_code
46946   , p_side                         => 'NA'
46947   );
46948 
46949 
46950    --
46951    --
46952    END IF;
46953    --
46954    -- Bug 4922099
46955    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46956           (NVL(l_enc_upg_option, 'N') = 'O')
46957         ) AND
46958         (l_bflow_method_code = 'PRIOR_ENTRY')
46959       )
46960    THEN
46961       IF
46962       --
46963       1 = 2
46964       --
46965       THEN
46966       xla_accounting_err_pkg.build_message
46967                                     (p_appli_s_name            => 'XLA'
46968                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46969                                     ,p_token_1                 => 'LINE_NUMBER'
46970                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
46971                                     ,p_token_2                 => 'LINE_TYPE_NAME'
46972                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
46973                                                                              l_component_type
46974                                                                             ,l_component_code
46975                                                                             ,l_component_type_code
46976                                                                             ,l_component_appl_id
46977                                                                             ,l_amb_context_code
46978                                                                             ,l_entity_code
46979                                                                             ,l_event_class_code
46980                                                                            )
46981                                     ,p_token_3                 => 'OWNER'
46982                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
46983                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
46984                                                                           ,p_lookup_code    => l_component_type_code
46985                                                                          )
46986                                     ,p_token_4                 => 'PRODUCT_NAME'
46987                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
46988                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
46989                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
46990                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
46991                                     ,p_ae_header_id            =>  NULL
46992                                        );
46993 
46994         IF (C_LEVEL_ERROR>= g_log_level) THEN
46995                  trace
46996                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46997                       ,p_level    => C_LEVEL_ERROR
46998                       ,p_module   => l_log_module);
46999         END IF;
47000       END IF;
47001    END IF;
47002    --
47003    --
47004    ------------------------------------------------------------------------------------------------
47008    ------------------------------------------------------------------------------------------------
47005    -- 4219869 Business Flow
47006    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47007    -- Prior Entry.  Currently, the following code is always generated.
47009    XLA_AE_LINES_PKG.ValidateCurrentLine;
47010 
47011    ------------------------------------------------------------------------------------
47012    -- 4219869 Business Flow
47013    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47014    ------------------------------------------------------------------------------------
47015    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47016 
47017    ----------------------------------------------------------------------------------
47018    -- 4219869 Business Flow
47019    -- Update journal entry status -- Need to generate this within IF <condition>
47020    ----------------------------------------------------------------------------------
47021    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47022          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47023          ,p_balance_type_code => l_balance_type_code
47024          );
47025 
47026    -------------------------------------------------------------------------------------------
47027    -- 4262811 - Generate the Accrual Reversal lines
47028    -------------------------------------------------------------------------------------------
47029    BEGIN
47030       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47031                               (g_array_event(p_event_id).array_value_num('header_index'));
47032       IF l_acc_rev_flag IS NULL THEN
47033          l_acc_rev_flag := 'N';
47034       END IF;
47035    EXCEPTION
47036       WHEN OTHERS THEN
47037          l_acc_rev_flag := 'N';
47038    END;
47039    --
47040    IF (l_acc_rev_flag = 'Y') THEN
47041 
47042        -- 4645092  ------------------------------------------------------------------------------
47043        -- To allow MPA report to determine if it should generate report process
47044        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47045        ------------------------------------------------------------------------------------------
47046 
47047        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47048        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47049    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
47050    -- call ADRs
47051    -- Bug 4922099
47052    --
47053    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47054         (NVL(l_actual_upg_option, 'N') = 'O') OR
47055         (NVL(l_enc_upg_option, 'N') = 'O')
47056       )
47057    THEN
47058    NULL;
47059    --
47060    --
47061    
47062   l_ccid := AcctDerRule_13(
47063            p_application_id           => p_application_id
47064          , p_ae_header_id             => l_ae_header_id 
47065 , p_source_1 => p_source_1
47066 , p_source_2 => p_source_2
47067          , x_transaction_coa_id       => l_adr_transaction_coa_id
47068          , x_accounting_coa_id        => l_adr_accounting_coa_id
47069          , x_value_type_code          => l_adr_value_type_code
47070          , p_side                     => 'NA'
47071    );
47072 
47073    xla_ae_lines_pkg.set_ccid(
47074     p_code_combination_id          => l_ccid
47075   , p_value_type_code              => l_adr_value_type_code
47076   , p_transaction_coa_id           => l_adr_transaction_coa_id
47077   , p_accounting_coa_id            => l_adr_accounting_coa_id
47078   , p_adr_code                     => 'FRT'
47079   , p_adr_type_code                => 'S'
47080   , p_component_type               => l_component_type
47081   , p_component_code               => l_component_code
47082   , p_component_type_code          => l_component_type_code
47083   , p_component_appl_id            => l_component_appl_id
47084   , p_amb_context_code             => l_amb_context_code
47085   , p_side                         => 'NA'
47086   );
47087 
47088 
47089    --
47090    --
47091    END IF;
47092 
47093        --
47094        -- Update the line information that should be overwritten
47095        --
47096        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47097                                          p_header_num   => 1);
47098        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
47099 
47100        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47101 
47102        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
47103           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47104        END IF;
47105 
47106       --
47107       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47108       --
47109       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47110           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
47111       ELSE
47112           ---------------------------------------------------------------------------------------------------
47113           -- 4262811a Switch Sign
47114           ---------------------------------------------------------------------------------------------------
47118           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47115           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
47116           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47117                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47119                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47120           -- 5132302
47121           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47122                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47123 
47124       END IF;
47125 
47126       -- 4955764
47127       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47128       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47129 
47130 
47131       XLA_AE_LINES_PKG.ValidateCurrentLine;
47132       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47133 
47134       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47135                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47136                ,p_balance_type_code => l_balance_type_code);
47137 
47138    END IF;
47139 
47140    -----------------------------------------------------------------------------------------
47141    -- 4262811 Multiperiod Accounting
47142    -----------------------------------------------------------------------------------------
47143      -- No MPA option is assigned.
47144 
47145 
47146 END IF;
47147 END IF;
47148 --
47149 
47150 --
47151 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47152    trace
47153       (p_msg      => 'END of AcctLineType_117'
47154       ,p_level    => C_LEVEL_PROCEDURE
47155       ,p_module   => l_log_module);
47156 END IF;
47157 --
47158 EXCEPTION
47159   WHEN xla_exceptions_pkg.application_exception THEN
47160       RAISE;
47161   WHEN OTHERS THEN
47162        xla_exceptions_pkg.raise_message
47163            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_117');
47164 END AcctLineType_117;
47165 --
47166 
47167 ---------------------------------------
47168 --
47169 -- PRIVATE FUNCTION
47170 --         AcctLineType_118
47171 --
47172 ---------------------------------------
47173 PROCEDURE AcctLineType_118 (
47174   p_application_id        IN NUMBER
47175  ,p_event_id              IN NUMBER
47176  ,p_calculate_acctd_flag  IN VARCHAR2
47177  ,p_calculate_g_l_flag    IN VARCHAR2
47178  ,p_actual_flag           IN OUT VARCHAR2
47179  ,p_balance_type_code     OUT VARCHAR2
47180  ,p_gain_or_loss_ref      OUT VARCHAR2
47181  
47182 --Transaction Account
47183  , p_source_1            IN NUMBER
47184 --Journal Line Type
47185  , p_source_2            IN VARCHAR2
47186 --Entered Amount
47187  , p_source_3            IN NUMBER
47188 --First Distribution Identifier
47189  , p_source_5            IN NUMBER
47190 --Distribution Type
47191  , p_source_6            IN VARCHAR2
47192 --Currency Code
47193  , p_source_7            IN VARCHAR2
47194 --Currency Conversion Date
47195  , p_source_8            IN DATE
47196 --Currency Conversion Rate
47197  , p_source_9            IN NUMBER
47198 --Currency Conversion Type
47199  , p_source_10            IN VARCHAR2
47200 --Accounted Amount
47201  , p_source_11            IN NUMBER
47202 )
47203 IS
47204 
47205 l_component_type              VARCHAR2(80);
47206 l_component_code              VARCHAR2(30);
47207 l_component_type_code         VARCHAR2(1);
47208 l_component_appl_id           INTEGER;
47209 l_amb_context_code            VARCHAR2(30);
47210 l_entity_code                 VARCHAR2(30);
47211 l_event_class_code            VARCHAR2(30);
47212 l_ae_header_id                NUMBER;
47213 l_event_type_code             VARCHAR2(30);
47214 l_line_definition_code        VARCHAR2(30);
47215 l_line_definition_owner_code  VARCHAR2(1);
47216 --
47217 -- adr variables
47218 l_segment                     VARCHAR2(30);
47219 l_ccid                        NUMBER;
47220 l_adr_transaction_coa_id      NUMBER;
47221 l_adr_accounting_coa_id       NUMBER;
47222 l_adr_flexfield_segment_code  VARCHAR2(30);
47223 l_adr_flex_value_set_id       NUMBER;
47224 l_adr_value_type_code         VARCHAR2(30);
47225 l_adr_value_combination_id    NUMBER;
47226 l_adr_value_segment_code      VARCHAR2(30);
47227 
47228 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
47229 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
47230 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
47231 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
47232 
47233 -- 4262811 Variables ------------------------------------------------------------------------------------------
47234 l_entered_amt_idx             NUMBER;
47235 l_accted_amt_idx              NUMBER;
47236 l_acc_rev_flag                VARCHAR2(1);
47237 l_accrual_line_num            NUMBER;
47238 l_tmp_amt                     NUMBER;
47239 l_acc_rev_natural_side_code   VARCHAR2(1);
47240 
47241 l_num_entries                 NUMBER;
47242 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
47246 l_recog_line_1                NUMBER;
47243 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
47244 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
47245 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
47247 l_recog_line_2                NUMBER;
47248 
47249 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
47250 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
47251 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
47252 
47253 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47254 
47255 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
47256 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
47257 
47258 ---------------------------------------------------------------------------------------------------------------
47259 
47260 
47261 --
47262 -- bulk performance
47263 --
47264 l_balance_type_code           VARCHAR2(1);
47265 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
47266 l_log_module                  VARCHAR2(240);
47267 
47268 --
47269 -- Upgrade strategy
47270 --
47271 l_actual_upg_option           VARCHAR2(1);
47272 l_enc_upg_option           VARCHAR2(1);
47273 
47274 --
47275 BEGIN
47276 --
47277 IF g_log_enabled THEN
47278       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_118';
47279 END IF;
47280 --
47281 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47282 
47283       trace
47284          (p_msg      => 'BEGIN of AcctLineType_118'
47285          ,p_level    => C_LEVEL_PROCEDURE
47286          ,p_module   => l_log_module);
47287 
47288 END IF;
47289 --
47290 l_component_type             := 'AMB_JLT';
47291 l_component_code             := 'ICACC';
47292 l_component_type_code        := 'S';
47293 l_component_appl_id          :=  555;
47294 l_amb_context_code           := 'DEFAULT';
47295 l_entity_code                := 'PURCHASING';
47296 l_event_class_code           := 'RECEIVE';
47297 l_event_type_code            := 'ADJUST_RECEIVE';
47298 l_line_definition_owner_code := 'S';
47299 l_line_definition_code       := 'ADJUST_RECEIVE';
47300 --
47301 l_balance_type_code          := 'A';
47302 l_segment                     := NULL;
47303 l_ccid                        := NULL;
47304 l_adr_transaction_coa_id      := NULL;
47305 l_adr_accounting_coa_id       := NULL;
47306 l_adr_flexfield_segment_code  := NULL;
47307 l_adr_flex_value_set_id       := NULL;
47308 l_adr_value_type_code         := NULL;
47309 l_adr_value_combination_id    := NULL;
47310 l_adr_value_segment_code      := NULL;
47311 
47312 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
47313 l_bflow_class_code           := '';    -- 4219869 Business Flow
47314 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
47315 l_budgetary_control_flag     := 'N';
47316 
47317 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
47318 l_bflow_applied_to_amt       := NULL; -- 5132302
47319 l_entered_amt_idx            := NULL;          -- 4262811
47320 l_accted_amt_idx             := NULL;          -- 4262811
47321 l_acc_rev_flag               := NULL;          -- 4262811
47322 l_accrual_line_num           := NULL;          -- 4262811
47323 l_tmp_amt                    := NULL;          -- 4262811
47324 --
47325  
47326 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
47327     l_balance_type_code <> 'B' THEN
47328 IF NVL(p_source_2,'
47329 ') =  'ICACC'
47330  THEN 
47331 
47332    --
47333    XLA_AE_LINES_PKG.SetNewLine;
47334 
47335    p_balance_type_code          := l_balance_type_code;
47336    -- set the flag so later we will know whether the gain loss line needs to be created
47337    
47338    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
47339      p_actual_flag :='A';
47340    END IF;
47341 
47342    --
47343    -- bulk performance
47344    --
47345    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
47346                                       p_header_num   => 0); -- 4262811
47347    --
47348    -- set accounting line options
47349    --
47350    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
47351            p_natural_side_code          => 'D'
47352          , p_gain_or_loss_flag          => 'N'
47353          , p_gl_transfer_mode_code      => 'D'
47354          , p_acct_entry_type_code       => 'A'
47355          , p_switch_side_flag           => 'Y'
47356          , p_merge_duplicate_code       => 'W'
47357          );
47358    --
47359    l_acc_rev_natural_side_code := 'C';  -- 4262811
47360    -- 
47361    --
47362    -- set accounting line type info
47363    --
47364    xla_ae_lines_pkg.SetAcctLineType
47365       (p_component_type             => l_component_type
47366       ,p_event_type_code            => l_event_type_code
47367       ,p_line_definition_owner_code => l_line_definition_owner_code
47368       ,p_line_definition_code       => l_line_definition_code
47369       ,p_accounting_line_code       => l_component_code
47370       ,p_accounting_line_type_code  => l_component_type_code
47371       ,p_accounting_line_appl_id    => l_component_appl_id
47372       ,p_amb_context_code           => l_amb_context_code
47373       ,p_entity_code                => l_entity_code
47374       ,p_event_class_code           => l_event_class_code);
47375    --
47379            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
47376    -- set accounting class
47377    --
47378    xla_ae_lines_pkg.SetAcctClass(
47380          , p_ae_header_id           => l_ae_header_id
47381          );
47382 
47383    --
47384    -- set rounding class
47385    --
47386    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
47387                       'INTERCOMPANY_ACCRUAL';
47388 
47389    --
47390    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
47391    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
47392    --
47393    -- bulk performance
47394    --
47395    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
47396 
47397    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
47398       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
47399 
47400    -- 4955764
47401    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47402       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
47403 
47404    -- 4458381 Public Sector Enh
47405    
47406    --
47407    -- set accounting attributes for the line type
47408    --
47409    l_entered_amt_idx := 3;
47410    l_accted_amt_idx  := 8;
47411    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
47412    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
47413    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
47414    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
47415    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
47416    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
47417    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
47418    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
47419    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
47420    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
47421    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
47422    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
47423    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
47424    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
47425    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
47426    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
47427    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
47428 
47429    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
47430    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
47431 
47432    ---------------------------------------------------------------------------------------------------------------
47433    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
47434    ---------------------------------------------------------------------------------------------------------------
47435    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
47436 
47437    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47438    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47439 
47440    IF xla_accounting_cache_pkg.GetValueChar
47441          (p_source_code         => 'LEDGER_CATEGORY_CODE'
47442          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
47443    AND l_bflow_method_code = 'PRIOR_ENTRY'
47444 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
47445    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
47446          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
47447        )
47448    THEN
47449          xla_ae_lines_pkg.BflowUpgEntry
47450            (p_business_method_code    => l_bflow_method_code
47451            ,p_business_class_code     => l_bflow_class_code
47452            ,p_balance_type            => l_balance_type_code);
47453    ELSE
47454       NULL;
47455 -- No business flow processing for business flow method of NONE.
47456    END IF;
47457 
47458    --
47459    -- call analytical criteria
47460    --
47461    
47462    --
47463    -- call description
47464    --
47465    -- No description or it is inherited.
47466    --
47467    -- call ADRs
47468    -- Bug 4922099
47469    --
47470    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47471         (NVL(l_actual_upg_option, 'N') = 'O') OR
47472         (NVL(l_enc_upg_option, 'N') = 'O')
47473       )
47474    THEN
47475    NULL;
47476    --
47477    --
47478    
47479   l_ccid := AcctDerRule_14(
47480            p_application_id           => p_application_id
47481          , p_ae_header_id             => l_ae_header_id 
47482 , p_source_1 => p_source_1
47483 , p_source_2 => p_source_2
47484          , x_transaction_coa_id       => l_adr_transaction_coa_id
47485          , x_accounting_coa_id        => l_adr_accounting_coa_id
47486          , x_value_type_code          => l_adr_value_type_code
47487          , p_side                     => 'NA'
47488    );
47489 
47490    xla_ae_lines_pkg.set_ccid(
47491     p_code_combination_id          => l_ccid
47495   , p_adr_code                     => 'ICACC'
47492   , p_value_type_code              => l_adr_value_type_code
47493   , p_transaction_coa_id           => l_adr_transaction_coa_id
47494   , p_accounting_coa_id            => l_adr_accounting_coa_id
47496   , p_adr_type_code                => 'S'
47497   , p_component_type               => l_component_type
47498   , p_component_code               => l_component_code
47499   , p_component_type_code          => l_component_type_code
47500   , p_component_appl_id            => l_component_appl_id
47501   , p_amb_context_code             => l_amb_context_code
47502   , p_side                         => 'NA'
47503   );
47504 
47505 
47506    --
47507    --
47508    END IF;
47509    --
47510    -- Bug 4922099
47511    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
47512           (NVL(l_enc_upg_option, 'N') = 'O')
47513         ) AND
47514         (l_bflow_method_code = 'PRIOR_ENTRY')
47515       )
47516    THEN
47517       IF
47518       --
47519       1 = 2
47520       --
47521       THEN
47522       xla_accounting_err_pkg.build_message
47523                                     (p_appli_s_name            => 'XLA'
47524                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47525                                     ,p_token_1                 => 'LINE_NUMBER'
47526                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
47527                                     ,p_token_2                 => 'LINE_TYPE_NAME'
47528                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
47529                                                                              l_component_type
47530                                                                             ,l_component_code
47531                                                                             ,l_component_type_code
47532                                                                             ,l_component_appl_id
47533                                                                             ,l_amb_context_code
47534                                                                             ,l_entity_code
47535                                                                             ,l_event_class_code
47536                                                                            )
47537                                     ,p_token_3                 => 'OWNER'
47538                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
47539                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
47540                                                                           ,p_lookup_code    => l_component_type_code
47541                                                                          )
47542                                     ,p_token_4                 => 'PRODUCT_NAME'
47543                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
47544                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
47545                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
47546                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
47547                                     ,p_ae_header_id            =>  NULL
47548                                        );
47549 
47550         IF (C_LEVEL_ERROR>= g_log_level) THEN
47551                  trace
47552                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47553                       ,p_level    => C_LEVEL_ERROR
47554                       ,p_module   => l_log_module);
47555         END IF;
47556       END IF;
47557    END IF;
47558    --
47559    --
47560    ------------------------------------------------------------------------------------------------
47561    -- 4219869 Business Flow
47562    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47563    -- Prior Entry.  Currently, the following code is always generated.
47564    ------------------------------------------------------------------------------------------------
47565    XLA_AE_LINES_PKG.ValidateCurrentLine;
47566 
47567    ------------------------------------------------------------------------------------
47568    -- 4219869 Business Flow
47569    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47570    ------------------------------------------------------------------------------------
47571    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47572 
47573    ----------------------------------------------------------------------------------
47574    -- 4219869 Business Flow
47575    -- Update journal entry status -- Need to generate this within IF <condition>
47576    ----------------------------------------------------------------------------------
47577    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47578          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47579          ,p_balance_type_code => l_balance_type_code
47580          );
47581 
47582    -------------------------------------------------------------------------------------------
47583    -- 4262811 - Generate the Accrual Reversal lines
47584    -------------------------------------------------------------------------------------------
47585    BEGIN
47589          l_acc_rev_flag := 'N';
47586       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47587                               (g_array_event(p_event_id).array_value_num('header_index'));
47588       IF l_acc_rev_flag IS NULL THEN
47590       END IF;
47591    EXCEPTION
47592       WHEN OTHERS THEN
47593          l_acc_rev_flag := 'N';
47594    END;
47595    --
47596    IF (l_acc_rev_flag = 'Y') THEN
47597 
47598        -- 4645092  ------------------------------------------------------------------------------
47599        -- To allow MPA report to determine if it should generate report process
47600        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47601        ------------------------------------------------------------------------------------------
47602 
47603        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47604        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47605    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
47606    -- call ADRs
47607    -- Bug 4922099
47608    --
47609    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47610         (NVL(l_actual_upg_option, 'N') = 'O') OR
47611         (NVL(l_enc_upg_option, 'N') = 'O')
47612       )
47613    THEN
47614    NULL;
47615    --
47616    --
47617    
47618   l_ccid := AcctDerRule_14(
47619            p_application_id           => p_application_id
47620          , p_ae_header_id             => l_ae_header_id 
47621 , p_source_1 => p_source_1
47622 , p_source_2 => p_source_2
47623          , x_transaction_coa_id       => l_adr_transaction_coa_id
47624          , x_accounting_coa_id        => l_adr_accounting_coa_id
47625          , x_value_type_code          => l_adr_value_type_code
47626          , p_side                     => 'NA'
47627    );
47628 
47629    xla_ae_lines_pkg.set_ccid(
47630     p_code_combination_id          => l_ccid
47631   , p_value_type_code              => l_adr_value_type_code
47632   , p_transaction_coa_id           => l_adr_transaction_coa_id
47633   , p_accounting_coa_id            => l_adr_accounting_coa_id
47634   , p_adr_code                     => 'ICACC'
47635   , p_adr_type_code                => 'S'
47636   , p_component_type               => l_component_type
47637   , p_component_code               => l_component_code
47638   , p_component_type_code          => l_component_type_code
47639   , p_component_appl_id            => l_component_appl_id
47640   , p_amb_context_code             => l_amb_context_code
47641   , p_side                         => 'NA'
47642   );
47643 
47644 
47645    --
47646    --
47647    END IF;
47648 
47649        --
47650        -- Update the line information that should be overwritten
47651        --
47652        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47653                                          p_header_num   => 1);
47654        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
47655 
47656        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47657 
47658        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
47659           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47660        END IF;
47661 
47662       --
47663       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47664       --
47665       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47666           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
47667       ELSE
47668           ---------------------------------------------------------------------------------------------------
47669           -- 4262811a Switch Sign
47670           ---------------------------------------------------------------------------------------------------
47671           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
47672           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47673                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47674           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47675                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47676           -- 5132302
47677           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47678                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47679 
47680       END IF;
47681 
47682       -- 4955764
47683       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47684       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47685 
47686 
47687       XLA_AE_LINES_PKG.ValidateCurrentLine;
47688       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47689 
47690       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47691                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47692                ,p_balance_type_code => l_balance_type_code);
47693 
47694    END IF;
47695 
47699      -- No MPA option is assigned.
47696    -----------------------------------------------------------------------------------------
47697    -- 4262811 Multiperiod Accounting
47698    -----------------------------------------------------------------------------------------
47700 
47701 
47702 END IF;
47703 END IF;
47704 --
47705 
47706 --
47707 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47708    trace
47709       (p_msg      => 'END of AcctLineType_118'
47710       ,p_level    => C_LEVEL_PROCEDURE
47711       ,p_module   => l_log_module);
47712 END IF;
47713 --
47714 EXCEPTION
47715   WHEN xla_exceptions_pkg.application_exception THEN
47716       RAISE;
47717   WHEN OTHERS THEN
47718        xla_exceptions_pkg.raise_message
47719            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_118');
47720 END AcctLineType_118;
47721 --
47722 
47723 ---------------------------------------
47724 --
47725 -- PRIVATE FUNCTION
47726 --         AcctLineType_119
47727 --
47728 ---------------------------------------
47729 PROCEDURE AcctLineType_119 (
47730   p_application_id        IN NUMBER
47731  ,p_event_id              IN NUMBER
47732  ,p_calculate_acctd_flag  IN VARCHAR2
47733  ,p_calculate_g_l_flag    IN VARCHAR2
47734  ,p_actual_flag           IN OUT VARCHAR2
47735  ,p_balance_type_code     OUT VARCHAR2
47736  ,p_gain_or_loss_ref      OUT VARCHAR2
47737  
47738 --Transaction Account
47739  , p_source_1            IN NUMBER
47740 --Journal Line Type
47741  , p_source_2            IN VARCHAR2
47742 --Entered Amount
47743  , p_source_3            IN NUMBER
47744 --First Distribution Identifier
47745  , p_source_5            IN NUMBER
47746 --Distribution Type
47747  , p_source_6            IN VARCHAR2
47748 --Currency Code
47749  , p_source_7            IN VARCHAR2
47750 --Currency Conversion Date
47751  , p_source_8            IN DATE
47752 --Currency Conversion Rate
47753  , p_source_9            IN NUMBER
47754 --Currency Conversion Type
47755  , p_source_10            IN VARCHAR2
47756 --Accounted Amount
47757  , p_source_11            IN NUMBER
47758 )
47759 IS
47760 
47761 l_component_type              VARCHAR2(80);
47762 l_component_code              VARCHAR2(30);
47763 l_component_type_code         VARCHAR2(1);
47764 l_component_appl_id           INTEGER;
47765 l_amb_context_code            VARCHAR2(30);
47766 l_entity_code                 VARCHAR2(30);
47767 l_event_class_code            VARCHAR2(30);
47768 l_ae_header_id                NUMBER;
47769 l_event_type_code             VARCHAR2(30);
47770 l_line_definition_code        VARCHAR2(30);
47771 l_line_definition_owner_code  VARCHAR2(1);
47772 --
47773 -- adr variables
47774 l_segment                     VARCHAR2(30);
47775 l_ccid                        NUMBER;
47776 l_adr_transaction_coa_id      NUMBER;
47777 l_adr_accounting_coa_id       NUMBER;
47778 l_adr_flexfield_segment_code  VARCHAR2(30);
47779 l_adr_flex_value_set_id       NUMBER;
47780 l_adr_value_type_code         VARCHAR2(30);
47781 l_adr_value_combination_id    NUMBER;
47782 l_adr_value_segment_code      VARCHAR2(30);
47783 
47784 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
47785 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
47786 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
47787 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
47788 
47789 -- 4262811 Variables ------------------------------------------------------------------------------------------
47790 l_entered_amt_idx             NUMBER;
47791 l_accted_amt_idx              NUMBER;
47792 l_acc_rev_flag                VARCHAR2(1);
47793 l_accrual_line_num            NUMBER;
47794 l_tmp_amt                     NUMBER;
47795 l_acc_rev_natural_side_code   VARCHAR2(1);
47796 
47797 l_num_entries                 NUMBER;
47798 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
47799 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
47800 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
47801 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
47802 l_recog_line_1                NUMBER;
47803 l_recog_line_2                NUMBER;
47804 
47805 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
47806 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
47807 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
47808 
47809 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47810 
47811 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
47812 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
47813 
47814 ---------------------------------------------------------------------------------------------------------------
47815 
47816 
47817 --
47818 -- bulk performance
47819 --
47820 l_balance_type_code           VARCHAR2(1);
47821 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
47822 l_log_module                  VARCHAR2(240);
47823 
47824 --
47825 -- Upgrade strategy
47826 --
47827 l_actual_upg_option           VARCHAR2(1);
47828 l_enc_upg_option           VARCHAR2(1);
47829 
47830 --
47831 BEGIN
47832 --
47833 IF g_log_enabled THEN
47837 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47834       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_119';
47835 END IF;
47836 --
47838 
47839       trace
47840          (p_msg      => 'BEGIN of AcctLineType_119'
47841          ,p_level    => C_LEVEL_PROCEDURE
47842          ,p_module   => l_log_module);
47843 
47844 END IF;
47845 --
47846 l_component_type             := 'AMB_JLT';
47847 l_component_code             := 'ICACC';
47848 l_component_type_code        := 'S';
47849 l_component_appl_id          :=  555;
47850 l_amb_context_code           := 'DEFAULT';
47851 l_entity_code                := 'INVENTORY';
47852 l_event_class_code           := 'LOG_INTERCOMPANY';
47853 l_event_type_code            := 'LOG_IC_SHIPMENT_RCPT';
47854 l_line_definition_owner_code := 'S';
47855 l_line_definition_code       := 'LOG_IC_SHIPMENT_RCPT';
47856 --
47857 l_balance_type_code          := 'A';
47858 l_segment                     := NULL;
47859 l_ccid                        := NULL;
47860 l_adr_transaction_coa_id      := NULL;
47861 l_adr_accounting_coa_id       := NULL;
47862 l_adr_flexfield_segment_code  := NULL;
47863 l_adr_flex_value_set_id       := NULL;
47864 l_adr_value_type_code         := NULL;
47865 l_adr_value_combination_id    := NULL;
47866 l_adr_value_segment_code      := NULL;
47867 
47868 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
47869 l_bflow_class_code           := '';    -- 4219869 Business Flow
47870 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
47871 l_budgetary_control_flag     := 'N';
47872 
47873 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
47874 l_bflow_applied_to_amt       := NULL; -- 5132302
47875 l_entered_amt_idx            := NULL;          -- 4262811
47876 l_accted_amt_idx             := NULL;          -- 4262811
47877 l_acc_rev_flag               := NULL;          -- 4262811
47878 l_accrual_line_num           := NULL;          -- 4262811
47879 l_tmp_amt                    := NULL;          -- 4262811
47880 --
47881  
47882 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
47883     l_balance_type_code <> 'B' THEN
47884 IF NVL(p_source_2,'
47885 ') =  'ICACC'
47886  THEN 
47887 
47888    --
47889    XLA_AE_LINES_PKG.SetNewLine;
47890 
47891    p_balance_type_code          := l_balance_type_code;
47892    -- set the flag so later we will know whether the gain loss line needs to be created
47893    
47894    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
47895      p_actual_flag :='A';
47896    END IF;
47897 
47898    --
47899    -- bulk performance
47900    --
47901    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
47902                                       p_header_num   => 0); -- 4262811
47903    --
47904    -- set accounting line options
47905    --
47906    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
47907            p_natural_side_code          => 'D'
47908          , p_gain_or_loss_flag          => 'N'
47909          , p_gl_transfer_mode_code      => 'D'
47910          , p_acct_entry_type_code       => 'A'
47911          , p_switch_side_flag           => 'Y'
47912          , p_merge_duplicate_code       => 'W'
47913          );
47914    --
47915    l_acc_rev_natural_side_code := 'C';  -- 4262811
47916    -- 
47917    --
47918    -- set accounting line type info
47919    --
47920    xla_ae_lines_pkg.SetAcctLineType
47921       (p_component_type             => l_component_type
47922       ,p_event_type_code            => l_event_type_code
47923       ,p_line_definition_owner_code => l_line_definition_owner_code
47924       ,p_line_definition_code       => l_line_definition_code
47925       ,p_accounting_line_code       => l_component_code
47926       ,p_accounting_line_type_code  => l_component_type_code
47927       ,p_accounting_line_appl_id    => l_component_appl_id
47928       ,p_amb_context_code           => l_amb_context_code
47929       ,p_entity_code                => l_entity_code
47930       ,p_event_class_code           => l_event_class_code);
47931    --
47932    -- set accounting class
47933    --
47934    xla_ae_lines_pkg.SetAcctClass(
47935            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
47936          , p_ae_header_id           => l_ae_header_id
47937          );
47938 
47939    --
47940    -- set rounding class
47941    --
47942    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
47943                       'INTERCOMPANY_ACCRUAL';
47944 
47945    --
47946    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
47947    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
47948    --
47949    -- bulk performance
47950    --
47951    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
47952 
47953    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
47954       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
47955 
47956    -- 4955764
47957    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47958       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
47959 
47960    -- 4458381 Public Sector Enh
47961    
47962    --
47963    -- set accounting attributes for the line type
47967    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
47964    --
47965    l_entered_amt_idx := 3;
47966    l_accted_amt_idx  := 8;
47968    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
47969    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
47970    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
47971    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
47972    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
47973    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
47974    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
47975    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
47976    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
47977    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
47978    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
47979    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
47980    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
47981    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
47982    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
47983    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
47984 
47985    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
47986    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
47987 
47988    ---------------------------------------------------------------------------------------------------------------
47989    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
47990    ---------------------------------------------------------------------------------------------------------------
47991    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
47992 
47993    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47994    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47995 
47996    IF xla_accounting_cache_pkg.GetValueChar
47997          (p_source_code         => 'LEDGER_CATEGORY_CODE'
47998          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
47999    AND l_bflow_method_code = 'PRIOR_ENTRY'
48000 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48001    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48002          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48003        )
48004    THEN
48005          xla_ae_lines_pkg.BflowUpgEntry
48006            (p_business_method_code    => l_bflow_method_code
48007            ,p_business_class_code     => l_bflow_class_code
48008            ,p_balance_type            => l_balance_type_code);
48009    ELSE
48010       NULL;
48011 -- No business flow processing for business flow method of NONE.
48012    END IF;
48013 
48014    --
48015    -- call analytical criteria
48016    --
48017    
48018    --
48019    -- call description
48020    --
48021    -- No description or it is inherited.
48022    --
48023    -- call ADRs
48024    -- Bug 4922099
48025    --
48026    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48027         (NVL(l_actual_upg_option, 'N') = 'O') OR
48028         (NVL(l_enc_upg_option, 'N') = 'O')
48029       )
48030    THEN
48031    NULL;
48032    --
48033    --
48034    
48035   l_ccid := AcctDerRule_14(
48036            p_application_id           => p_application_id
48037          , p_ae_header_id             => l_ae_header_id 
48038 , p_source_1 => p_source_1
48039 , p_source_2 => p_source_2
48040          , x_transaction_coa_id       => l_adr_transaction_coa_id
48041          , x_accounting_coa_id        => l_adr_accounting_coa_id
48042          , x_value_type_code          => l_adr_value_type_code
48043          , p_side                     => 'NA'
48044    );
48045 
48046    xla_ae_lines_pkg.set_ccid(
48047     p_code_combination_id          => l_ccid
48048   , p_value_type_code              => l_adr_value_type_code
48049   , p_transaction_coa_id           => l_adr_transaction_coa_id
48050   , p_accounting_coa_id            => l_adr_accounting_coa_id
48051   , p_adr_code                     => 'ICACC'
48052   , p_adr_type_code                => 'S'
48053   , p_component_type               => l_component_type
48054   , p_component_code               => l_component_code
48055   , p_component_type_code          => l_component_type_code
48056   , p_component_appl_id            => l_component_appl_id
48057   , p_amb_context_code             => l_amb_context_code
48058   , p_side                         => 'NA'
48059   );
48060 
48061 
48062    --
48063    --
48064    END IF;
48065    --
48066    -- Bug 4922099
48067    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
48068           (NVL(l_enc_upg_option, 'N') = 'O')
48069         ) AND
48070         (l_bflow_method_code = 'PRIOR_ENTRY')
48071       )
48072    THEN
48073       IF
48074       --
48075       1 = 2
48076       --
48077       THEN
48078       xla_accounting_err_pkg.build_message
48079                                     (p_appli_s_name            => 'XLA'
48080                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48081                                     ,p_token_1                 => 'LINE_NUMBER'
48085                                                                              l_component_type
48082                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
48083                                     ,p_token_2                 => 'LINE_TYPE_NAME'
48084                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
48086                                                                             ,l_component_code
48087                                                                             ,l_component_type_code
48088                                                                             ,l_component_appl_id
48089                                                                             ,l_amb_context_code
48090                                                                             ,l_entity_code
48091                                                                             ,l_event_class_code
48092                                                                            )
48093                                     ,p_token_3                 => 'OWNER'
48094                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
48095                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
48096                                                                           ,p_lookup_code    => l_component_type_code
48097                                                                          )
48098                                     ,p_token_4                 => 'PRODUCT_NAME'
48099                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
48100                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
48101                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
48102                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
48103                                     ,p_ae_header_id            =>  NULL
48104                                        );
48105 
48106         IF (C_LEVEL_ERROR>= g_log_level) THEN
48107                  trace
48108                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48109                       ,p_level    => C_LEVEL_ERROR
48110                       ,p_module   => l_log_module);
48111         END IF;
48112       END IF;
48113    END IF;
48114    --
48115    --
48116    ------------------------------------------------------------------------------------------------
48117    -- 4219869 Business Flow
48118    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
48119    -- Prior Entry.  Currently, the following code is always generated.
48120    ------------------------------------------------------------------------------------------------
48121    XLA_AE_LINES_PKG.ValidateCurrentLine;
48122 
48123    ------------------------------------------------------------------------------------
48124    -- 4219869 Business Flow
48125    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
48126    ------------------------------------------------------------------------------------
48127    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48128 
48129    ----------------------------------------------------------------------------------
48130    -- 4219869 Business Flow
48131    -- Update journal entry status -- Need to generate this within IF <condition>
48132    ----------------------------------------------------------------------------------
48133    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48134          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
48135          ,p_balance_type_code => l_balance_type_code
48136          );
48137 
48138    -------------------------------------------------------------------------------------------
48139    -- 4262811 - Generate the Accrual Reversal lines
48140    -------------------------------------------------------------------------------------------
48141    BEGIN
48142       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
48143                               (g_array_event(p_event_id).array_value_num('header_index'));
48144       IF l_acc_rev_flag IS NULL THEN
48145          l_acc_rev_flag := 'N';
48146       END IF;
48147    EXCEPTION
48148       WHEN OTHERS THEN
48149          l_acc_rev_flag := 'N';
48150    END;
48151    --
48152    IF (l_acc_rev_flag = 'Y') THEN
48153 
48154        -- 4645092  ------------------------------------------------------------------------------
48155        -- To allow MPA report to determine if it should generate report process
48156        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
48157        ------------------------------------------------------------------------------------------
48158 
48159        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
48160        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
48161    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
48162    -- call ADRs
48163    -- Bug 4922099
48164    --
48165    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48166         (NVL(l_actual_upg_option, 'N') = 'O') OR
48167         (NVL(l_enc_upg_option, 'N') = 'O')
48168       )
48169    THEN
48170    NULL;
48171    --
48172    --
48173    
48174   l_ccid := AcctDerRule_14(
48175            p_application_id           => p_application_id
48179          , x_transaction_coa_id       => l_adr_transaction_coa_id
48176          , p_ae_header_id             => l_ae_header_id 
48177 , p_source_1 => p_source_1
48178 , p_source_2 => p_source_2
48180          , x_accounting_coa_id        => l_adr_accounting_coa_id
48181          , x_value_type_code          => l_adr_value_type_code
48182          , p_side                     => 'NA'
48183    );
48184 
48185    xla_ae_lines_pkg.set_ccid(
48186     p_code_combination_id          => l_ccid
48187   , p_value_type_code              => l_adr_value_type_code
48188   , p_transaction_coa_id           => l_adr_transaction_coa_id
48189   , p_accounting_coa_id            => l_adr_accounting_coa_id
48190   , p_adr_code                     => 'ICACC'
48191   , p_adr_type_code                => 'S'
48192   , p_component_type               => l_component_type
48193   , p_component_code               => l_component_code
48194   , p_component_type_code          => l_component_type_code
48195   , p_component_appl_id            => l_component_appl_id
48196   , p_amb_context_code             => l_amb_context_code
48197   , p_side                         => 'NA'
48198   );
48199 
48200 
48201    --
48202    --
48203    END IF;
48204 
48205        --
48206        -- Update the line information that should be overwritten
48207        --
48208        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
48209                                          p_header_num   => 1);
48210        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
48211 
48212        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
48213 
48214        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
48215           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
48216        END IF;
48217 
48218       --
48219       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
48220       --
48221       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
48222           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
48223       ELSE
48224           ---------------------------------------------------------------------------------------------------
48225           -- 4262811a Switch Sign
48226           ---------------------------------------------------------------------------------------------------
48227           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
48228           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48229                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48230           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48231                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48232           -- 5132302
48233           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
48234                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48235 
48236       END IF;
48237 
48238       -- 4955764
48239       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48240       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
48241 
48242 
48243       XLA_AE_LINES_PKG.ValidateCurrentLine;
48244       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48245 
48246       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48247                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
48248                ,p_balance_type_code => l_balance_type_code);
48249 
48250    END IF;
48251 
48252    -----------------------------------------------------------------------------------------
48253    -- 4262811 Multiperiod Accounting
48254    -----------------------------------------------------------------------------------------
48255      -- No MPA option is assigned.
48256 
48257 
48258 END IF;
48259 END IF;
48260 --
48261 
48262 --
48263 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48264    trace
48265       (p_msg      => 'END of AcctLineType_119'
48266       ,p_level    => C_LEVEL_PROCEDURE
48267       ,p_module   => l_log_module);
48268 END IF;
48269 --
48270 EXCEPTION
48271   WHEN xla_exceptions_pkg.application_exception THEN
48272       RAISE;
48273   WHEN OTHERS THEN
48274        xla_exceptions_pkg.raise_message
48275            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_119');
48276 END AcctLineType_119;
48277 --
48278 
48279 ---------------------------------------
48280 --
48281 -- PRIVATE FUNCTION
48282 --         AcctLineType_120
48283 --
48284 ---------------------------------------
48285 PROCEDURE AcctLineType_120 (
48286   p_application_id        IN NUMBER
48287  ,p_event_id              IN NUMBER
48288  ,p_calculate_acctd_flag  IN VARCHAR2
48289  ,p_calculate_g_l_flag    IN VARCHAR2
48290  ,p_actual_flag           IN OUT VARCHAR2
48291  ,p_balance_type_code     OUT VARCHAR2
48292  ,p_gain_or_loss_ref      OUT VARCHAR2
48293  
48297  , p_source_2            IN VARCHAR2
48294 --Transaction Account
48295  , p_source_1            IN NUMBER
48296 --Journal Line Type
48298 --Entered Amount
48299  , p_source_3            IN NUMBER
48300 --First Distribution Identifier
48301  , p_source_5            IN NUMBER
48302 --Distribution Type
48303  , p_source_6            IN VARCHAR2
48304 --Currency Code
48305  , p_source_7            IN VARCHAR2
48306 --Currency Conversion Date
48307  , p_source_8            IN DATE
48308 --Currency Conversion Rate
48309  , p_source_9            IN NUMBER
48310 --Currency Conversion Type
48311  , p_source_10            IN VARCHAR2
48312 --Accounted Amount
48313  , p_source_11            IN NUMBER
48314 )
48315 IS
48316 
48317 l_component_type              VARCHAR2(80);
48318 l_component_code              VARCHAR2(30);
48319 l_component_type_code         VARCHAR2(1);
48320 l_component_appl_id           INTEGER;
48321 l_amb_context_code            VARCHAR2(30);
48322 l_entity_code                 VARCHAR2(30);
48323 l_event_class_code            VARCHAR2(30);
48324 l_ae_header_id                NUMBER;
48325 l_event_type_code             VARCHAR2(30);
48326 l_line_definition_code        VARCHAR2(30);
48327 l_line_definition_owner_code  VARCHAR2(1);
48328 --
48329 -- adr variables
48330 l_segment                     VARCHAR2(30);
48331 l_ccid                        NUMBER;
48332 l_adr_transaction_coa_id      NUMBER;
48333 l_adr_accounting_coa_id       NUMBER;
48334 l_adr_flexfield_segment_code  VARCHAR2(30);
48335 l_adr_flex_value_set_id       NUMBER;
48336 l_adr_value_type_code         VARCHAR2(30);
48337 l_adr_value_combination_id    NUMBER;
48338 l_adr_value_segment_code      VARCHAR2(30);
48339 
48340 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
48341 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
48342 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
48343 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
48344 
48345 -- 4262811 Variables ------------------------------------------------------------------------------------------
48346 l_entered_amt_idx             NUMBER;
48347 l_accted_amt_idx              NUMBER;
48348 l_acc_rev_flag                VARCHAR2(1);
48349 l_accrual_line_num            NUMBER;
48350 l_tmp_amt                     NUMBER;
48351 l_acc_rev_natural_side_code   VARCHAR2(1);
48352 
48353 l_num_entries                 NUMBER;
48354 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
48355 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
48356 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
48357 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
48358 l_recog_line_1                NUMBER;
48359 l_recog_line_2                NUMBER;
48360 
48361 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
48362 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
48363 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
48364 
48365 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
48366 
48367 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
48368 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
48369 
48370 ---------------------------------------------------------------------------------------------------------------
48371 
48372 
48373 --
48374 -- bulk performance
48375 --
48376 l_balance_type_code           VARCHAR2(1);
48377 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
48378 l_log_module                  VARCHAR2(240);
48379 
48380 --
48381 -- Upgrade strategy
48382 --
48383 l_actual_upg_option           VARCHAR2(1);
48384 l_enc_upg_option           VARCHAR2(1);
48385 
48386 --
48387 BEGIN
48388 --
48389 IF g_log_enabled THEN
48390       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_120';
48391 END IF;
48392 --
48393 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48394 
48395       trace
48396          (p_msg      => 'BEGIN of AcctLineType_120'
48397          ,p_level    => C_LEVEL_PROCEDURE
48398          ,p_module   => l_log_module);
48399 
48400 END IF;
48401 --
48402 l_component_type             := 'AMB_JLT';
48403 l_component_code             := 'ICACC';
48404 l_component_type_code        := 'S';
48405 l_component_appl_id          :=  555;
48406 l_amb_context_code           := 'DEFAULT';
48407 l_entity_code                := 'PURCHASING';
48408 l_event_class_code           := 'RECEIVE';
48409 l_event_type_code            := 'CORRECTION_RECEIVE';
48410 l_line_definition_owner_code := 'S';
48411 l_line_definition_code       := 'CORRECTION_RECEIVE';
48412 --
48413 l_balance_type_code          := 'A';
48414 l_segment                     := NULL;
48415 l_ccid                        := NULL;
48416 l_adr_transaction_coa_id      := NULL;
48417 l_adr_accounting_coa_id       := NULL;
48418 l_adr_flexfield_segment_code  := NULL;
48419 l_adr_flex_value_set_id       := NULL;
48420 l_adr_value_type_code         := NULL;
48421 l_adr_value_combination_id    := NULL;
48422 l_adr_value_segment_code      := NULL;
48423 
48424 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
48425 l_bflow_class_code           := '';    -- 4219869 Business Flow
48426 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
48430 l_bflow_applied_to_amt       := NULL; -- 5132302
48427 l_budgetary_control_flag     := 'N';
48428 
48429 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
48431 l_entered_amt_idx            := NULL;          -- 4262811
48432 l_accted_amt_idx             := NULL;          -- 4262811
48433 l_acc_rev_flag               := NULL;          -- 4262811
48434 l_accrual_line_num           := NULL;          -- 4262811
48435 l_tmp_amt                    := NULL;          -- 4262811
48436 --
48437  
48438 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
48439     l_balance_type_code <> 'B' THEN
48440 IF NVL(p_source_2,'
48441 ') =  'ICACC'
48442  THEN 
48443 
48444    --
48445    XLA_AE_LINES_PKG.SetNewLine;
48446 
48447    p_balance_type_code          := l_balance_type_code;
48448    -- set the flag so later we will know whether the gain loss line needs to be created
48449    
48450    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
48451      p_actual_flag :='A';
48452    END IF;
48453 
48454    --
48455    -- bulk performance
48456    --
48457    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
48458                                       p_header_num   => 0); -- 4262811
48459    --
48460    -- set accounting line options
48461    --
48462    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
48463            p_natural_side_code          => 'D'
48464          , p_gain_or_loss_flag          => 'N'
48465          , p_gl_transfer_mode_code      => 'D'
48466          , p_acct_entry_type_code       => 'A'
48467          , p_switch_side_flag           => 'Y'
48468          , p_merge_duplicate_code       => 'W'
48469          );
48470    --
48471    l_acc_rev_natural_side_code := 'C';  -- 4262811
48472    -- 
48473    --
48474    -- set accounting line type info
48475    --
48476    xla_ae_lines_pkg.SetAcctLineType
48477       (p_component_type             => l_component_type
48478       ,p_event_type_code            => l_event_type_code
48479       ,p_line_definition_owner_code => l_line_definition_owner_code
48480       ,p_line_definition_code       => l_line_definition_code
48481       ,p_accounting_line_code       => l_component_code
48482       ,p_accounting_line_type_code  => l_component_type_code
48483       ,p_accounting_line_appl_id    => l_component_appl_id
48484       ,p_amb_context_code           => l_amb_context_code
48485       ,p_entity_code                => l_entity_code
48486       ,p_event_class_code           => l_event_class_code);
48487    --
48488    -- set accounting class
48489    --
48490    xla_ae_lines_pkg.SetAcctClass(
48491            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
48492          , p_ae_header_id           => l_ae_header_id
48493          );
48494 
48495    --
48496    -- set rounding class
48497    --
48498    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
48499                       'INTERCOMPANY_ACCRUAL';
48500 
48501    --
48502    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
48503    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
48504    --
48505    -- bulk performance
48506    --
48507    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
48508 
48509    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
48510       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
48511 
48512    -- 4955764
48513    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48514       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
48515 
48516    -- 4458381 Public Sector Enh
48517    
48518    --
48519    -- set accounting attributes for the line type
48520    --
48521    l_entered_amt_idx := 3;
48522    l_accted_amt_idx  := 8;
48523    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
48524    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
48525    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
48526    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
48527    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
48528    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
48529    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
48530    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
48531    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
48532    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
48533    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
48534    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
48535    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
48536    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
48537    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
48538    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
48539    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
48540 
48541    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
48542    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
48543 
48544    ---------------------------------------------------------------------------------------------------------------
48548 
48545    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
48546    ---------------------------------------------------------------------------------------------------------------
48547    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
48549    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48550    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48551 
48552    IF xla_accounting_cache_pkg.GetValueChar
48553          (p_source_code         => 'LEDGER_CATEGORY_CODE'
48554          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
48555    AND l_bflow_method_code = 'PRIOR_ENTRY'
48556 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48557    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48558          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48559        )
48560    THEN
48561          xla_ae_lines_pkg.BflowUpgEntry
48562            (p_business_method_code    => l_bflow_method_code
48563            ,p_business_class_code     => l_bflow_class_code
48564            ,p_balance_type            => l_balance_type_code);
48565    ELSE
48566       NULL;
48567 -- No business flow processing for business flow method of NONE.
48568    END IF;
48569 
48570    --
48571    -- call analytical criteria
48572    --
48573    
48574    --
48575    -- call description
48576    --
48577    -- No description or it is inherited.
48578    --
48579    -- call ADRs
48580    -- Bug 4922099
48581    --
48582    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48583         (NVL(l_actual_upg_option, 'N') = 'O') OR
48584         (NVL(l_enc_upg_option, 'N') = 'O')
48585       )
48586    THEN
48587    NULL;
48588    --
48589    --
48590    
48591   l_ccid := AcctDerRule_14(
48592            p_application_id           => p_application_id
48593          , p_ae_header_id             => l_ae_header_id 
48594 , p_source_1 => p_source_1
48595 , p_source_2 => p_source_2
48596          , x_transaction_coa_id       => l_adr_transaction_coa_id
48597          , x_accounting_coa_id        => l_adr_accounting_coa_id
48598          , x_value_type_code          => l_adr_value_type_code
48599          , p_side                     => 'NA'
48600    );
48601 
48602    xla_ae_lines_pkg.set_ccid(
48603     p_code_combination_id          => l_ccid
48604   , p_value_type_code              => l_adr_value_type_code
48605   , p_transaction_coa_id           => l_adr_transaction_coa_id
48606   , p_accounting_coa_id            => l_adr_accounting_coa_id
48607   , p_adr_code                     => 'ICACC'
48608   , p_adr_type_code                => 'S'
48609   , p_component_type               => l_component_type
48610   , p_component_code               => l_component_code
48611   , p_component_type_code          => l_component_type_code
48612   , p_component_appl_id            => l_component_appl_id
48613   , p_amb_context_code             => l_amb_context_code
48614   , p_side                         => 'NA'
48615   );
48616 
48617 
48618    --
48619    --
48620    END IF;
48621    --
48622    -- Bug 4922099
48623    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
48624           (NVL(l_enc_upg_option, 'N') = 'O')
48625         ) AND
48626         (l_bflow_method_code = 'PRIOR_ENTRY')
48627       )
48628    THEN
48629       IF
48630       --
48631       1 = 2
48632       --
48633       THEN
48634       xla_accounting_err_pkg.build_message
48635                                     (p_appli_s_name            => 'XLA'
48636                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48637                                     ,p_token_1                 => 'LINE_NUMBER'
48638                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
48639                                     ,p_token_2                 => 'LINE_TYPE_NAME'
48640                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
48641                                                                              l_component_type
48642                                                                             ,l_component_code
48643                                                                             ,l_component_type_code
48644                                                                             ,l_component_appl_id
48645                                                                             ,l_amb_context_code
48646                                                                             ,l_entity_code
48647                                                                             ,l_event_class_code
48648                                                                            )
48649                                     ,p_token_3                 => 'OWNER'
48650                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
48651                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
48652                                                                           ,p_lookup_code    => l_component_type_code
48653                                                                          )
48657                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
48654                                     ,p_token_4                 => 'PRODUCT_NAME'
48655                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
48656                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
48658                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
48659                                     ,p_ae_header_id            =>  NULL
48660                                        );
48661 
48662         IF (C_LEVEL_ERROR>= g_log_level) THEN
48663                  trace
48664                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48665                       ,p_level    => C_LEVEL_ERROR
48666                       ,p_module   => l_log_module);
48667         END IF;
48668       END IF;
48669    END IF;
48670    --
48671    --
48672    ------------------------------------------------------------------------------------------------
48673    -- 4219869 Business Flow
48674    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
48675    -- Prior Entry.  Currently, the following code is always generated.
48676    ------------------------------------------------------------------------------------------------
48677    XLA_AE_LINES_PKG.ValidateCurrentLine;
48678 
48679    ------------------------------------------------------------------------------------
48680    -- 4219869 Business Flow
48681    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
48682    ------------------------------------------------------------------------------------
48683    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48684 
48685    ----------------------------------------------------------------------------------
48686    -- 4219869 Business Flow
48687    -- Update journal entry status -- Need to generate this within IF <condition>
48688    ----------------------------------------------------------------------------------
48689    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48690          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
48691          ,p_balance_type_code => l_balance_type_code
48692          );
48693 
48694    -------------------------------------------------------------------------------------------
48695    -- 4262811 - Generate the Accrual Reversal lines
48696    -------------------------------------------------------------------------------------------
48697    BEGIN
48698       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
48699                               (g_array_event(p_event_id).array_value_num('header_index'));
48700       IF l_acc_rev_flag IS NULL THEN
48701          l_acc_rev_flag := 'N';
48702       END IF;
48703    EXCEPTION
48704       WHEN OTHERS THEN
48705          l_acc_rev_flag := 'N';
48706    END;
48707    --
48708    IF (l_acc_rev_flag = 'Y') THEN
48709 
48710        -- 4645092  ------------------------------------------------------------------------------
48711        -- To allow MPA report to determine if it should generate report process
48712        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
48713        ------------------------------------------------------------------------------------------
48714 
48715        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
48716        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
48717    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
48718    -- call ADRs
48719    -- Bug 4922099
48720    --
48721    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48722         (NVL(l_actual_upg_option, 'N') = 'O') OR
48723         (NVL(l_enc_upg_option, 'N') = 'O')
48724       )
48725    THEN
48726    NULL;
48727    --
48728    --
48729    
48730   l_ccid := AcctDerRule_14(
48731            p_application_id           => p_application_id
48732          , p_ae_header_id             => l_ae_header_id 
48733 , p_source_1 => p_source_1
48734 , p_source_2 => p_source_2
48735          , x_transaction_coa_id       => l_adr_transaction_coa_id
48736          , x_accounting_coa_id        => l_adr_accounting_coa_id
48737          , x_value_type_code          => l_adr_value_type_code
48738          , p_side                     => 'NA'
48739    );
48740 
48741    xla_ae_lines_pkg.set_ccid(
48742     p_code_combination_id          => l_ccid
48743   , p_value_type_code              => l_adr_value_type_code
48744   , p_transaction_coa_id           => l_adr_transaction_coa_id
48745   , p_accounting_coa_id            => l_adr_accounting_coa_id
48746   , p_adr_code                     => 'ICACC'
48747   , p_adr_type_code                => 'S'
48748   , p_component_type               => l_component_type
48749   , p_component_code               => l_component_code
48750   , p_component_type_code          => l_component_type_code
48751   , p_component_appl_id            => l_component_appl_id
48752   , p_amb_context_code             => l_amb_context_code
48753   , p_side                         => 'NA'
48754   );
48755 
48756 
48757    --
48758    --
48759    END IF;
48760 
48761        --
48765                                          p_header_num   => 1);
48762        -- Update the line information that should be overwritten
48763        --
48764        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
48766        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
48767 
48768        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
48769 
48770        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
48771           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
48772        END IF;
48773 
48774       --
48775       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
48776       --
48777       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
48778           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
48779       ELSE
48780           ---------------------------------------------------------------------------------------------------
48781           -- 4262811a Switch Sign
48782           ---------------------------------------------------------------------------------------------------
48783           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
48784           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48785                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48786           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48787                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48788           -- 5132302
48789           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
48790                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48791 
48792       END IF;
48793 
48794       -- 4955764
48795       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48796       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
48797 
48798 
48799       XLA_AE_LINES_PKG.ValidateCurrentLine;
48800       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48801 
48802       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48803                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
48804                ,p_balance_type_code => l_balance_type_code);
48805 
48806    END IF;
48807 
48808    -----------------------------------------------------------------------------------------
48809    -- 4262811 Multiperiod Accounting
48810    -----------------------------------------------------------------------------------------
48811      -- No MPA option is assigned.
48812 
48813 
48814 END IF;
48815 END IF;
48816 --
48817 
48818 --
48819 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48820    trace
48821       (p_msg      => 'END of AcctLineType_120'
48822       ,p_level    => C_LEVEL_PROCEDURE
48823       ,p_module   => l_log_module);
48824 END IF;
48825 --
48826 EXCEPTION
48827   WHEN xla_exceptions_pkg.application_exception THEN
48828       RAISE;
48829   WHEN OTHERS THEN
48830        xla_exceptions_pkg.raise_message
48831            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_120');
48832 END AcctLineType_120;
48833 --
48834 
48835 ---------------------------------------
48836 --
48837 -- PRIVATE FUNCTION
48838 --         AcctLineType_121
48839 --
48840 ---------------------------------------
48841 PROCEDURE AcctLineType_121 (
48842   p_application_id        IN NUMBER
48843  ,p_event_id              IN NUMBER
48844  ,p_calculate_acctd_flag  IN VARCHAR2
48845  ,p_calculate_g_l_flag    IN VARCHAR2
48846  ,p_actual_flag           IN OUT VARCHAR2
48847  ,p_balance_type_code     OUT VARCHAR2
48848  ,p_gain_or_loss_ref      OUT VARCHAR2
48849  
48850 --Transaction Account
48851  , p_source_1            IN NUMBER
48852 --Journal Line Type
48853  , p_source_2            IN VARCHAR2
48854 --Entered Amount
48855  , p_source_3            IN NUMBER
48856 --First Distribution Identifier
48857  , p_source_5            IN NUMBER
48858 --Distribution Type
48859  , p_source_6            IN VARCHAR2
48860 --Currency Code
48861  , p_source_7            IN VARCHAR2
48862 --Currency Conversion Date
48863  , p_source_8            IN DATE
48864 --Currency Conversion Rate
48865  , p_source_9            IN NUMBER
48866 --Currency Conversion Type
48867  , p_source_10            IN VARCHAR2
48868 --Accounted Amount
48869  , p_source_11            IN NUMBER
48870 )
48871 IS
48872 
48873 l_component_type              VARCHAR2(80);
48874 l_component_code              VARCHAR2(30);
48875 l_component_type_code         VARCHAR2(1);
48876 l_component_appl_id           INTEGER;
48877 l_amb_context_code            VARCHAR2(30);
48878 l_entity_code                 VARCHAR2(30);
48879 l_event_class_code            VARCHAR2(30);
48880 l_ae_header_id                NUMBER;
48881 l_event_type_code             VARCHAR2(30);
48882 l_line_definition_code        VARCHAR2(30);
48883 l_line_definition_owner_code  VARCHAR2(1);
48884 --
48885 -- adr variables
48889 l_adr_accounting_coa_id       NUMBER;
48886 l_segment                     VARCHAR2(30);
48887 l_ccid                        NUMBER;
48888 l_adr_transaction_coa_id      NUMBER;
48890 l_adr_flexfield_segment_code  VARCHAR2(30);
48891 l_adr_flex_value_set_id       NUMBER;
48892 l_adr_value_type_code         VARCHAR2(30);
48893 l_adr_value_combination_id    NUMBER;
48894 l_adr_value_segment_code      VARCHAR2(30);
48895 
48896 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
48897 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
48898 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
48899 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
48900 
48901 -- 4262811 Variables ------------------------------------------------------------------------------------------
48902 l_entered_amt_idx             NUMBER;
48903 l_accted_amt_idx              NUMBER;
48904 l_acc_rev_flag                VARCHAR2(1);
48905 l_accrual_line_num            NUMBER;
48906 l_tmp_amt                     NUMBER;
48907 l_acc_rev_natural_side_code   VARCHAR2(1);
48908 
48909 l_num_entries                 NUMBER;
48910 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
48911 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
48912 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
48913 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
48914 l_recog_line_1                NUMBER;
48915 l_recog_line_2                NUMBER;
48916 
48917 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
48918 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
48919 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
48920 
48921 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
48922 
48923 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
48924 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
48925 
48926 ---------------------------------------------------------------------------------------------------------------
48927 
48928 
48929 --
48930 -- bulk performance
48931 --
48932 l_balance_type_code           VARCHAR2(1);
48933 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
48934 l_log_module                  VARCHAR2(240);
48935 
48936 --
48937 -- Upgrade strategy
48938 --
48939 l_actual_upg_option           VARCHAR2(1);
48940 l_enc_upg_option           VARCHAR2(1);
48941 
48942 --
48943 BEGIN
48944 --
48945 IF g_log_enabled THEN
48946       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_121';
48947 END IF;
48948 --
48949 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48950 
48951       trace
48952          (p_msg      => 'BEGIN of AcctLineType_121'
48953          ,p_level    => C_LEVEL_PROCEDURE
48954          ,p_module   => l_log_module);
48955 
48956 END IF;
48957 --
48958 l_component_type             := 'AMB_JLT';
48959 l_component_code             := 'ICACC';
48960 l_component_type_code        := 'S';
48961 l_component_appl_id          :=  555;
48962 l_amb_context_code           := 'DEFAULT';
48963 l_entity_code                := 'PURCHASING';
48964 l_event_class_code           := 'RECEIVE';
48965 l_event_type_code            := 'LOG_RECEIVE';
48966 l_line_definition_owner_code := 'S';
48967 l_line_definition_code       := 'LOG_RECEIVE';
48968 --
48969 l_balance_type_code          := 'A';
48970 l_segment                     := NULL;
48971 l_ccid                        := NULL;
48972 l_adr_transaction_coa_id      := NULL;
48973 l_adr_accounting_coa_id       := NULL;
48974 l_adr_flexfield_segment_code  := NULL;
48975 l_adr_flex_value_set_id       := NULL;
48976 l_adr_value_type_code         := NULL;
48977 l_adr_value_combination_id    := NULL;
48978 l_adr_value_segment_code      := NULL;
48979 
48980 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
48981 l_bflow_class_code           := '';    -- 4219869 Business Flow
48982 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
48983 l_budgetary_control_flag     := 'N';
48984 
48985 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
48986 l_bflow_applied_to_amt       := NULL; -- 5132302
48987 l_entered_amt_idx            := NULL;          -- 4262811
48988 l_accted_amt_idx             := NULL;          -- 4262811
48989 l_acc_rev_flag               := NULL;          -- 4262811
48990 l_accrual_line_num           := NULL;          -- 4262811
48991 l_tmp_amt                    := NULL;          -- 4262811
48992 --
48993  
48994 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
48995     l_balance_type_code <> 'B' THEN
48996 IF NVL(p_source_2,'
48997 ') =  'ICACC'
48998  THEN 
48999 
49000    --
49001    XLA_AE_LINES_PKG.SetNewLine;
49002 
49003    p_balance_type_code          := l_balance_type_code;
49004    -- set the flag so later we will know whether the gain loss line needs to be created
49005    
49006    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
49007      p_actual_flag :='A';
49008    END IF;
49009 
49010    --
49011    -- bulk performance
49012    --
49013    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
49014                                       p_header_num   => 0); -- 4262811
49018    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
49015    --
49016    -- set accounting line options
49017    --
49019            p_natural_side_code          => 'D'
49020          , p_gain_or_loss_flag          => 'N'
49021          , p_gl_transfer_mode_code      => 'D'
49022          , p_acct_entry_type_code       => 'A'
49023          , p_switch_side_flag           => 'Y'
49024          , p_merge_duplicate_code       => 'W'
49025          );
49026    --
49027    l_acc_rev_natural_side_code := 'C';  -- 4262811
49028    -- 
49029    --
49030    -- set accounting line type info
49031    --
49032    xla_ae_lines_pkg.SetAcctLineType
49033       (p_component_type             => l_component_type
49034       ,p_event_type_code            => l_event_type_code
49035       ,p_line_definition_owner_code => l_line_definition_owner_code
49036       ,p_line_definition_code       => l_line_definition_code
49037       ,p_accounting_line_code       => l_component_code
49038       ,p_accounting_line_type_code  => l_component_type_code
49039       ,p_accounting_line_appl_id    => l_component_appl_id
49040       ,p_amb_context_code           => l_amb_context_code
49041       ,p_entity_code                => l_entity_code
49042       ,p_event_class_code           => l_event_class_code);
49043    --
49044    -- set accounting class
49045    --
49046    xla_ae_lines_pkg.SetAcctClass(
49047            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
49048          , p_ae_header_id           => l_ae_header_id
49049          );
49050 
49051    --
49052    -- set rounding class
49053    --
49054    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
49055                       'INTERCOMPANY_ACCRUAL';
49056 
49057    --
49058    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
49059    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
49060    --
49061    -- bulk performance
49062    --
49063    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
49064 
49065    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
49066       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
49067 
49068    -- 4955764
49069    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49070       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
49071 
49072    -- 4458381 Public Sector Enh
49073    
49074    --
49075    -- set accounting attributes for the line type
49076    --
49077    l_entered_amt_idx := 3;
49078    l_accted_amt_idx  := 8;
49079    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
49080    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
49081    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
49082    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
49083    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
49084    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
49085    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
49086    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
49087    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
49088    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
49089    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
49090    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
49091    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
49092    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
49093    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
49094    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
49095    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
49096 
49097    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
49098    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
49099 
49100    ---------------------------------------------------------------------------------------------------------------
49101    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
49102    ---------------------------------------------------------------------------------------------------------------
49103    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
49104 
49105    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49106    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49107 
49108    IF xla_accounting_cache_pkg.GetValueChar
49109          (p_source_code         => 'LEDGER_CATEGORY_CODE'
49110          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
49111    AND l_bflow_method_code = 'PRIOR_ENTRY'
49112 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
49113    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
49114          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
49115        )
49116    THEN
49117          xla_ae_lines_pkg.BflowUpgEntry
49118            (p_business_method_code    => l_bflow_method_code
49119            ,p_business_class_code     => l_bflow_class_code
49120            ,p_balance_type            => l_balance_type_code);
49124    END IF;
49121    ELSE
49122       NULL;
49123 -- No business flow processing for business flow method of NONE.
49125 
49126    --
49127    -- call analytical criteria
49128    --
49129    
49130    --
49131    -- call description
49132    --
49133    -- No description or it is inherited.
49134    --
49135    -- call ADRs
49136    -- Bug 4922099
49137    --
49138    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49139         (NVL(l_actual_upg_option, 'N') = 'O') OR
49140         (NVL(l_enc_upg_option, 'N') = 'O')
49141       )
49142    THEN
49143    NULL;
49144    --
49145    --
49146    
49147   l_ccid := AcctDerRule_14(
49148            p_application_id           => p_application_id
49149          , p_ae_header_id             => l_ae_header_id 
49150 , p_source_1 => p_source_1
49151 , p_source_2 => p_source_2
49152          , x_transaction_coa_id       => l_adr_transaction_coa_id
49153          , x_accounting_coa_id        => l_adr_accounting_coa_id
49154          , x_value_type_code          => l_adr_value_type_code
49155          , p_side                     => 'NA'
49156    );
49157 
49158    xla_ae_lines_pkg.set_ccid(
49159     p_code_combination_id          => l_ccid
49160   , p_value_type_code              => l_adr_value_type_code
49161   , p_transaction_coa_id           => l_adr_transaction_coa_id
49162   , p_accounting_coa_id            => l_adr_accounting_coa_id
49163   , p_adr_code                     => 'ICACC'
49164   , p_adr_type_code                => 'S'
49165   , p_component_type               => l_component_type
49166   , p_component_code               => l_component_code
49167   , p_component_type_code          => l_component_type_code
49168   , p_component_appl_id            => l_component_appl_id
49169   , p_amb_context_code             => l_amb_context_code
49170   , p_side                         => 'NA'
49171   );
49172 
49173 
49174    --
49175    --
49176    END IF;
49177    --
49178    -- Bug 4922099
49179    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
49180           (NVL(l_enc_upg_option, 'N') = 'O')
49181         ) AND
49182         (l_bflow_method_code = 'PRIOR_ENTRY')
49183       )
49184    THEN
49185       IF
49186       --
49187       1 = 2
49188       --
49189       THEN
49190       xla_accounting_err_pkg.build_message
49191                                     (p_appli_s_name            => 'XLA'
49192                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49193                                     ,p_token_1                 => 'LINE_NUMBER'
49194                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
49195                                     ,p_token_2                 => 'LINE_TYPE_NAME'
49196                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
49197                                                                              l_component_type
49198                                                                             ,l_component_code
49199                                                                             ,l_component_type_code
49200                                                                             ,l_component_appl_id
49201                                                                             ,l_amb_context_code
49202                                                                             ,l_entity_code
49203                                                                             ,l_event_class_code
49204                                                                            )
49205                                     ,p_token_3                 => 'OWNER'
49206                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
49207                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
49208                                                                           ,p_lookup_code    => l_component_type_code
49209                                                                          )
49210                                     ,p_token_4                 => 'PRODUCT_NAME'
49211                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
49212                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
49213                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
49214                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
49215                                     ,p_ae_header_id            =>  NULL
49216                                        );
49217 
49218         IF (C_LEVEL_ERROR>= g_log_level) THEN
49219                  trace
49220                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49221                       ,p_level    => C_LEVEL_ERROR
49222                       ,p_module   => l_log_module);
49223         END IF;
49224       END IF;
49225    END IF;
49226    --
49227    --
49228    ------------------------------------------------------------------------------------------------
49229    -- 4219869 Business Flow
49230    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
49231    -- Prior Entry.  Currently, the following code is always generated.
49235    ------------------------------------------------------------------------------------
49232    ------------------------------------------------------------------------------------------------
49233    XLA_AE_LINES_PKG.ValidateCurrentLine;
49234 
49236    -- 4219869 Business Flow
49237    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
49238    ------------------------------------------------------------------------------------
49239    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49240 
49241    ----------------------------------------------------------------------------------
49242    -- 4219869 Business Flow
49243    -- Update journal entry status -- Need to generate this within IF <condition>
49244    ----------------------------------------------------------------------------------
49245    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49246          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
49247          ,p_balance_type_code => l_balance_type_code
49248          );
49249 
49250    -------------------------------------------------------------------------------------------
49251    -- 4262811 - Generate the Accrual Reversal lines
49252    -------------------------------------------------------------------------------------------
49253    BEGIN
49254       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
49255                               (g_array_event(p_event_id).array_value_num('header_index'));
49256       IF l_acc_rev_flag IS NULL THEN
49257          l_acc_rev_flag := 'N';
49258       END IF;
49259    EXCEPTION
49260       WHEN OTHERS THEN
49261          l_acc_rev_flag := 'N';
49262    END;
49263    --
49264    IF (l_acc_rev_flag = 'Y') THEN
49265 
49266        -- 4645092  ------------------------------------------------------------------------------
49267        -- To allow MPA report to determine if it should generate report process
49268        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
49269        ------------------------------------------------------------------------------------------
49270 
49271        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
49272        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
49273    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
49274    -- call ADRs
49275    -- Bug 4922099
49276    --
49277    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49278         (NVL(l_actual_upg_option, 'N') = 'O') OR
49279         (NVL(l_enc_upg_option, 'N') = 'O')
49280       )
49281    THEN
49282    NULL;
49283    --
49284    --
49285    
49286   l_ccid := AcctDerRule_14(
49287            p_application_id           => p_application_id
49288          , p_ae_header_id             => l_ae_header_id 
49289 , p_source_1 => p_source_1
49290 , p_source_2 => p_source_2
49291          , x_transaction_coa_id       => l_adr_transaction_coa_id
49292          , x_accounting_coa_id        => l_adr_accounting_coa_id
49293          , x_value_type_code          => l_adr_value_type_code
49294          , p_side                     => 'NA'
49295    );
49296 
49297    xla_ae_lines_pkg.set_ccid(
49298     p_code_combination_id          => l_ccid
49299   , p_value_type_code              => l_adr_value_type_code
49300   , p_transaction_coa_id           => l_adr_transaction_coa_id
49301   , p_accounting_coa_id            => l_adr_accounting_coa_id
49302   , p_adr_code                     => 'ICACC'
49303   , p_adr_type_code                => 'S'
49304   , p_component_type               => l_component_type
49305   , p_component_code               => l_component_code
49306   , p_component_type_code          => l_component_type_code
49307   , p_component_appl_id            => l_component_appl_id
49308   , p_amb_context_code             => l_amb_context_code
49309   , p_side                         => 'NA'
49310   );
49311 
49312 
49313    --
49314    --
49315    END IF;
49316 
49317        --
49318        -- Update the line information that should be overwritten
49319        --
49320        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
49321                                          p_header_num   => 1);
49322        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
49323 
49324        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
49325 
49326        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
49327           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
49328        END IF;
49329 
49330       --
49331       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
49332       --
49333       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
49334           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
49335       ELSE
49336           ---------------------------------------------------------------------------------------------------
49337           -- 4262811a Switch Sign
49338           ---------------------------------------------------------------------------------------------------
49339           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
49343                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49340           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49341                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49342           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49344           -- 5132302
49345           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
49346                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49347 
49348       END IF;
49349 
49350       -- 4955764
49351       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49352       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
49353 
49354 
49355       XLA_AE_LINES_PKG.ValidateCurrentLine;
49356       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49357 
49358       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49359                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
49360                ,p_balance_type_code => l_balance_type_code);
49361 
49362    END IF;
49363 
49364    -----------------------------------------------------------------------------------------
49365    -- 4262811 Multiperiod Accounting
49366    -----------------------------------------------------------------------------------------
49367      -- No MPA option is assigned.
49368 
49369 
49370 END IF;
49371 END IF;
49372 --
49373 
49374 --
49375 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49376    trace
49377       (p_msg      => 'END of AcctLineType_121'
49378       ,p_level    => C_LEVEL_PROCEDURE
49379       ,p_module   => l_log_module);
49380 END IF;
49381 --
49382 EXCEPTION
49383   WHEN xla_exceptions_pkg.application_exception THEN
49384       RAISE;
49385   WHEN OTHERS THEN
49386        xla_exceptions_pkg.raise_message
49387            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_121');
49388 END AcctLineType_121;
49389 --
49390 
49391 ---------------------------------------
49392 --
49393 -- PRIVATE FUNCTION
49394 --         AcctLineType_122
49395 --
49396 ---------------------------------------
49397 PROCEDURE AcctLineType_122 (
49398   p_application_id        IN NUMBER
49399  ,p_event_id              IN NUMBER
49400  ,p_calculate_acctd_flag  IN VARCHAR2
49401  ,p_calculate_g_l_flag    IN VARCHAR2
49402  ,p_actual_flag           IN OUT VARCHAR2
49403  ,p_balance_type_code     OUT VARCHAR2
49404  ,p_gain_or_loss_ref      OUT VARCHAR2
49405  
49406 --Transaction Account
49407  , p_source_1            IN NUMBER
49408 --Journal Line Type
49409  , p_source_2            IN VARCHAR2
49410 --Entered Amount
49411  , p_source_3            IN NUMBER
49412 --First Distribution Identifier
49413  , p_source_5            IN NUMBER
49414 --Distribution Type
49415  , p_source_6            IN VARCHAR2
49416 --Currency Code
49417  , p_source_7            IN VARCHAR2
49418 --Currency Conversion Date
49419  , p_source_8            IN DATE
49420 --Currency Conversion Rate
49421  , p_source_9            IN NUMBER
49422 --Currency Conversion Type
49423  , p_source_10            IN VARCHAR2
49424 --Accounted Amount
49425  , p_source_11            IN NUMBER
49426 )
49427 IS
49428 
49429 l_component_type              VARCHAR2(80);
49430 l_component_code              VARCHAR2(30);
49431 l_component_type_code         VARCHAR2(1);
49432 l_component_appl_id           INTEGER;
49433 l_amb_context_code            VARCHAR2(30);
49434 l_entity_code                 VARCHAR2(30);
49435 l_event_class_code            VARCHAR2(30);
49436 l_ae_header_id                NUMBER;
49437 l_event_type_code             VARCHAR2(30);
49438 l_line_definition_code        VARCHAR2(30);
49439 l_line_definition_owner_code  VARCHAR2(1);
49440 --
49441 -- adr variables
49442 l_segment                     VARCHAR2(30);
49443 l_ccid                        NUMBER;
49444 l_adr_transaction_coa_id      NUMBER;
49445 l_adr_accounting_coa_id       NUMBER;
49446 l_adr_flexfield_segment_code  VARCHAR2(30);
49447 l_adr_flex_value_set_id       NUMBER;
49448 l_adr_value_type_code         VARCHAR2(30);
49449 l_adr_value_combination_id    NUMBER;
49450 l_adr_value_segment_code      VARCHAR2(30);
49451 
49452 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
49453 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
49454 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
49455 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
49456 
49457 -- 4262811 Variables ------------------------------------------------------------------------------------------
49458 l_entered_amt_idx             NUMBER;
49459 l_accted_amt_idx              NUMBER;
49460 l_acc_rev_flag                VARCHAR2(1);
49461 l_accrual_line_num            NUMBER;
49462 l_tmp_amt                     NUMBER;
49463 l_acc_rev_natural_side_code   VARCHAR2(1);
49464 
49465 l_num_entries                 NUMBER;
49466 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
49467 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
49468 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
49469 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
49470 l_recog_line_1                NUMBER;
49474 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
49471 l_recog_line_2                NUMBER;
49472 
49473 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
49475 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
49476 
49477 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
49478 
49479 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
49480 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
49481 
49482 ---------------------------------------------------------------------------------------------------------------
49483 
49484 
49485 --
49486 -- bulk performance
49487 --
49488 l_balance_type_code           VARCHAR2(1);
49489 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
49490 l_log_module                  VARCHAR2(240);
49491 
49492 --
49493 -- Upgrade strategy
49494 --
49495 l_actual_upg_option           VARCHAR2(1);
49496 l_enc_upg_option           VARCHAR2(1);
49497 
49498 --
49499 BEGIN
49500 --
49501 IF g_log_enabled THEN
49502       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_122';
49503 END IF;
49504 --
49505 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49506 
49507       trace
49508          (p_msg      => 'BEGIN of AcctLineType_122'
49509          ,p_level    => C_LEVEL_PROCEDURE
49510          ,p_module   => l_log_module);
49511 
49512 END IF;
49513 --
49514 l_component_type             := 'AMB_JLT';
49515 l_component_code             := 'ICACC';
49516 l_component_type_code        := 'S';
49517 l_component_appl_id          :=  555;
49518 l_amb_context_code           := 'DEFAULT';
49519 l_entity_code                := 'PURCHASING';
49520 l_event_class_code           := 'RECEIVE';
49521 l_event_type_code            := 'RECEIVE';
49522 l_line_definition_owner_code := 'S';
49523 l_line_definition_code       := 'RECEIVE';
49524 --
49525 l_balance_type_code          := 'A';
49526 l_segment                     := NULL;
49527 l_ccid                        := NULL;
49528 l_adr_transaction_coa_id      := NULL;
49529 l_adr_accounting_coa_id       := NULL;
49530 l_adr_flexfield_segment_code  := NULL;
49531 l_adr_flex_value_set_id       := NULL;
49532 l_adr_value_type_code         := NULL;
49533 l_adr_value_combination_id    := NULL;
49534 l_adr_value_segment_code      := NULL;
49535 
49536 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
49537 l_bflow_class_code           := '';    -- 4219869 Business Flow
49538 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
49539 l_budgetary_control_flag     := 'N';
49540 
49541 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
49542 l_bflow_applied_to_amt       := NULL; -- 5132302
49543 l_entered_amt_idx            := NULL;          -- 4262811
49544 l_accted_amt_idx             := NULL;          -- 4262811
49545 l_acc_rev_flag               := NULL;          -- 4262811
49546 l_accrual_line_num           := NULL;          -- 4262811
49547 l_tmp_amt                    := NULL;          -- 4262811
49548 --
49549  
49550 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
49551     l_balance_type_code <> 'B' THEN
49552 IF NVL(p_source_2,'
49553 ') =  'ICACC'
49554  THEN 
49555 
49556    --
49557    XLA_AE_LINES_PKG.SetNewLine;
49558 
49559    p_balance_type_code          := l_balance_type_code;
49560    -- set the flag so later we will know whether the gain loss line needs to be created
49561    
49562    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
49563      p_actual_flag :='A';
49564    END IF;
49565 
49566    --
49567    -- bulk performance
49568    --
49569    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
49570                                       p_header_num   => 0); -- 4262811
49571    --
49572    -- set accounting line options
49573    --
49574    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
49575            p_natural_side_code          => 'D'
49576          , p_gain_or_loss_flag          => 'N'
49577          , p_gl_transfer_mode_code      => 'D'
49578          , p_acct_entry_type_code       => 'A'
49579          , p_switch_side_flag           => 'Y'
49580          , p_merge_duplicate_code       => 'W'
49581          );
49582    --
49583    l_acc_rev_natural_side_code := 'C';  -- 4262811
49584    -- 
49585    --
49586    -- set accounting line type info
49587    --
49588    xla_ae_lines_pkg.SetAcctLineType
49589       (p_component_type             => l_component_type
49590       ,p_event_type_code            => l_event_type_code
49591       ,p_line_definition_owner_code => l_line_definition_owner_code
49592       ,p_line_definition_code       => l_line_definition_code
49593       ,p_accounting_line_code       => l_component_code
49594       ,p_accounting_line_type_code  => l_component_type_code
49595       ,p_accounting_line_appl_id    => l_component_appl_id
49596       ,p_amb_context_code           => l_amb_context_code
49597       ,p_entity_code                => l_entity_code
49598       ,p_event_class_code           => l_event_class_code);
49599    --
49600    -- set accounting class
49601    --
49602    xla_ae_lines_pkg.SetAcctClass(
49603            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
49607    --
49604          , p_ae_header_id           => l_ae_header_id
49605          );
49606 
49608    -- set rounding class
49609    --
49610    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
49611                       'INTERCOMPANY_ACCRUAL';
49612 
49613    --
49614    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
49615    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
49616    --
49617    -- bulk performance
49618    --
49619    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
49620 
49621    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
49622       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
49623 
49624    -- 4955764
49625    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49626       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
49627 
49628    -- 4458381 Public Sector Enh
49629    
49630    --
49631    -- set accounting attributes for the line type
49632    --
49633    l_entered_amt_idx := 3;
49634    l_accted_amt_idx  := 8;
49635    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
49636    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
49637    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
49638    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
49639    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
49640    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
49641    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
49642    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
49643    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
49644    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
49645    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
49646    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
49647    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
49648    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
49649    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
49650    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
49651    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
49652 
49653    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
49654    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
49655 
49656    ---------------------------------------------------------------------------------------------------------------
49657    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
49658    ---------------------------------------------------------------------------------------------------------------
49659    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
49660 
49661    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49662    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49663 
49664    IF xla_accounting_cache_pkg.GetValueChar
49665          (p_source_code         => 'LEDGER_CATEGORY_CODE'
49666          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
49667    AND l_bflow_method_code = 'PRIOR_ENTRY'
49668 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
49669    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
49670          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
49671        )
49672    THEN
49673          xla_ae_lines_pkg.BflowUpgEntry
49674            (p_business_method_code    => l_bflow_method_code
49675            ,p_business_class_code     => l_bflow_class_code
49676            ,p_balance_type            => l_balance_type_code);
49677    ELSE
49678       NULL;
49679 -- No business flow processing for business flow method of NONE.
49680    END IF;
49681 
49682    --
49683    -- call analytical criteria
49684    --
49685    
49686    --
49687    -- call description
49688    --
49689    -- No description or it is inherited.
49690    --
49691    -- call ADRs
49692    -- Bug 4922099
49693    --
49694    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49695         (NVL(l_actual_upg_option, 'N') = 'O') OR
49696         (NVL(l_enc_upg_option, 'N') = 'O')
49697       )
49698    THEN
49699    NULL;
49700    --
49701    --
49702    
49703   l_ccid := AcctDerRule_14(
49704            p_application_id           => p_application_id
49705          , p_ae_header_id             => l_ae_header_id 
49706 , p_source_1 => p_source_1
49707 , p_source_2 => p_source_2
49708          , x_transaction_coa_id       => l_adr_transaction_coa_id
49709          , x_accounting_coa_id        => l_adr_accounting_coa_id
49710          , x_value_type_code          => l_adr_value_type_code
49711          , p_side                     => 'NA'
49712    );
49713 
49714    xla_ae_lines_pkg.set_ccid(
49715     p_code_combination_id          => l_ccid
49716   , p_value_type_code              => l_adr_value_type_code
49717   , p_transaction_coa_id           => l_adr_transaction_coa_id
49721   , p_component_type               => l_component_type
49718   , p_accounting_coa_id            => l_adr_accounting_coa_id
49719   , p_adr_code                     => 'ICACC'
49720   , p_adr_type_code                => 'S'
49722   , p_component_code               => l_component_code
49723   , p_component_type_code          => l_component_type_code
49724   , p_component_appl_id            => l_component_appl_id
49725   , p_amb_context_code             => l_amb_context_code
49726   , p_side                         => 'NA'
49727   );
49728 
49729 
49730    --
49731    --
49732    END IF;
49733    --
49734    -- Bug 4922099
49735    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
49736           (NVL(l_enc_upg_option, 'N') = 'O')
49737         ) AND
49738         (l_bflow_method_code = 'PRIOR_ENTRY')
49739       )
49740    THEN
49741       IF
49742       --
49743       1 = 2
49744       --
49745       THEN
49746       xla_accounting_err_pkg.build_message
49747                                     (p_appli_s_name            => 'XLA'
49748                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49749                                     ,p_token_1                 => 'LINE_NUMBER'
49750                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
49751                                     ,p_token_2                 => 'LINE_TYPE_NAME'
49752                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
49753                                                                              l_component_type
49754                                                                             ,l_component_code
49755                                                                             ,l_component_type_code
49756                                                                             ,l_component_appl_id
49757                                                                             ,l_amb_context_code
49758                                                                             ,l_entity_code
49759                                                                             ,l_event_class_code
49760                                                                            )
49761                                     ,p_token_3                 => 'OWNER'
49762                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
49763                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
49764                                                                           ,p_lookup_code    => l_component_type_code
49765                                                                          )
49766                                     ,p_token_4                 => 'PRODUCT_NAME'
49767                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
49768                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
49769                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
49770                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
49771                                     ,p_ae_header_id            =>  NULL
49772                                        );
49773 
49774         IF (C_LEVEL_ERROR>= g_log_level) THEN
49775                  trace
49776                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49777                       ,p_level    => C_LEVEL_ERROR
49778                       ,p_module   => l_log_module);
49779         END IF;
49780       END IF;
49781    END IF;
49782    --
49783    --
49784    ------------------------------------------------------------------------------------------------
49785    -- 4219869 Business Flow
49786    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
49787    -- Prior Entry.  Currently, the following code is always generated.
49788    ------------------------------------------------------------------------------------------------
49789    XLA_AE_LINES_PKG.ValidateCurrentLine;
49790 
49791    ------------------------------------------------------------------------------------
49792    -- 4219869 Business Flow
49793    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
49794    ------------------------------------------------------------------------------------
49795    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49796 
49797    ----------------------------------------------------------------------------------
49798    -- 4219869 Business Flow
49799    -- Update journal entry status -- Need to generate this within IF <condition>
49800    ----------------------------------------------------------------------------------
49801    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49802          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
49803          ,p_balance_type_code => l_balance_type_code
49804          );
49805 
49806    -------------------------------------------------------------------------------------------
49807    -- 4262811 - Generate the Accrual Reversal lines
49808    -------------------------------------------------------------------------------------------
49809    BEGIN
49813          l_acc_rev_flag := 'N';
49810       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
49811                               (g_array_event(p_event_id).array_value_num('header_index'));
49812       IF l_acc_rev_flag IS NULL THEN
49814       END IF;
49815    EXCEPTION
49816       WHEN OTHERS THEN
49817          l_acc_rev_flag := 'N';
49818    END;
49819    --
49820    IF (l_acc_rev_flag = 'Y') THEN
49821 
49822        -- 4645092  ------------------------------------------------------------------------------
49823        -- To allow MPA report to determine if it should generate report process
49824        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
49825        ------------------------------------------------------------------------------------------
49826 
49827        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
49828        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
49829    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
49830    -- call ADRs
49831    -- Bug 4922099
49832    --
49833    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49834         (NVL(l_actual_upg_option, 'N') = 'O') OR
49835         (NVL(l_enc_upg_option, 'N') = 'O')
49836       )
49837    THEN
49838    NULL;
49839    --
49840    --
49841    
49842   l_ccid := AcctDerRule_14(
49843            p_application_id           => p_application_id
49844          , p_ae_header_id             => l_ae_header_id 
49845 , p_source_1 => p_source_1
49846 , p_source_2 => p_source_2
49847          , x_transaction_coa_id       => l_adr_transaction_coa_id
49848          , x_accounting_coa_id        => l_adr_accounting_coa_id
49849          , x_value_type_code          => l_adr_value_type_code
49850          , p_side                     => 'NA'
49851    );
49852 
49853    xla_ae_lines_pkg.set_ccid(
49854     p_code_combination_id          => l_ccid
49855   , p_value_type_code              => l_adr_value_type_code
49856   , p_transaction_coa_id           => l_adr_transaction_coa_id
49857   , p_accounting_coa_id            => l_adr_accounting_coa_id
49858   , p_adr_code                     => 'ICACC'
49859   , p_adr_type_code                => 'S'
49860   , p_component_type               => l_component_type
49861   , p_component_code               => l_component_code
49862   , p_component_type_code          => l_component_type_code
49863   , p_component_appl_id            => l_component_appl_id
49864   , p_amb_context_code             => l_amb_context_code
49865   , p_side                         => 'NA'
49866   );
49867 
49868 
49869    --
49870    --
49871    END IF;
49872 
49873        --
49874        -- Update the line information that should be overwritten
49875        --
49876        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
49877                                          p_header_num   => 1);
49878        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
49879 
49880        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
49881 
49882        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
49883           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
49884        END IF;
49885 
49886       --
49887       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
49888       --
49889       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
49890           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
49891       ELSE
49892           ---------------------------------------------------------------------------------------------------
49893           -- 4262811a Switch Sign
49894           ---------------------------------------------------------------------------------------------------
49895           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
49896           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49897                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49898           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49899                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49900           -- 5132302
49901           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
49902                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49903 
49904       END IF;
49905 
49906       -- 4955764
49907       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49908       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
49909 
49910 
49911       XLA_AE_LINES_PKG.ValidateCurrentLine;
49912       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49913 
49914       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49915                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
49916                ,p_balance_type_code => l_balance_type_code);
49917 
49918    END IF;
49919 
49920    -----------------------------------------------------------------------------------------
49921    -- 4262811 Multiperiod Accounting
49925 
49922    -----------------------------------------------------------------------------------------
49923      -- No MPA option is assigned.
49924 
49926 END IF;
49927 END IF;
49928 --
49929 
49930 --
49931 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49932    trace
49933       (p_msg      => 'END of AcctLineType_122'
49934       ,p_level    => C_LEVEL_PROCEDURE
49935       ,p_module   => l_log_module);
49936 END IF;
49937 --
49938 EXCEPTION
49939   WHEN xla_exceptions_pkg.application_exception THEN
49940       RAISE;
49941   WHEN OTHERS THEN
49942        xla_exceptions_pkg.raise_message
49943            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_122');
49944 END AcctLineType_122;
49945 --
49946 
49947 ---------------------------------------
49948 --
49949 -- PRIVATE FUNCTION
49950 --         AcctLineType_123
49951 --
49952 ---------------------------------------
49953 PROCEDURE AcctLineType_123 (
49954   p_application_id        IN NUMBER
49955  ,p_event_id              IN NUMBER
49956  ,p_calculate_acctd_flag  IN VARCHAR2
49957  ,p_calculate_g_l_flag    IN VARCHAR2
49958  ,p_actual_flag           IN OUT VARCHAR2
49959  ,p_balance_type_code     OUT VARCHAR2
49960  ,p_gain_or_loss_ref      OUT VARCHAR2
49961  
49962 --Transaction Account
49963  , p_source_1            IN NUMBER
49964 --Journal Line Type
49965  , p_source_2            IN VARCHAR2
49966 --Entered Amount
49967  , p_source_3            IN NUMBER
49968 --First Distribution Identifier
49969  , p_source_5            IN NUMBER
49970 --Distribution Type
49971  , p_source_6            IN VARCHAR2
49972 --Currency Code
49973  , p_source_7            IN VARCHAR2
49974 --Currency Conversion Date
49975  , p_source_8            IN DATE
49976 --Currency Conversion Rate
49977  , p_source_9            IN NUMBER
49978 --Currency Conversion Type
49979  , p_source_10            IN VARCHAR2
49980 --Accounted Amount
49981  , p_source_11            IN NUMBER
49982 )
49983 IS
49984 
49985 l_component_type              VARCHAR2(80);
49986 l_component_code              VARCHAR2(30);
49987 l_component_type_code         VARCHAR2(1);
49988 l_component_appl_id           INTEGER;
49989 l_amb_context_code            VARCHAR2(30);
49990 l_entity_code                 VARCHAR2(30);
49991 l_event_class_code            VARCHAR2(30);
49992 l_ae_header_id                NUMBER;
49993 l_event_type_code             VARCHAR2(30);
49994 l_line_definition_code        VARCHAR2(30);
49995 l_line_definition_owner_code  VARCHAR2(1);
49996 --
49997 -- adr variables
49998 l_segment                     VARCHAR2(30);
49999 l_ccid                        NUMBER;
50000 l_adr_transaction_coa_id      NUMBER;
50001 l_adr_accounting_coa_id       NUMBER;
50002 l_adr_flexfield_segment_code  VARCHAR2(30);
50003 l_adr_flex_value_set_id       NUMBER;
50004 l_adr_value_type_code         VARCHAR2(30);
50005 l_adr_value_combination_id    NUMBER;
50006 l_adr_value_segment_code      VARCHAR2(30);
50007 
50008 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
50009 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
50010 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
50011 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
50012 
50013 -- 4262811 Variables ------------------------------------------------------------------------------------------
50014 l_entered_amt_idx             NUMBER;
50015 l_accted_amt_idx              NUMBER;
50016 l_acc_rev_flag                VARCHAR2(1);
50017 l_accrual_line_num            NUMBER;
50018 l_tmp_amt                     NUMBER;
50019 l_acc_rev_natural_side_code   VARCHAR2(1);
50020 
50021 l_num_entries                 NUMBER;
50022 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
50023 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
50024 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
50025 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
50026 l_recog_line_1                NUMBER;
50027 l_recog_line_2                NUMBER;
50028 
50029 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
50030 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
50031 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
50032 
50033 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
50034 
50035 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
50036 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
50037 
50038 ---------------------------------------------------------------------------------------------------------------
50039 
50040 
50041 --
50042 -- bulk performance
50043 --
50044 l_balance_type_code           VARCHAR2(1);
50045 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
50046 l_log_module                  VARCHAR2(240);
50047 
50048 --
50049 -- Upgrade strategy
50050 --
50051 l_actual_upg_option           VARCHAR2(1);
50052 l_enc_upg_option           VARCHAR2(1);
50053 
50054 --
50055 BEGIN
50056 --
50057 IF g_log_enabled THEN
50058       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_123';
50059 END IF;
50060 --
50061 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50062 
50066          ,p_module   => l_log_module);
50063       trace
50064          (p_msg      => 'BEGIN of AcctLineType_123'
50065          ,p_level    => C_LEVEL_PROCEDURE
50067 
50068 END IF;
50069 --
50070 l_component_type             := 'AMB_JLT';
50071 l_component_code             := 'ICACC';
50072 l_component_type_code        := 'S';
50073 l_component_appl_id          :=  555;
50074 l_amb_context_code           := 'DEFAULT';
50075 l_entity_code                := 'INVENTORY';
50076 l_event_class_code           := 'LOG_INTERCOMPANY';
50077 l_event_type_code            := 'LOG_IC_RCPT_RETURN';
50078 l_line_definition_owner_code := 'S';
50079 l_line_definition_code       := 'LOG_IC_RCPT_RETURN';
50080 --
50081 l_balance_type_code          := 'A';
50082 l_segment                     := NULL;
50083 l_ccid                        := NULL;
50084 l_adr_transaction_coa_id      := NULL;
50085 l_adr_accounting_coa_id       := NULL;
50086 l_adr_flexfield_segment_code  := NULL;
50087 l_adr_flex_value_set_id       := NULL;
50088 l_adr_value_type_code         := NULL;
50089 l_adr_value_combination_id    := NULL;
50090 l_adr_value_segment_code      := NULL;
50091 
50092 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
50093 l_bflow_class_code           := '';    -- 4219869 Business Flow
50094 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
50095 l_budgetary_control_flag     := 'N';
50096 
50097 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
50098 l_bflow_applied_to_amt       := NULL; -- 5132302
50099 l_entered_amt_idx            := NULL;          -- 4262811
50100 l_accted_amt_idx             := NULL;          -- 4262811
50101 l_acc_rev_flag               := NULL;          -- 4262811
50102 l_accrual_line_num           := NULL;          -- 4262811
50103 l_tmp_amt                    := NULL;          -- 4262811
50104 --
50105  
50106 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
50107     l_balance_type_code <> 'B' THEN
50108 IF NVL(p_source_2,'
50109 ') =  'ICACC'
50110  THEN 
50111 
50112    --
50113    XLA_AE_LINES_PKG.SetNewLine;
50114 
50115    p_balance_type_code          := l_balance_type_code;
50116    -- set the flag so later we will know whether the gain loss line needs to be created
50117    
50118    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
50119      p_actual_flag :='A';
50120    END IF;
50121 
50122    --
50123    -- bulk performance
50124    --
50125    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
50126                                       p_header_num   => 0); -- 4262811
50127    --
50128    -- set accounting line options
50129    --
50130    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
50131            p_natural_side_code          => 'D'
50132          , p_gain_or_loss_flag          => 'N'
50133          , p_gl_transfer_mode_code      => 'D'
50134          , p_acct_entry_type_code       => 'A'
50135          , p_switch_side_flag           => 'Y'
50136          , p_merge_duplicate_code       => 'W'
50137          );
50138    --
50139    l_acc_rev_natural_side_code := 'C';  -- 4262811
50140    -- 
50141    --
50142    -- set accounting line type info
50143    --
50144    xla_ae_lines_pkg.SetAcctLineType
50145       (p_component_type             => l_component_type
50146       ,p_event_type_code            => l_event_type_code
50147       ,p_line_definition_owner_code => l_line_definition_owner_code
50148       ,p_line_definition_code       => l_line_definition_code
50149       ,p_accounting_line_code       => l_component_code
50150       ,p_accounting_line_type_code  => l_component_type_code
50151       ,p_accounting_line_appl_id    => l_component_appl_id
50152       ,p_amb_context_code           => l_amb_context_code
50153       ,p_entity_code                => l_entity_code
50154       ,p_event_class_code           => l_event_class_code);
50155    --
50156    -- set accounting class
50157    --
50158    xla_ae_lines_pkg.SetAcctClass(
50159            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
50160          , p_ae_header_id           => l_ae_header_id
50161          );
50162 
50163    --
50164    -- set rounding class
50165    --
50166    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
50167                       'INTERCOMPANY_ACCRUAL';
50168 
50169    --
50170    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
50171    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
50172    --
50173    -- bulk performance
50174    --
50175    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
50176 
50177    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
50178       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
50179 
50180    -- 4955764
50181    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50182       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
50183 
50184    -- 4458381 Public Sector Enh
50185    
50186    --
50187    -- set accounting attributes for the line type
50188    --
50189    l_entered_amt_idx := 3;
50193    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
50190    l_accted_amt_idx  := 8;
50191    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
50192    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
50194    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
50195    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
50196    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
50197    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
50198    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
50199    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
50200    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
50201    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
50202    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
50203    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
50204    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
50205    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
50206    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
50207    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
50208 
50209    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
50210    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
50211 
50212    ---------------------------------------------------------------------------------------------------------------
50213    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
50214    ---------------------------------------------------------------------------------------------------------------
50215    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
50216 
50217    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50218    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50219 
50220    IF xla_accounting_cache_pkg.GetValueChar
50221          (p_source_code         => 'LEDGER_CATEGORY_CODE'
50222          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
50223    AND l_bflow_method_code = 'PRIOR_ENTRY'
50224 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
50225    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
50226          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
50227        )
50228    THEN
50229          xla_ae_lines_pkg.BflowUpgEntry
50230            (p_business_method_code    => l_bflow_method_code
50231            ,p_business_class_code     => l_bflow_class_code
50232            ,p_balance_type            => l_balance_type_code);
50233    ELSE
50234       NULL;
50235 -- No business flow processing for business flow method of NONE.
50236    END IF;
50237 
50238    --
50239    -- call analytical criteria
50240    --
50241    
50242    --
50243    -- call description
50244    --
50245    -- No description or it is inherited.
50246    --
50247    -- call ADRs
50248    -- Bug 4922099
50249    --
50250    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50251         (NVL(l_actual_upg_option, 'N') = 'O') OR
50252         (NVL(l_enc_upg_option, 'N') = 'O')
50253       )
50254    THEN
50255    NULL;
50256    --
50257    --
50258    
50259   l_ccid := AcctDerRule_14(
50260            p_application_id           => p_application_id
50261          , p_ae_header_id             => l_ae_header_id 
50262 , p_source_1 => p_source_1
50263 , p_source_2 => p_source_2
50264          , x_transaction_coa_id       => l_adr_transaction_coa_id
50265          , x_accounting_coa_id        => l_adr_accounting_coa_id
50266          , x_value_type_code          => l_adr_value_type_code
50267          , p_side                     => 'NA'
50268    );
50269 
50270    xla_ae_lines_pkg.set_ccid(
50271     p_code_combination_id          => l_ccid
50272   , p_value_type_code              => l_adr_value_type_code
50273   , p_transaction_coa_id           => l_adr_transaction_coa_id
50274   , p_accounting_coa_id            => l_adr_accounting_coa_id
50275   , p_adr_code                     => 'ICACC'
50276   , p_adr_type_code                => 'S'
50277   , p_component_type               => l_component_type
50278   , p_component_code               => l_component_code
50279   , p_component_type_code          => l_component_type_code
50280   , p_component_appl_id            => l_component_appl_id
50281   , p_amb_context_code             => l_amb_context_code
50282   , p_side                         => 'NA'
50283   );
50284 
50285 
50286    --
50287    --
50288    END IF;
50289    --
50290    -- Bug 4922099
50291    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50292           (NVL(l_enc_upg_option, 'N') = 'O')
50293         ) AND
50294         (l_bflow_method_code = 'PRIOR_ENTRY')
50295       )
50296    THEN
50297       IF
50298       --
50299       1 = 2
50300       --
50301       THEN
50302       xla_accounting_err_pkg.build_message
50303                                     (p_appli_s_name            => 'XLA'
50304                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50305                                     ,p_token_1                 => 'LINE_NUMBER'
50306                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
50307                                     ,p_token_2                 => 'LINE_TYPE_NAME'
50311                                                                             ,l_component_type_code
50308                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
50309                                                                              l_component_type
50310                                                                             ,l_component_code
50312                                                                             ,l_component_appl_id
50313                                                                             ,l_amb_context_code
50314                                                                             ,l_entity_code
50315                                                                             ,l_event_class_code
50316                                                                            )
50317                                     ,p_token_3                 => 'OWNER'
50318                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
50319                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
50320                                                                           ,p_lookup_code    => l_component_type_code
50321                                                                          )
50322                                     ,p_token_4                 => 'PRODUCT_NAME'
50323                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50324                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50325                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50326                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50327                                     ,p_ae_header_id            =>  NULL
50328                                        );
50329 
50330         IF (C_LEVEL_ERROR>= g_log_level) THEN
50331                  trace
50332                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50333                       ,p_level    => C_LEVEL_ERROR
50334                       ,p_module   => l_log_module);
50335         END IF;
50336       END IF;
50337    END IF;
50338    --
50339    --
50340    ------------------------------------------------------------------------------------------------
50341    -- 4219869 Business Flow
50342    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50343    -- Prior Entry.  Currently, the following code is always generated.
50344    ------------------------------------------------------------------------------------------------
50345    XLA_AE_LINES_PKG.ValidateCurrentLine;
50346 
50347    ------------------------------------------------------------------------------------
50348    -- 4219869 Business Flow
50349    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50350    ------------------------------------------------------------------------------------
50351    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50352 
50353    ----------------------------------------------------------------------------------
50354    -- 4219869 Business Flow
50355    -- Update journal entry status -- Need to generate this within IF <condition>
50356    ----------------------------------------------------------------------------------
50357    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50358          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50359          ,p_balance_type_code => l_balance_type_code
50360          );
50361 
50362    -------------------------------------------------------------------------------------------
50363    -- 4262811 - Generate the Accrual Reversal lines
50364    -------------------------------------------------------------------------------------------
50365    BEGIN
50366       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50367                               (g_array_event(p_event_id).array_value_num('header_index'));
50368       IF l_acc_rev_flag IS NULL THEN
50369          l_acc_rev_flag := 'N';
50370       END IF;
50371    EXCEPTION
50372       WHEN OTHERS THEN
50373          l_acc_rev_flag := 'N';
50374    END;
50375    --
50376    IF (l_acc_rev_flag = 'Y') THEN
50377 
50378        -- 4645092  ------------------------------------------------------------------------------
50379        -- To allow MPA report to determine if it should generate report process
50380        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50381        ------------------------------------------------------------------------------------------
50382 
50383        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50384        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50385    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
50386    -- call ADRs
50387    -- Bug 4922099
50388    --
50389    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50390         (NVL(l_actual_upg_option, 'N') = 'O') OR
50391         (NVL(l_enc_upg_option, 'N') = 'O')
50392       )
50393    THEN
50394    NULL;
50395    --
50396    --
50397    
50398   l_ccid := AcctDerRule_14(
50399            p_application_id           => p_application_id
50400          , p_ae_header_id             => l_ae_header_id 
50401 , p_source_1 => p_source_1
50405          , x_value_type_code          => l_adr_value_type_code
50402 , p_source_2 => p_source_2
50403          , x_transaction_coa_id       => l_adr_transaction_coa_id
50404          , x_accounting_coa_id        => l_adr_accounting_coa_id
50406          , p_side                     => 'NA'
50407    );
50408 
50409    xla_ae_lines_pkg.set_ccid(
50410     p_code_combination_id          => l_ccid
50411   , p_value_type_code              => l_adr_value_type_code
50412   , p_transaction_coa_id           => l_adr_transaction_coa_id
50413   , p_accounting_coa_id            => l_adr_accounting_coa_id
50414   , p_adr_code                     => 'ICACC'
50415   , p_adr_type_code                => 'S'
50416   , p_component_type               => l_component_type
50417   , p_component_code               => l_component_code
50418   , p_component_type_code          => l_component_type_code
50419   , p_component_appl_id            => l_component_appl_id
50420   , p_amb_context_code             => l_amb_context_code
50421   , p_side                         => 'NA'
50422   );
50423 
50424 
50425    --
50426    --
50427    END IF;
50428 
50429        --
50430        -- Update the line information that should be overwritten
50431        --
50432        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
50433                                          p_header_num   => 1);
50434        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
50435 
50436        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
50437 
50438        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
50439           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
50440        END IF;
50441 
50442       --
50443       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
50444       --
50445       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
50446           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
50447       ELSE
50448           ---------------------------------------------------------------------------------------------------
50449           -- 4262811a Switch Sign
50450           ---------------------------------------------------------------------------------------------------
50451           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
50452           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50453                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50454           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50455                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50456           -- 5132302
50457           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
50458                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50459 
50460       END IF;
50461 
50462       -- 4955764
50463       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50464       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
50465 
50466 
50467       XLA_AE_LINES_PKG.ValidateCurrentLine;
50468       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50469 
50470       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50471                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
50472                ,p_balance_type_code => l_balance_type_code);
50473 
50474    END IF;
50475 
50476    -----------------------------------------------------------------------------------------
50477    -- 4262811 Multiperiod Accounting
50478    -----------------------------------------------------------------------------------------
50479      -- No MPA option is assigned.
50480 
50481 
50482 END IF;
50483 END IF;
50484 --
50485 
50486 --
50487 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50488    trace
50489       (p_msg      => 'END of AcctLineType_123'
50490       ,p_level    => C_LEVEL_PROCEDURE
50491       ,p_module   => l_log_module);
50492 END IF;
50493 --
50494 EXCEPTION
50495   WHEN xla_exceptions_pkg.application_exception THEN
50496       RAISE;
50497   WHEN OTHERS THEN
50498        xla_exceptions_pkg.raise_message
50499            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_123');
50500 END AcctLineType_123;
50501 --
50502 
50503 ---------------------------------------
50504 --
50505 -- PRIVATE FUNCTION
50506 --         AcctLineType_124
50507 --
50508 ---------------------------------------
50509 PROCEDURE AcctLineType_124 (
50510   p_application_id        IN NUMBER
50511  ,p_event_id              IN NUMBER
50512  ,p_calculate_acctd_flag  IN VARCHAR2
50513  ,p_calculate_g_l_flag    IN VARCHAR2
50514  ,p_actual_flag           IN OUT VARCHAR2
50515  ,p_balance_type_code     OUT VARCHAR2
50516  ,p_gain_or_loss_ref      OUT VARCHAR2
50517  
50518 --Transaction Account
50519  , p_source_1            IN NUMBER
50520 --Journal Line Type
50521  , p_source_2            IN VARCHAR2
50522 --Entered Amount
50523  , p_source_3            IN NUMBER
50524 --First Distribution Identifier
50528 --Currency Code
50525  , p_source_5            IN NUMBER
50526 --Distribution Type
50527  , p_source_6            IN VARCHAR2
50529  , p_source_7            IN VARCHAR2
50530 --Currency Conversion Date
50531  , p_source_8            IN DATE
50532 --Currency Conversion Rate
50533  , p_source_9            IN NUMBER
50534 --Currency Conversion Type
50535  , p_source_10            IN VARCHAR2
50536 --Accounted Amount
50537  , p_source_11            IN NUMBER
50538 )
50539 IS
50540 
50541 l_component_type              VARCHAR2(80);
50542 l_component_code              VARCHAR2(30);
50543 l_component_type_code         VARCHAR2(1);
50544 l_component_appl_id           INTEGER;
50545 l_amb_context_code            VARCHAR2(30);
50546 l_entity_code                 VARCHAR2(30);
50547 l_event_class_code            VARCHAR2(30);
50548 l_ae_header_id                NUMBER;
50549 l_event_type_code             VARCHAR2(30);
50550 l_line_definition_code        VARCHAR2(30);
50551 l_line_definition_owner_code  VARCHAR2(1);
50552 --
50553 -- adr variables
50554 l_segment                     VARCHAR2(30);
50555 l_ccid                        NUMBER;
50556 l_adr_transaction_coa_id      NUMBER;
50557 l_adr_accounting_coa_id       NUMBER;
50558 l_adr_flexfield_segment_code  VARCHAR2(30);
50559 l_adr_flex_value_set_id       NUMBER;
50560 l_adr_value_type_code         VARCHAR2(30);
50561 l_adr_value_combination_id    NUMBER;
50562 l_adr_value_segment_code      VARCHAR2(30);
50563 
50564 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
50565 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
50566 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
50567 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
50568 
50569 -- 4262811 Variables ------------------------------------------------------------------------------------------
50570 l_entered_amt_idx             NUMBER;
50571 l_accted_amt_idx              NUMBER;
50572 l_acc_rev_flag                VARCHAR2(1);
50573 l_accrual_line_num            NUMBER;
50574 l_tmp_amt                     NUMBER;
50575 l_acc_rev_natural_side_code   VARCHAR2(1);
50576 
50577 l_num_entries                 NUMBER;
50578 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
50579 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
50580 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
50581 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
50582 l_recog_line_1                NUMBER;
50583 l_recog_line_2                NUMBER;
50584 
50585 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
50586 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
50587 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
50588 
50589 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
50590 
50591 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
50592 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
50593 
50594 ---------------------------------------------------------------------------------------------------------------
50595 
50596 
50597 --
50598 -- bulk performance
50599 --
50600 l_balance_type_code           VARCHAR2(1);
50601 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
50602 l_log_module                  VARCHAR2(240);
50603 
50604 --
50605 -- Upgrade strategy
50606 --
50607 l_actual_upg_option           VARCHAR2(1);
50608 l_enc_upg_option           VARCHAR2(1);
50609 
50610 --
50611 BEGIN
50612 --
50613 IF g_log_enabled THEN
50614       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_124';
50615 END IF;
50616 --
50617 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50618 
50619       trace
50620          (p_msg      => 'BEGIN of AcctLineType_124'
50621          ,p_level    => C_LEVEL_PROCEDURE
50622          ,p_module   => l_log_module);
50623 
50624 END IF;
50625 --
50626 l_component_type             := 'AMB_JLT';
50627 l_component_code             := 'ICCOGS';
50628 l_component_type_code        := 'S';
50629 l_component_appl_id          :=  555;
50630 l_amb_context_code           := 'DEFAULT';
50631 l_entity_code                := 'INVENTORY';
50632 l_event_class_code           := 'LOG_INTERCOMPANY';
50633 l_event_type_code            := 'LOG_IC_SALES_ISSUE';
50634 l_line_definition_owner_code := 'S';
50635 l_line_definition_code       := 'LOG_IC_SALES_ISSUE';
50636 --
50637 l_balance_type_code          := 'A';
50638 l_segment                     := NULL;
50639 l_ccid                        := NULL;
50640 l_adr_transaction_coa_id      := NULL;
50641 l_adr_accounting_coa_id       := NULL;
50642 l_adr_flexfield_segment_code  := NULL;
50643 l_adr_flex_value_set_id       := NULL;
50644 l_adr_value_type_code         := NULL;
50645 l_adr_value_combination_id    := NULL;
50646 l_adr_value_segment_code      := NULL;
50647 
50648 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
50649 l_bflow_class_code           := '';    -- 4219869 Business Flow
50650 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
50651 l_budgetary_control_flag     := 'N';
50652 
50653 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
50654 l_bflow_applied_to_amt       := NULL; -- 5132302
50658 l_accrual_line_num           := NULL;          -- 4262811
50655 l_entered_amt_idx            := NULL;          -- 4262811
50656 l_accted_amt_idx             := NULL;          -- 4262811
50657 l_acc_rev_flag               := NULL;          -- 4262811
50659 l_tmp_amt                    := NULL;          -- 4262811
50660 --
50661  
50662 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
50663     l_balance_type_code <> 'B' THEN
50664 IF NVL(p_source_2,'
50665 ') =  'ICCOGS'
50666  THEN 
50667 
50668    --
50669    XLA_AE_LINES_PKG.SetNewLine;
50670 
50671    p_balance_type_code          := l_balance_type_code;
50672    -- set the flag so later we will know whether the gain loss line needs to be created
50673    
50674    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
50675      p_actual_flag :='A';
50676    END IF;
50677 
50678    --
50679    -- bulk performance
50680    --
50681    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
50682                                       p_header_num   => 0); -- 4262811
50683    --
50684    -- set accounting line options
50685    --
50686    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
50687            p_natural_side_code          => 'D'
50688          , p_gain_or_loss_flag          => 'N'
50689          , p_gl_transfer_mode_code      => 'D'
50690          , p_acct_entry_type_code       => 'A'
50691          , p_switch_side_flag           => 'Y'
50692          , p_merge_duplicate_code       => 'W'
50693          );
50694    --
50695    l_acc_rev_natural_side_code := 'C';  -- 4262811
50696    -- 
50697    --
50698    -- set accounting line type info
50699    --
50700    xla_ae_lines_pkg.SetAcctLineType
50701       (p_component_type             => l_component_type
50702       ,p_event_type_code            => l_event_type_code
50703       ,p_line_definition_owner_code => l_line_definition_owner_code
50704       ,p_line_definition_code       => l_line_definition_code
50705       ,p_accounting_line_code       => l_component_code
50706       ,p_accounting_line_type_code  => l_component_type_code
50707       ,p_accounting_line_appl_id    => l_component_appl_id
50708       ,p_amb_context_code           => l_amb_context_code
50709       ,p_entity_code                => l_entity_code
50710       ,p_event_class_code           => l_event_class_code);
50711    --
50712    -- set accounting class
50713    --
50714    xla_ae_lines_pkg.SetAcctClass(
50715            p_accounting_class_code  => 'INTERCOMPANY_COGS'
50716          , p_ae_header_id           => l_ae_header_id
50717          );
50718 
50719    --
50720    -- set rounding class
50721    --
50722    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
50723                       'INTERCOMPANY_COGS';
50724 
50725    --
50726    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
50727    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
50728    --
50729    -- bulk performance
50730    --
50731    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
50732 
50733    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
50734       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
50735 
50736    -- 4955764
50737    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50738       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
50739 
50740    -- 4458381 Public Sector Enh
50741    
50742    --
50743    -- set accounting attributes for the line type
50744    --
50745    l_entered_amt_idx := 3;
50746    l_accted_amt_idx  := 8;
50747    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
50748    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
50749    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
50750    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
50751    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
50752    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
50753    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
50754    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
50755    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
50756    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
50757    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
50758    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
50759    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
50760    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
50761    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
50762    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
50763    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
50764 
50765    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
50766    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
50767 
50768    ---------------------------------------------------------------------------------------------------------------
50769    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
50773    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50770    ---------------------------------------------------------------------------------------------------------------
50771    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
50772 
50774    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50775 
50776    IF xla_accounting_cache_pkg.GetValueChar
50777          (p_source_code         => 'LEDGER_CATEGORY_CODE'
50778          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
50779    AND l_bflow_method_code = 'PRIOR_ENTRY'
50780 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
50781    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
50782          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
50783        )
50784    THEN
50785          xla_ae_lines_pkg.BflowUpgEntry
50786            (p_business_method_code    => l_bflow_method_code
50787            ,p_business_class_code     => l_bflow_class_code
50788            ,p_balance_type            => l_balance_type_code);
50789    ELSE
50790       NULL;
50791 -- No business flow processing for business flow method of NONE.
50792    END IF;
50793 
50794    --
50795    -- call analytical criteria
50796    --
50797    
50798    --
50799    -- call description
50800    --
50801    -- No description or it is inherited.
50802    --
50803    -- call ADRs
50804    -- Bug 4922099
50805    --
50806    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50807         (NVL(l_actual_upg_option, 'N') = 'O') OR
50808         (NVL(l_enc_upg_option, 'N') = 'O')
50809       )
50810    THEN
50811    NULL;
50812    --
50813    --
50814    
50815   l_ccid := AcctDerRule_15(
50816            p_application_id           => p_application_id
50817          , p_ae_header_id             => l_ae_header_id 
50818 , p_source_1 => p_source_1
50819 , p_source_2 => p_source_2
50820          , x_transaction_coa_id       => l_adr_transaction_coa_id
50821          , x_accounting_coa_id        => l_adr_accounting_coa_id
50822          , x_value_type_code          => l_adr_value_type_code
50823          , p_side                     => 'NA'
50824    );
50825 
50826    xla_ae_lines_pkg.set_ccid(
50827     p_code_combination_id          => l_ccid
50828   , p_value_type_code              => l_adr_value_type_code
50829   , p_transaction_coa_id           => l_adr_transaction_coa_id
50830   , p_accounting_coa_id            => l_adr_accounting_coa_id
50831   , p_adr_code                     => 'ICCOGS'
50832   , p_adr_type_code                => 'S'
50833   , p_component_type               => l_component_type
50834   , p_component_code               => l_component_code
50835   , p_component_type_code          => l_component_type_code
50836   , p_component_appl_id            => l_component_appl_id
50837   , p_amb_context_code             => l_amb_context_code
50838   , p_side                         => 'NA'
50839   );
50840 
50841 
50842    --
50843    --
50844    END IF;
50845    --
50846    -- Bug 4922099
50847    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50848           (NVL(l_enc_upg_option, 'N') = 'O')
50849         ) AND
50850         (l_bflow_method_code = 'PRIOR_ENTRY')
50851       )
50852    THEN
50853       IF
50854       --
50855       1 = 2
50856       --
50857       THEN
50858       xla_accounting_err_pkg.build_message
50859                                     (p_appli_s_name            => 'XLA'
50860                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50861                                     ,p_token_1                 => 'LINE_NUMBER'
50862                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
50863                                     ,p_token_2                 => 'LINE_TYPE_NAME'
50864                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
50865                                                                              l_component_type
50866                                                                             ,l_component_code
50867                                                                             ,l_component_type_code
50868                                                                             ,l_component_appl_id
50869                                                                             ,l_amb_context_code
50870                                                                             ,l_entity_code
50871                                                                             ,l_event_class_code
50872                                                                            )
50873                                     ,p_token_3                 => 'OWNER'
50874                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
50875                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
50876                                                                           ,p_lookup_code    => l_component_type_code
50877                                                                          )
50878                                     ,p_token_4                 => 'PRODUCT_NAME'
50882                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50879                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50880                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50881                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50883                                     ,p_ae_header_id            =>  NULL
50884                                        );
50885 
50886         IF (C_LEVEL_ERROR>= g_log_level) THEN
50887                  trace
50888                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50889                       ,p_level    => C_LEVEL_ERROR
50890                       ,p_module   => l_log_module);
50891         END IF;
50892       END IF;
50893    END IF;
50894    --
50895    --
50896    ------------------------------------------------------------------------------------------------
50897    -- 4219869 Business Flow
50898    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50899    -- Prior Entry.  Currently, the following code is always generated.
50900    ------------------------------------------------------------------------------------------------
50901    XLA_AE_LINES_PKG.ValidateCurrentLine;
50902 
50903    ------------------------------------------------------------------------------------
50904    -- 4219869 Business Flow
50905    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50906    ------------------------------------------------------------------------------------
50907    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50908 
50909    ----------------------------------------------------------------------------------
50910    -- 4219869 Business Flow
50911    -- Update journal entry status -- Need to generate this within IF <condition>
50912    ----------------------------------------------------------------------------------
50913    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50914          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50915          ,p_balance_type_code => l_balance_type_code
50916          );
50917 
50918    -------------------------------------------------------------------------------------------
50919    -- 4262811 - Generate the Accrual Reversal lines
50920    -------------------------------------------------------------------------------------------
50921    BEGIN
50922       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50923                               (g_array_event(p_event_id).array_value_num('header_index'));
50924       IF l_acc_rev_flag IS NULL THEN
50925          l_acc_rev_flag := 'N';
50926       END IF;
50927    EXCEPTION
50928       WHEN OTHERS THEN
50929          l_acc_rev_flag := 'N';
50930    END;
50931    --
50932    IF (l_acc_rev_flag = 'Y') THEN
50933 
50934        -- 4645092  ------------------------------------------------------------------------------
50935        -- To allow MPA report to determine if it should generate report process
50936        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50937        ------------------------------------------------------------------------------------------
50938 
50939        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50940        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50941    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
50942    -- call ADRs
50943    -- Bug 4922099
50944    --
50945    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50946         (NVL(l_actual_upg_option, 'N') = 'O') OR
50947         (NVL(l_enc_upg_option, 'N') = 'O')
50948       )
50949    THEN
50950    NULL;
50951    --
50952    --
50953    
50954   l_ccid := AcctDerRule_15(
50955            p_application_id           => p_application_id
50956          , p_ae_header_id             => l_ae_header_id 
50957 , p_source_1 => p_source_1
50958 , p_source_2 => p_source_2
50959          , x_transaction_coa_id       => l_adr_transaction_coa_id
50960          , x_accounting_coa_id        => l_adr_accounting_coa_id
50961          , x_value_type_code          => l_adr_value_type_code
50962          , p_side                     => 'NA'
50963    );
50964 
50965    xla_ae_lines_pkg.set_ccid(
50966     p_code_combination_id          => l_ccid
50967   , p_value_type_code              => l_adr_value_type_code
50968   , p_transaction_coa_id           => l_adr_transaction_coa_id
50969   , p_accounting_coa_id            => l_adr_accounting_coa_id
50970   , p_adr_code                     => 'ICCOGS'
50971   , p_adr_type_code                => 'S'
50972   , p_component_type               => l_component_type
50973   , p_component_code               => l_component_code
50974   , p_component_type_code          => l_component_type_code
50975   , p_component_appl_id            => l_component_appl_id
50976   , p_amb_context_code             => l_amb_context_code
50977   , p_side                         => 'NA'
50978   );
50979 
50980 
50981    --
50982    --
50983    END IF;
50984 
50985        --
50986        -- Update the line information that should be overwritten
50987        --
50988        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
50989                                          p_header_num   => 1);
50993 
50990        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
50991 
50992        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
50994        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
50995           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
50996        END IF;
50997 
50998       --
50999       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
51000       --
51001       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
51002           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
51003       ELSE
51004           ---------------------------------------------------------------------------------------------------
51005           -- 4262811a Switch Sign
51006           ---------------------------------------------------------------------------------------------------
51007           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
51008           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51009                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51010           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51011                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51012           -- 5132302
51013           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
51014                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51015 
51016       END IF;
51017 
51018       -- 4955764
51019       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51020       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
51021 
51022 
51023       XLA_AE_LINES_PKG.ValidateCurrentLine;
51024       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51025 
51026       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51027                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
51028                ,p_balance_type_code => l_balance_type_code);
51029 
51030    END IF;
51031 
51032    -----------------------------------------------------------------------------------------
51033    -- 4262811 Multiperiod Accounting
51034    -----------------------------------------------------------------------------------------
51035      -- No MPA option is assigned.
51036 
51037 
51038 END IF;
51039 END IF;
51040 --
51041 
51042 --
51043 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51044    trace
51045       (p_msg      => 'END of AcctLineType_124'
51046       ,p_level    => C_LEVEL_PROCEDURE
51047       ,p_module   => l_log_module);
51048 END IF;
51049 --
51050 EXCEPTION
51051   WHEN xla_exceptions_pkg.application_exception THEN
51052       RAISE;
51053   WHEN OTHERS THEN
51054        xla_exceptions_pkg.raise_message
51055            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_124');
51056 END AcctLineType_124;
51057 --
51058 
51059 ---------------------------------------
51060 --
51061 -- PRIVATE FUNCTION
51062 --         AcctLineType_125
51063 --
51064 ---------------------------------------
51065 PROCEDURE AcctLineType_125 (
51066   p_application_id        IN NUMBER
51067  ,p_event_id              IN NUMBER
51068  ,p_calculate_acctd_flag  IN VARCHAR2
51069  ,p_calculate_g_l_flag    IN VARCHAR2
51070  ,p_actual_flag           IN OUT VARCHAR2
51071  ,p_balance_type_code     OUT VARCHAR2
51072  ,p_gain_or_loss_ref      OUT VARCHAR2
51073  
51074 --Transaction Account
51075  , p_source_1            IN NUMBER
51076 --Journal Line Type
51077  , p_source_2            IN VARCHAR2
51078 --Entered Amount
51079  , p_source_3            IN NUMBER
51080 --First Distribution Identifier
51081  , p_source_5            IN NUMBER
51082 --Distribution Type
51083  , p_source_6            IN VARCHAR2
51084 --Currency Code
51085  , p_source_7            IN VARCHAR2
51086 --Currency Conversion Date
51087  , p_source_8            IN DATE
51088 --Currency Conversion Rate
51089  , p_source_9            IN NUMBER
51090 --Currency Conversion Type
51091  , p_source_10            IN VARCHAR2
51092 --Accounted Amount
51093  , p_source_11            IN NUMBER
51094 )
51095 IS
51096 
51097 l_component_type              VARCHAR2(80);
51098 l_component_code              VARCHAR2(30);
51099 l_component_type_code         VARCHAR2(1);
51100 l_component_appl_id           INTEGER;
51101 l_amb_context_code            VARCHAR2(30);
51102 l_entity_code                 VARCHAR2(30);
51103 l_event_class_code            VARCHAR2(30);
51104 l_ae_header_id                NUMBER;
51105 l_event_type_code             VARCHAR2(30);
51106 l_line_definition_code        VARCHAR2(30);
51107 l_line_definition_owner_code  VARCHAR2(1);
51108 --
51109 -- adr variables
51110 l_segment                     VARCHAR2(30);
51111 l_ccid                        NUMBER;
51112 l_adr_transaction_coa_id      NUMBER;
51113 l_adr_accounting_coa_id       NUMBER;
51114 l_adr_flexfield_segment_code  VARCHAR2(30);
51118 l_adr_value_segment_code      VARCHAR2(30);
51115 l_adr_flex_value_set_id       NUMBER;
51116 l_adr_value_type_code         VARCHAR2(30);
51117 l_adr_value_combination_id    NUMBER;
51119 
51120 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
51121 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
51122 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
51123 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
51124 
51125 -- 4262811 Variables ------------------------------------------------------------------------------------------
51126 l_entered_amt_idx             NUMBER;
51127 l_accted_amt_idx              NUMBER;
51128 l_acc_rev_flag                VARCHAR2(1);
51129 l_accrual_line_num            NUMBER;
51130 l_tmp_amt                     NUMBER;
51131 l_acc_rev_natural_side_code   VARCHAR2(1);
51132 
51133 l_num_entries                 NUMBER;
51134 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
51135 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
51136 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
51137 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
51138 l_recog_line_1                NUMBER;
51139 l_recog_line_2                NUMBER;
51140 
51141 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
51142 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
51143 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
51144 
51145 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
51146 
51147 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
51148 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
51149 
51150 ---------------------------------------------------------------------------------------------------------------
51151 
51152 
51153 --
51154 -- bulk performance
51155 --
51156 l_balance_type_code           VARCHAR2(1);
51157 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
51158 l_log_module                  VARCHAR2(240);
51159 
51160 --
51161 -- Upgrade strategy
51162 --
51163 l_actual_upg_option           VARCHAR2(1);
51164 l_enc_upg_option           VARCHAR2(1);
51165 
51166 --
51167 BEGIN
51168 --
51169 IF g_log_enabled THEN
51170       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_125';
51171 END IF;
51172 --
51173 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51174 
51175       trace
51176          (p_msg      => 'BEGIN of AcctLineType_125'
51177          ,p_level    => C_LEVEL_PROCEDURE
51178          ,p_module   => l_log_module);
51179 
51180 END IF;
51181 --
51182 l_component_type             := 'AMB_JLT';
51183 l_component_code             := 'ICCOGS';
51184 l_component_type_code        := 'S';
51185 l_component_appl_id          :=  555;
51186 l_amb_context_code           := 'DEFAULT';
51187 l_entity_code                := 'INVENTORY';
51188 l_event_class_code           := 'LOG_INTERCOMPANY';
51189 l_event_type_code            := 'LOG_IC_SALES_RETURN';
51190 l_line_definition_owner_code := 'S';
51191 l_line_definition_code       := 'LOG_IC_SALES_RETURN';
51192 --
51193 l_balance_type_code          := 'A';
51194 l_segment                     := NULL;
51195 l_ccid                        := NULL;
51196 l_adr_transaction_coa_id      := NULL;
51197 l_adr_accounting_coa_id       := NULL;
51198 l_adr_flexfield_segment_code  := NULL;
51199 l_adr_flex_value_set_id       := NULL;
51200 l_adr_value_type_code         := NULL;
51201 l_adr_value_combination_id    := NULL;
51202 l_adr_value_segment_code      := NULL;
51203 
51204 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
51205 l_bflow_class_code           := '';    -- 4219869 Business Flow
51206 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
51207 l_budgetary_control_flag     := 'N';
51208 
51209 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
51210 l_bflow_applied_to_amt       := NULL; -- 5132302
51211 l_entered_amt_idx            := NULL;          -- 4262811
51212 l_accted_amt_idx             := NULL;          -- 4262811
51213 l_acc_rev_flag               := NULL;          -- 4262811
51214 l_accrual_line_num           := NULL;          -- 4262811
51215 l_tmp_amt                    := NULL;          -- 4262811
51216 --
51217  
51218 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
51219     l_balance_type_code <> 'B' THEN
51220 IF NVL(p_source_2,'
51221 ') =  'ICCOGS'
51222  THEN 
51223 
51224    --
51225    XLA_AE_LINES_PKG.SetNewLine;
51226 
51227    p_balance_type_code          := l_balance_type_code;
51228    -- set the flag so later we will know whether the gain loss line needs to be created
51229    
51230    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51231      p_actual_flag :='A';
51232    END IF;
51233 
51234    --
51235    -- bulk performance
51236    --
51237    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51238                                       p_header_num   => 0); -- 4262811
51239    --
51240    -- set accounting line options
51241    --
51242    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51243            p_natural_side_code          => 'D'
51247          , p_switch_side_flag           => 'Y'
51244          , p_gain_or_loss_flag          => 'N'
51245          , p_gl_transfer_mode_code      => 'D'
51246          , p_acct_entry_type_code       => 'A'
51248          , p_merge_duplicate_code       => 'W'
51249          );
51250    --
51251    l_acc_rev_natural_side_code := 'C';  -- 4262811
51252    -- 
51253    --
51254    -- set accounting line type info
51255    --
51256    xla_ae_lines_pkg.SetAcctLineType
51257       (p_component_type             => l_component_type
51258       ,p_event_type_code            => l_event_type_code
51259       ,p_line_definition_owner_code => l_line_definition_owner_code
51260       ,p_line_definition_code       => l_line_definition_code
51261       ,p_accounting_line_code       => l_component_code
51262       ,p_accounting_line_type_code  => l_component_type_code
51263       ,p_accounting_line_appl_id    => l_component_appl_id
51264       ,p_amb_context_code           => l_amb_context_code
51265       ,p_entity_code                => l_entity_code
51266       ,p_event_class_code           => l_event_class_code);
51267    --
51268    -- set accounting class
51269    --
51270    xla_ae_lines_pkg.SetAcctClass(
51271            p_accounting_class_code  => 'INTERCOMPANY_COGS'
51272          , p_ae_header_id           => l_ae_header_id
51273          );
51274 
51275    --
51276    -- set rounding class
51277    --
51278    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51279                       'INTERCOMPANY_COGS';
51280 
51281    --
51282    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51283    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51284    --
51285    -- bulk performance
51286    --
51287    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51288 
51289    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51290       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51291 
51292    -- 4955764
51293    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51294       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51295 
51296    -- 4458381 Public Sector Enh
51297    
51298    --
51299    -- set accounting attributes for the line type
51300    --
51301    l_entered_amt_idx := 3;
51302    l_accted_amt_idx  := 8;
51303    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
51304    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
51305    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
51306    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
51307    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
51308    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
51309    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
51310    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
51311    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
51312    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
51313    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
51314    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
51315    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
51316    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
51317    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
51318    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
51319    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
51320 
51321    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51322    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51323 
51324    ---------------------------------------------------------------------------------------------------------------
51325    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51326    ---------------------------------------------------------------------------------------------------------------
51327    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
51328 
51329    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51330    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51331 
51332    IF xla_accounting_cache_pkg.GetValueChar
51333          (p_source_code         => 'LEDGER_CATEGORY_CODE'
51334          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
51335    AND l_bflow_method_code = 'PRIOR_ENTRY'
51336 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
51337    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
51338          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
51339        )
51340    THEN
51341          xla_ae_lines_pkg.BflowUpgEntry
51342            (p_business_method_code    => l_bflow_method_code
51343            ,p_business_class_code     => l_bflow_class_code
51344            ,p_balance_type            => l_balance_type_code);
51345    ELSE
51346       NULL;
51347 -- No business flow processing for business flow method of NONE.
51348    END IF;
51349 
51350    --
51351    -- call analytical criteria
51352    --
51353    
51354    --
51358    --
51355    -- call description
51356    --
51357    -- No description or it is inherited.
51359    -- call ADRs
51360    -- Bug 4922099
51361    --
51362    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51363         (NVL(l_actual_upg_option, 'N') = 'O') OR
51364         (NVL(l_enc_upg_option, 'N') = 'O')
51365       )
51366    THEN
51367    NULL;
51368    --
51369    --
51370    
51371   l_ccid := AcctDerRule_15(
51372            p_application_id           => p_application_id
51373          , p_ae_header_id             => l_ae_header_id 
51374 , p_source_1 => p_source_1
51375 , p_source_2 => p_source_2
51376          , x_transaction_coa_id       => l_adr_transaction_coa_id
51377          , x_accounting_coa_id        => l_adr_accounting_coa_id
51378          , x_value_type_code          => l_adr_value_type_code
51379          , p_side                     => 'NA'
51380    );
51381 
51382    xla_ae_lines_pkg.set_ccid(
51383     p_code_combination_id          => l_ccid
51384   , p_value_type_code              => l_adr_value_type_code
51385   , p_transaction_coa_id           => l_adr_transaction_coa_id
51386   , p_accounting_coa_id            => l_adr_accounting_coa_id
51387   , p_adr_code                     => 'ICCOGS'
51388   , p_adr_type_code                => 'S'
51389   , p_component_type               => l_component_type
51390   , p_component_code               => l_component_code
51391   , p_component_type_code          => l_component_type_code
51392   , p_component_appl_id            => l_component_appl_id
51393   , p_amb_context_code             => l_amb_context_code
51394   , p_side                         => 'NA'
51395   );
51396 
51397 
51398    --
51399    --
51400    END IF;
51401    --
51402    -- Bug 4922099
51403    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
51404           (NVL(l_enc_upg_option, 'N') = 'O')
51405         ) AND
51406         (l_bflow_method_code = 'PRIOR_ENTRY')
51407       )
51408    THEN
51409       IF
51410       --
51411       1 = 2
51412       --
51413       THEN
51414       xla_accounting_err_pkg.build_message
51415                                     (p_appli_s_name            => 'XLA'
51416                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51417                                     ,p_token_1                 => 'LINE_NUMBER'
51418                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
51419                                     ,p_token_2                 => 'LINE_TYPE_NAME'
51420                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
51421                                                                              l_component_type
51422                                                                             ,l_component_code
51423                                                                             ,l_component_type_code
51424                                                                             ,l_component_appl_id
51425                                                                             ,l_amb_context_code
51426                                                                             ,l_entity_code
51427                                                                             ,l_event_class_code
51428                                                                            )
51429                                     ,p_token_3                 => 'OWNER'
51430                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
51431                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
51432                                                                           ,p_lookup_code    => l_component_type_code
51433                                                                          )
51434                                     ,p_token_4                 => 'PRODUCT_NAME'
51435                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
51436                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
51437                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
51438                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
51439                                     ,p_ae_header_id            =>  NULL
51440                                        );
51441 
51442         IF (C_LEVEL_ERROR>= g_log_level) THEN
51443                  trace
51444                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51445                       ,p_level    => C_LEVEL_ERROR
51446                       ,p_module   => l_log_module);
51447         END IF;
51448       END IF;
51449    END IF;
51450    --
51451    --
51452    ------------------------------------------------------------------------------------------------
51453    -- 4219869 Business Flow
51454    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
51455    -- Prior Entry.  Currently, the following code is always generated.
51456    ------------------------------------------------------------------------------------------------
51457    XLA_AE_LINES_PKG.ValidateCurrentLine;
51458 
51462    ------------------------------------------------------------------------------------
51459    ------------------------------------------------------------------------------------
51460    -- 4219869 Business Flow
51461    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
51463    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51464 
51465    ----------------------------------------------------------------------------------
51466    -- 4219869 Business Flow
51467    -- Update journal entry status -- Need to generate this within IF <condition>
51468    ----------------------------------------------------------------------------------
51469    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51470          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
51471          ,p_balance_type_code => l_balance_type_code
51472          );
51473 
51474    -------------------------------------------------------------------------------------------
51475    -- 4262811 - Generate the Accrual Reversal lines
51476    -------------------------------------------------------------------------------------------
51477    BEGIN
51478       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
51479                               (g_array_event(p_event_id).array_value_num('header_index'));
51480       IF l_acc_rev_flag IS NULL THEN
51481          l_acc_rev_flag := 'N';
51482       END IF;
51483    EXCEPTION
51484       WHEN OTHERS THEN
51485          l_acc_rev_flag := 'N';
51486    END;
51487    --
51488    IF (l_acc_rev_flag = 'Y') THEN
51489 
51490        -- 4645092  ------------------------------------------------------------------------------
51491        -- To allow MPA report to determine if it should generate report process
51492        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
51493        ------------------------------------------------------------------------------------------
51494 
51495        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
51496        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
51497    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
51498    -- call ADRs
51499    -- Bug 4922099
51500    --
51501    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51502         (NVL(l_actual_upg_option, 'N') = 'O') OR
51503         (NVL(l_enc_upg_option, 'N') = 'O')
51504       )
51505    THEN
51506    NULL;
51507    --
51508    --
51509    
51510   l_ccid := AcctDerRule_15(
51511            p_application_id           => p_application_id
51512          , p_ae_header_id             => l_ae_header_id 
51513 , p_source_1 => p_source_1
51514 , p_source_2 => p_source_2
51515          , x_transaction_coa_id       => l_adr_transaction_coa_id
51516          , x_accounting_coa_id        => l_adr_accounting_coa_id
51517          , x_value_type_code          => l_adr_value_type_code
51518          , p_side                     => 'NA'
51519    );
51520 
51521    xla_ae_lines_pkg.set_ccid(
51522     p_code_combination_id          => l_ccid
51523   , p_value_type_code              => l_adr_value_type_code
51524   , p_transaction_coa_id           => l_adr_transaction_coa_id
51525   , p_accounting_coa_id            => l_adr_accounting_coa_id
51526   , p_adr_code                     => 'ICCOGS'
51527   , p_adr_type_code                => 'S'
51528   , p_component_type               => l_component_type
51529   , p_component_code               => l_component_code
51530   , p_component_type_code          => l_component_type_code
51531   , p_component_appl_id            => l_component_appl_id
51532   , p_amb_context_code             => l_amb_context_code
51533   , p_side                         => 'NA'
51534   );
51535 
51536 
51537    --
51538    --
51539    END IF;
51540 
51541        --
51542        -- Update the line information that should be overwritten
51543        --
51544        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
51545                                          p_header_num   => 1);
51546        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
51547 
51548        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
51549 
51550        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
51551           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
51552        END IF;
51553 
51554       --
51555       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
51556       --
51557       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
51558           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
51559       ELSE
51560           ---------------------------------------------------------------------------------------------------
51561           -- 4262811a Switch Sign
51562           ---------------------------------------------------------------------------------------------------
51563           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
51564           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51565                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51566           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51570                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51567                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51568           -- 5132302
51569           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
51571 
51572       END IF;
51573 
51574       -- 4955764
51575       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51576       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
51577 
51578 
51579       XLA_AE_LINES_PKG.ValidateCurrentLine;
51580       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51581 
51582       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51583                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
51584                ,p_balance_type_code => l_balance_type_code);
51585 
51586    END IF;
51587 
51588    -----------------------------------------------------------------------------------------
51589    -- 4262811 Multiperiod Accounting
51590    -----------------------------------------------------------------------------------------
51591      -- No MPA option is assigned.
51592 
51593 
51594 END IF;
51595 END IF;
51596 --
51597 
51598 --
51599 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51600    trace
51601       (p_msg      => 'END of AcctLineType_125'
51602       ,p_level    => C_LEVEL_PROCEDURE
51603       ,p_module   => l_log_module);
51604 END IF;
51605 --
51606 EXCEPTION
51607   WHEN xla_exceptions_pkg.application_exception THEN
51608       RAISE;
51609   WHEN OTHERS THEN
51610        xla_exceptions_pkg.raise_message
51611            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_125');
51612 END AcctLineType_125;
51613 --
51614 
51615 ---------------------------------------
51616 --
51617 -- PRIVATE FUNCTION
51618 --         AcctLineType_126
51619 --
51620 ---------------------------------------
51621 PROCEDURE AcctLineType_126 (
51622   p_application_id        IN NUMBER
51623  ,p_event_id              IN NUMBER
51624  ,p_calculate_acctd_flag  IN VARCHAR2
51625  ,p_calculate_g_l_flag    IN VARCHAR2
51626  ,p_actual_flag           IN OUT VARCHAR2
51627  ,p_balance_type_code     OUT VARCHAR2
51628  ,p_gain_or_loss_ref      OUT VARCHAR2
51629  
51630 --Transaction Account
51631  , p_source_1            IN NUMBER
51632 --Journal Line Type
51633  , p_source_2            IN VARCHAR2
51634 --Entered Amount
51635  , p_source_3            IN NUMBER
51636 --First Distribution Identifier
51637  , p_source_5            IN NUMBER
51638 --Distribution Type
51639  , p_source_6            IN VARCHAR2
51640 --Currency Code
51641  , p_source_7            IN VARCHAR2
51642 --Currency Conversion Date
51643  , p_source_8            IN DATE
51644 --Currency Conversion Rate
51645  , p_source_9            IN NUMBER
51646 --Currency Conversion Type
51647  , p_source_10            IN VARCHAR2
51648 --Accounted Amount
51649  , p_source_11            IN NUMBER
51650 )
51651 IS
51652 
51653 l_component_type              VARCHAR2(80);
51654 l_component_code              VARCHAR2(30);
51655 l_component_type_code         VARCHAR2(1);
51656 l_component_appl_id           INTEGER;
51657 l_amb_context_code            VARCHAR2(30);
51658 l_entity_code                 VARCHAR2(30);
51659 l_event_class_code            VARCHAR2(30);
51660 l_ae_header_id                NUMBER;
51661 l_event_type_code             VARCHAR2(30);
51662 l_line_definition_code        VARCHAR2(30);
51663 l_line_definition_owner_code  VARCHAR2(1);
51664 --
51665 -- adr variables
51666 l_segment                     VARCHAR2(30);
51667 l_ccid                        NUMBER;
51668 l_adr_transaction_coa_id      NUMBER;
51669 l_adr_accounting_coa_id       NUMBER;
51670 l_adr_flexfield_segment_code  VARCHAR2(30);
51671 l_adr_flex_value_set_id       NUMBER;
51672 l_adr_value_type_code         VARCHAR2(30);
51673 l_adr_value_combination_id    NUMBER;
51674 l_adr_value_segment_code      VARCHAR2(30);
51675 
51676 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
51677 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
51678 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
51679 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
51680 
51681 -- 4262811 Variables ------------------------------------------------------------------------------------------
51682 l_entered_amt_idx             NUMBER;
51683 l_accted_amt_idx              NUMBER;
51684 l_acc_rev_flag                VARCHAR2(1);
51685 l_accrual_line_num            NUMBER;
51686 l_tmp_amt                     NUMBER;
51687 l_acc_rev_natural_side_code   VARCHAR2(1);
51688 
51689 l_num_entries                 NUMBER;
51690 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
51691 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
51692 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
51693 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
51694 l_recog_line_1                NUMBER;
51695 l_recog_line_2                NUMBER;
51696 
51697 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
51701 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
51698 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
51699 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
51700 
51702 
51703 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
51704 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
51705 
51706 ---------------------------------------------------------------------------------------------------------------
51707 
51708 
51709 --
51710 -- bulk performance
51711 --
51712 l_balance_type_code           VARCHAR2(1);
51713 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
51714 l_log_module                  VARCHAR2(240);
51715 
51716 --
51717 -- Upgrade strategy
51718 --
51719 l_actual_upg_option           VARCHAR2(1);
51720 l_enc_upg_option           VARCHAR2(1);
51721 
51722 --
51723 BEGIN
51724 --
51725 IF g_log_enabled THEN
51726       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_126';
51727 END IF;
51728 --
51729 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51730 
51731       trace
51732          (p_msg      => 'BEGIN of AcctLineType_126'
51733          ,p_level    => C_LEVEL_PROCEDURE
51734          ,p_module   => l_log_module);
51735 
51736 END IF;
51737 --
51738 l_component_type             := 'AMB_JLT';
51739 l_component_code             := 'ICEXP';
51740 l_component_type_code        := 'S';
51741 l_component_appl_id          :=  555;
51742 l_amb_context_code           := 'DEFAULT';
51743 l_entity_code                := 'PURCHASING';
51744 l_event_class_code           := 'DELIVER';
51745 l_event_type_code            := 'XFER_TO_CONSIGNED';
51746 l_line_definition_owner_code := 'S';
51747 l_line_definition_code       := 'XFER_TO_CONSIGN';
51748 --
51749 l_balance_type_code          := 'A';
51750 l_segment                     := NULL;
51751 l_ccid                        := NULL;
51752 l_adr_transaction_coa_id      := NULL;
51753 l_adr_accounting_coa_id       := NULL;
51754 l_adr_flexfield_segment_code  := NULL;
51755 l_adr_flex_value_set_id       := NULL;
51756 l_adr_value_type_code         := NULL;
51757 l_adr_value_combination_id    := NULL;
51758 l_adr_value_segment_code      := NULL;
51759 
51760 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
51761 l_bflow_class_code           := '';    -- 4219869 Business Flow
51762 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
51763 l_budgetary_control_flag     := 'N';
51764 
51765 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
51766 l_bflow_applied_to_amt       := NULL; -- 5132302
51767 l_entered_amt_idx            := NULL;          -- 4262811
51768 l_accted_amt_idx             := NULL;          -- 4262811
51769 l_acc_rev_flag               := NULL;          -- 4262811
51770 l_accrual_line_num           := NULL;          -- 4262811
51771 l_tmp_amt                    := NULL;          -- 4262811
51772 --
51773  
51774 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
51775     l_balance_type_code <> 'B' THEN
51776 IF NVL(p_source_2,'
51777 ') =  'ICEXP'
51778  THEN 
51779 
51780    --
51781    XLA_AE_LINES_PKG.SetNewLine;
51782 
51783    p_balance_type_code          := l_balance_type_code;
51784    -- set the flag so later we will know whether the gain loss line needs to be created
51785    
51786    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51787      p_actual_flag :='A';
51788    END IF;
51789 
51790    --
51791    -- bulk performance
51792    --
51793    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51794                                       p_header_num   => 0); -- 4262811
51795    --
51796    -- set accounting line options
51797    --
51798    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51799            p_natural_side_code          => 'D'
51800          , p_gain_or_loss_flag          => 'N'
51801          , p_gl_transfer_mode_code      => 'D'
51802          , p_acct_entry_type_code       => 'A'
51803          , p_switch_side_flag           => 'Y'
51804          , p_merge_duplicate_code       => 'W'
51805          );
51806    --
51807    l_acc_rev_natural_side_code := 'C';  -- 4262811
51808    -- 
51809    --
51810    -- set accounting line type info
51811    --
51812    xla_ae_lines_pkg.SetAcctLineType
51813       (p_component_type             => l_component_type
51814       ,p_event_type_code            => l_event_type_code
51815       ,p_line_definition_owner_code => l_line_definition_owner_code
51816       ,p_line_definition_code       => l_line_definition_code
51817       ,p_accounting_line_code       => l_component_code
51818       ,p_accounting_line_type_code  => l_component_type_code
51819       ,p_accounting_line_appl_id    => l_component_appl_id
51820       ,p_amb_context_code           => l_amb_context_code
51821       ,p_entity_code                => l_entity_code
51822       ,p_event_class_code           => l_event_class_code);
51823    --
51824    -- set accounting class
51825    --
51826    xla_ae_lines_pkg.SetAcctClass(
51827            p_accounting_class_code  => 'INTERCOMPANY_EXPENSE'
51828          , p_ae_header_id           => l_ae_header_id
51829          );
51830 
51831    --
51835                       'INTERCOMPANY_EXPENSE';
51832    -- set rounding class
51833    --
51834    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51836 
51837    --
51838    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51839    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51840    --
51841    -- bulk performance
51842    --
51843    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51844 
51845    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51846       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51847 
51848    -- 4955764
51849    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51850       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51851 
51852    -- 4458381 Public Sector Enh
51853    
51854    --
51855    -- set accounting attributes for the line type
51856    --
51857    l_entered_amt_idx := 3;
51858    l_accted_amt_idx  := 8;
51859    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
51860    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
51861    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
51862    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
51863    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
51864    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
51865    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
51866    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
51867    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
51868    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
51869    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
51870    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
51871    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
51872    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
51873    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
51874    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
51875    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
51876 
51877    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51878    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51879 
51880    ---------------------------------------------------------------------------------------------------------------
51881    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51882    ---------------------------------------------------------------------------------------------------------------
51883    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
51884 
51885    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51886    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51887 
51888    IF xla_accounting_cache_pkg.GetValueChar
51889          (p_source_code         => 'LEDGER_CATEGORY_CODE'
51890          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
51891    AND l_bflow_method_code = 'PRIOR_ENTRY'
51892 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
51893    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
51894          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
51895        )
51896    THEN
51897          xla_ae_lines_pkg.BflowUpgEntry
51898            (p_business_method_code    => l_bflow_method_code
51899            ,p_business_class_code     => l_bflow_class_code
51900            ,p_balance_type            => l_balance_type_code);
51901    ELSE
51902       NULL;
51903 -- No business flow processing for business flow method of NONE.
51904    END IF;
51905 
51906    --
51907    -- call analytical criteria
51908    --
51909    
51910    --
51911    -- call description
51912    --
51913    -- No description or it is inherited.
51914    --
51915    -- call ADRs
51916    -- Bug 4922099
51917    --
51918    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51919         (NVL(l_actual_upg_option, 'N') = 'O') OR
51920         (NVL(l_enc_upg_option, 'N') = 'O')
51921       )
51922    THEN
51923    NULL;
51924    --
51925    --
51926    
51927   l_ccid := AcctDerRule_16(
51928            p_application_id           => p_application_id
51929          , p_ae_header_id             => l_ae_header_id 
51930 , p_source_1 => p_source_1
51931 , p_source_2 => p_source_2
51932          , x_transaction_coa_id       => l_adr_transaction_coa_id
51933          , x_accounting_coa_id        => l_adr_accounting_coa_id
51934          , x_value_type_code          => l_adr_value_type_code
51935          , p_side                     => 'NA'
51936    );
51937 
51938    xla_ae_lines_pkg.set_ccid(
51939     p_code_combination_id          => l_ccid
51940   , p_value_type_code              => l_adr_value_type_code
51941   , p_transaction_coa_id           => l_adr_transaction_coa_id
51942   , p_accounting_coa_id            => l_adr_accounting_coa_id
51943   , p_adr_code                     => 'ICEXP'
51947   , p_component_type_code          => l_component_type_code
51944   , p_adr_type_code                => 'S'
51945   , p_component_type               => l_component_type
51946   , p_component_code               => l_component_code
51948   , p_component_appl_id            => l_component_appl_id
51949   , p_amb_context_code             => l_amb_context_code
51950   , p_side                         => 'NA'
51951   );
51952 
51953 
51954    --
51955    --
51956    END IF;
51957    --
51958    -- Bug 4922099
51959    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
51960           (NVL(l_enc_upg_option, 'N') = 'O')
51961         ) AND
51962         (l_bflow_method_code = 'PRIOR_ENTRY')
51963       )
51964    THEN
51965       IF
51966       --
51967       1 = 2
51968       --
51969       THEN
51970       xla_accounting_err_pkg.build_message
51971                                     (p_appli_s_name            => 'XLA'
51972                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51973                                     ,p_token_1                 => 'LINE_NUMBER'
51974                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
51975                                     ,p_token_2                 => 'LINE_TYPE_NAME'
51976                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
51977                                                                              l_component_type
51978                                                                             ,l_component_code
51979                                                                             ,l_component_type_code
51980                                                                             ,l_component_appl_id
51981                                                                             ,l_amb_context_code
51982                                                                             ,l_entity_code
51983                                                                             ,l_event_class_code
51984                                                                            )
51985                                     ,p_token_3                 => 'OWNER'
51986                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
51987                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
51988                                                                           ,p_lookup_code    => l_component_type_code
51989                                                                          )
51990                                     ,p_token_4                 => 'PRODUCT_NAME'
51991                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
51992                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
51993                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
51994                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
51995                                     ,p_ae_header_id            =>  NULL
51996                                        );
51997 
51998         IF (C_LEVEL_ERROR>= g_log_level) THEN
51999                  trace
52000                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52001                       ,p_level    => C_LEVEL_ERROR
52002                       ,p_module   => l_log_module);
52003         END IF;
52004       END IF;
52005    END IF;
52006    --
52007    --
52008    ------------------------------------------------------------------------------------------------
52009    -- 4219869 Business Flow
52010    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
52011    -- Prior Entry.  Currently, the following code is always generated.
52012    ------------------------------------------------------------------------------------------------
52013    XLA_AE_LINES_PKG.ValidateCurrentLine;
52014 
52015    ------------------------------------------------------------------------------------
52016    -- 4219869 Business Flow
52017    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
52018    ------------------------------------------------------------------------------------
52019    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52020 
52021    ----------------------------------------------------------------------------------
52022    -- 4219869 Business Flow
52023    -- Update journal entry status -- Need to generate this within IF <condition>
52024    ----------------------------------------------------------------------------------
52025    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52026          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
52027          ,p_balance_type_code => l_balance_type_code
52028          );
52029 
52030    -------------------------------------------------------------------------------------------
52031    -- 4262811 - Generate the Accrual Reversal lines
52032    -------------------------------------------------------------------------------------------
52033    BEGIN
52034       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
52035                               (g_array_event(p_event_id).array_value_num('header_index'));
52036       IF l_acc_rev_flag IS NULL THEN
52037          l_acc_rev_flag := 'N';
52038       END IF;
52039    EXCEPTION
52043    --
52040       WHEN OTHERS THEN
52041          l_acc_rev_flag := 'N';
52042    END;
52044    IF (l_acc_rev_flag = 'Y') THEN
52045 
52046        -- 4645092  ------------------------------------------------------------------------------
52047        -- To allow MPA report to determine if it should generate report process
52048        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
52049        ------------------------------------------------------------------------------------------
52050 
52051        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
52052        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
52053    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
52054    -- call ADRs
52055    -- Bug 4922099
52056    --
52057    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52058         (NVL(l_actual_upg_option, 'N') = 'O') OR
52059         (NVL(l_enc_upg_option, 'N') = 'O')
52060       )
52061    THEN
52062    NULL;
52063    --
52064    --
52065    
52066   l_ccid := AcctDerRule_16(
52067            p_application_id           => p_application_id
52068          , p_ae_header_id             => l_ae_header_id 
52069 , p_source_1 => p_source_1
52070 , p_source_2 => p_source_2
52071          , x_transaction_coa_id       => l_adr_transaction_coa_id
52072          , x_accounting_coa_id        => l_adr_accounting_coa_id
52073          , x_value_type_code          => l_adr_value_type_code
52074          , p_side                     => 'NA'
52075    );
52076 
52077    xla_ae_lines_pkg.set_ccid(
52078     p_code_combination_id          => l_ccid
52079   , p_value_type_code              => l_adr_value_type_code
52080   , p_transaction_coa_id           => l_adr_transaction_coa_id
52081   , p_accounting_coa_id            => l_adr_accounting_coa_id
52082   , p_adr_code                     => 'ICEXP'
52083   , p_adr_type_code                => 'S'
52084   , p_component_type               => l_component_type
52085   , p_component_code               => l_component_code
52086   , p_component_type_code          => l_component_type_code
52087   , p_component_appl_id            => l_component_appl_id
52088   , p_amb_context_code             => l_amb_context_code
52089   , p_side                         => 'NA'
52090   );
52091 
52092 
52093    --
52094    --
52095    END IF;
52096 
52097        --
52098        -- Update the line information that should be overwritten
52099        --
52100        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
52101                                          p_header_num   => 1);
52102        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
52103 
52104        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
52105 
52106        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
52107           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
52108        END IF;
52109 
52110       --
52111       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
52112       --
52113       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
52114           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
52115       ELSE
52116           ---------------------------------------------------------------------------------------------------
52117           -- 4262811a Switch Sign
52118           ---------------------------------------------------------------------------------------------------
52119           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
52120           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52121                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52122           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52123                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52124           -- 5132302
52125           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
52126                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52127 
52128       END IF;
52129 
52130       -- 4955764
52131       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52132       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
52133 
52134 
52135       XLA_AE_LINES_PKG.ValidateCurrentLine;
52136       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52137 
52138       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52139                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
52140                ,p_balance_type_code => l_balance_type_code);
52141 
52142    END IF;
52143 
52144    -----------------------------------------------------------------------------------------
52145    -- 4262811 Multiperiod Accounting
52146    -----------------------------------------------------------------------------------------
52147      -- No MPA option is assigned.
52148 
52149 
52150 END IF;
52151 END IF;
52152 --
52153 
52157       (p_msg      => 'END of AcctLineType_126'
52154 --
52155 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52156    trace
52158       ,p_level    => C_LEVEL_PROCEDURE
52159       ,p_module   => l_log_module);
52160 END IF;
52161 --
52162 EXCEPTION
52163   WHEN xla_exceptions_pkg.application_exception THEN
52164       RAISE;
52165   WHEN OTHERS THEN
52166        xla_exceptions_pkg.raise_message
52167            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_126');
52168 END AcctLineType_126;
52169 --
52170 
52171 ---------------------------------------
52172 --
52173 -- PRIVATE FUNCTION
52174 --         AcctLineType_127
52175 --
52176 ---------------------------------------
52177 PROCEDURE AcctLineType_127 (
52178   p_application_id        IN NUMBER
52179  ,p_event_id              IN NUMBER
52180  ,p_calculate_acctd_flag  IN VARCHAR2
52181  ,p_calculate_g_l_flag    IN VARCHAR2
52182  ,p_actual_flag           IN OUT VARCHAR2
52183  ,p_balance_type_code     OUT VARCHAR2
52184  ,p_gain_or_loss_ref      OUT VARCHAR2
52185  
52186 --Transaction Account
52187  , p_source_1            IN NUMBER
52188 --Journal Line Type
52189  , p_source_2            IN VARCHAR2
52190 --Entered Amount
52191  , p_source_3            IN NUMBER
52192 --First Distribution Identifier
52193  , p_source_5            IN NUMBER
52194 --Distribution Type
52195  , p_source_6            IN VARCHAR2
52196 --Currency Code
52197  , p_source_7            IN VARCHAR2
52198 --Currency Conversion Date
52199  , p_source_8            IN DATE
52200 --Currency Conversion Rate
52201  , p_source_9            IN NUMBER
52202 --Currency Conversion Type
52203  , p_source_10            IN VARCHAR2
52204 --Accounted Amount
52205  , p_source_11            IN NUMBER
52206 )
52207 IS
52208 
52209 l_component_type              VARCHAR2(80);
52210 l_component_code              VARCHAR2(30);
52211 l_component_type_code         VARCHAR2(1);
52212 l_component_appl_id           INTEGER;
52213 l_amb_context_code            VARCHAR2(30);
52214 l_entity_code                 VARCHAR2(30);
52215 l_event_class_code            VARCHAR2(30);
52216 l_ae_header_id                NUMBER;
52217 l_event_type_code             VARCHAR2(30);
52218 l_line_definition_code        VARCHAR2(30);
52219 l_line_definition_owner_code  VARCHAR2(1);
52220 --
52221 -- adr variables
52222 l_segment                     VARCHAR2(30);
52223 l_ccid                        NUMBER;
52224 l_adr_transaction_coa_id      NUMBER;
52225 l_adr_accounting_coa_id       NUMBER;
52226 l_adr_flexfield_segment_code  VARCHAR2(30);
52227 l_adr_flex_value_set_id       NUMBER;
52228 l_adr_value_type_code         VARCHAR2(30);
52229 l_adr_value_combination_id    NUMBER;
52230 l_adr_value_segment_code      VARCHAR2(30);
52231 
52232 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
52233 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
52234 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
52235 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
52236 
52237 -- 4262811 Variables ------------------------------------------------------------------------------------------
52238 l_entered_amt_idx             NUMBER;
52239 l_accted_amt_idx              NUMBER;
52240 l_acc_rev_flag                VARCHAR2(1);
52241 l_accrual_line_num            NUMBER;
52242 l_tmp_amt                     NUMBER;
52243 l_acc_rev_natural_side_code   VARCHAR2(1);
52244 
52245 l_num_entries                 NUMBER;
52246 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
52247 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
52248 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
52249 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
52250 l_recog_line_1                NUMBER;
52251 l_recog_line_2                NUMBER;
52252 
52253 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
52254 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
52255 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
52256 
52257 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
52258 
52259 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
52260 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
52261 
52262 ---------------------------------------------------------------------------------------------------------------
52263 
52264 
52265 --
52266 -- bulk performance
52267 --
52268 l_balance_type_code           VARCHAR2(1);
52269 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
52270 l_log_module                  VARCHAR2(240);
52271 
52272 --
52273 -- Upgrade strategy
52274 --
52275 l_actual_upg_option           VARCHAR2(1);
52276 l_enc_upg_option           VARCHAR2(1);
52277 
52278 --
52279 BEGIN
52280 --
52281 IF g_log_enabled THEN
52282       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_127';
52283 END IF;
52284 --
52285 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52286 
52287       trace
52288          (p_msg      => 'BEGIN of AcctLineType_127'
52289          ,p_level    => C_LEVEL_PROCEDURE
52290          ,p_module   => l_log_module);
52291 
52292 END IF;
52293 --
52297 l_component_appl_id          :=  555;
52294 l_component_type             := 'AMB_JLT';
52295 l_component_code             := 'ICEXP';
52296 l_component_type_code        := 'S';
52298 l_amb_context_code           := 'DEFAULT';
52299 l_entity_code                := 'INVENTORY';
52300 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
52301 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_TP';
52302 l_line_definition_owner_code := 'S';
52303 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT_TP';
52304 --
52305 l_balance_type_code          := 'A';
52306 l_segment                     := NULL;
52307 l_ccid                        := NULL;
52308 l_adr_transaction_coa_id      := NULL;
52309 l_adr_accounting_coa_id       := NULL;
52310 l_adr_flexfield_segment_code  := NULL;
52311 l_adr_flex_value_set_id       := NULL;
52312 l_adr_value_type_code         := NULL;
52313 l_adr_value_combination_id    := NULL;
52314 l_adr_value_segment_code      := NULL;
52315 
52316 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
52317 l_bflow_class_code           := '';    -- 4219869 Business Flow
52318 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
52319 l_budgetary_control_flag     := 'N';
52320 
52321 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
52322 l_bflow_applied_to_amt       := NULL; -- 5132302
52323 l_entered_amt_idx            := NULL;          -- 4262811
52324 l_accted_amt_idx             := NULL;          -- 4262811
52325 l_acc_rev_flag               := NULL;          -- 4262811
52326 l_accrual_line_num           := NULL;          -- 4262811
52327 l_tmp_amt                    := NULL;          -- 4262811
52328 --
52329  
52330 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
52331     l_balance_type_code <> 'B' THEN
52332 IF NVL(p_source_2,'
52333 ') =  'ICEXP'
52334  THEN 
52335 
52336    --
52337    XLA_AE_LINES_PKG.SetNewLine;
52338 
52339    p_balance_type_code          := l_balance_type_code;
52340    -- set the flag so later we will know whether the gain loss line needs to be created
52341    
52342    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
52343      p_actual_flag :='A';
52344    END IF;
52345 
52346    --
52347    -- bulk performance
52348    --
52349    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
52350                                       p_header_num   => 0); -- 4262811
52351    --
52352    -- set accounting line options
52353    --
52354    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
52355            p_natural_side_code          => 'D'
52356          , p_gain_or_loss_flag          => 'N'
52357          , p_gl_transfer_mode_code      => 'D'
52358          , p_acct_entry_type_code       => 'A'
52359          , p_switch_side_flag           => 'Y'
52360          , p_merge_duplicate_code       => 'W'
52361          );
52362    --
52363    l_acc_rev_natural_side_code := 'C';  -- 4262811
52364    -- 
52365    --
52366    -- set accounting line type info
52367    --
52368    xla_ae_lines_pkg.SetAcctLineType
52369       (p_component_type             => l_component_type
52370       ,p_event_type_code            => l_event_type_code
52371       ,p_line_definition_owner_code => l_line_definition_owner_code
52372       ,p_line_definition_code       => l_line_definition_code
52373       ,p_accounting_line_code       => l_component_code
52374       ,p_accounting_line_type_code  => l_component_type_code
52375       ,p_accounting_line_appl_id    => l_component_appl_id
52376       ,p_amb_context_code           => l_amb_context_code
52377       ,p_entity_code                => l_entity_code
52378       ,p_event_class_code           => l_event_class_code);
52379    --
52380    -- set accounting class
52381    --
52382    xla_ae_lines_pkg.SetAcctClass(
52383            p_accounting_class_code  => 'INTERCOMPANY_EXPENSE'
52384          , p_ae_header_id           => l_ae_header_id
52385          );
52386 
52387    --
52388    -- set rounding class
52389    --
52390    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
52391                       'INTERCOMPANY_EXPENSE';
52392 
52393    --
52394    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
52395    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
52396    --
52397    -- bulk performance
52398    --
52399    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
52400 
52401    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
52402       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
52403 
52404    -- 4955764
52405    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52406       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
52407 
52408    -- 4458381 Public Sector Enh
52409    
52410    --
52411    -- set accounting attributes for the line type
52412    --
52413    l_entered_amt_idx := 3;
52414    l_accted_amt_idx  := 8;
52415    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
52416    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
52417    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
52421    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
52418    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
52419    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
52420    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
52422    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
52423    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
52424    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
52425    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
52426    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
52427    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
52428    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
52429    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
52430    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
52431    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
52432 
52433    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
52434    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
52435 
52436    ---------------------------------------------------------------------------------------------------------------
52437    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
52438    ---------------------------------------------------------------------------------------------------------------
52439    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
52440 
52441    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52442    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52443 
52444    IF xla_accounting_cache_pkg.GetValueChar
52445          (p_source_code         => 'LEDGER_CATEGORY_CODE'
52446          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
52447    AND l_bflow_method_code = 'PRIOR_ENTRY'
52448 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
52449    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
52450          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
52451        )
52452    THEN
52453          xla_ae_lines_pkg.BflowUpgEntry
52454            (p_business_method_code    => l_bflow_method_code
52455            ,p_business_class_code     => l_bflow_class_code
52456            ,p_balance_type            => l_balance_type_code);
52457    ELSE
52458       NULL;
52459 -- No business flow processing for business flow method of NONE.
52460    END IF;
52461 
52462    --
52463    -- call analytical criteria
52464    --
52465    
52466    --
52467    -- call description
52468    --
52469    -- No description or it is inherited.
52470    --
52471    -- call ADRs
52472    -- Bug 4922099
52473    --
52474    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52475         (NVL(l_actual_upg_option, 'N') = 'O') OR
52476         (NVL(l_enc_upg_option, 'N') = 'O')
52477       )
52478    THEN
52479    NULL;
52480    --
52481    --
52482    
52483   l_ccid := AcctDerRule_16(
52484            p_application_id           => p_application_id
52485          , p_ae_header_id             => l_ae_header_id 
52486 , p_source_1 => p_source_1
52487 , p_source_2 => p_source_2
52488          , x_transaction_coa_id       => l_adr_transaction_coa_id
52489          , x_accounting_coa_id        => l_adr_accounting_coa_id
52490          , x_value_type_code          => l_adr_value_type_code
52491          , p_side                     => 'NA'
52492    );
52493 
52494    xla_ae_lines_pkg.set_ccid(
52495     p_code_combination_id          => l_ccid
52496   , p_value_type_code              => l_adr_value_type_code
52497   , p_transaction_coa_id           => l_adr_transaction_coa_id
52498   , p_accounting_coa_id            => l_adr_accounting_coa_id
52499   , p_adr_code                     => 'ICEXP'
52500   , p_adr_type_code                => 'S'
52501   , p_component_type               => l_component_type
52502   , p_component_code               => l_component_code
52503   , p_component_type_code          => l_component_type_code
52504   , p_component_appl_id            => l_component_appl_id
52505   , p_amb_context_code             => l_amb_context_code
52506   , p_side                         => 'NA'
52507   );
52508 
52509 
52510    --
52511    --
52512    END IF;
52513    --
52514    -- Bug 4922099
52515    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
52516           (NVL(l_enc_upg_option, 'N') = 'O')
52517         ) AND
52518         (l_bflow_method_code = 'PRIOR_ENTRY')
52519       )
52520    THEN
52521       IF
52522       --
52523       1 = 2
52524       --
52525       THEN
52526       xla_accounting_err_pkg.build_message
52527                                     (p_appli_s_name            => 'XLA'
52528                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52529                                     ,p_token_1                 => 'LINE_NUMBER'
52530                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
52531                                     ,p_token_2                 => 'LINE_TYPE_NAME'
52532                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
52536                                                                             ,l_component_appl_id
52533                                                                              l_component_type
52534                                                                             ,l_component_code
52535                                                                             ,l_component_type_code
52537                                                                             ,l_amb_context_code
52538                                                                             ,l_entity_code
52539                                                                             ,l_event_class_code
52540                                                                            )
52541                                     ,p_token_3                 => 'OWNER'
52542                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
52543                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
52544                                                                           ,p_lookup_code    => l_component_type_code
52545                                                                          )
52546                                     ,p_token_4                 => 'PRODUCT_NAME'
52547                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
52548                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
52549                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
52550                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
52551                                     ,p_ae_header_id            =>  NULL
52552                                        );
52553 
52554         IF (C_LEVEL_ERROR>= g_log_level) THEN
52555                  trace
52556                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52557                       ,p_level    => C_LEVEL_ERROR
52558                       ,p_module   => l_log_module);
52559         END IF;
52560       END IF;
52561    END IF;
52562    --
52563    --
52564    ------------------------------------------------------------------------------------------------
52565    -- 4219869 Business Flow
52566    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
52567    -- Prior Entry.  Currently, the following code is always generated.
52568    ------------------------------------------------------------------------------------------------
52569    XLA_AE_LINES_PKG.ValidateCurrentLine;
52570 
52571    ------------------------------------------------------------------------------------
52572    -- 4219869 Business Flow
52573    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
52574    ------------------------------------------------------------------------------------
52575    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52576 
52577    ----------------------------------------------------------------------------------
52578    -- 4219869 Business Flow
52579    -- Update journal entry status -- Need to generate this within IF <condition>
52580    ----------------------------------------------------------------------------------
52581    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52582          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
52583          ,p_balance_type_code => l_balance_type_code
52584          );
52585 
52586    -------------------------------------------------------------------------------------------
52587    -- 4262811 - Generate the Accrual Reversal lines
52588    -------------------------------------------------------------------------------------------
52589    BEGIN
52590       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
52591                               (g_array_event(p_event_id).array_value_num('header_index'));
52592       IF l_acc_rev_flag IS NULL THEN
52593          l_acc_rev_flag := 'N';
52594       END IF;
52595    EXCEPTION
52596       WHEN OTHERS THEN
52597          l_acc_rev_flag := 'N';
52598    END;
52599    --
52600    IF (l_acc_rev_flag = 'Y') THEN
52601 
52602        -- 4645092  ------------------------------------------------------------------------------
52603        -- To allow MPA report to determine if it should generate report process
52604        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
52605        ------------------------------------------------------------------------------------------
52606 
52607        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
52608        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
52609    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
52610    -- call ADRs
52611    -- Bug 4922099
52612    --
52613    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52614         (NVL(l_actual_upg_option, 'N') = 'O') OR
52615         (NVL(l_enc_upg_option, 'N') = 'O')
52616       )
52617    THEN
52618    NULL;
52619    --
52620    --
52621    
52622   l_ccid := AcctDerRule_16(
52623            p_application_id           => p_application_id
52624          , p_ae_header_id             => l_ae_header_id 
52625 , p_source_1 => p_source_1
52626 , p_source_2 => p_source_2
52627          , x_transaction_coa_id       => l_adr_transaction_coa_id
52628          , x_accounting_coa_id        => l_adr_accounting_coa_id
52632 
52629          , x_value_type_code          => l_adr_value_type_code
52630          , p_side                     => 'NA'
52631    );
52633    xla_ae_lines_pkg.set_ccid(
52634     p_code_combination_id          => l_ccid
52635   , p_value_type_code              => l_adr_value_type_code
52636   , p_transaction_coa_id           => l_adr_transaction_coa_id
52637   , p_accounting_coa_id            => l_adr_accounting_coa_id
52638   , p_adr_code                     => 'ICEXP'
52639   , p_adr_type_code                => 'S'
52640   , p_component_type               => l_component_type
52641   , p_component_code               => l_component_code
52642   , p_component_type_code          => l_component_type_code
52643   , p_component_appl_id            => l_component_appl_id
52644   , p_amb_context_code             => l_amb_context_code
52645   , p_side                         => 'NA'
52646   );
52647 
52648 
52649    --
52650    --
52651    END IF;
52652 
52653        --
52654        -- Update the line information that should be overwritten
52655        --
52656        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
52657                                          p_header_num   => 1);
52658        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
52659 
52660        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
52661 
52662        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
52663           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
52664        END IF;
52665 
52666       --
52667       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
52668       --
52669       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
52670           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
52671       ELSE
52672           ---------------------------------------------------------------------------------------------------
52673           -- 4262811a Switch Sign
52674           ---------------------------------------------------------------------------------------------------
52675           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
52676           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52677                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52678           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52679                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52680           -- 5132302
52681           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
52682                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52683 
52684       END IF;
52685 
52686       -- 4955764
52687       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52688       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
52689 
52690 
52691       XLA_AE_LINES_PKG.ValidateCurrentLine;
52692       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52693 
52694       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52695                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
52696                ,p_balance_type_code => l_balance_type_code);
52697 
52698    END IF;
52699 
52700    -----------------------------------------------------------------------------------------
52701    -- 4262811 Multiperiod Accounting
52702    -----------------------------------------------------------------------------------------
52703      -- No MPA option is assigned.
52704 
52705 
52706 END IF;
52707 END IF;
52708 --
52709 
52710 --
52711 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52712    trace
52713       (p_msg      => 'END of AcctLineType_127'
52714       ,p_level    => C_LEVEL_PROCEDURE
52715       ,p_module   => l_log_module);
52716 END IF;
52717 --
52718 EXCEPTION
52719   WHEN xla_exceptions_pkg.application_exception THEN
52720       RAISE;
52721   WHEN OTHERS THEN
52722        xla_exceptions_pkg.raise_message
52723            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_127');
52724 END AcctLineType_127;
52725 --
52726 
52727 ---------------------------------------
52728 --
52729 -- PRIVATE FUNCTION
52730 --         AcctLineType_128
52731 --
52732 ---------------------------------------
52733 PROCEDURE AcctLineType_128 (
52734   p_application_id        IN NUMBER
52735  ,p_event_id              IN NUMBER
52736  ,p_calculate_acctd_flag  IN VARCHAR2
52737  ,p_calculate_g_l_flag    IN VARCHAR2
52738  ,p_actual_flag           IN OUT VARCHAR2
52739  ,p_balance_type_code     OUT VARCHAR2
52740  ,p_gain_or_loss_ref      OUT VARCHAR2
52741  
52742 --Transaction Account
52743  , p_source_1            IN NUMBER
52744 --Journal Line Type
52745  , p_source_2            IN VARCHAR2
52746 --Entered Amount
52747  , p_source_3            IN NUMBER
52748 --First Distribution Identifier
52749  , p_source_5            IN NUMBER
52750 --Distribution Type
52754 --Currency Conversion Date
52751  , p_source_6            IN VARCHAR2
52752 --Currency Code
52753  , p_source_7            IN VARCHAR2
52755  , p_source_8            IN DATE
52756 --Currency Conversion Rate
52757  , p_source_9            IN NUMBER
52758 --Currency Conversion Type
52759  , p_source_10            IN VARCHAR2
52760 --Accounted Amount
52761  , p_source_11            IN NUMBER
52762 )
52763 IS
52764 
52765 l_component_type              VARCHAR2(80);
52766 l_component_code              VARCHAR2(30);
52767 l_component_type_code         VARCHAR2(1);
52768 l_component_appl_id           INTEGER;
52769 l_amb_context_code            VARCHAR2(30);
52770 l_entity_code                 VARCHAR2(30);
52771 l_event_class_code            VARCHAR2(30);
52772 l_ae_header_id                NUMBER;
52773 l_event_type_code             VARCHAR2(30);
52774 l_line_definition_code        VARCHAR2(30);
52775 l_line_definition_owner_code  VARCHAR2(1);
52776 --
52777 -- adr variables
52778 l_segment                     VARCHAR2(30);
52779 l_ccid                        NUMBER;
52780 l_adr_transaction_coa_id      NUMBER;
52781 l_adr_accounting_coa_id       NUMBER;
52782 l_adr_flexfield_segment_code  VARCHAR2(30);
52783 l_adr_flex_value_set_id       NUMBER;
52784 l_adr_value_type_code         VARCHAR2(30);
52785 l_adr_value_combination_id    NUMBER;
52786 l_adr_value_segment_code      VARCHAR2(30);
52787 
52788 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
52789 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
52790 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
52791 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
52792 
52793 -- 4262811 Variables ------------------------------------------------------------------------------------------
52794 l_entered_amt_idx             NUMBER;
52795 l_accted_amt_idx              NUMBER;
52796 l_acc_rev_flag                VARCHAR2(1);
52797 l_accrual_line_num            NUMBER;
52798 l_tmp_amt                     NUMBER;
52799 l_acc_rev_natural_side_code   VARCHAR2(1);
52800 
52801 l_num_entries                 NUMBER;
52802 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
52803 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
52804 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
52805 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
52806 l_recog_line_1                NUMBER;
52807 l_recog_line_2                NUMBER;
52808 
52809 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
52810 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
52811 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
52812 
52813 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
52814 
52815 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
52816 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
52817 
52818 ---------------------------------------------------------------------------------------------------------------
52819 
52820 
52821 --
52822 -- bulk performance
52823 --
52824 l_balance_type_code           VARCHAR2(1);
52825 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
52826 l_log_module                  VARCHAR2(240);
52827 
52828 --
52829 -- Upgrade strategy
52830 --
52831 l_actual_upg_option           VARCHAR2(1);
52832 l_enc_upg_option           VARCHAR2(1);
52833 
52834 --
52835 BEGIN
52836 --
52837 IF g_log_enabled THEN
52838       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_128';
52839 END IF;
52840 --
52841 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52842 
52843       trace
52844          (p_msg      => 'BEGIN of AcctLineType_128'
52845          ,p_level    => C_LEVEL_PROCEDURE
52846          ,p_module   => l_log_module);
52847 
52848 END IF;
52849 --
52850 l_component_type             := 'AMB_JLT';
52851 l_component_code             := 'ICEXP';
52852 l_component_type_code        := 'S';
52853 l_component_appl_id          :=  555;
52854 l_amb_context_code           := 'DEFAULT';
52855 l_entity_code                := 'INVENTORY';
52856 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
52857 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
52858 l_line_definition_owner_code := 'S';
52859 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
52860 --
52861 l_balance_type_code          := 'A';
52862 l_segment                     := NULL;
52863 l_ccid                        := NULL;
52864 l_adr_transaction_coa_id      := NULL;
52865 l_adr_accounting_coa_id       := NULL;
52866 l_adr_flexfield_segment_code  := NULL;
52867 l_adr_flex_value_set_id       := NULL;
52868 l_adr_value_type_code         := NULL;
52869 l_adr_value_combination_id    := NULL;
52870 l_adr_value_segment_code      := NULL;
52871 
52872 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
52873 l_bflow_class_code           := '';    -- 4219869 Business Flow
52874 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
52875 l_budgetary_control_flag     := 'N';
52876 
52877 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
52878 l_bflow_applied_to_amt       := NULL; -- 5132302
52882 l_accrual_line_num           := NULL;          -- 4262811
52879 l_entered_amt_idx            := NULL;          -- 4262811
52880 l_accted_amt_idx             := NULL;          -- 4262811
52881 l_acc_rev_flag               := NULL;          -- 4262811
52883 l_tmp_amt                    := NULL;          -- 4262811
52884 --
52885  
52886 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
52887     l_balance_type_code <> 'B' THEN
52888 IF NVL(p_source_2,'
52889 ') =  'ICEXP'
52890  THEN 
52891 
52892    --
52893    XLA_AE_LINES_PKG.SetNewLine;
52894 
52895    p_balance_type_code          := l_balance_type_code;
52896    -- set the flag so later we will know whether the gain loss line needs to be created
52897    
52898    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
52899      p_actual_flag :='A';
52900    END IF;
52901 
52902    --
52903    -- bulk performance
52904    --
52905    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
52906                                       p_header_num   => 0); -- 4262811
52907    --
52908    -- set accounting line options
52909    --
52910    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
52911            p_natural_side_code          => 'D'
52912          , p_gain_or_loss_flag          => 'N'
52913          , p_gl_transfer_mode_code      => 'D'
52914          , p_acct_entry_type_code       => 'A'
52915          , p_switch_side_flag           => 'Y'
52916          , p_merge_duplicate_code       => 'W'
52917          );
52918    --
52919    l_acc_rev_natural_side_code := 'C';  -- 4262811
52920    -- 
52921    --
52922    -- set accounting line type info
52923    --
52924    xla_ae_lines_pkg.SetAcctLineType
52925       (p_component_type             => l_component_type
52926       ,p_event_type_code            => l_event_type_code
52927       ,p_line_definition_owner_code => l_line_definition_owner_code
52928       ,p_line_definition_code       => l_line_definition_code
52929       ,p_accounting_line_code       => l_component_code
52930       ,p_accounting_line_type_code  => l_component_type_code
52931       ,p_accounting_line_appl_id    => l_component_appl_id
52932       ,p_amb_context_code           => l_amb_context_code
52933       ,p_entity_code                => l_entity_code
52934       ,p_event_class_code           => l_event_class_code);
52935    --
52936    -- set accounting class
52937    --
52938    xla_ae_lines_pkg.SetAcctClass(
52939            p_accounting_class_code  => 'INTERCOMPANY_EXPENSE'
52940          , p_ae_header_id           => l_ae_header_id
52941          );
52942 
52943    --
52944    -- set rounding class
52945    --
52946    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
52947                       'INTERCOMPANY_EXPENSE';
52948 
52949    --
52950    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
52951    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
52952    --
52953    -- bulk performance
52954    --
52955    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
52956 
52957    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
52958       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
52959 
52960    -- 4955764
52961    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52962       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
52963 
52964    -- 4458381 Public Sector Enh
52965    
52966    --
52967    -- set accounting attributes for the line type
52968    --
52969    l_entered_amt_idx := 3;
52970    l_accted_amt_idx  := 8;
52971    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
52972    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
52973    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
52974    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
52975    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
52976    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
52977    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
52978    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
52979    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
52980    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
52981    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
52982    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
52983    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
52984    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
52985    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
52986    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
52987    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
52988 
52989    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
52990    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
52991 
52992    ---------------------------------------------------------------------------------------------------------------
52993    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
52997    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52994    ---------------------------------------------------------------------------------------------------------------
52995    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
52996 
52998    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52999 
53000    IF xla_accounting_cache_pkg.GetValueChar
53001          (p_source_code         => 'LEDGER_CATEGORY_CODE'
53002          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
53003    AND l_bflow_method_code = 'PRIOR_ENTRY'
53004 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
53005    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
53006          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
53007        )
53008    THEN
53009          xla_ae_lines_pkg.BflowUpgEntry
53010            (p_business_method_code    => l_bflow_method_code
53011            ,p_business_class_code     => l_bflow_class_code
53012            ,p_balance_type            => l_balance_type_code);
53013    ELSE
53014       NULL;
53015 -- No business flow processing for business flow method of NONE.
53016    END IF;
53017 
53018    --
53019    -- call analytical criteria
53020    --
53021    
53022    --
53023    -- call description
53024    --
53025    -- No description or it is inherited.
53026    --
53027    -- call ADRs
53028    -- Bug 4922099
53029    --
53030    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53031         (NVL(l_actual_upg_option, 'N') = 'O') OR
53032         (NVL(l_enc_upg_option, 'N') = 'O')
53033       )
53034    THEN
53035    NULL;
53036    --
53037    --
53038    
53039   l_ccid := AcctDerRule_16(
53040            p_application_id           => p_application_id
53041          , p_ae_header_id             => l_ae_header_id 
53042 , p_source_1 => p_source_1
53043 , p_source_2 => p_source_2
53044          , x_transaction_coa_id       => l_adr_transaction_coa_id
53045          , x_accounting_coa_id        => l_adr_accounting_coa_id
53046          , x_value_type_code          => l_adr_value_type_code
53047          , p_side                     => 'NA'
53048    );
53049 
53050    xla_ae_lines_pkg.set_ccid(
53051     p_code_combination_id          => l_ccid
53052   , p_value_type_code              => l_adr_value_type_code
53053   , p_transaction_coa_id           => l_adr_transaction_coa_id
53054   , p_accounting_coa_id            => l_adr_accounting_coa_id
53055   , p_adr_code                     => 'ICEXP'
53056   , p_adr_type_code                => 'S'
53057   , p_component_type               => l_component_type
53058   , p_component_code               => l_component_code
53059   , p_component_type_code          => l_component_type_code
53060   , p_component_appl_id            => l_component_appl_id
53061   , p_amb_context_code             => l_amb_context_code
53062   , p_side                         => 'NA'
53063   );
53064 
53065 
53066    --
53067    --
53068    END IF;
53069    --
53070    -- Bug 4922099
53071    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
53072           (NVL(l_enc_upg_option, 'N') = 'O')
53073         ) AND
53074         (l_bflow_method_code = 'PRIOR_ENTRY')
53075       )
53076    THEN
53077       IF
53078       --
53079       1 = 2
53080       --
53081       THEN
53082       xla_accounting_err_pkg.build_message
53083                                     (p_appli_s_name            => 'XLA'
53084                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53085                                     ,p_token_1                 => 'LINE_NUMBER'
53086                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
53087                                     ,p_token_2                 => 'LINE_TYPE_NAME'
53088                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
53089                                                                              l_component_type
53090                                                                             ,l_component_code
53091                                                                             ,l_component_type_code
53092                                                                             ,l_component_appl_id
53093                                                                             ,l_amb_context_code
53094                                                                             ,l_entity_code
53095                                                                             ,l_event_class_code
53096                                                                            )
53097                                     ,p_token_3                 => 'OWNER'
53098                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
53099                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
53100                                                                           ,p_lookup_code    => l_component_type_code
53101                                                                          )
53102                                     ,p_token_4                 => 'PRODUCT_NAME'
53103                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53107                                     ,p_ae_header_id            =>  NULL
53104                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53105                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53106                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53108                                        );
53109 
53110         IF (C_LEVEL_ERROR>= g_log_level) THEN
53111                  trace
53112                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53113                       ,p_level    => C_LEVEL_ERROR
53114                       ,p_module   => l_log_module);
53115         END IF;
53116       END IF;
53117    END IF;
53118    --
53119    --
53120    ------------------------------------------------------------------------------------------------
53121    -- 4219869 Business Flow
53122    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53123    -- Prior Entry.  Currently, the following code is always generated.
53124    ------------------------------------------------------------------------------------------------
53125    XLA_AE_LINES_PKG.ValidateCurrentLine;
53126 
53127    ------------------------------------------------------------------------------------
53128    -- 4219869 Business Flow
53129    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53130    ------------------------------------------------------------------------------------
53131    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53132 
53133    ----------------------------------------------------------------------------------
53134    -- 4219869 Business Flow
53135    -- Update journal entry status -- Need to generate this within IF <condition>
53136    ----------------------------------------------------------------------------------
53137    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53138          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53139          ,p_balance_type_code => l_balance_type_code
53140          );
53141 
53142    -------------------------------------------------------------------------------------------
53143    -- 4262811 - Generate the Accrual Reversal lines
53144    -------------------------------------------------------------------------------------------
53145    BEGIN
53146       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53147                               (g_array_event(p_event_id).array_value_num('header_index'));
53148       IF l_acc_rev_flag IS NULL THEN
53149          l_acc_rev_flag := 'N';
53150       END IF;
53151    EXCEPTION
53152       WHEN OTHERS THEN
53153          l_acc_rev_flag := 'N';
53154    END;
53155    --
53156    IF (l_acc_rev_flag = 'Y') THEN
53157 
53158        -- 4645092  ------------------------------------------------------------------------------
53159        -- To allow MPA report to determine if it should generate report process
53160        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53161        ------------------------------------------------------------------------------------------
53162 
53163        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53164        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53165    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
53166    -- call ADRs
53167    -- Bug 4922099
53168    --
53169    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53170         (NVL(l_actual_upg_option, 'N') = 'O') OR
53171         (NVL(l_enc_upg_option, 'N') = 'O')
53172       )
53173    THEN
53174    NULL;
53175    --
53176    --
53177    
53178   l_ccid := AcctDerRule_16(
53179            p_application_id           => p_application_id
53180          , p_ae_header_id             => l_ae_header_id 
53181 , p_source_1 => p_source_1
53182 , p_source_2 => p_source_2
53183          , x_transaction_coa_id       => l_adr_transaction_coa_id
53184          , x_accounting_coa_id        => l_adr_accounting_coa_id
53185          , x_value_type_code          => l_adr_value_type_code
53186          , p_side                     => 'NA'
53187    );
53188 
53189    xla_ae_lines_pkg.set_ccid(
53190     p_code_combination_id          => l_ccid
53191   , p_value_type_code              => l_adr_value_type_code
53192   , p_transaction_coa_id           => l_adr_transaction_coa_id
53193   , p_accounting_coa_id            => l_adr_accounting_coa_id
53194   , p_adr_code                     => 'ICEXP'
53195   , p_adr_type_code                => 'S'
53196   , p_component_type               => l_component_type
53197   , p_component_code               => l_component_code
53198   , p_component_type_code          => l_component_type_code
53199   , p_component_appl_id            => l_component_appl_id
53200   , p_amb_context_code             => l_amb_context_code
53201   , p_side                         => 'NA'
53202   );
53203 
53204 
53205    --
53206    --
53207    END IF;
53208 
53209        --
53210        -- Update the line information that should be overwritten
53211        --
53212        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
53213                                          p_header_num   => 1);
53214        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
53218        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
53215 
53216        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
53217 
53219           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
53220        END IF;
53221 
53222       --
53223       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
53224       --
53225       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
53226           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
53227       ELSE
53228           ---------------------------------------------------------------------------------------------------
53229           -- 4262811a Switch Sign
53230           ---------------------------------------------------------------------------------------------------
53231           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
53232           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53233                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53234           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53235                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53236           -- 5132302
53237           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
53238                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53239 
53240       END IF;
53241 
53242       -- 4955764
53243       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53244       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
53245 
53246 
53247       XLA_AE_LINES_PKG.ValidateCurrentLine;
53248       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53249 
53250       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53251                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
53252                ,p_balance_type_code => l_balance_type_code);
53253 
53254    END IF;
53255 
53256    -----------------------------------------------------------------------------------------
53257    -- 4262811 Multiperiod Accounting
53258    -----------------------------------------------------------------------------------------
53259      -- No MPA option is assigned.
53260 
53261 
53262 END IF;
53263 END IF;
53264 --
53265 
53266 --
53267 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53268    trace
53269       (p_msg      => 'END of AcctLineType_128'
53270       ,p_level    => C_LEVEL_PROCEDURE
53271       ,p_module   => l_log_module);
53272 END IF;
53273 --
53274 EXCEPTION
53275   WHEN xla_exceptions_pkg.application_exception THEN
53276       RAISE;
53277   WHEN OTHERS THEN
53278        xla_exceptions_pkg.raise_message
53279            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_128');
53280 END AcctLineType_128;
53281 --
53282 
53283 ---------------------------------------
53284 --
53285 -- PRIVATE FUNCTION
53286 --         AcctLineType_129
53287 --
53288 ---------------------------------------
53289 PROCEDURE AcctLineType_129 (
53290   p_application_id        IN NUMBER
53291  ,p_event_id              IN NUMBER
53292  ,p_calculate_acctd_flag  IN VARCHAR2
53293  ,p_calculate_g_l_flag    IN VARCHAR2
53294  ,p_actual_flag           IN OUT VARCHAR2
53295  ,p_balance_type_code     OUT VARCHAR2
53296  ,p_gain_or_loss_ref      OUT VARCHAR2
53297  
53298 --Transaction Account
53299  , p_source_1            IN NUMBER
53300 --Journal Line Type
53301  , p_source_2            IN VARCHAR2
53302 --Entered Amount
53303  , p_source_3            IN NUMBER
53304 --First Distribution Identifier
53305  , p_source_5            IN NUMBER
53306 --Distribution Type
53307  , p_source_6            IN VARCHAR2
53308 --Currency Code
53309  , p_source_7            IN VARCHAR2
53310 --Currency Conversion Date
53311  , p_source_8            IN DATE
53312 --Currency Conversion Rate
53313  , p_source_9            IN NUMBER
53314 --Currency Conversion Type
53315  , p_source_10            IN VARCHAR2
53316 --Accounted Amount
53317  , p_source_11            IN NUMBER
53318 )
53319 IS
53320 
53321 l_component_type              VARCHAR2(80);
53322 l_component_code              VARCHAR2(30);
53323 l_component_type_code         VARCHAR2(1);
53324 l_component_appl_id           INTEGER;
53325 l_amb_context_code            VARCHAR2(30);
53326 l_entity_code                 VARCHAR2(30);
53327 l_event_class_code            VARCHAR2(30);
53328 l_ae_header_id                NUMBER;
53329 l_event_type_code             VARCHAR2(30);
53330 l_line_definition_code        VARCHAR2(30);
53331 l_line_definition_owner_code  VARCHAR2(1);
53332 --
53333 -- adr variables
53334 l_segment                     VARCHAR2(30);
53335 l_ccid                        NUMBER;
53336 l_adr_transaction_coa_id      NUMBER;
53337 l_adr_accounting_coa_id       NUMBER;
53338 l_adr_flexfield_segment_code  VARCHAR2(30);
53339 l_adr_flex_value_set_id       NUMBER;
53340 l_adr_value_type_code         VARCHAR2(30);
53341 l_adr_value_combination_id    NUMBER;
53345 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
53342 l_adr_value_segment_code      VARCHAR2(30);
53343 
53344 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
53346 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
53347 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
53348 
53349 -- 4262811 Variables ------------------------------------------------------------------------------------------
53350 l_entered_amt_idx             NUMBER;
53351 l_accted_amt_idx              NUMBER;
53352 l_acc_rev_flag                VARCHAR2(1);
53353 l_accrual_line_num            NUMBER;
53354 l_tmp_amt                     NUMBER;
53355 l_acc_rev_natural_side_code   VARCHAR2(1);
53356 
53357 l_num_entries                 NUMBER;
53358 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
53359 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
53360 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
53361 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
53362 l_recog_line_1                NUMBER;
53363 l_recog_line_2                NUMBER;
53364 
53365 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
53366 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
53367 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
53368 
53369 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
53370 
53371 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
53372 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
53373 
53374 ---------------------------------------------------------------------------------------------------------------
53375 
53376 
53377 --
53378 -- bulk performance
53379 --
53380 l_balance_type_code           VARCHAR2(1);
53381 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
53382 l_log_module                  VARCHAR2(240);
53383 
53384 --
53385 -- Upgrade strategy
53386 --
53387 l_actual_upg_option           VARCHAR2(1);
53388 l_enc_upg_option           VARCHAR2(1);
53389 
53390 --
53391 BEGIN
53392 --
53393 IF g_log_enabled THEN
53394       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_129';
53395 END IF;
53396 --
53397 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53398 
53399       trace
53400          (p_msg      => 'BEGIN of AcctLineType_129'
53401          ,p_level    => C_LEVEL_PROCEDURE
53402          ,p_module   => l_log_module);
53403 
53404 END IF;
53405 --
53406 l_component_type             := 'AMB_JLT';
53407 l_component_code             := 'ICEXP';
53408 l_component_type_code        := 'S';
53409 l_component_appl_id          :=  555;
53410 l_amb_context_code           := 'DEFAULT';
53411 l_entity_code                := 'INVENTORY';
53412 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
53413 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
53414 l_line_definition_owner_code := 'S';
53415 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
53416 --
53417 l_balance_type_code          := 'A';
53418 l_segment                     := NULL;
53419 l_ccid                        := NULL;
53420 l_adr_transaction_coa_id      := NULL;
53421 l_adr_accounting_coa_id       := NULL;
53422 l_adr_flexfield_segment_code  := NULL;
53423 l_adr_flex_value_set_id       := NULL;
53424 l_adr_value_type_code         := NULL;
53425 l_adr_value_combination_id    := NULL;
53426 l_adr_value_segment_code      := NULL;
53427 
53428 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
53429 l_bflow_class_code           := '';    -- 4219869 Business Flow
53430 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
53431 l_budgetary_control_flag     := 'N';
53432 
53433 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
53434 l_bflow_applied_to_amt       := NULL; -- 5132302
53435 l_entered_amt_idx            := NULL;          -- 4262811
53436 l_accted_amt_idx             := NULL;          -- 4262811
53437 l_acc_rev_flag               := NULL;          -- 4262811
53438 l_accrual_line_num           := NULL;          -- 4262811
53439 l_tmp_amt                    := NULL;          -- 4262811
53440 --
53441  
53442 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
53443     l_balance_type_code <> 'B' THEN
53444 IF NVL(p_source_2,'
53445 ') =  'ICEXP'
53446  THEN 
53447 
53448    --
53449    XLA_AE_LINES_PKG.SetNewLine;
53450 
53451    p_balance_type_code          := l_balance_type_code;
53452    -- set the flag so later we will know whether the gain loss line needs to be created
53453    
53454    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
53455      p_actual_flag :='A';
53456    END IF;
53457 
53458    --
53459    -- bulk performance
53460    --
53461    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
53462                                       p_header_num   => 0); -- 4262811
53463    --
53464    -- set accounting line options
53465    --
53466    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
53467            p_natural_side_code          => 'D'
53468          , p_gain_or_loss_flag          => 'N'
53472          , p_merge_duplicate_code       => 'W'
53469          , p_gl_transfer_mode_code      => 'D'
53470          , p_acct_entry_type_code       => 'A'
53471          , p_switch_side_flag           => 'Y'
53473          );
53474    --
53475    l_acc_rev_natural_side_code := 'C';  -- 4262811
53476    -- 
53477    --
53478    -- set accounting line type info
53479    --
53480    xla_ae_lines_pkg.SetAcctLineType
53481       (p_component_type             => l_component_type
53482       ,p_event_type_code            => l_event_type_code
53483       ,p_line_definition_owner_code => l_line_definition_owner_code
53484       ,p_line_definition_code       => l_line_definition_code
53485       ,p_accounting_line_code       => l_component_code
53486       ,p_accounting_line_type_code  => l_component_type_code
53487       ,p_accounting_line_appl_id    => l_component_appl_id
53488       ,p_amb_context_code           => l_amb_context_code
53489       ,p_entity_code                => l_entity_code
53490       ,p_event_class_code           => l_event_class_code);
53491    --
53492    -- set accounting class
53493    --
53494    xla_ae_lines_pkg.SetAcctClass(
53495            p_accounting_class_code  => 'INTERCOMPANY_EXPENSE'
53496          , p_ae_header_id           => l_ae_header_id
53497          );
53498 
53499    --
53500    -- set rounding class
53501    --
53502    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
53503                       'INTERCOMPANY_EXPENSE';
53504 
53505    --
53506    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
53507    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
53508    --
53509    -- bulk performance
53510    --
53511    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
53512 
53513    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
53514       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
53515 
53516    -- 4955764
53517    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53518       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
53519 
53520    -- 4458381 Public Sector Enh
53521    
53522    --
53523    -- set accounting attributes for the line type
53524    --
53525    l_entered_amt_idx := 3;
53526    l_accted_amt_idx  := 8;
53527    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
53528    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
53529    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
53530    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
53531    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
53532    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
53533    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
53534    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
53535    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
53536    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
53537    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
53538    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
53539    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
53540    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
53541    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
53542    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
53543    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
53544 
53545    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
53546    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
53547 
53548    ---------------------------------------------------------------------------------------------------------------
53549    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
53550    ---------------------------------------------------------------------------------------------------------------
53551    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
53552 
53553    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53554    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53555 
53556    IF xla_accounting_cache_pkg.GetValueChar
53557          (p_source_code         => 'LEDGER_CATEGORY_CODE'
53558          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
53559    AND l_bflow_method_code = 'PRIOR_ENTRY'
53560 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
53561    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
53562          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
53563        )
53564    THEN
53565          xla_ae_lines_pkg.BflowUpgEntry
53566            (p_business_method_code    => l_bflow_method_code
53567            ,p_business_class_code     => l_bflow_class_code
53568            ,p_balance_type            => l_balance_type_code);
53569    ELSE
53570       NULL;
53571 -- No business flow processing for business flow method of NONE.
53572    END IF;
53573 
53574    --
53575    -- call analytical criteria
53576    --
53577    
53578    --
53579    -- call description
53580    --
53584    -- Bug 4922099
53581    -- No description or it is inherited.
53582    --
53583    -- call ADRs
53585    --
53586    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53587         (NVL(l_actual_upg_option, 'N') = 'O') OR
53588         (NVL(l_enc_upg_option, 'N') = 'O')
53589       )
53590    THEN
53591    NULL;
53592    --
53593    --
53594    
53595   l_ccid := AcctDerRule_16(
53596            p_application_id           => p_application_id
53597          , p_ae_header_id             => l_ae_header_id 
53598 , p_source_1 => p_source_1
53599 , p_source_2 => p_source_2
53600          , x_transaction_coa_id       => l_adr_transaction_coa_id
53601          , x_accounting_coa_id        => l_adr_accounting_coa_id
53602          , x_value_type_code          => l_adr_value_type_code
53603          , p_side                     => 'NA'
53604    );
53605 
53606    xla_ae_lines_pkg.set_ccid(
53607     p_code_combination_id          => l_ccid
53608   , p_value_type_code              => l_adr_value_type_code
53609   , p_transaction_coa_id           => l_adr_transaction_coa_id
53610   , p_accounting_coa_id            => l_adr_accounting_coa_id
53611   , p_adr_code                     => 'ICEXP'
53612   , p_adr_type_code                => 'S'
53613   , p_component_type               => l_component_type
53614   , p_component_code               => l_component_code
53615   , p_component_type_code          => l_component_type_code
53616   , p_component_appl_id            => l_component_appl_id
53617   , p_amb_context_code             => l_amb_context_code
53618   , p_side                         => 'NA'
53619   );
53620 
53621 
53622    --
53623    --
53624    END IF;
53625    --
53626    -- Bug 4922099
53627    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
53628           (NVL(l_enc_upg_option, 'N') = 'O')
53629         ) AND
53630         (l_bflow_method_code = 'PRIOR_ENTRY')
53631       )
53632    THEN
53633       IF
53634       --
53635       1 = 2
53636       --
53637       THEN
53638       xla_accounting_err_pkg.build_message
53639                                     (p_appli_s_name            => 'XLA'
53640                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53641                                     ,p_token_1                 => 'LINE_NUMBER'
53642                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
53643                                     ,p_token_2                 => 'LINE_TYPE_NAME'
53644                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
53645                                                                              l_component_type
53646                                                                             ,l_component_code
53647                                                                             ,l_component_type_code
53648                                                                             ,l_component_appl_id
53649                                                                             ,l_amb_context_code
53650                                                                             ,l_entity_code
53651                                                                             ,l_event_class_code
53652                                                                            )
53653                                     ,p_token_3                 => 'OWNER'
53654                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
53655                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
53656                                                                           ,p_lookup_code    => l_component_type_code
53657                                                                          )
53658                                     ,p_token_4                 => 'PRODUCT_NAME'
53659                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53660                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53661                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53662                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53663                                     ,p_ae_header_id            =>  NULL
53664                                        );
53665 
53666         IF (C_LEVEL_ERROR>= g_log_level) THEN
53667                  trace
53668                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53669                       ,p_level    => C_LEVEL_ERROR
53670                       ,p_module   => l_log_module);
53671         END IF;
53672       END IF;
53673    END IF;
53674    --
53675    --
53676    ------------------------------------------------------------------------------------------------
53677    -- 4219869 Business Flow
53678    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53679    -- Prior Entry.  Currently, the following code is always generated.
53680    ------------------------------------------------------------------------------------------------
53681    XLA_AE_LINES_PKG.ValidateCurrentLine;
53682 
53683    ------------------------------------------------------------------------------------
53684    -- 4219869 Business Flow
53685    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53689    ----------------------------------------------------------------------------------
53686    ------------------------------------------------------------------------------------
53687    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53688 
53690    -- 4219869 Business Flow
53691    -- Update journal entry status -- Need to generate this within IF <condition>
53692    ----------------------------------------------------------------------------------
53693    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53694          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53695          ,p_balance_type_code => l_balance_type_code
53696          );
53697 
53698    -------------------------------------------------------------------------------------------
53699    -- 4262811 - Generate the Accrual Reversal lines
53700    -------------------------------------------------------------------------------------------
53701    BEGIN
53702       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53703                               (g_array_event(p_event_id).array_value_num('header_index'));
53704       IF l_acc_rev_flag IS NULL THEN
53705          l_acc_rev_flag := 'N';
53706       END IF;
53707    EXCEPTION
53708       WHEN OTHERS THEN
53709          l_acc_rev_flag := 'N';
53710    END;
53711    --
53712    IF (l_acc_rev_flag = 'Y') THEN
53713 
53714        -- 4645092  ------------------------------------------------------------------------------
53715        -- To allow MPA report to determine if it should generate report process
53716        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53717        ------------------------------------------------------------------------------------------
53718 
53719        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53720        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53721    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
53722    -- call ADRs
53723    -- Bug 4922099
53724    --
53725    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53726         (NVL(l_actual_upg_option, 'N') = 'O') OR
53727         (NVL(l_enc_upg_option, 'N') = 'O')
53728       )
53729    THEN
53730    NULL;
53731    --
53732    --
53733    
53734   l_ccid := AcctDerRule_16(
53735            p_application_id           => p_application_id
53736          , p_ae_header_id             => l_ae_header_id 
53737 , p_source_1 => p_source_1
53738 , p_source_2 => p_source_2
53739          , x_transaction_coa_id       => l_adr_transaction_coa_id
53740          , x_accounting_coa_id        => l_adr_accounting_coa_id
53741          , x_value_type_code          => l_adr_value_type_code
53742          , p_side                     => 'NA'
53743    );
53744 
53745    xla_ae_lines_pkg.set_ccid(
53746     p_code_combination_id          => l_ccid
53747   , p_value_type_code              => l_adr_value_type_code
53748   , p_transaction_coa_id           => l_adr_transaction_coa_id
53749   , p_accounting_coa_id            => l_adr_accounting_coa_id
53750   , p_adr_code                     => 'ICEXP'
53751   , p_adr_type_code                => 'S'
53752   , p_component_type               => l_component_type
53753   , p_component_code               => l_component_code
53754   , p_component_type_code          => l_component_type_code
53755   , p_component_appl_id            => l_component_appl_id
53756   , p_amb_context_code             => l_amb_context_code
53757   , p_side                         => 'NA'
53758   );
53759 
53760 
53761    --
53762    --
53763    END IF;
53764 
53765        --
53766        -- Update the line information that should be overwritten
53767        --
53768        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
53769                                          p_header_num   => 1);
53770        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
53771 
53772        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
53773 
53774        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
53775           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
53776        END IF;
53777 
53778       --
53779       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
53780       --
53781       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
53782           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
53783       ELSE
53784           ---------------------------------------------------------------------------------------------------
53785           -- 4262811a Switch Sign
53786           ---------------------------------------------------------------------------------------------------
53787           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
53788           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53789                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53790           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53791                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53792           -- 5132302
53796       END IF;
53793           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
53794                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53795 
53797 
53798       -- 4955764
53799       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53800       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
53801 
53802 
53803       XLA_AE_LINES_PKG.ValidateCurrentLine;
53804       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53805 
53806       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53807                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
53808                ,p_balance_type_code => l_balance_type_code);
53809 
53810    END IF;
53811 
53812    -----------------------------------------------------------------------------------------
53813    -- 4262811 Multiperiod Accounting
53814    -----------------------------------------------------------------------------------------
53815      -- No MPA option is assigned.
53816 
53817 
53818 END IF;
53819 END IF;
53820 --
53821 
53822 --
53823 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53824    trace
53825       (p_msg      => 'END of AcctLineType_129'
53826       ,p_level    => C_LEVEL_PROCEDURE
53827       ,p_module   => l_log_module);
53828 END IF;
53829 --
53830 EXCEPTION
53831   WHEN xla_exceptions_pkg.application_exception THEN
53832       RAISE;
53833   WHEN OTHERS THEN
53834        xla_exceptions_pkg.raise_message
53835            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_129');
53836 END AcctLineType_129;
53837 --
53838 
53839 ---------------------------------------
53840 --
53841 -- PRIVATE FUNCTION
53842 --         AcctLineType_130
53843 --
53844 ---------------------------------------
53845 PROCEDURE AcctLineType_130 (
53846   p_application_id        IN NUMBER
53847  ,p_event_id              IN NUMBER
53848  ,p_calculate_acctd_flag  IN VARCHAR2
53849  ,p_calculate_g_l_flag    IN VARCHAR2
53850  ,p_actual_flag           IN OUT VARCHAR2
53851  ,p_balance_type_code     OUT VARCHAR2
53852  ,p_gain_or_loss_ref      OUT VARCHAR2
53853  
53854 --Transaction Account
53855  , p_source_1            IN NUMBER
53856 --Journal Line Type
53857  , p_source_2            IN VARCHAR2
53858 --Entered Amount
53859  , p_source_3            IN NUMBER
53860 --First Distribution Identifier
53861  , p_source_5            IN NUMBER
53862 --Distribution Type
53863  , p_source_6            IN VARCHAR2
53864 --Currency Code
53865  , p_source_7            IN VARCHAR2
53866 --Currency Conversion Date
53867  , p_source_8            IN DATE
53868 --Currency Conversion Rate
53869  , p_source_9            IN NUMBER
53870 --Currency Conversion Type
53871  , p_source_10            IN VARCHAR2
53872 --Accounted Amount
53873  , p_source_11            IN NUMBER
53874 )
53875 IS
53876 
53877 l_component_type              VARCHAR2(80);
53878 l_component_code              VARCHAR2(30);
53879 l_component_type_code         VARCHAR2(1);
53880 l_component_appl_id           INTEGER;
53881 l_amb_context_code            VARCHAR2(30);
53882 l_entity_code                 VARCHAR2(30);
53883 l_event_class_code            VARCHAR2(30);
53884 l_ae_header_id                NUMBER;
53885 l_event_type_code             VARCHAR2(30);
53886 l_line_definition_code        VARCHAR2(30);
53887 l_line_definition_owner_code  VARCHAR2(1);
53888 --
53889 -- adr variables
53890 l_segment                     VARCHAR2(30);
53891 l_ccid                        NUMBER;
53892 l_adr_transaction_coa_id      NUMBER;
53893 l_adr_accounting_coa_id       NUMBER;
53894 l_adr_flexfield_segment_code  VARCHAR2(30);
53895 l_adr_flex_value_set_id       NUMBER;
53896 l_adr_value_type_code         VARCHAR2(30);
53897 l_adr_value_combination_id    NUMBER;
53898 l_adr_value_segment_code      VARCHAR2(30);
53899 
53900 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
53901 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
53902 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
53903 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
53904 
53905 -- 4262811 Variables ------------------------------------------------------------------------------------------
53906 l_entered_amt_idx             NUMBER;
53907 l_accted_amt_idx              NUMBER;
53908 l_acc_rev_flag                VARCHAR2(1);
53909 l_accrual_line_num            NUMBER;
53910 l_tmp_amt                     NUMBER;
53911 l_acc_rev_natural_side_code   VARCHAR2(1);
53912 
53913 l_num_entries                 NUMBER;
53914 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
53915 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
53916 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
53917 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
53918 l_recog_line_1                NUMBER;
53919 l_recog_line_2                NUMBER;
53920 
53921 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
53922 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
53926 
53923 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
53924 
53925 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
53927 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
53928 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
53929 
53930 ---------------------------------------------------------------------------------------------------------------
53931 
53932 
53933 --
53934 -- bulk performance
53935 --
53936 l_balance_type_code           VARCHAR2(1);
53937 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
53938 l_log_module                  VARCHAR2(240);
53939 
53940 --
53941 -- Upgrade strategy
53942 --
53943 l_actual_upg_option           VARCHAR2(1);
53944 l_enc_upg_option           VARCHAR2(1);
53945 
53946 --
53947 BEGIN
53948 --
53949 IF g_log_enabled THEN
53950       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_130';
53951 END IF;
53952 --
53953 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53954 
53955       trace
53956          (p_msg      => 'BEGIN of AcctLineType_130'
53957          ,p_level    => C_LEVEL_PROCEDURE
53958          ,p_module   => l_log_module);
53959 
53960 END IF;
53961 --
53962 l_component_type             := 'AMB_JLT';
53963 l_component_code             := 'ICEXP';
53964 l_component_type_code        := 'S';
53965 l_component_appl_id          :=  555;
53966 l_amb_context_code           := 'DEFAULT';
53967 l_entity_code                := 'INVENTORY';
53968 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
53969 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_TP';
53970 l_line_definition_owner_code := 'S';
53971 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP_TP';
53972 --
53973 l_balance_type_code          := 'A';
53974 l_segment                     := NULL;
53975 l_ccid                        := NULL;
53976 l_adr_transaction_coa_id      := NULL;
53977 l_adr_accounting_coa_id       := NULL;
53978 l_adr_flexfield_segment_code  := NULL;
53979 l_adr_flex_value_set_id       := NULL;
53980 l_adr_value_type_code         := NULL;
53981 l_adr_value_combination_id    := NULL;
53982 l_adr_value_segment_code      := NULL;
53983 
53984 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
53985 l_bflow_class_code           := '';    -- 4219869 Business Flow
53986 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
53987 l_budgetary_control_flag     := 'N';
53988 
53989 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
53990 l_bflow_applied_to_amt       := NULL; -- 5132302
53991 l_entered_amt_idx            := NULL;          -- 4262811
53992 l_accted_amt_idx             := NULL;          -- 4262811
53993 l_acc_rev_flag               := NULL;          -- 4262811
53994 l_accrual_line_num           := NULL;          -- 4262811
53995 l_tmp_amt                    := NULL;          -- 4262811
53996 --
53997  
53998 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
53999     l_balance_type_code <> 'B' THEN
54000 IF NVL(p_source_2,'
54001 ') =  'ICEXP'
54002  THEN 
54003 
54004    --
54005    XLA_AE_LINES_PKG.SetNewLine;
54006 
54007    p_balance_type_code          := l_balance_type_code;
54008    -- set the flag so later we will know whether the gain loss line needs to be created
54009    
54010    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54011      p_actual_flag :='A';
54012    END IF;
54013 
54014    --
54015    -- bulk performance
54016    --
54017    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54018                                       p_header_num   => 0); -- 4262811
54019    --
54020    -- set accounting line options
54021    --
54022    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54023            p_natural_side_code          => 'D'
54024          , p_gain_or_loss_flag          => 'N'
54025          , p_gl_transfer_mode_code      => 'D'
54026          , p_acct_entry_type_code       => 'A'
54027          , p_switch_side_flag           => 'Y'
54028          , p_merge_duplicate_code       => 'W'
54029          );
54030    --
54031    l_acc_rev_natural_side_code := 'C';  -- 4262811
54032    -- 
54033    --
54034    -- set accounting line type info
54035    --
54036    xla_ae_lines_pkg.SetAcctLineType
54037       (p_component_type             => l_component_type
54038       ,p_event_type_code            => l_event_type_code
54039       ,p_line_definition_owner_code => l_line_definition_owner_code
54040       ,p_line_definition_code       => l_line_definition_code
54041       ,p_accounting_line_code       => l_component_code
54042       ,p_accounting_line_type_code  => l_component_type_code
54043       ,p_accounting_line_appl_id    => l_component_appl_id
54044       ,p_amb_context_code           => l_amb_context_code
54045       ,p_entity_code                => l_entity_code
54046       ,p_event_class_code           => l_event_class_code);
54047    --
54048    -- set accounting class
54049    --
54050    xla_ae_lines_pkg.SetAcctClass(
54051            p_accounting_class_code  => 'INTERCOMPANY_EXPENSE'
54052          , p_ae_header_id           => l_ae_header_id
54053          );
54054 
54055    --
54056    -- set rounding class
54057    --
54061    --
54058    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54059                       'INTERCOMPANY_EXPENSE';
54060 
54062    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54063    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54064    --
54065    -- bulk performance
54066    --
54067    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54068 
54069    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54070       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54071 
54072    -- 4955764
54073    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54074       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54075 
54076    -- 4458381 Public Sector Enh
54077    
54078    --
54079    -- set accounting attributes for the line type
54080    --
54081    l_entered_amt_idx := 3;
54082    l_accted_amt_idx  := 8;
54083    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
54084    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
54085    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
54086    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
54087    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
54088    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
54089    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
54090    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
54091    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
54092    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
54093    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
54094    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
54095    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
54096    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
54097    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
54098    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
54099    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
54100 
54101    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54102    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54103 
54104    ---------------------------------------------------------------------------------------------------------------
54105    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54106    ---------------------------------------------------------------------------------------------------------------
54107    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54108 
54109    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54110    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54111 
54112    IF xla_accounting_cache_pkg.GetValueChar
54113          (p_source_code         => 'LEDGER_CATEGORY_CODE'
54114          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54115    AND l_bflow_method_code = 'PRIOR_ENTRY'
54116 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54117    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54118          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54119        )
54120    THEN
54121          xla_ae_lines_pkg.BflowUpgEntry
54122            (p_business_method_code    => l_bflow_method_code
54123            ,p_business_class_code     => l_bflow_class_code
54124            ,p_balance_type            => l_balance_type_code);
54125    ELSE
54126       NULL;
54127 -- No business flow processing for business flow method of NONE.
54128    END IF;
54129 
54130    --
54131    -- call analytical criteria
54132    --
54133    
54134    --
54135    -- call description
54136    --
54137    -- No description or it is inherited.
54138    --
54139    -- call ADRs
54140    -- Bug 4922099
54141    --
54142    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54143         (NVL(l_actual_upg_option, 'N') = 'O') OR
54144         (NVL(l_enc_upg_option, 'N') = 'O')
54145       )
54146    THEN
54147    NULL;
54148    --
54149    --
54150    
54151   l_ccid := AcctDerRule_16(
54152            p_application_id           => p_application_id
54153          , p_ae_header_id             => l_ae_header_id 
54154 , p_source_1 => p_source_1
54155 , p_source_2 => p_source_2
54156          , x_transaction_coa_id       => l_adr_transaction_coa_id
54157          , x_accounting_coa_id        => l_adr_accounting_coa_id
54158          , x_value_type_code          => l_adr_value_type_code
54159          , p_side                     => 'NA'
54160    );
54161 
54162    xla_ae_lines_pkg.set_ccid(
54163     p_code_combination_id          => l_ccid
54164   , p_value_type_code              => l_adr_value_type_code
54165   , p_transaction_coa_id           => l_adr_transaction_coa_id
54166   , p_accounting_coa_id            => l_adr_accounting_coa_id
54167   , p_adr_code                     => 'ICEXP'
54168   , p_adr_type_code                => 'S'
54169   , p_component_type               => l_component_type
54170   , p_component_code               => l_component_code
54174   , p_side                         => 'NA'
54171   , p_component_type_code          => l_component_type_code
54172   , p_component_appl_id            => l_component_appl_id
54173   , p_amb_context_code             => l_amb_context_code
54175   );
54176 
54177 
54178    --
54179    --
54180    END IF;
54181    --
54182    -- Bug 4922099
54183    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54184           (NVL(l_enc_upg_option, 'N') = 'O')
54185         ) AND
54186         (l_bflow_method_code = 'PRIOR_ENTRY')
54187       )
54188    THEN
54189       IF
54190       --
54191       1 = 2
54192       --
54193       THEN
54194       xla_accounting_err_pkg.build_message
54195                                     (p_appli_s_name            => 'XLA'
54196                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54197                                     ,p_token_1                 => 'LINE_NUMBER'
54198                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
54199                                     ,p_token_2                 => 'LINE_TYPE_NAME'
54200                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
54201                                                                              l_component_type
54202                                                                             ,l_component_code
54203                                                                             ,l_component_type_code
54204                                                                             ,l_component_appl_id
54205                                                                             ,l_amb_context_code
54206                                                                             ,l_entity_code
54207                                                                             ,l_event_class_code
54208                                                                            )
54209                                     ,p_token_3                 => 'OWNER'
54210                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
54211                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
54212                                                                           ,p_lookup_code    => l_component_type_code
54213                                                                          )
54214                                     ,p_token_4                 => 'PRODUCT_NAME'
54215                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54216                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54217                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54218                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54219                                     ,p_ae_header_id            =>  NULL
54220                                        );
54221 
54222         IF (C_LEVEL_ERROR>= g_log_level) THEN
54223                  trace
54224                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54225                       ,p_level    => C_LEVEL_ERROR
54226                       ,p_module   => l_log_module);
54227         END IF;
54228       END IF;
54229    END IF;
54230    --
54231    --
54232    ------------------------------------------------------------------------------------------------
54233    -- 4219869 Business Flow
54234    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54235    -- Prior Entry.  Currently, the following code is always generated.
54236    ------------------------------------------------------------------------------------------------
54237    XLA_AE_LINES_PKG.ValidateCurrentLine;
54238 
54239    ------------------------------------------------------------------------------------
54240    -- 4219869 Business Flow
54241    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54242    ------------------------------------------------------------------------------------
54243    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54244 
54245    ----------------------------------------------------------------------------------
54246    -- 4219869 Business Flow
54247    -- Update journal entry status -- Need to generate this within IF <condition>
54248    ----------------------------------------------------------------------------------
54249    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54250          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54251          ,p_balance_type_code => l_balance_type_code
54252          );
54253 
54254    -------------------------------------------------------------------------------------------
54255    -- 4262811 - Generate the Accrual Reversal lines
54256    -------------------------------------------------------------------------------------------
54257    BEGIN
54258       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54259                               (g_array_event(p_event_id).array_value_num('header_index'));
54260       IF l_acc_rev_flag IS NULL THEN
54261          l_acc_rev_flag := 'N';
54262       END IF;
54263    EXCEPTION
54264       WHEN OTHERS THEN
54265          l_acc_rev_flag := 'N';
54266    END;
54267    --
54268    IF (l_acc_rev_flag = 'Y') THEN
54272        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54269 
54270        -- 4645092  ------------------------------------------------------------------------------
54271        -- To allow MPA report to determine if it should generate report process
54273        ------------------------------------------------------------------------------------------
54274 
54275        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54276        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54277    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
54278    -- call ADRs
54279    -- Bug 4922099
54280    --
54281    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54282         (NVL(l_actual_upg_option, 'N') = 'O') OR
54283         (NVL(l_enc_upg_option, 'N') = 'O')
54284       )
54285    THEN
54286    NULL;
54287    --
54288    --
54289    
54290   l_ccid := AcctDerRule_16(
54291            p_application_id           => p_application_id
54292          , p_ae_header_id             => l_ae_header_id 
54293 , p_source_1 => p_source_1
54294 , p_source_2 => p_source_2
54295          , x_transaction_coa_id       => l_adr_transaction_coa_id
54296          , x_accounting_coa_id        => l_adr_accounting_coa_id
54297          , x_value_type_code          => l_adr_value_type_code
54298          , p_side                     => 'NA'
54299    );
54300 
54301    xla_ae_lines_pkg.set_ccid(
54302     p_code_combination_id          => l_ccid
54303   , p_value_type_code              => l_adr_value_type_code
54304   , p_transaction_coa_id           => l_adr_transaction_coa_id
54305   , p_accounting_coa_id            => l_adr_accounting_coa_id
54306   , p_adr_code                     => 'ICEXP'
54307   , p_adr_type_code                => 'S'
54308   , p_component_type               => l_component_type
54309   , p_component_code               => l_component_code
54310   , p_component_type_code          => l_component_type_code
54311   , p_component_appl_id            => l_component_appl_id
54312   , p_amb_context_code             => l_amb_context_code
54313   , p_side                         => 'NA'
54314   );
54315 
54316 
54317    --
54318    --
54319    END IF;
54320 
54321        --
54322        -- Update the line information that should be overwritten
54323        --
54324        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54325                                          p_header_num   => 1);
54326        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
54327 
54328        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54329 
54330        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
54331           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54332        END IF;
54333 
54334       --
54335       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54336       --
54337       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54338           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
54339       ELSE
54340           ---------------------------------------------------------------------------------------------------
54341           -- 4262811a Switch Sign
54342           ---------------------------------------------------------------------------------------------------
54343           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
54344           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54345                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54346           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54347                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54348           -- 5132302
54349           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54350                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54351 
54352       END IF;
54353 
54354       -- 4955764
54355       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54356       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54357 
54358 
54359       XLA_AE_LINES_PKG.ValidateCurrentLine;
54360       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54361 
54362       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54363                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54364                ,p_balance_type_code => l_balance_type_code);
54365 
54366    END IF;
54367 
54368    -----------------------------------------------------------------------------------------
54369    -- 4262811 Multiperiod Accounting
54370    -----------------------------------------------------------------------------------------
54371      -- No MPA option is assigned.
54372 
54373 
54374 END IF;
54375 END IF;
54376 --
54377 
54378 --
54379 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54380    trace
54381       (p_msg      => 'END of AcctLineType_130'
54382       ,p_level    => C_LEVEL_PROCEDURE
54386 EXCEPTION
54383       ,p_module   => l_log_module);
54384 END IF;
54385 --
54387   WHEN xla_exceptions_pkg.application_exception THEN
54388       RAISE;
54389   WHEN OTHERS THEN
54390        xla_exceptions_pkg.raise_message
54391            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_130');
54392 END AcctLineType_130;
54393 --
54394 
54395 ---------------------------------------
54396 --
54397 -- PRIVATE FUNCTION
54398 --         AcctLineType_131
54399 --
54400 ---------------------------------------
54401 PROCEDURE AcctLineType_131 (
54402   p_application_id        IN NUMBER
54403  ,p_event_id              IN NUMBER
54404  ,p_calculate_acctd_flag  IN VARCHAR2
54405  ,p_calculate_g_l_flag    IN VARCHAR2
54406  ,p_actual_flag           IN OUT VARCHAR2
54407  ,p_balance_type_code     OUT VARCHAR2
54408  ,p_gain_or_loss_ref      OUT VARCHAR2
54409  
54410 --Transaction Account
54411  , p_source_1            IN NUMBER
54412 --Journal Line Type
54413  , p_source_2            IN VARCHAR2
54414 --Entered Amount
54415  , p_source_3            IN NUMBER
54416 --First Distribution Identifier
54417  , p_source_5            IN NUMBER
54418 --Distribution Type
54419  , p_source_6            IN VARCHAR2
54420 --Currency Code
54421  , p_source_7            IN VARCHAR2
54422 --Currency Conversion Date
54423  , p_source_8            IN DATE
54424 --Currency Conversion Rate
54425  , p_source_9            IN NUMBER
54426 --Currency Conversion Type
54427  , p_source_10            IN VARCHAR2
54428 --Accounted Amount
54429  , p_source_11            IN NUMBER
54430 )
54431 IS
54432 
54433 l_component_type              VARCHAR2(80);
54434 l_component_code              VARCHAR2(30);
54435 l_component_type_code         VARCHAR2(1);
54436 l_component_appl_id           INTEGER;
54437 l_amb_context_code            VARCHAR2(30);
54438 l_entity_code                 VARCHAR2(30);
54439 l_event_class_code            VARCHAR2(30);
54440 l_ae_header_id                NUMBER;
54441 l_event_type_code             VARCHAR2(30);
54442 l_line_definition_code        VARCHAR2(30);
54443 l_line_definition_owner_code  VARCHAR2(1);
54444 --
54445 -- adr variables
54446 l_segment                     VARCHAR2(30);
54447 l_ccid                        NUMBER;
54448 l_adr_transaction_coa_id      NUMBER;
54449 l_adr_accounting_coa_id       NUMBER;
54450 l_adr_flexfield_segment_code  VARCHAR2(30);
54451 l_adr_flex_value_set_id       NUMBER;
54452 l_adr_value_type_code         VARCHAR2(30);
54453 l_adr_value_combination_id    NUMBER;
54454 l_adr_value_segment_code      VARCHAR2(30);
54455 
54456 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
54457 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
54458 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
54459 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
54460 
54461 -- 4262811 Variables ------------------------------------------------------------------------------------------
54462 l_entered_amt_idx             NUMBER;
54463 l_accted_amt_idx              NUMBER;
54464 l_acc_rev_flag                VARCHAR2(1);
54465 l_accrual_line_num            NUMBER;
54466 l_tmp_amt                     NUMBER;
54467 l_acc_rev_natural_side_code   VARCHAR2(1);
54468 
54469 l_num_entries                 NUMBER;
54470 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
54471 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
54472 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
54473 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
54474 l_recog_line_1                NUMBER;
54475 l_recog_line_2                NUMBER;
54476 
54477 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
54478 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
54479 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
54480 
54481 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
54482 
54483 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
54484 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
54485 
54486 ---------------------------------------------------------------------------------------------------------------
54487 
54488 
54489 --
54490 -- bulk performance
54491 --
54492 l_balance_type_code           VARCHAR2(1);
54493 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
54494 l_log_module                  VARCHAR2(240);
54495 
54496 --
54497 -- Upgrade strategy
54498 --
54499 l_actual_upg_option           VARCHAR2(1);
54500 l_enc_upg_option           VARCHAR2(1);
54501 
54502 --
54503 BEGIN
54504 --
54505 IF g_log_enabled THEN
54506       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_131';
54507 END IF;
54508 --
54509 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54510 
54511       trace
54512          (p_msg      => 'BEGIN of AcctLineType_131'
54513          ,p_level    => C_LEVEL_PROCEDURE
54514          ,p_module   => l_log_module);
54515 
54516 END IF;
54517 --
54518 l_component_type             := 'AMB_JLT';
54522 l_amb_context_code           := 'DEFAULT';
54519 l_component_code             := 'INV';
54520 l_component_type_code        := 'S';
54521 l_component_appl_id          :=  555;
54523 l_entity_code                := 'INVENTORY';
54524 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
54525 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_TP';
54526 l_line_definition_owner_code := 'S';
54527 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP_TP';
54528 --
54529 l_balance_type_code          := 'A';
54530 l_segment                     := NULL;
54531 l_ccid                        := NULL;
54532 l_adr_transaction_coa_id      := NULL;
54533 l_adr_accounting_coa_id       := NULL;
54534 l_adr_flexfield_segment_code  := NULL;
54535 l_adr_flex_value_set_id       := NULL;
54536 l_adr_value_type_code         := NULL;
54537 l_adr_value_combination_id    := NULL;
54538 l_adr_value_segment_code      := NULL;
54539 
54540 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
54541 l_bflow_class_code           := '';    -- 4219869 Business Flow
54542 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
54543 l_budgetary_control_flag     := 'N';
54544 
54545 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
54546 l_bflow_applied_to_amt       := NULL; -- 5132302
54547 l_entered_amt_idx            := NULL;          -- 4262811
54548 l_accted_amt_idx             := NULL;          -- 4262811
54549 l_acc_rev_flag               := NULL;          -- 4262811
54550 l_accrual_line_num           := NULL;          -- 4262811
54551 l_tmp_amt                    := NULL;          -- 4262811
54552 --
54553  
54554 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54555     l_balance_type_code <> 'B' THEN
54556 IF NVL(p_source_2,'
54557 ') =  'INV'
54558  THEN 
54559 
54560    --
54561    XLA_AE_LINES_PKG.SetNewLine;
54562 
54563    p_balance_type_code          := l_balance_type_code;
54564    -- set the flag so later we will know whether the gain loss line needs to be created
54565    
54566    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54567      p_actual_flag :='A';
54568    END IF;
54569 
54570    --
54571    -- bulk performance
54572    --
54573    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54574                                       p_header_num   => 0); -- 4262811
54575    --
54576    -- set accounting line options
54577    --
54578    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54579            p_natural_side_code          => 'D'
54580          , p_gain_or_loss_flag          => 'N'
54581          , p_gl_transfer_mode_code      => 'D'
54582          , p_acct_entry_type_code       => 'A'
54583          , p_switch_side_flag           => 'Y'
54584          , p_merge_duplicate_code       => 'W'
54585          );
54586    --
54587    l_acc_rev_natural_side_code := 'C';  -- 4262811
54588    -- 
54589    --
54590    -- set accounting line type info
54591    --
54592    xla_ae_lines_pkg.SetAcctLineType
54593       (p_component_type             => l_component_type
54594       ,p_event_type_code            => l_event_type_code
54595       ,p_line_definition_owner_code => l_line_definition_owner_code
54596       ,p_line_definition_code       => l_line_definition_code
54597       ,p_accounting_line_code       => l_component_code
54598       ,p_accounting_line_type_code  => l_component_type_code
54599       ,p_accounting_line_appl_id    => l_component_appl_id
54600       ,p_amb_context_code           => l_amb_context_code
54601       ,p_entity_code                => l_entity_code
54602       ,p_event_class_code           => l_event_class_code);
54603    --
54604    -- set accounting class
54605    --
54606    xla_ae_lines_pkg.SetAcctClass(
54607            p_accounting_class_code  => 'INVENTORY_VALUATION'
54608          , p_ae_header_id           => l_ae_header_id
54609          );
54610 
54611    --
54612    -- set rounding class
54613    --
54614    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54615                       'INVENTORY_VALUATION';
54616 
54617    --
54618    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54619    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54620    --
54621    -- bulk performance
54622    --
54623    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54624 
54625    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54626       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54627 
54628    -- 4955764
54629    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54630       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54631 
54632    -- 4458381 Public Sector Enh
54633    
54634    --
54635    -- set accounting attributes for the line type
54636    --
54637    l_entered_amt_idx := 3;
54638    l_accted_amt_idx  := 8;
54639    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
54640    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
54641    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
54642    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
54643    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
54644    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
54648    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
54645    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
54646    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
54647    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
54649    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
54650    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
54651    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
54652    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
54653    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
54654    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
54655    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
54656 
54657    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54658    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54659 
54660    ---------------------------------------------------------------------------------------------------------------
54661    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54662    ---------------------------------------------------------------------------------------------------------------
54663    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54664 
54665    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54666    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54667 
54668    IF xla_accounting_cache_pkg.GetValueChar
54669          (p_source_code         => 'LEDGER_CATEGORY_CODE'
54670          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54671    AND l_bflow_method_code = 'PRIOR_ENTRY'
54672 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54673    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54674          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54675        )
54676    THEN
54677          xla_ae_lines_pkg.BflowUpgEntry
54678            (p_business_method_code    => l_bflow_method_code
54679            ,p_business_class_code     => l_bflow_class_code
54680            ,p_balance_type            => l_balance_type_code);
54681    ELSE
54682       NULL;
54683 -- No business flow processing for business flow method of NONE.
54684    END IF;
54685 
54686    --
54687    -- call analytical criteria
54688    --
54689    
54690    --
54691    -- call description
54692    --
54693    -- No description or it is inherited.
54694    --
54695    -- call ADRs
54696    -- Bug 4922099
54697    --
54698    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54699         (NVL(l_actual_upg_option, 'N') = 'O') OR
54700         (NVL(l_enc_upg_option, 'N') = 'O')
54701       )
54702    THEN
54703    NULL;
54704    --
54705    --
54706    
54707   l_ccid := AcctDerRule_17(
54708            p_application_id           => p_application_id
54709          , p_ae_header_id             => l_ae_header_id 
54710 , p_source_1 => p_source_1
54711 , p_source_2 => p_source_2
54712          , x_transaction_coa_id       => l_adr_transaction_coa_id
54713          , x_accounting_coa_id        => l_adr_accounting_coa_id
54714          , x_value_type_code          => l_adr_value_type_code
54715          , p_side                     => 'NA'
54716    );
54717 
54718    xla_ae_lines_pkg.set_ccid(
54719     p_code_combination_id          => l_ccid
54720   , p_value_type_code              => l_adr_value_type_code
54721   , p_transaction_coa_id           => l_adr_transaction_coa_id
54722   , p_accounting_coa_id            => l_adr_accounting_coa_id
54723   , p_adr_code                     => 'INV'
54724   , p_adr_type_code                => 'S'
54725   , p_component_type               => l_component_type
54726   , p_component_code               => l_component_code
54727   , p_component_type_code          => l_component_type_code
54728   , p_component_appl_id            => l_component_appl_id
54729   , p_amb_context_code             => l_amb_context_code
54730   , p_side                         => 'NA'
54731   );
54732 
54733 
54734    --
54735    --
54736    END IF;
54737    --
54738    -- Bug 4922099
54739    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54740           (NVL(l_enc_upg_option, 'N') = 'O')
54741         ) AND
54742         (l_bflow_method_code = 'PRIOR_ENTRY')
54743       )
54744    THEN
54745       IF
54746       --
54747       1 = 2
54748       --
54749       THEN
54750       xla_accounting_err_pkg.build_message
54751                                     (p_appli_s_name            => 'XLA'
54752                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54753                                     ,p_token_1                 => 'LINE_NUMBER'
54754                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
54755                                     ,p_token_2                 => 'LINE_TYPE_NAME'
54756                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
54757                                                                              l_component_type
54758                                                                             ,l_component_code
54759                                                                             ,l_component_type_code
54763                                                                             ,l_event_class_code
54760                                                                             ,l_component_appl_id
54761                                                                             ,l_amb_context_code
54762                                                                             ,l_entity_code
54764                                                                            )
54765                                     ,p_token_3                 => 'OWNER'
54766                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
54767                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
54768                                                                           ,p_lookup_code    => l_component_type_code
54769                                                                          )
54770                                     ,p_token_4                 => 'PRODUCT_NAME'
54771                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54772                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54773                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54774                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54775                                     ,p_ae_header_id            =>  NULL
54776                                        );
54777 
54778         IF (C_LEVEL_ERROR>= g_log_level) THEN
54779                  trace
54780                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54781                       ,p_level    => C_LEVEL_ERROR
54782                       ,p_module   => l_log_module);
54783         END IF;
54784       END IF;
54785    END IF;
54786    --
54787    --
54788    ------------------------------------------------------------------------------------------------
54789    -- 4219869 Business Flow
54790    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54791    -- Prior Entry.  Currently, the following code is always generated.
54792    ------------------------------------------------------------------------------------------------
54793    XLA_AE_LINES_PKG.ValidateCurrentLine;
54794 
54795    ------------------------------------------------------------------------------------
54796    -- 4219869 Business Flow
54797    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54798    ------------------------------------------------------------------------------------
54799    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54800 
54801    ----------------------------------------------------------------------------------
54802    -- 4219869 Business Flow
54803    -- Update journal entry status -- Need to generate this within IF <condition>
54804    ----------------------------------------------------------------------------------
54805    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54806          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54807          ,p_balance_type_code => l_balance_type_code
54808          );
54809 
54810    -------------------------------------------------------------------------------------------
54811    -- 4262811 - Generate the Accrual Reversal lines
54812    -------------------------------------------------------------------------------------------
54813    BEGIN
54814       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54815                               (g_array_event(p_event_id).array_value_num('header_index'));
54816       IF l_acc_rev_flag IS NULL THEN
54817          l_acc_rev_flag := 'N';
54818       END IF;
54819    EXCEPTION
54820       WHEN OTHERS THEN
54821          l_acc_rev_flag := 'N';
54822    END;
54823    --
54824    IF (l_acc_rev_flag = 'Y') THEN
54825 
54826        -- 4645092  ------------------------------------------------------------------------------
54827        -- To allow MPA report to determine if it should generate report process
54828        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54829        ------------------------------------------------------------------------------------------
54830 
54831        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54832        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54833    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
54834    -- call ADRs
54835    -- Bug 4922099
54836    --
54837    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54838         (NVL(l_actual_upg_option, 'N') = 'O') OR
54839         (NVL(l_enc_upg_option, 'N') = 'O')
54840       )
54841    THEN
54842    NULL;
54843    --
54844    --
54845    
54846   l_ccid := AcctDerRule_17(
54847            p_application_id           => p_application_id
54848          , p_ae_header_id             => l_ae_header_id 
54849 , p_source_1 => p_source_1
54850 , p_source_2 => p_source_2
54851          , x_transaction_coa_id       => l_adr_transaction_coa_id
54852          , x_accounting_coa_id        => l_adr_accounting_coa_id
54853          , x_value_type_code          => l_adr_value_type_code
54854          , p_side                     => 'NA'
54855    );
54856 
54857    xla_ae_lines_pkg.set_ccid(
54861   , p_accounting_coa_id            => l_adr_accounting_coa_id
54858     p_code_combination_id          => l_ccid
54859   , p_value_type_code              => l_adr_value_type_code
54860   , p_transaction_coa_id           => l_adr_transaction_coa_id
54862   , p_adr_code                     => 'INV'
54863   , p_adr_type_code                => 'S'
54864   , p_component_type               => l_component_type
54865   , p_component_code               => l_component_code
54866   , p_component_type_code          => l_component_type_code
54867   , p_component_appl_id            => l_component_appl_id
54868   , p_amb_context_code             => l_amb_context_code
54869   , p_side                         => 'NA'
54870   );
54871 
54872 
54873    --
54874    --
54875    END IF;
54876 
54877        --
54878        -- Update the line information that should be overwritten
54879        --
54880        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54881                                          p_header_num   => 1);
54882        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
54883 
54884        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54885 
54886        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
54887           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54888        END IF;
54889 
54890       --
54891       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54892       --
54893       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54894           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
54895       ELSE
54896           ---------------------------------------------------------------------------------------------------
54897           -- 4262811a Switch Sign
54898           ---------------------------------------------------------------------------------------------------
54899           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
54900           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54901                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54902           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54903                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54904           -- 5132302
54905           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54906                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54907 
54908       END IF;
54909 
54910       -- 4955764
54911       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54912       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54913 
54914 
54915       XLA_AE_LINES_PKG.ValidateCurrentLine;
54916       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54917 
54918       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54919                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54920                ,p_balance_type_code => l_balance_type_code);
54921 
54922    END IF;
54923 
54924    -----------------------------------------------------------------------------------------
54925    -- 4262811 Multiperiod Accounting
54926    -----------------------------------------------------------------------------------------
54927      -- No MPA option is assigned.
54928 
54929 
54930 END IF;
54931 END IF;
54932 --
54933 
54934 --
54935 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54936    trace
54937       (p_msg      => 'END of AcctLineType_131'
54938       ,p_level    => C_LEVEL_PROCEDURE
54939       ,p_module   => l_log_module);
54940 END IF;
54941 --
54942 EXCEPTION
54943   WHEN xla_exceptions_pkg.application_exception THEN
54944       RAISE;
54945   WHEN OTHERS THEN
54946        xla_exceptions_pkg.raise_message
54947            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_131');
54948 END AcctLineType_131;
54949 --
54950 
54951 ---------------------------------------
54952 --
54953 -- PRIVATE FUNCTION
54954 --         AcctLineType_132
54955 --
54956 ---------------------------------------
54957 PROCEDURE AcctLineType_132 (
54958   p_application_id        IN NUMBER
54959  ,p_event_id              IN NUMBER
54960  ,p_calculate_acctd_flag  IN VARCHAR2
54961  ,p_calculate_g_l_flag    IN VARCHAR2
54962  ,p_actual_flag           IN OUT VARCHAR2
54963  ,p_balance_type_code     OUT VARCHAR2
54964  ,p_gain_or_loss_ref      OUT VARCHAR2
54965  
54966 --Transaction Account
54967  , p_source_1            IN NUMBER
54968 --Journal Line Type
54969  , p_source_2            IN VARCHAR2
54970 --Entered Amount
54971  , p_source_3            IN NUMBER
54972 --First Distribution Identifier
54973  , p_source_5            IN NUMBER
54974 --Distribution Type
54975  , p_source_6            IN VARCHAR2
54976 --Currency Code
54980 --Currency Conversion Rate
54977  , p_source_7            IN VARCHAR2
54978 --Currency Conversion Date
54979  , p_source_8            IN DATE
54981  , p_source_9            IN NUMBER
54982 --Currency Conversion Type
54983  , p_source_10            IN VARCHAR2
54984 --Accounted Amount
54985  , p_source_11            IN NUMBER
54986 )
54987 IS
54988 
54989 l_component_type              VARCHAR2(80);
54990 l_component_code              VARCHAR2(30);
54991 l_component_type_code         VARCHAR2(1);
54992 l_component_appl_id           INTEGER;
54993 l_amb_context_code            VARCHAR2(30);
54994 l_entity_code                 VARCHAR2(30);
54995 l_event_class_code            VARCHAR2(30);
54996 l_ae_header_id                NUMBER;
54997 l_event_type_code             VARCHAR2(30);
54998 l_line_definition_code        VARCHAR2(30);
54999 l_line_definition_owner_code  VARCHAR2(1);
55000 --
55001 -- adr variables
55002 l_segment                     VARCHAR2(30);
55003 l_ccid                        NUMBER;
55004 l_adr_transaction_coa_id      NUMBER;
55005 l_adr_accounting_coa_id       NUMBER;
55006 l_adr_flexfield_segment_code  VARCHAR2(30);
55007 l_adr_flex_value_set_id       NUMBER;
55008 l_adr_value_type_code         VARCHAR2(30);
55009 l_adr_value_combination_id    NUMBER;
55010 l_adr_value_segment_code      VARCHAR2(30);
55011 
55012 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
55013 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
55014 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
55015 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
55016 
55017 -- 4262811 Variables ------------------------------------------------------------------------------------------
55018 l_entered_amt_idx             NUMBER;
55019 l_accted_amt_idx              NUMBER;
55020 l_acc_rev_flag                VARCHAR2(1);
55021 l_accrual_line_num            NUMBER;
55022 l_tmp_amt                     NUMBER;
55023 l_acc_rev_natural_side_code   VARCHAR2(1);
55024 
55025 l_num_entries                 NUMBER;
55026 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
55027 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
55028 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
55029 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
55030 l_recog_line_1                NUMBER;
55031 l_recog_line_2                NUMBER;
55032 
55033 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
55034 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
55035 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
55036 
55037 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
55038 
55039 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
55040 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
55041 
55042 ---------------------------------------------------------------------------------------------------------------
55043 
55044 
55045 --
55046 -- bulk performance
55047 --
55048 l_balance_type_code           VARCHAR2(1);
55049 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
55050 l_log_module                  VARCHAR2(240);
55051 
55052 --
55053 -- Upgrade strategy
55054 --
55055 l_actual_upg_option           VARCHAR2(1);
55056 l_enc_upg_option           VARCHAR2(1);
55057 
55058 --
55059 BEGIN
55060 --
55061 IF g_log_enabled THEN
55062       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_132';
55063 END IF;
55064 --
55065 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55066 
55067       trace
55068          (p_msg      => 'BEGIN of AcctLineType_132'
55069          ,p_level    => C_LEVEL_PROCEDURE
55070          ,p_module   => l_log_module);
55071 
55072 END IF;
55073 --
55074 l_component_type             := 'AMB_JLT';
55075 l_component_code             := 'INV';
55076 l_component_type_code        := 'S';
55077 l_component_appl_id          :=  555;
55078 l_amb_context_code           := 'DEFAULT';
55079 l_entity_code                := 'ORDERMANAGEMENT';
55080 l_event_class_code           := 'SHIPPING';
55081 l_event_type_code            := 'COGS_RECOGNITION_ADJ';
55082 l_line_definition_owner_code := 'S';
55083 l_line_definition_code       := 'COGS_RECOGNITION_ADJ';
55084 --
55085 l_balance_type_code          := 'A';
55086 l_segment                     := NULL;
55087 l_ccid                        := NULL;
55088 l_adr_transaction_coa_id      := NULL;
55089 l_adr_accounting_coa_id       := NULL;
55090 l_adr_flexfield_segment_code  := NULL;
55091 l_adr_flex_value_set_id       := NULL;
55092 l_adr_value_type_code         := NULL;
55093 l_adr_value_combination_id    := NULL;
55094 l_adr_value_segment_code      := NULL;
55095 
55096 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
55097 l_bflow_class_code           := '';    -- 4219869 Business Flow
55098 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
55099 l_budgetary_control_flag     := 'N';
55100 
55101 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
55102 l_bflow_applied_to_amt       := NULL; -- 5132302
55103 l_entered_amt_idx            := NULL;          -- 4262811
55104 l_accted_amt_idx             := NULL;          -- 4262811
55108 --
55105 l_acc_rev_flag               := NULL;          -- 4262811
55106 l_accrual_line_num           := NULL;          -- 4262811
55107 l_tmp_amt                    := NULL;          -- 4262811
55109  
55110 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
55111     l_balance_type_code <> 'B' THEN
55112 IF NVL(p_source_2,'
55113 ') =  'INV'
55114  THEN 
55115 
55116    --
55117    XLA_AE_LINES_PKG.SetNewLine;
55118 
55119    p_balance_type_code          := l_balance_type_code;
55120    -- set the flag so later we will know whether the gain loss line needs to be created
55121    
55122    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
55123      p_actual_flag :='A';
55124    END IF;
55125 
55126    --
55127    -- bulk performance
55128    --
55129    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
55130                                       p_header_num   => 0); -- 4262811
55131    --
55132    -- set accounting line options
55133    --
55134    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
55135            p_natural_side_code          => 'D'
55136          , p_gain_or_loss_flag          => 'N'
55137          , p_gl_transfer_mode_code      => 'D'
55138          , p_acct_entry_type_code       => 'A'
55139          , p_switch_side_flag           => 'Y'
55140          , p_merge_duplicate_code       => 'W'
55141          );
55142    --
55143    l_acc_rev_natural_side_code := 'C';  -- 4262811
55144    -- 
55145    --
55146    -- set accounting line type info
55147    --
55148    xla_ae_lines_pkg.SetAcctLineType
55149       (p_component_type             => l_component_type
55150       ,p_event_type_code            => l_event_type_code
55151       ,p_line_definition_owner_code => l_line_definition_owner_code
55152       ,p_line_definition_code       => l_line_definition_code
55153       ,p_accounting_line_code       => l_component_code
55154       ,p_accounting_line_type_code  => l_component_type_code
55155       ,p_accounting_line_appl_id    => l_component_appl_id
55156       ,p_amb_context_code           => l_amb_context_code
55157       ,p_entity_code                => l_entity_code
55158       ,p_event_class_code           => l_event_class_code);
55159    --
55160    -- set accounting class
55161    --
55162    xla_ae_lines_pkg.SetAcctClass(
55163            p_accounting_class_code  => 'INVENTORY_VALUATION'
55164          , p_ae_header_id           => l_ae_header_id
55165          );
55166 
55167    --
55168    -- set rounding class
55169    --
55170    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55171                       'INVENTORY_VALUATION';
55172 
55173    --
55174    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55175    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55176    --
55177    -- bulk performance
55178    --
55179    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55180 
55181    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55182       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55183 
55184    -- 4955764
55185    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55186       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55187 
55188    -- 4458381 Public Sector Enh
55189    
55190    --
55191    -- set accounting attributes for the line type
55192    --
55193    l_entered_amt_idx := 3;
55194    l_accted_amt_idx  := 8;
55195    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
55196    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
55197    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
55198    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
55199    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
55200    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
55201    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
55202    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
55203    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
55204    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
55205    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
55206    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
55207    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
55208    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
55209    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
55210    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
55211    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
55212 
55213    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
55214    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
55215 
55216    ---------------------------------------------------------------------------------------------------------------
55217    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
55218    ---------------------------------------------------------------------------------------------------------------
55219    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
55223 
55220 
55221    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55222    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55224    IF xla_accounting_cache_pkg.GetValueChar
55225          (p_source_code         => 'LEDGER_CATEGORY_CODE'
55226          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
55227    AND l_bflow_method_code = 'PRIOR_ENTRY'
55228 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
55229    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
55230          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
55231        )
55232    THEN
55233          xla_ae_lines_pkg.BflowUpgEntry
55234            (p_business_method_code    => l_bflow_method_code
55235            ,p_business_class_code     => l_bflow_class_code
55236            ,p_balance_type            => l_balance_type_code);
55237    ELSE
55238       NULL;
55239 -- No business flow processing for business flow method of NONE.
55240    END IF;
55241 
55242    --
55243    -- call analytical criteria
55244    --
55245    
55246    --
55247    -- call description
55248    --
55249    -- No description or it is inherited.
55250    --
55251    -- call ADRs
55252    -- Bug 4922099
55253    --
55254    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55255         (NVL(l_actual_upg_option, 'N') = 'O') OR
55256         (NVL(l_enc_upg_option, 'N') = 'O')
55257       )
55258    THEN
55259    NULL;
55260    --
55261    --
55262    
55263   l_ccid := AcctDerRule_17(
55264            p_application_id           => p_application_id
55265          , p_ae_header_id             => l_ae_header_id 
55266 , p_source_1 => p_source_1
55267 , p_source_2 => p_source_2
55268          , x_transaction_coa_id       => l_adr_transaction_coa_id
55269          , x_accounting_coa_id        => l_adr_accounting_coa_id
55270          , x_value_type_code          => l_adr_value_type_code
55271          , p_side                     => 'NA'
55272    );
55273 
55274    xla_ae_lines_pkg.set_ccid(
55275     p_code_combination_id          => l_ccid
55276   , p_value_type_code              => l_adr_value_type_code
55277   , p_transaction_coa_id           => l_adr_transaction_coa_id
55278   , p_accounting_coa_id            => l_adr_accounting_coa_id
55279   , p_adr_code                     => 'INV'
55280   , p_adr_type_code                => 'S'
55281   , p_component_type               => l_component_type
55282   , p_component_code               => l_component_code
55283   , p_component_type_code          => l_component_type_code
55284   , p_component_appl_id            => l_component_appl_id
55285   , p_amb_context_code             => l_amb_context_code
55286   , p_side                         => 'NA'
55287   );
55288 
55289 
55290    --
55291    --
55292    END IF;
55293    --
55294    -- Bug 4922099
55295    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
55296           (NVL(l_enc_upg_option, 'N') = 'O')
55297         ) AND
55298         (l_bflow_method_code = 'PRIOR_ENTRY')
55299       )
55300    THEN
55301       IF
55302       --
55303       1 = 2
55304       --
55305       THEN
55306       xla_accounting_err_pkg.build_message
55307                                     (p_appli_s_name            => 'XLA'
55308                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55309                                     ,p_token_1                 => 'LINE_NUMBER'
55310                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
55311                                     ,p_token_2                 => 'LINE_TYPE_NAME'
55312                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
55313                                                                              l_component_type
55314                                                                             ,l_component_code
55315                                                                             ,l_component_type_code
55316                                                                             ,l_component_appl_id
55317                                                                             ,l_amb_context_code
55318                                                                             ,l_entity_code
55319                                                                             ,l_event_class_code
55320                                                                            )
55321                                     ,p_token_3                 => 'OWNER'
55322                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
55323                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
55324                                                                           ,p_lookup_code    => l_component_type_code
55325                                                                          )
55326                                     ,p_token_4                 => 'PRODUCT_NAME'
55327                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
55328                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
55329                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
55333 
55330                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
55331                                     ,p_ae_header_id            =>  NULL
55332                                        );
55334         IF (C_LEVEL_ERROR>= g_log_level) THEN
55335                  trace
55336                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55337                       ,p_level    => C_LEVEL_ERROR
55338                       ,p_module   => l_log_module);
55339         END IF;
55340       END IF;
55341    END IF;
55342    --
55343    --
55344    ------------------------------------------------------------------------------------------------
55345    -- 4219869 Business Flow
55346    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
55347    -- Prior Entry.  Currently, the following code is always generated.
55348    ------------------------------------------------------------------------------------------------
55349    XLA_AE_LINES_PKG.ValidateCurrentLine;
55350 
55351    ------------------------------------------------------------------------------------
55352    -- 4219869 Business Flow
55353    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
55354    ------------------------------------------------------------------------------------
55355    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55356 
55357    ----------------------------------------------------------------------------------
55358    -- 4219869 Business Flow
55359    -- Update journal entry status -- Need to generate this within IF <condition>
55360    ----------------------------------------------------------------------------------
55361    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55362          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
55363          ,p_balance_type_code => l_balance_type_code
55364          );
55365 
55366    -------------------------------------------------------------------------------------------
55367    -- 4262811 - Generate the Accrual Reversal lines
55368    -------------------------------------------------------------------------------------------
55369    BEGIN
55370       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
55371                               (g_array_event(p_event_id).array_value_num('header_index'));
55372       IF l_acc_rev_flag IS NULL THEN
55373          l_acc_rev_flag := 'N';
55374       END IF;
55375    EXCEPTION
55376       WHEN OTHERS THEN
55377          l_acc_rev_flag := 'N';
55378    END;
55379    --
55380    IF (l_acc_rev_flag = 'Y') THEN
55381 
55382        -- 4645092  ------------------------------------------------------------------------------
55383        -- To allow MPA report to determine if it should generate report process
55384        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
55385        ------------------------------------------------------------------------------------------
55386 
55387        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
55388        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
55389    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
55390    -- call ADRs
55391    -- Bug 4922099
55392    --
55393    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55394         (NVL(l_actual_upg_option, 'N') = 'O') OR
55395         (NVL(l_enc_upg_option, 'N') = 'O')
55396       )
55397    THEN
55398    NULL;
55399    --
55400    --
55401    
55402   l_ccid := AcctDerRule_17(
55403            p_application_id           => p_application_id
55404          , p_ae_header_id             => l_ae_header_id 
55405 , p_source_1 => p_source_1
55406 , p_source_2 => p_source_2
55407          , x_transaction_coa_id       => l_adr_transaction_coa_id
55408          , x_accounting_coa_id        => l_adr_accounting_coa_id
55409          , x_value_type_code          => l_adr_value_type_code
55410          , p_side                     => 'NA'
55411    );
55412 
55413    xla_ae_lines_pkg.set_ccid(
55414     p_code_combination_id          => l_ccid
55415   , p_value_type_code              => l_adr_value_type_code
55416   , p_transaction_coa_id           => l_adr_transaction_coa_id
55417   , p_accounting_coa_id            => l_adr_accounting_coa_id
55418   , p_adr_code                     => 'INV'
55419   , p_adr_type_code                => 'S'
55420   , p_component_type               => l_component_type
55421   , p_component_code               => l_component_code
55422   , p_component_type_code          => l_component_type_code
55423   , p_component_appl_id            => l_component_appl_id
55424   , p_amb_context_code             => l_amb_context_code
55425   , p_side                         => 'NA'
55426   );
55427 
55428 
55429    --
55430    --
55431    END IF;
55432 
55433        --
55434        -- Update the line information that should be overwritten
55435        --
55436        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
55437                                          p_header_num   => 1);
55438        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
55439 
55440        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
55441 
55445 
55442        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
55443           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
55444        END IF;
55446       --
55447       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
55448       --
55449       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
55450           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
55451       ELSE
55452           ---------------------------------------------------------------------------------------------------
55453           -- 4262811a Switch Sign
55454           ---------------------------------------------------------------------------------------------------
55455           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
55456           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55457                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55458           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55459                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55460           -- 5132302
55461           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
55462                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55463 
55464       END IF;
55465 
55466       -- 4955764
55467       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55468       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
55469 
55470 
55471       XLA_AE_LINES_PKG.ValidateCurrentLine;
55472       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55473 
55474       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55475                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
55476                ,p_balance_type_code => l_balance_type_code);
55477 
55478    END IF;
55479 
55480    -----------------------------------------------------------------------------------------
55481    -- 4262811 Multiperiod Accounting
55482    -----------------------------------------------------------------------------------------
55483      -- No MPA option is assigned.
55484 
55485 
55486 END IF;
55487 END IF;
55488 --
55489 
55490 --
55491 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55492    trace
55493       (p_msg      => 'END of AcctLineType_132'
55494       ,p_level    => C_LEVEL_PROCEDURE
55495       ,p_module   => l_log_module);
55496 END IF;
55497 --
55498 EXCEPTION
55499   WHEN xla_exceptions_pkg.application_exception THEN
55500       RAISE;
55501   WHEN OTHERS THEN
55502        xla_exceptions_pkg.raise_message
55503            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_132');
55504 END AcctLineType_132;
55505 --
55506 
55507 ---------------------------------------
55508 --
55509 -- PRIVATE FUNCTION
55510 --         AcctLineType_133
55511 --
55512 ---------------------------------------
55513 PROCEDURE AcctLineType_133 (
55514   p_application_id        IN NUMBER
55515  ,p_event_id              IN NUMBER
55516  ,p_calculate_acctd_flag  IN VARCHAR2
55517  ,p_calculate_g_l_flag    IN VARCHAR2
55518  ,p_actual_flag           IN OUT VARCHAR2
55519  ,p_balance_type_code     OUT VARCHAR2
55520  ,p_gain_or_loss_ref      OUT VARCHAR2
55521  
55522 --Transaction Account
55523  , p_source_1            IN NUMBER
55524 --Journal Line Type
55525  , p_source_2            IN VARCHAR2
55526 --Entered Amount
55527  , p_source_3            IN NUMBER
55528 --First Distribution Identifier
55529  , p_source_5            IN NUMBER
55530 --Distribution Type
55531  , p_source_6            IN VARCHAR2
55532 --Currency Code
55533  , p_source_7            IN VARCHAR2
55534 --Currency Conversion Date
55535  , p_source_8            IN DATE
55536 --Currency Conversion Rate
55537  , p_source_9            IN NUMBER
55538 --Currency Conversion Type
55539  , p_source_10            IN VARCHAR2
55540 --Accounted Amount
55541  , p_source_11            IN NUMBER
55542 )
55543 IS
55544 
55545 l_component_type              VARCHAR2(80);
55546 l_component_code              VARCHAR2(30);
55547 l_component_type_code         VARCHAR2(1);
55548 l_component_appl_id           INTEGER;
55549 l_amb_context_code            VARCHAR2(30);
55550 l_entity_code                 VARCHAR2(30);
55551 l_event_class_code            VARCHAR2(30);
55552 l_ae_header_id                NUMBER;
55553 l_event_type_code             VARCHAR2(30);
55554 l_line_definition_code        VARCHAR2(30);
55555 l_line_definition_owner_code  VARCHAR2(1);
55556 --
55557 -- adr variables
55558 l_segment                     VARCHAR2(30);
55559 l_ccid                        NUMBER;
55560 l_adr_transaction_coa_id      NUMBER;
55561 l_adr_accounting_coa_id       NUMBER;
55562 l_adr_flexfield_segment_code  VARCHAR2(30);
55563 l_adr_flex_value_set_id       NUMBER;
55564 l_adr_value_type_code         VARCHAR2(30);
55565 l_adr_value_combination_id    NUMBER;
55566 l_adr_value_segment_code      VARCHAR2(30);
55567 
55568 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
55572 
55569 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
55570 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
55571 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
55573 -- 4262811 Variables ------------------------------------------------------------------------------------------
55574 l_entered_amt_idx             NUMBER;
55575 l_accted_amt_idx              NUMBER;
55576 l_acc_rev_flag                VARCHAR2(1);
55577 l_accrual_line_num            NUMBER;
55578 l_tmp_amt                     NUMBER;
55579 l_acc_rev_natural_side_code   VARCHAR2(1);
55580 
55581 l_num_entries                 NUMBER;
55582 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
55583 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
55584 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
55585 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
55586 l_recog_line_1                NUMBER;
55587 l_recog_line_2                NUMBER;
55588 
55589 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
55590 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
55591 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
55592 
55593 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
55594 
55595 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
55596 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
55597 
55598 ---------------------------------------------------------------------------------------------------------------
55599 
55600 
55601 --
55602 -- bulk performance
55603 --
55604 l_balance_type_code           VARCHAR2(1);
55605 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
55606 l_log_module                  VARCHAR2(240);
55607 
55608 --
55609 -- Upgrade strategy
55610 --
55611 l_actual_upg_option           VARCHAR2(1);
55612 l_enc_upg_option           VARCHAR2(1);
55613 
55614 --
55615 BEGIN
55616 --
55617 IF g_log_enabled THEN
55618       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_133';
55619 END IF;
55620 --
55621 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55622 
55623       trace
55624          (p_msg      => 'BEGIN of AcctLineType_133'
55625          ,p_level    => C_LEVEL_PROCEDURE
55626          ,p_module   => l_log_module);
55627 
55628 END IF;
55629 --
55630 l_component_type             := 'AMB_JLT';
55631 l_component_code             := 'INV';
55632 l_component_type_code        := 'S';
55633 l_component_appl_id          :=  555;
55634 l_amb_context_code           := 'DEFAULT';
55635 l_entity_code                := 'ORDERMANAGEMENT';
55636 l_event_class_code           := 'SHIPPING';
55637 l_event_type_code            := 'LOG_SO_ISSUE';
55638 l_line_definition_owner_code := 'S';
55639 l_line_definition_code       := 'LOGICAL_SO_ISSUE';
55640 --
55641 l_balance_type_code          := 'A';
55642 l_segment                     := NULL;
55643 l_ccid                        := NULL;
55644 l_adr_transaction_coa_id      := NULL;
55645 l_adr_accounting_coa_id       := NULL;
55646 l_adr_flexfield_segment_code  := NULL;
55647 l_adr_flex_value_set_id       := NULL;
55648 l_adr_value_type_code         := NULL;
55649 l_adr_value_combination_id    := NULL;
55650 l_adr_value_segment_code      := NULL;
55651 
55652 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
55653 l_bflow_class_code           := '';    -- 4219869 Business Flow
55654 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
55655 l_budgetary_control_flag     := 'N';
55656 
55657 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
55658 l_bflow_applied_to_amt       := NULL; -- 5132302
55659 l_entered_amt_idx            := NULL;          -- 4262811
55660 l_accted_amt_idx             := NULL;          -- 4262811
55661 l_acc_rev_flag               := NULL;          -- 4262811
55662 l_accrual_line_num           := NULL;          -- 4262811
55663 l_tmp_amt                    := NULL;          -- 4262811
55664 --
55665  
55666 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
55667     l_balance_type_code <> 'B' THEN
55668 IF NVL(p_source_2,'
55669 ') =  'INV'
55670  THEN 
55671 
55672    --
55673    XLA_AE_LINES_PKG.SetNewLine;
55674 
55675    p_balance_type_code          := l_balance_type_code;
55676    -- set the flag so later we will know whether the gain loss line needs to be created
55677    
55678    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
55679      p_actual_flag :='A';
55680    END IF;
55681 
55682    --
55683    -- bulk performance
55684    --
55685    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
55686                                       p_header_num   => 0); -- 4262811
55687    --
55688    -- set accounting line options
55689    --
55690    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
55691            p_natural_side_code          => 'D'
55692          , p_gain_or_loss_flag          => 'N'
55693          , p_gl_transfer_mode_code      => 'D'
55694          , p_acct_entry_type_code       => 'A'
55695          , p_switch_side_flag           => 'Y'
55699    l_acc_rev_natural_side_code := 'C';  -- 4262811
55696          , p_merge_duplicate_code       => 'W'
55697          );
55698    --
55700    -- 
55701    --
55702    -- set accounting line type info
55703    --
55704    xla_ae_lines_pkg.SetAcctLineType
55705       (p_component_type             => l_component_type
55706       ,p_event_type_code            => l_event_type_code
55707       ,p_line_definition_owner_code => l_line_definition_owner_code
55708       ,p_line_definition_code       => l_line_definition_code
55709       ,p_accounting_line_code       => l_component_code
55710       ,p_accounting_line_type_code  => l_component_type_code
55711       ,p_accounting_line_appl_id    => l_component_appl_id
55712       ,p_amb_context_code           => l_amb_context_code
55713       ,p_entity_code                => l_entity_code
55714       ,p_event_class_code           => l_event_class_code);
55715    --
55716    -- set accounting class
55717    --
55718    xla_ae_lines_pkg.SetAcctClass(
55719            p_accounting_class_code  => 'INVENTORY_VALUATION'
55720          , p_ae_header_id           => l_ae_header_id
55721          );
55722 
55723    --
55724    -- set rounding class
55725    --
55726    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55727                       'INVENTORY_VALUATION';
55728 
55729    --
55730    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55731    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55732    --
55733    -- bulk performance
55734    --
55735    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55736 
55737    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55738       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55739 
55740    -- 4955764
55741    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55742       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55743 
55744    -- 4458381 Public Sector Enh
55745    
55746    --
55747    -- set accounting attributes for the line type
55748    --
55749    l_entered_amt_idx := 3;
55750    l_accted_amt_idx  := 8;
55751    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
55752    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
55753    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
55754    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
55755    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
55756    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
55757    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
55758    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
55759    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
55760    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
55761    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
55762    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
55763    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
55764    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
55765    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
55766    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
55767    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
55768 
55769    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
55770    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
55771 
55772    ---------------------------------------------------------------------------------------------------------------
55773    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
55774    ---------------------------------------------------------------------------------------------------------------
55775    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
55776 
55777    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55778    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55779 
55780    IF xla_accounting_cache_pkg.GetValueChar
55781          (p_source_code         => 'LEDGER_CATEGORY_CODE'
55782          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
55783    AND l_bflow_method_code = 'PRIOR_ENTRY'
55784 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
55785    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
55786          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
55787        )
55788    THEN
55789          xla_ae_lines_pkg.BflowUpgEntry
55790            (p_business_method_code    => l_bflow_method_code
55791            ,p_business_class_code     => l_bflow_class_code
55792            ,p_balance_type            => l_balance_type_code);
55793    ELSE
55794       NULL;
55795 -- No business flow processing for business flow method of NONE.
55796    END IF;
55797 
55798    --
55799    -- call analytical criteria
55800    --
55801    
55802    --
55803    -- call description
55804    --
55805    -- No description or it is inherited.
55806    --
55807    -- call ADRs
55808    -- Bug 4922099
55809    --
55813       )
55810    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55811         (NVL(l_actual_upg_option, 'N') = 'O') OR
55812         (NVL(l_enc_upg_option, 'N') = 'O')
55814    THEN
55815    NULL;
55816    --
55817    --
55818    
55819   l_ccid := AcctDerRule_17(
55820            p_application_id           => p_application_id
55821          , p_ae_header_id             => l_ae_header_id 
55822 , p_source_1 => p_source_1
55823 , p_source_2 => p_source_2
55824          , x_transaction_coa_id       => l_adr_transaction_coa_id
55825          , x_accounting_coa_id        => l_adr_accounting_coa_id
55826          , x_value_type_code          => l_adr_value_type_code
55827          , p_side                     => 'NA'
55828    );
55829 
55830    xla_ae_lines_pkg.set_ccid(
55831     p_code_combination_id          => l_ccid
55832   , p_value_type_code              => l_adr_value_type_code
55833   , p_transaction_coa_id           => l_adr_transaction_coa_id
55834   , p_accounting_coa_id            => l_adr_accounting_coa_id
55835   , p_adr_code                     => 'INV'
55836   , p_adr_type_code                => 'S'
55837   , p_component_type               => l_component_type
55838   , p_component_code               => l_component_code
55839   , p_component_type_code          => l_component_type_code
55840   , p_component_appl_id            => l_component_appl_id
55841   , p_amb_context_code             => l_amb_context_code
55842   , p_side                         => 'NA'
55843   );
55844 
55845 
55846    --
55847    --
55848    END IF;
55849    --
55850    -- Bug 4922099
55851    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
55852           (NVL(l_enc_upg_option, 'N') = 'O')
55853         ) AND
55854         (l_bflow_method_code = 'PRIOR_ENTRY')
55855       )
55856    THEN
55857       IF
55858       --
55859       1 = 2
55860       --
55861       THEN
55862       xla_accounting_err_pkg.build_message
55863                                     (p_appli_s_name            => 'XLA'
55864                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55865                                     ,p_token_1                 => 'LINE_NUMBER'
55866                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
55867                                     ,p_token_2                 => 'LINE_TYPE_NAME'
55868                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
55869                                                                              l_component_type
55870                                                                             ,l_component_code
55871                                                                             ,l_component_type_code
55872                                                                             ,l_component_appl_id
55873                                                                             ,l_amb_context_code
55874                                                                             ,l_entity_code
55875                                                                             ,l_event_class_code
55876                                                                            )
55877                                     ,p_token_3                 => 'OWNER'
55878                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
55879                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
55880                                                                           ,p_lookup_code    => l_component_type_code
55881                                                                          )
55882                                     ,p_token_4                 => 'PRODUCT_NAME'
55883                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
55884                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
55885                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
55886                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
55887                                     ,p_ae_header_id            =>  NULL
55888                                        );
55889 
55890         IF (C_LEVEL_ERROR>= g_log_level) THEN
55891                  trace
55892                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55893                       ,p_level    => C_LEVEL_ERROR
55894                       ,p_module   => l_log_module);
55895         END IF;
55896       END IF;
55897    END IF;
55898    --
55899    --
55900    ------------------------------------------------------------------------------------------------
55901    -- 4219869 Business Flow
55902    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
55903    -- Prior Entry.  Currently, the following code is always generated.
55904    ------------------------------------------------------------------------------------------------
55905    XLA_AE_LINES_PKG.ValidateCurrentLine;
55906 
55907    ------------------------------------------------------------------------------------
55908    -- 4219869 Business Flow
55909    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
55910    ------------------------------------------------------------------------------------
55911    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55915    -- Update journal entry status -- Need to generate this within IF <condition>
55912 
55913    ----------------------------------------------------------------------------------
55914    -- 4219869 Business Flow
55916    ----------------------------------------------------------------------------------
55917    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55918          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
55919          ,p_balance_type_code => l_balance_type_code
55920          );
55921 
55922    -------------------------------------------------------------------------------------------
55923    -- 4262811 - Generate the Accrual Reversal lines
55924    -------------------------------------------------------------------------------------------
55925    BEGIN
55926       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
55927                               (g_array_event(p_event_id).array_value_num('header_index'));
55928       IF l_acc_rev_flag IS NULL THEN
55929          l_acc_rev_flag := 'N';
55930       END IF;
55931    EXCEPTION
55932       WHEN OTHERS THEN
55933          l_acc_rev_flag := 'N';
55934    END;
55935    --
55936    IF (l_acc_rev_flag = 'Y') THEN
55937 
55938        -- 4645092  ------------------------------------------------------------------------------
55939        -- To allow MPA report to determine if it should generate report process
55940        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
55941        ------------------------------------------------------------------------------------------
55942 
55943        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
55944        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
55945    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
55946    -- call ADRs
55947    -- Bug 4922099
55948    --
55949    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55950         (NVL(l_actual_upg_option, 'N') = 'O') OR
55951         (NVL(l_enc_upg_option, 'N') = 'O')
55952       )
55953    THEN
55954    NULL;
55955    --
55956    --
55957    
55958   l_ccid := AcctDerRule_17(
55959            p_application_id           => p_application_id
55960          , p_ae_header_id             => l_ae_header_id 
55961 , p_source_1 => p_source_1
55962 , p_source_2 => p_source_2
55963          , x_transaction_coa_id       => l_adr_transaction_coa_id
55964          , x_accounting_coa_id        => l_adr_accounting_coa_id
55965          , x_value_type_code          => l_adr_value_type_code
55966          , p_side                     => 'NA'
55967    );
55968 
55969    xla_ae_lines_pkg.set_ccid(
55970     p_code_combination_id          => l_ccid
55971   , p_value_type_code              => l_adr_value_type_code
55972   , p_transaction_coa_id           => l_adr_transaction_coa_id
55973   , p_accounting_coa_id            => l_adr_accounting_coa_id
55974   , p_adr_code                     => 'INV'
55975   , p_adr_type_code                => 'S'
55976   , p_component_type               => l_component_type
55977   , p_component_code               => l_component_code
55978   , p_component_type_code          => l_component_type_code
55979   , p_component_appl_id            => l_component_appl_id
55980   , p_amb_context_code             => l_amb_context_code
55981   , p_side                         => 'NA'
55982   );
55983 
55984 
55985    --
55986    --
55987    END IF;
55988 
55989        --
55990        -- Update the line information that should be overwritten
55991        --
55992        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
55993                                          p_header_num   => 1);
55994        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
55995 
55996        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
55997 
55998        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
55999           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
56000        END IF;
56001 
56002       --
56003       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
56004       --
56005       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
56006           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
56007       ELSE
56008           ---------------------------------------------------------------------------------------------------
56009           -- 4262811a Switch Sign
56010           ---------------------------------------------------------------------------------------------------
56011           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
56012           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56013                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56014           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56015                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56016           -- 5132302
56017           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
56021 
56018                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56019 
56020       END IF;
56022       -- 4955764
56023       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56024       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
56025 
56026 
56027       XLA_AE_LINES_PKG.ValidateCurrentLine;
56028       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56029 
56030       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56031                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
56032                ,p_balance_type_code => l_balance_type_code);
56033 
56034    END IF;
56035 
56036    -----------------------------------------------------------------------------------------
56037    -- 4262811 Multiperiod Accounting
56038    -----------------------------------------------------------------------------------------
56039      -- No MPA option is assigned.
56040 
56041 
56042 END IF;
56043 END IF;
56044 --
56045 
56046 --
56047 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56048    trace
56049       (p_msg      => 'END of AcctLineType_133'
56050       ,p_level    => C_LEVEL_PROCEDURE
56051       ,p_module   => l_log_module);
56052 END IF;
56053 --
56054 EXCEPTION
56055   WHEN xla_exceptions_pkg.application_exception THEN
56056       RAISE;
56057   WHEN OTHERS THEN
56058        xla_exceptions_pkg.raise_message
56059            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_133');
56060 END AcctLineType_133;
56061 --
56062 
56063 ---------------------------------------
56064 --
56065 -- PRIVATE FUNCTION
56066 --         AcctLineType_134
56067 --
56068 ---------------------------------------
56069 PROCEDURE AcctLineType_134 (
56070   p_application_id        IN NUMBER
56071  ,p_event_id              IN NUMBER
56072  ,p_calculate_acctd_flag  IN VARCHAR2
56073  ,p_calculate_g_l_flag    IN VARCHAR2
56074  ,p_actual_flag           IN OUT VARCHAR2
56075  ,p_balance_type_code     OUT VARCHAR2
56076  ,p_gain_or_loss_ref      OUT VARCHAR2
56077  
56078 --Transaction Account
56079  , p_source_1            IN NUMBER
56080 --Journal Line Type
56081  , p_source_2            IN VARCHAR2
56082 --Entered Amount
56083  , p_source_3            IN NUMBER
56084 --First Distribution Identifier
56085  , p_source_5            IN NUMBER
56086 --Distribution Type
56087  , p_source_6            IN VARCHAR2
56088 --Currency Code
56089  , p_source_7            IN VARCHAR2
56090 --Currency Conversion Date
56091  , p_source_8            IN DATE
56092 --Currency Conversion Rate
56093  , p_source_9            IN NUMBER
56094 --Currency Conversion Type
56095  , p_source_10            IN VARCHAR2
56096 --Accounted Amount
56097  , p_source_11            IN NUMBER
56098 )
56099 IS
56100 
56101 l_component_type              VARCHAR2(80);
56102 l_component_code              VARCHAR2(30);
56103 l_component_type_code         VARCHAR2(1);
56104 l_component_appl_id           INTEGER;
56105 l_amb_context_code            VARCHAR2(30);
56106 l_entity_code                 VARCHAR2(30);
56107 l_event_class_code            VARCHAR2(30);
56108 l_ae_header_id                NUMBER;
56109 l_event_type_code             VARCHAR2(30);
56110 l_line_definition_code        VARCHAR2(30);
56111 l_line_definition_owner_code  VARCHAR2(1);
56112 --
56113 -- adr variables
56114 l_segment                     VARCHAR2(30);
56115 l_ccid                        NUMBER;
56116 l_adr_transaction_coa_id      NUMBER;
56117 l_adr_accounting_coa_id       NUMBER;
56118 l_adr_flexfield_segment_code  VARCHAR2(30);
56119 l_adr_flex_value_set_id       NUMBER;
56120 l_adr_value_type_code         VARCHAR2(30);
56121 l_adr_value_combination_id    NUMBER;
56122 l_adr_value_segment_code      VARCHAR2(30);
56123 
56124 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
56125 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
56126 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
56127 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
56128 
56129 -- 4262811 Variables ------------------------------------------------------------------------------------------
56130 l_entered_amt_idx             NUMBER;
56131 l_accted_amt_idx              NUMBER;
56132 l_acc_rev_flag                VARCHAR2(1);
56133 l_accrual_line_num            NUMBER;
56134 l_tmp_amt                     NUMBER;
56135 l_acc_rev_natural_side_code   VARCHAR2(1);
56136 
56137 l_num_entries                 NUMBER;
56138 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
56139 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
56140 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
56141 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
56142 l_recog_line_1                NUMBER;
56143 l_recog_line_2                NUMBER;
56144 
56145 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
56146 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
56147 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
56148 
56152 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
56149 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
56150 
56151 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
56153 
56154 ---------------------------------------------------------------------------------------------------------------
56155 
56156 
56157 --
56158 -- bulk performance
56159 --
56160 l_balance_type_code           VARCHAR2(1);
56161 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
56162 l_log_module                  VARCHAR2(240);
56163 
56164 --
56165 -- Upgrade strategy
56166 --
56167 l_actual_upg_option           VARCHAR2(1);
56168 l_enc_upg_option           VARCHAR2(1);
56169 
56170 --
56171 BEGIN
56172 --
56173 IF g_log_enabled THEN
56174       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_134';
56175 END IF;
56176 --
56177 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56178 
56179       trace
56180          (p_msg      => 'BEGIN of AcctLineType_134'
56181          ,p_level    => C_LEVEL_PROCEDURE
56182          ,p_module   => l_log_module);
56183 
56184 END IF;
56185 --
56186 l_component_type             := 'AMB_JLT';
56187 l_component_code             := 'INV';
56188 l_component_type_code        := 'S';
56189 l_component_appl_id          :=  555;
56190 l_amb_context_code           := 'DEFAULT';
56191 l_entity_code                := 'PRODUCTION';
56192 l_event_class_code           := 'BATCH_MATERIAL';
56193 l_event_type_code            := 'RELE';
56194 l_line_definition_owner_code := 'S';
56195 l_line_definition_code       := 'BATCH_RELEASE';
56196 --
56197 l_balance_type_code          := 'A';
56198 l_segment                     := NULL;
56199 l_ccid                        := NULL;
56200 l_adr_transaction_coa_id      := NULL;
56201 l_adr_accounting_coa_id       := NULL;
56202 l_adr_flexfield_segment_code  := NULL;
56203 l_adr_flex_value_set_id       := NULL;
56204 l_adr_value_type_code         := NULL;
56205 l_adr_value_combination_id    := NULL;
56206 l_adr_value_segment_code      := NULL;
56207 
56208 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
56209 l_bflow_class_code           := '';    -- 4219869 Business Flow
56210 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
56211 l_budgetary_control_flag     := 'N';
56212 
56213 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
56214 l_bflow_applied_to_amt       := NULL; -- 5132302
56215 l_entered_amt_idx            := NULL;          -- 4262811
56216 l_accted_amt_idx             := NULL;          -- 4262811
56217 l_acc_rev_flag               := NULL;          -- 4262811
56218 l_accrual_line_num           := NULL;          -- 4262811
56219 l_tmp_amt                    := NULL;          -- 4262811
56220 --
56221  
56222 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
56223     l_balance_type_code <> 'B' THEN
56224 IF NVL(p_source_2,'
56225 ') =  'INV'
56226  THEN 
56227 
56228    --
56229    XLA_AE_LINES_PKG.SetNewLine;
56230 
56231    p_balance_type_code          := l_balance_type_code;
56232    -- set the flag so later we will know whether the gain loss line needs to be created
56233    
56234    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
56235      p_actual_flag :='A';
56236    END IF;
56237 
56238    --
56239    -- bulk performance
56240    --
56241    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
56242                                       p_header_num   => 0); -- 4262811
56243    --
56244    -- set accounting line options
56245    --
56246    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
56247            p_natural_side_code          => 'D'
56248          , p_gain_or_loss_flag          => 'N'
56249          , p_gl_transfer_mode_code      => 'D'
56250          , p_acct_entry_type_code       => 'A'
56251          , p_switch_side_flag           => 'Y'
56252          , p_merge_duplicate_code       => 'W'
56253          );
56254    --
56255    l_acc_rev_natural_side_code := 'C';  -- 4262811
56256    -- 
56257    --
56258    -- set accounting line type info
56259    --
56260    xla_ae_lines_pkg.SetAcctLineType
56261       (p_component_type             => l_component_type
56262       ,p_event_type_code            => l_event_type_code
56263       ,p_line_definition_owner_code => l_line_definition_owner_code
56264       ,p_line_definition_code       => l_line_definition_code
56265       ,p_accounting_line_code       => l_component_code
56266       ,p_accounting_line_type_code  => l_component_type_code
56267       ,p_accounting_line_appl_id    => l_component_appl_id
56268       ,p_amb_context_code           => l_amb_context_code
56269       ,p_entity_code                => l_entity_code
56270       ,p_event_class_code           => l_event_class_code);
56271    --
56272    -- set accounting class
56273    --
56274    xla_ae_lines_pkg.SetAcctClass(
56275            p_accounting_class_code  => 'INVENTORY_VALUATION'
56276          , p_ae_header_id           => l_ae_header_id
56277          );
56278 
56279    --
56280    -- set rounding class
56281    --
56282    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
56286    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
56283                       'INVENTORY_VALUATION';
56284 
56285    --
56287    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
56288    --
56289    -- bulk performance
56290    --
56291    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
56292 
56293    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
56294       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
56295 
56296    -- 4955764
56297    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56298       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
56299 
56300    -- 4458381 Public Sector Enh
56301    
56302    --
56303    -- set accounting attributes for the line type
56304    --
56305    l_entered_amt_idx := 3;
56306    l_accted_amt_idx  := 8;
56307    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
56308    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
56309    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
56310    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
56311    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
56312    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
56313    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
56314    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
56315    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
56316    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
56317    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
56318    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
56319    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
56320    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
56321    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
56322    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
56323    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
56324 
56325    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
56326    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
56327 
56328    ---------------------------------------------------------------------------------------------------------------
56329    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
56330    ---------------------------------------------------------------------------------------------------------------
56331    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
56332 
56333    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56334    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56335 
56336    IF xla_accounting_cache_pkg.GetValueChar
56337          (p_source_code         => 'LEDGER_CATEGORY_CODE'
56338          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
56339    AND l_bflow_method_code = 'PRIOR_ENTRY'
56340 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
56341    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
56342          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
56343        )
56344    THEN
56345          xla_ae_lines_pkg.BflowUpgEntry
56346            (p_business_method_code    => l_bflow_method_code
56347            ,p_business_class_code     => l_bflow_class_code
56348            ,p_balance_type            => l_balance_type_code);
56349    ELSE
56350       NULL;
56351 -- No business flow processing for business flow method of NONE.
56352    END IF;
56353 
56354    --
56355    -- call analytical criteria
56356    --
56357    
56358    --
56359    -- call description
56360    --
56361    -- No description or it is inherited.
56362    --
56363    -- call ADRs
56364    -- Bug 4922099
56365    --
56366    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56367         (NVL(l_actual_upg_option, 'N') = 'O') OR
56368         (NVL(l_enc_upg_option, 'N') = 'O')
56369       )
56370    THEN
56371    NULL;
56372    --
56373    --
56374    
56375   l_ccid := AcctDerRule_17(
56376            p_application_id           => p_application_id
56377          , p_ae_header_id             => l_ae_header_id 
56378 , p_source_1 => p_source_1
56379 , p_source_2 => p_source_2
56380          , x_transaction_coa_id       => l_adr_transaction_coa_id
56381          , x_accounting_coa_id        => l_adr_accounting_coa_id
56382          , x_value_type_code          => l_adr_value_type_code
56383          , p_side                     => 'NA'
56384    );
56385 
56386    xla_ae_lines_pkg.set_ccid(
56387     p_code_combination_id          => l_ccid
56388   , p_value_type_code              => l_adr_value_type_code
56389   , p_transaction_coa_id           => l_adr_transaction_coa_id
56390   , p_accounting_coa_id            => l_adr_accounting_coa_id
56391   , p_adr_code                     => 'INV'
56392   , p_adr_type_code                => 'S'
56393   , p_component_type               => l_component_type
56394   , p_component_code               => l_component_code
56395   , p_component_type_code          => l_component_type_code
56399   );
56396   , p_component_appl_id            => l_component_appl_id
56397   , p_amb_context_code             => l_amb_context_code
56398   , p_side                         => 'NA'
56400 
56401 
56402    --
56403    --
56404    END IF;
56405    --
56406    -- Bug 4922099
56407    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
56408           (NVL(l_enc_upg_option, 'N') = 'O')
56409         ) AND
56410         (l_bflow_method_code = 'PRIOR_ENTRY')
56411       )
56412    THEN
56413       IF
56414       --
56415       1 = 2
56416       --
56417       THEN
56418       xla_accounting_err_pkg.build_message
56419                                     (p_appli_s_name            => 'XLA'
56420                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56421                                     ,p_token_1                 => 'LINE_NUMBER'
56422                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
56423                                     ,p_token_2                 => 'LINE_TYPE_NAME'
56424                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
56425                                                                              l_component_type
56426                                                                             ,l_component_code
56427                                                                             ,l_component_type_code
56428                                                                             ,l_component_appl_id
56429                                                                             ,l_amb_context_code
56430                                                                             ,l_entity_code
56431                                                                             ,l_event_class_code
56432                                                                            )
56433                                     ,p_token_3                 => 'OWNER'
56434                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
56435                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
56436                                                                           ,p_lookup_code    => l_component_type_code
56437                                                                          )
56438                                     ,p_token_4                 => 'PRODUCT_NAME'
56439                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
56440                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
56441                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
56442                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
56443                                     ,p_ae_header_id            =>  NULL
56444                                        );
56445 
56446         IF (C_LEVEL_ERROR>= g_log_level) THEN
56447                  trace
56448                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56449                       ,p_level    => C_LEVEL_ERROR
56450                       ,p_module   => l_log_module);
56451         END IF;
56452       END IF;
56453    END IF;
56454    --
56455    --
56456    ------------------------------------------------------------------------------------------------
56457    -- 4219869 Business Flow
56458    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
56459    -- Prior Entry.  Currently, the following code is always generated.
56460    ------------------------------------------------------------------------------------------------
56461    XLA_AE_LINES_PKG.ValidateCurrentLine;
56462 
56463    ------------------------------------------------------------------------------------
56464    -- 4219869 Business Flow
56465    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
56466    ------------------------------------------------------------------------------------
56467    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56468 
56469    ----------------------------------------------------------------------------------
56470    -- 4219869 Business Flow
56471    -- Update journal entry status -- Need to generate this within IF <condition>
56472    ----------------------------------------------------------------------------------
56473    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56474          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
56475          ,p_balance_type_code => l_balance_type_code
56476          );
56477 
56478    -------------------------------------------------------------------------------------------
56479    -- 4262811 - Generate the Accrual Reversal lines
56480    -------------------------------------------------------------------------------------------
56481    BEGIN
56482       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
56483                               (g_array_event(p_event_id).array_value_num('header_index'));
56484       IF l_acc_rev_flag IS NULL THEN
56485          l_acc_rev_flag := 'N';
56486       END IF;
56487    EXCEPTION
56488       WHEN OTHERS THEN
56489          l_acc_rev_flag := 'N';
56490    END;
56491    --
56492    IF (l_acc_rev_flag = 'Y') THEN
56493 
56497        ------------------------------------------------------------------------------------------
56494        -- 4645092  ------------------------------------------------------------------------------
56495        -- To allow MPA report to determine if it should generate report process
56496        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
56498 
56499        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
56500        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
56501    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
56502    -- call ADRs
56503    -- Bug 4922099
56504    --
56505    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56506         (NVL(l_actual_upg_option, 'N') = 'O') OR
56507         (NVL(l_enc_upg_option, 'N') = 'O')
56508       )
56509    THEN
56510    NULL;
56511    --
56512    --
56513    
56514   l_ccid := AcctDerRule_17(
56515            p_application_id           => p_application_id
56516          , p_ae_header_id             => l_ae_header_id 
56517 , p_source_1 => p_source_1
56518 , p_source_2 => p_source_2
56519          , x_transaction_coa_id       => l_adr_transaction_coa_id
56520          , x_accounting_coa_id        => l_adr_accounting_coa_id
56521          , x_value_type_code          => l_adr_value_type_code
56522          , p_side                     => 'NA'
56523    );
56524 
56525    xla_ae_lines_pkg.set_ccid(
56526     p_code_combination_id          => l_ccid
56527   , p_value_type_code              => l_adr_value_type_code
56528   , p_transaction_coa_id           => l_adr_transaction_coa_id
56529   , p_accounting_coa_id            => l_adr_accounting_coa_id
56530   , p_adr_code                     => 'INV'
56531   , p_adr_type_code                => 'S'
56532   , p_component_type               => l_component_type
56533   , p_component_code               => l_component_code
56534   , p_component_type_code          => l_component_type_code
56535   , p_component_appl_id            => l_component_appl_id
56536   , p_amb_context_code             => l_amb_context_code
56537   , p_side                         => 'NA'
56538   );
56539 
56540 
56541    --
56542    --
56543    END IF;
56544 
56545        --
56546        -- Update the line information that should be overwritten
56547        --
56548        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
56549                                          p_header_num   => 1);
56550        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
56551 
56552        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
56553 
56554        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
56555           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
56556        END IF;
56557 
56558       --
56559       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
56560       --
56561       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
56562           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
56563       ELSE
56564           ---------------------------------------------------------------------------------------------------
56565           -- 4262811a Switch Sign
56566           ---------------------------------------------------------------------------------------------------
56567           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
56568           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56569                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56570           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56571                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56572           -- 5132302
56573           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
56574                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56575 
56576       END IF;
56577 
56578       -- 4955764
56579       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56580       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
56581 
56582 
56583       XLA_AE_LINES_PKG.ValidateCurrentLine;
56584       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56585 
56586       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56587                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
56588                ,p_balance_type_code => l_balance_type_code);
56589 
56590    END IF;
56591 
56592    -----------------------------------------------------------------------------------------
56593    -- 4262811 Multiperiod Accounting
56594    -----------------------------------------------------------------------------------------
56595      -- No MPA option is assigned.
56596 
56597 
56598 END IF;
56599 END IF;
56600 --
56601 
56602 --
56603 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56604    trace
56605       (p_msg      => 'END of AcctLineType_134'
56606       ,p_level    => C_LEVEL_PROCEDURE
56607       ,p_module   => l_log_module);
56608 END IF;
56612       RAISE;
56609 --
56610 EXCEPTION
56611   WHEN xla_exceptions_pkg.application_exception THEN
56613   WHEN OTHERS THEN
56614        xla_exceptions_pkg.raise_message
56615            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_134');
56616 END AcctLineType_134;
56617 --
56618 
56619 ---------------------------------------
56620 --
56621 -- PRIVATE FUNCTION
56622 --         AcctLineType_135
56623 --
56624 ---------------------------------------
56625 PROCEDURE AcctLineType_135 (
56626   p_application_id        IN NUMBER
56627  ,p_event_id              IN NUMBER
56628  ,p_calculate_acctd_flag  IN VARCHAR2
56629  ,p_calculate_g_l_flag    IN VARCHAR2
56630  ,p_actual_flag           IN OUT VARCHAR2
56631  ,p_balance_type_code     OUT VARCHAR2
56632  ,p_gain_or_loss_ref      OUT VARCHAR2
56633  
56634 --Transaction Account
56635  , p_source_1            IN NUMBER
56636 --Journal Line Type
56637  , p_source_2            IN VARCHAR2
56638 --Entered Amount
56639  , p_source_3            IN NUMBER
56640 --First Distribution Identifier
56641  , p_source_5            IN NUMBER
56642 --Distribution Type
56643  , p_source_6            IN VARCHAR2
56644 --Currency Code
56645  , p_source_7            IN VARCHAR2
56646 --Currency Conversion Date
56647  , p_source_8            IN DATE
56648 --Currency Conversion Rate
56649  , p_source_9            IN NUMBER
56650 --Currency Conversion Type
56651  , p_source_10            IN VARCHAR2
56652 --Accounted Amount
56653  , p_source_11            IN NUMBER
56654 )
56655 IS
56656 
56657 l_component_type              VARCHAR2(80);
56658 l_component_code              VARCHAR2(30);
56659 l_component_type_code         VARCHAR2(1);
56660 l_component_appl_id           INTEGER;
56661 l_amb_context_code            VARCHAR2(30);
56662 l_entity_code                 VARCHAR2(30);
56663 l_event_class_code            VARCHAR2(30);
56664 l_ae_header_id                NUMBER;
56665 l_event_type_code             VARCHAR2(30);
56666 l_line_definition_code        VARCHAR2(30);
56667 l_line_definition_owner_code  VARCHAR2(1);
56668 --
56669 -- adr variables
56670 l_segment                     VARCHAR2(30);
56671 l_ccid                        NUMBER;
56672 l_adr_transaction_coa_id      NUMBER;
56673 l_adr_accounting_coa_id       NUMBER;
56674 l_adr_flexfield_segment_code  VARCHAR2(30);
56675 l_adr_flex_value_set_id       NUMBER;
56676 l_adr_value_type_code         VARCHAR2(30);
56677 l_adr_value_combination_id    NUMBER;
56678 l_adr_value_segment_code      VARCHAR2(30);
56679 
56680 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
56681 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
56682 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
56683 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
56684 
56685 -- 4262811 Variables ------------------------------------------------------------------------------------------
56686 l_entered_amt_idx             NUMBER;
56687 l_accted_amt_idx              NUMBER;
56688 l_acc_rev_flag                VARCHAR2(1);
56689 l_accrual_line_num            NUMBER;
56690 l_tmp_amt                     NUMBER;
56691 l_acc_rev_natural_side_code   VARCHAR2(1);
56692 
56693 l_num_entries                 NUMBER;
56694 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
56695 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
56696 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
56697 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
56698 l_recog_line_1                NUMBER;
56699 l_recog_line_2                NUMBER;
56700 
56701 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
56702 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
56703 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
56704 
56705 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
56706 
56707 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
56708 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
56709 
56710 ---------------------------------------------------------------------------------------------------------------
56711 
56712 
56713 --
56714 -- bulk performance
56715 --
56716 l_balance_type_code           VARCHAR2(1);
56717 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
56718 l_log_module                  VARCHAR2(240);
56719 
56720 --
56721 -- Upgrade strategy
56722 --
56723 l_actual_upg_option           VARCHAR2(1);
56724 l_enc_upg_option           VARCHAR2(1);
56725 
56726 --
56727 BEGIN
56728 --
56729 IF g_log_enabled THEN
56730       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_135';
56731 END IF;
56732 --
56733 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56734 
56735       trace
56736          (p_msg      => 'BEGIN of AcctLineType_135'
56737          ,p_level    => C_LEVEL_PROCEDURE
56738          ,p_module   => l_log_module);
56739 
56740 END IF;
56741 --
56742 l_component_type             := 'AMB_JLT';
56743 l_component_code             := 'INV';
56744 l_component_type_code        := 'S';
56745 l_component_appl_id          :=  555;
56749 l_event_type_code            := 'LOG_RET_TO_RECEIVING';
56746 l_amb_context_code           := 'DEFAULT';
56747 l_entity_code                := 'PURCHASING';
56748 l_event_class_code           := 'DELIVER';
56750 l_line_definition_owner_code := 'S';
56751 l_line_definition_code       := 'LOG_RET_TO_RECEIVING';
56752 --
56753 l_balance_type_code          := 'A';
56754 l_segment                     := NULL;
56755 l_ccid                        := NULL;
56756 l_adr_transaction_coa_id      := NULL;
56757 l_adr_accounting_coa_id       := NULL;
56758 l_adr_flexfield_segment_code  := NULL;
56759 l_adr_flex_value_set_id       := NULL;
56760 l_adr_value_type_code         := NULL;
56761 l_adr_value_combination_id    := NULL;
56762 l_adr_value_segment_code      := NULL;
56763 
56764 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
56765 l_bflow_class_code           := '';    -- 4219869 Business Flow
56766 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
56767 l_budgetary_control_flag     := 'N';
56768 
56769 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
56770 l_bflow_applied_to_amt       := NULL; -- 5132302
56771 l_entered_amt_idx            := NULL;          -- 4262811
56772 l_accted_amt_idx             := NULL;          -- 4262811
56773 l_acc_rev_flag               := NULL;          -- 4262811
56774 l_accrual_line_num           := NULL;          -- 4262811
56775 l_tmp_amt                    := NULL;          -- 4262811
56776 --
56777  
56778 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
56779     l_balance_type_code <> 'B' THEN
56780 IF NVL(p_source_2,'
56781 ') =  'INV'
56782  THEN 
56783 
56784    --
56785    XLA_AE_LINES_PKG.SetNewLine;
56786 
56787    p_balance_type_code          := l_balance_type_code;
56788    -- set the flag so later we will know whether the gain loss line needs to be created
56789    
56790    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
56791      p_actual_flag :='A';
56792    END IF;
56793 
56794    --
56795    -- bulk performance
56796    --
56797    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
56798                                       p_header_num   => 0); -- 4262811
56799    --
56800    -- set accounting line options
56801    --
56802    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
56803            p_natural_side_code          => 'D'
56804          , p_gain_or_loss_flag          => 'N'
56805          , p_gl_transfer_mode_code      => 'D'
56806          , p_acct_entry_type_code       => 'A'
56807          , p_switch_side_flag           => 'Y'
56808          , p_merge_duplicate_code       => 'W'
56809          );
56810    --
56811    l_acc_rev_natural_side_code := 'C';  -- 4262811
56812    -- 
56813    --
56814    -- set accounting line type info
56815    --
56816    xla_ae_lines_pkg.SetAcctLineType
56817       (p_component_type             => l_component_type
56818       ,p_event_type_code            => l_event_type_code
56819       ,p_line_definition_owner_code => l_line_definition_owner_code
56820       ,p_line_definition_code       => l_line_definition_code
56821       ,p_accounting_line_code       => l_component_code
56822       ,p_accounting_line_type_code  => l_component_type_code
56823       ,p_accounting_line_appl_id    => l_component_appl_id
56824       ,p_amb_context_code           => l_amb_context_code
56825       ,p_entity_code                => l_entity_code
56826       ,p_event_class_code           => l_event_class_code);
56827    --
56828    -- set accounting class
56829    --
56830    xla_ae_lines_pkg.SetAcctClass(
56831            p_accounting_class_code  => 'INVENTORY_VALUATION'
56832          , p_ae_header_id           => l_ae_header_id
56833          );
56834 
56835    --
56836    -- set rounding class
56837    --
56838    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
56839                       'INVENTORY_VALUATION';
56840 
56841    --
56842    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
56843    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
56844    --
56845    -- bulk performance
56846    --
56847    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
56848 
56849    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
56850       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
56851 
56852    -- 4955764
56853    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56854       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
56855 
56856    -- 4458381 Public Sector Enh
56857    
56858    --
56859    -- set accounting attributes for the line type
56860    --
56861    l_entered_amt_idx := 3;
56862    l_accted_amt_idx  := 8;
56863    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
56864    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
56865    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
56866    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
56867    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
56868    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
56872    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
56869    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
56870    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
56871    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
56873    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
56874    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
56875    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
56876    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
56877    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
56878    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
56879    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
56880 
56881    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
56882    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
56883 
56884    ---------------------------------------------------------------------------------------------------------------
56885    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
56886    ---------------------------------------------------------------------------------------------------------------
56887    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
56888 
56889    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56890    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56891 
56892    IF xla_accounting_cache_pkg.GetValueChar
56893          (p_source_code         => 'LEDGER_CATEGORY_CODE'
56894          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
56895    AND l_bflow_method_code = 'PRIOR_ENTRY'
56896 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
56897    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
56898          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
56899        )
56900    THEN
56901          xla_ae_lines_pkg.BflowUpgEntry
56902            (p_business_method_code    => l_bflow_method_code
56903            ,p_business_class_code     => l_bflow_class_code
56904            ,p_balance_type            => l_balance_type_code);
56905    ELSE
56906       NULL;
56907 -- No business flow processing for business flow method of NONE.
56908    END IF;
56909 
56910    --
56911    -- call analytical criteria
56912    --
56913    
56914    --
56915    -- call description
56916    --
56917    -- No description or it is inherited.
56918    --
56919    -- call ADRs
56920    -- Bug 4922099
56921    --
56922    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56923         (NVL(l_actual_upg_option, 'N') = 'O') OR
56924         (NVL(l_enc_upg_option, 'N') = 'O')
56925       )
56926    THEN
56927    NULL;
56928    --
56929    --
56930    
56931   l_ccid := AcctDerRule_17(
56932            p_application_id           => p_application_id
56933          , p_ae_header_id             => l_ae_header_id 
56934 , p_source_1 => p_source_1
56935 , p_source_2 => p_source_2
56936          , x_transaction_coa_id       => l_adr_transaction_coa_id
56937          , x_accounting_coa_id        => l_adr_accounting_coa_id
56938          , x_value_type_code          => l_adr_value_type_code
56939          , p_side                     => 'NA'
56940    );
56941 
56942    xla_ae_lines_pkg.set_ccid(
56943     p_code_combination_id          => l_ccid
56944   , p_value_type_code              => l_adr_value_type_code
56945   , p_transaction_coa_id           => l_adr_transaction_coa_id
56946   , p_accounting_coa_id            => l_adr_accounting_coa_id
56947   , p_adr_code                     => 'INV'
56948   , p_adr_type_code                => 'S'
56949   , p_component_type               => l_component_type
56950   , p_component_code               => l_component_code
56951   , p_component_type_code          => l_component_type_code
56952   , p_component_appl_id            => l_component_appl_id
56953   , p_amb_context_code             => l_amb_context_code
56954   , p_side                         => 'NA'
56955   );
56956 
56957 
56958    --
56959    --
56960    END IF;
56961    --
56962    -- Bug 4922099
56963    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
56964           (NVL(l_enc_upg_option, 'N') = 'O')
56965         ) AND
56966         (l_bflow_method_code = 'PRIOR_ENTRY')
56967       )
56968    THEN
56969       IF
56970       --
56971       1 = 2
56972       --
56973       THEN
56974       xla_accounting_err_pkg.build_message
56975                                     (p_appli_s_name            => 'XLA'
56976                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56977                                     ,p_token_1                 => 'LINE_NUMBER'
56978                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
56979                                     ,p_token_2                 => 'LINE_TYPE_NAME'
56980                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
56981                                                                              l_component_type
56982                                                                             ,l_component_code
56983                                                                             ,l_component_type_code
56987                                                                             ,l_event_class_code
56984                                                                             ,l_component_appl_id
56985                                                                             ,l_amb_context_code
56986                                                                             ,l_entity_code
56988                                                                            )
56989                                     ,p_token_3                 => 'OWNER'
56990                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
56991                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
56992                                                                           ,p_lookup_code    => l_component_type_code
56993                                                                          )
56994                                     ,p_token_4                 => 'PRODUCT_NAME'
56995                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
56996                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
56997                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
56998                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
56999                                     ,p_ae_header_id            =>  NULL
57000                                        );
57001 
57002         IF (C_LEVEL_ERROR>= g_log_level) THEN
57003                  trace
57004                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57005                       ,p_level    => C_LEVEL_ERROR
57006                       ,p_module   => l_log_module);
57007         END IF;
57008       END IF;
57009    END IF;
57010    --
57011    --
57012    ------------------------------------------------------------------------------------------------
57013    -- 4219869 Business Flow
57014    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
57015    -- Prior Entry.  Currently, the following code is always generated.
57016    ------------------------------------------------------------------------------------------------
57017    XLA_AE_LINES_PKG.ValidateCurrentLine;
57018 
57019    ------------------------------------------------------------------------------------
57020    -- 4219869 Business Flow
57021    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
57022    ------------------------------------------------------------------------------------
57023    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57024 
57025    ----------------------------------------------------------------------------------
57026    -- 4219869 Business Flow
57027    -- Update journal entry status -- Need to generate this within IF <condition>
57028    ----------------------------------------------------------------------------------
57029    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57030          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
57031          ,p_balance_type_code => l_balance_type_code
57032          );
57033 
57034    -------------------------------------------------------------------------------------------
57035    -- 4262811 - Generate the Accrual Reversal lines
57036    -------------------------------------------------------------------------------------------
57037    BEGIN
57038       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
57039                               (g_array_event(p_event_id).array_value_num('header_index'));
57040       IF l_acc_rev_flag IS NULL THEN
57041          l_acc_rev_flag := 'N';
57042       END IF;
57043    EXCEPTION
57044       WHEN OTHERS THEN
57045          l_acc_rev_flag := 'N';
57046    END;
57047    --
57048    IF (l_acc_rev_flag = 'Y') THEN
57049 
57050        -- 4645092  ------------------------------------------------------------------------------
57051        -- To allow MPA report to determine if it should generate report process
57052        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
57053        ------------------------------------------------------------------------------------------
57054 
57055        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
57056        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
57057    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
57058    -- call ADRs
57059    -- Bug 4922099
57060    --
57061    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57062         (NVL(l_actual_upg_option, 'N') = 'O') OR
57063         (NVL(l_enc_upg_option, 'N') = 'O')
57064       )
57065    THEN
57066    NULL;
57067    --
57068    --
57069    
57070   l_ccid := AcctDerRule_17(
57071            p_application_id           => p_application_id
57072          , p_ae_header_id             => l_ae_header_id 
57073 , p_source_1 => p_source_1
57074 , p_source_2 => p_source_2
57075          , x_transaction_coa_id       => l_adr_transaction_coa_id
57076          , x_accounting_coa_id        => l_adr_accounting_coa_id
57077          , x_value_type_code          => l_adr_value_type_code
57078          , p_side                     => 'NA'
57079    );
57080 
57081    xla_ae_lines_pkg.set_ccid(
57082     p_code_combination_id          => l_ccid
57086   , p_adr_code                     => 'INV'
57083   , p_value_type_code              => l_adr_value_type_code
57084   , p_transaction_coa_id           => l_adr_transaction_coa_id
57085   , p_accounting_coa_id            => l_adr_accounting_coa_id
57087   , p_adr_type_code                => 'S'
57088   , p_component_type               => l_component_type
57089   , p_component_code               => l_component_code
57090   , p_component_type_code          => l_component_type_code
57091   , p_component_appl_id            => l_component_appl_id
57092   , p_amb_context_code             => l_amb_context_code
57093   , p_side                         => 'NA'
57094   );
57095 
57096 
57097    --
57098    --
57099    END IF;
57100 
57101        --
57102        -- Update the line information that should be overwritten
57103        --
57104        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
57105                                          p_header_num   => 1);
57106        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
57107 
57108        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
57109 
57110        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
57111           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
57112        END IF;
57113 
57114       --
57115       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
57116       --
57117       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
57118           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
57119       ELSE
57120           ---------------------------------------------------------------------------------------------------
57121           -- 4262811a Switch Sign
57122           ---------------------------------------------------------------------------------------------------
57123           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
57124           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57125                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57126           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57127                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57128           -- 5132302
57129           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
57130                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57131 
57132       END IF;
57133 
57134       -- 4955764
57135       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57136       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
57137 
57138 
57139       XLA_AE_LINES_PKG.ValidateCurrentLine;
57140       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57141 
57142       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57143                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
57144                ,p_balance_type_code => l_balance_type_code);
57145 
57146    END IF;
57147 
57148    -----------------------------------------------------------------------------------------
57149    -- 4262811 Multiperiod Accounting
57150    -----------------------------------------------------------------------------------------
57151      -- No MPA option is assigned.
57152 
57153 
57154 END IF;
57155 END IF;
57156 --
57157 
57158 --
57159 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57160    trace
57161       (p_msg      => 'END of AcctLineType_135'
57162       ,p_level    => C_LEVEL_PROCEDURE
57163       ,p_module   => l_log_module);
57164 END IF;
57165 --
57166 EXCEPTION
57167   WHEN xla_exceptions_pkg.application_exception THEN
57168       RAISE;
57169   WHEN OTHERS THEN
57170        xla_exceptions_pkg.raise_message
57171            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_135');
57172 END AcctLineType_135;
57173 --
57174 
57175 ---------------------------------------
57176 --
57177 -- PRIVATE FUNCTION
57178 --         AcctLineType_136
57179 --
57180 ---------------------------------------
57181 PROCEDURE AcctLineType_136 (
57182   p_application_id        IN NUMBER
57183  ,p_event_id              IN NUMBER
57184  ,p_calculate_acctd_flag  IN VARCHAR2
57185  ,p_calculate_g_l_flag    IN VARCHAR2
57186  ,p_actual_flag           IN OUT VARCHAR2
57187  ,p_balance_type_code     OUT VARCHAR2
57188  ,p_gain_or_loss_ref      OUT VARCHAR2
57189  
57190 --Transaction Account
57191  , p_source_1            IN NUMBER
57192 --Journal Line Type
57193  , p_source_2            IN VARCHAR2
57194 --Entered Amount
57195  , p_source_3            IN NUMBER
57196 --First Distribution Identifier
57197  , p_source_5            IN NUMBER
57198 --Distribution Type
57199  , p_source_6            IN VARCHAR2
57200 --Currency Code
57201  , p_source_7            IN VARCHAR2
57202 --Currency Conversion Date
57203  , p_source_8            IN DATE
57204 --Currency Conversion Rate
57208 --Accounted Amount
57205  , p_source_9            IN NUMBER
57206 --Currency Conversion Type
57207  , p_source_10            IN VARCHAR2
57209  , p_source_11            IN NUMBER
57210 )
57211 IS
57212 
57213 l_component_type              VARCHAR2(80);
57214 l_component_code              VARCHAR2(30);
57215 l_component_type_code         VARCHAR2(1);
57216 l_component_appl_id           INTEGER;
57217 l_amb_context_code            VARCHAR2(30);
57218 l_entity_code                 VARCHAR2(30);
57219 l_event_class_code            VARCHAR2(30);
57220 l_ae_header_id                NUMBER;
57221 l_event_type_code             VARCHAR2(30);
57222 l_line_definition_code        VARCHAR2(30);
57223 l_line_definition_owner_code  VARCHAR2(1);
57224 --
57225 -- adr variables
57226 l_segment                     VARCHAR2(30);
57227 l_ccid                        NUMBER;
57228 l_adr_transaction_coa_id      NUMBER;
57229 l_adr_accounting_coa_id       NUMBER;
57230 l_adr_flexfield_segment_code  VARCHAR2(30);
57231 l_adr_flex_value_set_id       NUMBER;
57232 l_adr_value_type_code         VARCHAR2(30);
57233 l_adr_value_combination_id    NUMBER;
57234 l_adr_value_segment_code      VARCHAR2(30);
57235 
57236 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
57237 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
57238 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
57239 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
57240 
57241 -- 4262811 Variables ------------------------------------------------------------------------------------------
57242 l_entered_amt_idx             NUMBER;
57243 l_accted_amt_idx              NUMBER;
57244 l_acc_rev_flag                VARCHAR2(1);
57245 l_accrual_line_num            NUMBER;
57246 l_tmp_amt                     NUMBER;
57247 l_acc_rev_natural_side_code   VARCHAR2(1);
57248 
57249 l_num_entries                 NUMBER;
57250 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
57251 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
57252 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
57253 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
57254 l_recog_line_1                NUMBER;
57255 l_recog_line_2                NUMBER;
57256 
57257 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
57258 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
57259 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
57260 
57261 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
57262 
57263 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
57264 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
57265 
57266 ---------------------------------------------------------------------------------------------------------------
57267 
57268 
57269 --
57270 -- bulk performance
57271 --
57272 l_balance_type_code           VARCHAR2(1);
57273 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
57274 l_log_module                  VARCHAR2(240);
57275 
57276 --
57277 -- Upgrade strategy
57278 --
57279 l_actual_upg_option           VARCHAR2(1);
57280 l_enc_upg_option           VARCHAR2(1);
57281 
57282 --
57283 BEGIN
57284 --
57285 IF g_log_enabled THEN
57286       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_136';
57287 END IF;
57288 --
57289 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57290 
57291       trace
57292          (p_msg      => 'BEGIN of AcctLineType_136'
57293          ,p_level    => C_LEVEL_PROCEDURE
57294          ,p_module   => l_log_module);
57295 
57296 END IF;
57297 --
57298 l_component_type             := 'AMB_JLT';
57299 l_component_code             := 'INV';
57300 l_component_type_code        := 'S';
57301 l_component_appl_id          :=  555;
57302 l_amb_context_code           := 'DEFAULT';
57303 l_entity_code                := 'INVENTORY';
57304 l_event_class_code           := 'LOG_INTERCOMPANY';
57305 l_event_type_code            := 'LOG_IC_SALES_ISSUE';
57306 l_line_definition_owner_code := 'S';
57307 l_line_definition_code       := 'LOG_IC_SALES_ISSUE';
57308 --
57309 l_balance_type_code          := 'A';
57310 l_segment                     := NULL;
57311 l_ccid                        := NULL;
57312 l_adr_transaction_coa_id      := NULL;
57313 l_adr_accounting_coa_id       := NULL;
57314 l_adr_flexfield_segment_code  := NULL;
57315 l_adr_flex_value_set_id       := NULL;
57316 l_adr_value_type_code         := NULL;
57317 l_adr_value_combination_id    := NULL;
57318 l_adr_value_segment_code      := NULL;
57319 
57320 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
57321 l_bflow_class_code           := '';    -- 4219869 Business Flow
57322 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
57323 l_budgetary_control_flag     := 'N';
57324 
57325 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
57326 l_bflow_applied_to_amt       := NULL; -- 5132302
57327 l_entered_amt_idx            := NULL;          -- 4262811
57328 l_accted_amt_idx             := NULL;          -- 4262811
57329 l_acc_rev_flag               := NULL;          -- 4262811
57330 l_accrual_line_num           := NULL;          -- 4262811
57334 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
57331 l_tmp_amt                    := NULL;          -- 4262811
57332 --
57333  
57335     l_balance_type_code <> 'B' THEN
57336 IF NVL(p_source_2,'
57337 ') =  'INV'
57338  THEN 
57339 
57340    --
57341    XLA_AE_LINES_PKG.SetNewLine;
57342 
57343    p_balance_type_code          := l_balance_type_code;
57344    -- set the flag so later we will know whether the gain loss line needs to be created
57345    
57346    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
57347      p_actual_flag :='A';
57348    END IF;
57349 
57350    --
57351    -- bulk performance
57352    --
57353    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
57354                                       p_header_num   => 0); -- 4262811
57355    --
57356    -- set accounting line options
57357    --
57358    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
57359            p_natural_side_code          => 'D'
57360          , p_gain_or_loss_flag          => 'N'
57361          , p_gl_transfer_mode_code      => 'D'
57362          , p_acct_entry_type_code       => 'A'
57363          , p_switch_side_flag           => 'Y'
57364          , p_merge_duplicate_code       => 'W'
57365          );
57366    --
57367    l_acc_rev_natural_side_code := 'C';  -- 4262811
57368    -- 
57369    --
57370    -- set accounting line type info
57371    --
57372    xla_ae_lines_pkg.SetAcctLineType
57373       (p_component_type             => l_component_type
57374       ,p_event_type_code            => l_event_type_code
57375       ,p_line_definition_owner_code => l_line_definition_owner_code
57376       ,p_line_definition_code       => l_line_definition_code
57377       ,p_accounting_line_code       => l_component_code
57378       ,p_accounting_line_type_code  => l_component_type_code
57379       ,p_accounting_line_appl_id    => l_component_appl_id
57380       ,p_amb_context_code           => l_amb_context_code
57381       ,p_entity_code                => l_entity_code
57382       ,p_event_class_code           => l_event_class_code);
57383    --
57384    -- set accounting class
57385    --
57386    xla_ae_lines_pkg.SetAcctClass(
57387            p_accounting_class_code  => 'INVENTORY_VALUATION'
57388          , p_ae_header_id           => l_ae_header_id
57389          );
57390 
57391    --
57392    -- set rounding class
57393    --
57394    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
57395                       'INVENTORY_VALUATION';
57396 
57397    --
57398    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
57399    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
57400    --
57401    -- bulk performance
57402    --
57403    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
57404 
57405    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
57406       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
57407 
57408    -- 4955764
57409    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57410       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
57411 
57412    -- 4458381 Public Sector Enh
57413    
57414    --
57415    -- set accounting attributes for the line type
57416    --
57417    l_entered_amt_idx := 3;
57418    l_accted_amt_idx  := 8;
57419    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
57420    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
57421    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
57422    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
57423    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
57424    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
57425    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
57426    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
57427    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
57428    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
57429    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
57430    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
57431    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
57432    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
57433    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
57434    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
57435    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
57436 
57437    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
57438    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
57439 
57440    ---------------------------------------------------------------------------------------------------------------
57441    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
57442    ---------------------------------------------------------------------------------------------------------------
57443    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
57444 
57445    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57449          (p_source_code         => 'LEDGER_CATEGORY_CODE'
57446    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57447 
57448    IF xla_accounting_cache_pkg.GetValueChar
57450          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
57451    AND l_bflow_method_code = 'PRIOR_ENTRY'
57452 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
57453    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
57454          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
57455        )
57456    THEN
57457          xla_ae_lines_pkg.BflowUpgEntry
57458            (p_business_method_code    => l_bflow_method_code
57459            ,p_business_class_code     => l_bflow_class_code
57460            ,p_balance_type            => l_balance_type_code);
57461    ELSE
57462       NULL;
57463 -- No business flow processing for business flow method of NONE.
57464    END IF;
57465 
57466    --
57467    -- call analytical criteria
57468    --
57469    
57470    --
57471    -- call description
57472    --
57473    -- No description or it is inherited.
57474    --
57475    -- call ADRs
57476    -- Bug 4922099
57477    --
57478    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57479         (NVL(l_actual_upg_option, 'N') = 'O') OR
57480         (NVL(l_enc_upg_option, 'N') = 'O')
57481       )
57482    THEN
57483    NULL;
57484    --
57485    --
57486    
57487   l_ccid := AcctDerRule_17(
57488            p_application_id           => p_application_id
57489          , p_ae_header_id             => l_ae_header_id 
57490 , p_source_1 => p_source_1
57491 , p_source_2 => p_source_2
57492          , x_transaction_coa_id       => l_adr_transaction_coa_id
57493          , x_accounting_coa_id        => l_adr_accounting_coa_id
57494          , x_value_type_code          => l_adr_value_type_code
57495          , p_side                     => 'NA'
57496    );
57497 
57498    xla_ae_lines_pkg.set_ccid(
57499     p_code_combination_id          => l_ccid
57500   , p_value_type_code              => l_adr_value_type_code
57501   , p_transaction_coa_id           => l_adr_transaction_coa_id
57502   , p_accounting_coa_id            => l_adr_accounting_coa_id
57503   , p_adr_code                     => 'INV'
57504   , p_adr_type_code                => 'S'
57505   , p_component_type               => l_component_type
57506   , p_component_code               => l_component_code
57507   , p_component_type_code          => l_component_type_code
57508   , p_component_appl_id            => l_component_appl_id
57509   , p_amb_context_code             => l_amb_context_code
57510   , p_side                         => 'NA'
57511   );
57512 
57513 
57514    --
57515    --
57516    END IF;
57517    --
57518    -- Bug 4922099
57519    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
57520           (NVL(l_enc_upg_option, 'N') = 'O')
57521         ) AND
57522         (l_bflow_method_code = 'PRIOR_ENTRY')
57523       )
57524    THEN
57525       IF
57526       --
57527       1 = 2
57528       --
57529       THEN
57530       xla_accounting_err_pkg.build_message
57531                                     (p_appli_s_name            => 'XLA'
57532                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57533                                     ,p_token_1                 => 'LINE_NUMBER'
57534                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
57535                                     ,p_token_2                 => 'LINE_TYPE_NAME'
57536                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
57537                                                                              l_component_type
57538                                                                             ,l_component_code
57539                                                                             ,l_component_type_code
57540                                                                             ,l_component_appl_id
57541                                                                             ,l_amb_context_code
57542                                                                             ,l_entity_code
57543                                                                             ,l_event_class_code
57544                                                                            )
57545                                     ,p_token_3                 => 'OWNER'
57546                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
57547                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
57548                                                                           ,p_lookup_code    => l_component_type_code
57549                                                                          )
57550                                     ,p_token_4                 => 'PRODUCT_NAME'
57551                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
57552                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
57553                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
57557 
57554                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
57555                                     ,p_ae_header_id            =>  NULL
57556                                        );
57558         IF (C_LEVEL_ERROR>= g_log_level) THEN
57559                  trace
57560                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57561                       ,p_level    => C_LEVEL_ERROR
57562                       ,p_module   => l_log_module);
57563         END IF;
57564       END IF;
57565    END IF;
57566    --
57567    --
57568    ------------------------------------------------------------------------------------------------
57569    -- 4219869 Business Flow
57570    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
57571    -- Prior Entry.  Currently, the following code is always generated.
57572    ------------------------------------------------------------------------------------------------
57573    XLA_AE_LINES_PKG.ValidateCurrentLine;
57574 
57575    ------------------------------------------------------------------------------------
57576    -- 4219869 Business Flow
57577    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
57578    ------------------------------------------------------------------------------------
57579    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57580 
57581    ----------------------------------------------------------------------------------
57582    -- 4219869 Business Flow
57583    -- Update journal entry status -- Need to generate this within IF <condition>
57584    ----------------------------------------------------------------------------------
57585    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57586          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
57587          ,p_balance_type_code => l_balance_type_code
57588          );
57589 
57590    -------------------------------------------------------------------------------------------
57591    -- 4262811 - Generate the Accrual Reversal lines
57592    -------------------------------------------------------------------------------------------
57593    BEGIN
57594       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
57595                               (g_array_event(p_event_id).array_value_num('header_index'));
57596       IF l_acc_rev_flag IS NULL THEN
57597          l_acc_rev_flag := 'N';
57598       END IF;
57599    EXCEPTION
57600       WHEN OTHERS THEN
57601          l_acc_rev_flag := 'N';
57602    END;
57603    --
57604    IF (l_acc_rev_flag = 'Y') THEN
57605 
57606        -- 4645092  ------------------------------------------------------------------------------
57607        -- To allow MPA report to determine if it should generate report process
57608        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
57609        ------------------------------------------------------------------------------------------
57610 
57611        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
57612        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
57613    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
57614    -- call ADRs
57615    -- Bug 4922099
57616    --
57617    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57618         (NVL(l_actual_upg_option, 'N') = 'O') OR
57619         (NVL(l_enc_upg_option, 'N') = 'O')
57620       )
57621    THEN
57622    NULL;
57623    --
57624    --
57625    
57626   l_ccid := AcctDerRule_17(
57627            p_application_id           => p_application_id
57628          , p_ae_header_id             => l_ae_header_id 
57629 , p_source_1 => p_source_1
57630 , p_source_2 => p_source_2
57631          , x_transaction_coa_id       => l_adr_transaction_coa_id
57632          , x_accounting_coa_id        => l_adr_accounting_coa_id
57633          , x_value_type_code          => l_adr_value_type_code
57634          , p_side                     => 'NA'
57635    );
57636 
57637    xla_ae_lines_pkg.set_ccid(
57638     p_code_combination_id          => l_ccid
57639   , p_value_type_code              => l_adr_value_type_code
57640   , p_transaction_coa_id           => l_adr_transaction_coa_id
57641   , p_accounting_coa_id            => l_adr_accounting_coa_id
57642   , p_adr_code                     => 'INV'
57643   , p_adr_type_code                => 'S'
57644   , p_component_type               => l_component_type
57645   , p_component_code               => l_component_code
57646   , p_component_type_code          => l_component_type_code
57647   , p_component_appl_id            => l_component_appl_id
57648   , p_amb_context_code             => l_amb_context_code
57649   , p_side                         => 'NA'
57650   );
57651 
57652 
57653    --
57654    --
57655    END IF;
57656 
57657        --
57658        -- Update the line information that should be overwritten
57659        --
57660        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
57661                                          p_header_num   => 1);
57662        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
57663 
57664        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
57665 
57666        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
57670       --
57667           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
57668        END IF;
57669 
57671       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
57672       --
57673       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
57674           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
57675       ELSE
57676           ---------------------------------------------------------------------------------------------------
57677           -- 4262811a Switch Sign
57678           ---------------------------------------------------------------------------------------------------
57679           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
57680           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57681                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57682           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57683                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57684           -- 5132302
57685           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
57686                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57687 
57688       END IF;
57689 
57690       -- 4955764
57691       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57692       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
57693 
57694 
57695       XLA_AE_LINES_PKG.ValidateCurrentLine;
57696       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57697 
57698       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57699                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
57700                ,p_balance_type_code => l_balance_type_code);
57701 
57702    END IF;
57703 
57704    -----------------------------------------------------------------------------------------
57705    -- 4262811 Multiperiod Accounting
57706    -----------------------------------------------------------------------------------------
57707      -- No MPA option is assigned.
57708 
57709 
57710 END IF;
57711 END IF;
57712 --
57713 
57714 --
57715 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57716    trace
57717       (p_msg      => 'END of AcctLineType_136'
57718       ,p_level    => C_LEVEL_PROCEDURE
57719       ,p_module   => l_log_module);
57720 END IF;
57721 --
57722 EXCEPTION
57723   WHEN xla_exceptions_pkg.application_exception THEN
57724       RAISE;
57725   WHEN OTHERS THEN
57726        xla_exceptions_pkg.raise_message
57727            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_136');
57728 END AcctLineType_136;
57729 --
57730 
57731 ---------------------------------------
57732 --
57733 -- PRIVATE FUNCTION
57734 --         AcctLineType_137
57735 --
57736 ---------------------------------------
57737 PROCEDURE AcctLineType_137 (
57738   p_application_id        IN NUMBER
57739  ,p_event_id              IN NUMBER
57740  ,p_calculate_acctd_flag  IN VARCHAR2
57741  ,p_calculate_g_l_flag    IN VARCHAR2
57742  ,p_actual_flag           IN OUT VARCHAR2
57743  ,p_balance_type_code     OUT VARCHAR2
57744  ,p_gain_or_loss_ref      OUT VARCHAR2
57745  
57746 --Transaction Account
57747  , p_source_1            IN NUMBER
57748 --Journal Line Type
57749  , p_source_2            IN VARCHAR2
57750 --Entered Amount
57751  , p_source_3            IN NUMBER
57752 --First Distribution Identifier
57753  , p_source_5            IN NUMBER
57754 --Distribution Type
57755  , p_source_6            IN VARCHAR2
57756 --Currency Code
57757  , p_source_7            IN VARCHAR2
57758 --Currency Conversion Date
57759  , p_source_8            IN DATE
57760 --Currency Conversion Rate
57761  , p_source_9            IN NUMBER
57762 --Currency Conversion Type
57763  , p_source_10            IN VARCHAR2
57764 --Accounted Amount
57765  , p_source_11            IN NUMBER
57766 )
57767 IS
57768 
57769 l_component_type              VARCHAR2(80);
57770 l_component_code              VARCHAR2(30);
57771 l_component_type_code         VARCHAR2(1);
57772 l_component_appl_id           INTEGER;
57773 l_amb_context_code            VARCHAR2(30);
57774 l_entity_code                 VARCHAR2(30);
57775 l_event_class_code            VARCHAR2(30);
57776 l_ae_header_id                NUMBER;
57777 l_event_type_code             VARCHAR2(30);
57778 l_line_definition_code        VARCHAR2(30);
57779 l_line_definition_owner_code  VARCHAR2(1);
57780 --
57781 -- adr variables
57782 l_segment                     VARCHAR2(30);
57783 l_ccid                        NUMBER;
57784 l_adr_transaction_coa_id      NUMBER;
57785 l_adr_accounting_coa_id       NUMBER;
57786 l_adr_flexfield_segment_code  VARCHAR2(30);
57787 l_adr_flex_value_set_id       NUMBER;
57788 l_adr_value_type_code         VARCHAR2(30);
57789 l_adr_value_combination_id    NUMBER;
57790 l_adr_value_segment_code      VARCHAR2(30);
57791 
57795 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
57792 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
57793 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
57794 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
57796 
57797 -- 4262811 Variables ------------------------------------------------------------------------------------------
57798 l_entered_amt_idx             NUMBER;
57799 l_accted_amt_idx              NUMBER;
57800 l_acc_rev_flag                VARCHAR2(1);
57801 l_accrual_line_num            NUMBER;
57802 l_tmp_amt                     NUMBER;
57803 l_acc_rev_natural_side_code   VARCHAR2(1);
57804 
57805 l_num_entries                 NUMBER;
57806 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
57807 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
57808 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
57809 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
57810 l_recog_line_1                NUMBER;
57811 l_recog_line_2                NUMBER;
57812 
57813 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
57814 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
57815 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
57816 
57817 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
57818 
57819 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
57820 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
57821 
57822 ---------------------------------------------------------------------------------------------------------------
57823 
57824 
57825 --
57826 -- bulk performance
57827 --
57828 l_balance_type_code           VARCHAR2(1);
57829 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
57830 l_log_module                  VARCHAR2(240);
57831 
57832 --
57833 -- Upgrade strategy
57834 --
57835 l_actual_upg_option           VARCHAR2(1);
57836 l_enc_upg_option           VARCHAR2(1);
57837 
57838 --
57839 BEGIN
57840 --
57841 IF g_log_enabled THEN
57842       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_137';
57843 END IF;
57844 --
57845 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57846 
57847       trace
57848          (p_msg      => 'BEGIN of AcctLineType_137'
57849          ,p_level    => C_LEVEL_PROCEDURE
57850          ,p_module   => l_log_module);
57851 
57852 END IF;
57853 --
57854 l_component_type             := 'AMB_JLT';
57855 l_component_code             := 'INV';
57856 l_component_type_code        := 'S';
57857 l_component_appl_id          :=  555;
57858 l_amb_context_code           := 'DEFAULT';
57859 l_entity_code                := 'PURCHASING';
57860 l_event_class_code           := 'DELIVER';
57861 l_event_type_code            := 'LOG_PO_RECEIPT';
57862 l_line_definition_owner_code := 'S';
57863 l_line_definition_code       := 'LOGICAL_PO_RECEIPT';
57864 --
57865 l_balance_type_code          := 'A';
57866 l_segment                     := NULL;
57867 l_ccid                        := NULL;
57868 l_adr_transaction_coa_id      := NULL;
57869 l_adr_accounting_coa_id       := NULL;
57870 l_adr_flexfield_segment_code  := NULL;
57871 l_adr_flex_value_set_id       := NULL;
57872 l_adr_value_type_code         := NULL;
57873 l_adr_value_combination_id    := NULL;
57874 l_adr_value_segment_code      := NULL;
57875 
57876 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
57877 l_bflow_class_code           := '';    -- 4219869 Business Flow
57878 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
57879 l_budgetary_control_flag     := 'N';
57880 
57881 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
57882 l_bflow_applied_to_amt       := NULL; -- 5132302
57883 l_entered_amt_idx            := NULL;          -- 4262811
57884 l_accted_amt_idx             := NULL;          -- 4262811
57885 l_acc_rev_flag               := NULL;          -- 4262811
57886 l_accrual_line_num           := NULL;          -- 4262811
57887 l_tmp_amt                    := NULL;          -- 4262811
57888 --
57889  
57890 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
57891     l_balance_type_code <> 'B' THEN
57892 IF NVL(p_source_2,'
57893 ') =  'INV'
57894  THEN 
57895 
57896    --
57897    XLA_AE_LINES_PKG.SetNewLine;
57898 
57899    p_balance_type_code          := l_balance_type_code;
57900    -- set the flag so later we will know whether the gain loss line needs to be created
57901    
57902    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
57903      p_actual_flag :='A';
57904    END IF;
57905 
57906    --
57907    -- bulk performance
57908    --
57909    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
57910                                       p_header_num   => 0); -- 4262811
57911    --
57912    -- set accounting line options
57913    --
57914    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
57915            p_natural_side_code          => 'D'
57916          , p_gain_or_loss_flag          => 'N'
57917          , p_gl_transfer_mode_code      => 'D'
57918          , p_acct_entry_type_code       => 'A'
57919          , p_switch_side_flag           => 'Y'
57923    l_acc_rev_natural_side_code := 'C';  -- 4262811
57920          , p_merge_duplicate_code       => 'W'
57921          );
57922    --
57924    -- 
57925    --
57926    -- set accounting line type info
57927    --
57928    xla_ae_lines_pkg.SetAcctLineType
57929       (p_component_type             => l_component_type
57930       ,p_event_type_code            => l_event_type_code
57931       ,p_line_definition_owner_code => l_line_definition_owner_code
57932       ,p_line_definition_code       => l_line_definition_code
57933       ,p_accounting_line_code       => l_component_code
57934       ,p_accounting_line_type_code  => l_component_type_code
57935       ,p_accounting_line_appl_id    => l_component_appl_id
57936       ,p_amb_context_code           => l_amb_context_code
57937       ,p_entity_code                => l_entity_code
57938       ,p_event_class_code           => l_event_class_code);
57939    --
57940    -- set accounting class
57941    --
57942    xla_ae_lines_pkg.SetAcctClass(
57943            p_accounting_class_code  => 'INVENTORY_VALUATION'
57944          , p_ae_header_id           => l_ae_header_id
57945          );
57946 
57947    --
57948    -- set rounding class
57949    --
57950    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
57951                       'INVENTORY_VALUATION';
57952 
57953    --
57954    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
57955    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
57956    --
57957    -- bulk performance
57958    --
57959    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
57960 
57961    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
57962       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
57963 
57964    -- 4955764
57965    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57966       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
57967 
57968    -- 4458381 Public Sector Enh
57969    
57970    --
57971    -- set accounting attributes for the line type
57972    --
57973    l_entered_amt_idx := 3;
57974    l_accted_amt_idx  := 8;
57975    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
57976    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
57977    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
57978    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
57979    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
57980    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
57981    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
57982    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
57983    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
57984    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
57985    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
57986    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
57987    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
57988    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
57989    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
57990    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
57991    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
57992 
57993    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
57994    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
57995 
57996    ---------------------------------------------------------------------------------------------------------------
57997    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
57998    ---------------------------------------------------------------------------------------------------------------
57999    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
58000 
58001    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58002    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58003 
58004    IF xla_accounting_cache_pkg.GetValueChar
58005          (p_source_code         => 'LEDGER_CATEGORY_CODE'
58006          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
58007    AND l_bflow_method_code = 'PRIOR_ENTRY'
58008 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
58009    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
58010          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
58011        )
58012    THEN
58013          xla_ae_lines_pkg.BflowUpgEntry
58014            (p_business_method_code    => l_bflow_method_code
58015            ,p_business_class_code     => l_bflow_class_code
58016            ,p_balance_type            => l_balance_type_code);
58017    ELSE
58018       NULL;
58019 -- No business flow processing for business flow method of NONE.
58020    END IF;
58021 
58022    --
58023    -- call analytical criteria
58024    --
58025    
58026    --
58027    -- call description
58028    --
58029    -- No description or it is inherited.
58030    --
58031    -- call ADRs
58032    -- Bug 4922099
58033    --
58034    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58038    THEN
58035         (NVL(l_actual_upg_option, 'N') = 'O') OR
58036         (NVL(l_enc_upg_option, 'N') = 'O')
58037       )
58039    NULL;
58040    --
58041    --
58042    
58043   l_ccid := AcctDerRule_17(
58044            p_application_id           => p_application_id
58045          , p_ae_header_id             => l_ae_header_id 
58046 , p_source_1 => p_source_1
58047 , p_source_2 => p_source_2
58048          , x_transaction_coa_id       => l_adr_transaction_coa_id
58049          , x_accounting_coa_id        => l_adr_accounting_coa_id
58050          , x_value_type_code          => l_adr_value_type_code
58051          , p_side                     => 'NA'
58052    );
58053 
58054    xla_ae_lines_pkg.set_ccid(
58055     p_code_combination_id          => l_ccid
58056   , p_value_type_code              => l_adr_value_type_code
58057   , p_transaction_coa_id           => l_adr_transaction_coa_id
58058   , p_accounting_coa_id            => l_adr_accounting_coa_id
58059   , p_adr_code                     => 'INV'
58060   , p_adr_type_code                => 'S'
58061   , p_component_type               => l_component_type
58062   , p_component_code               => l_component_code
58063   , p_component_type_code          => l_component_type_code
58064   , p_component_appl_id            => l_component_appl_id
58065   , p_amb_context_code             => l_amb_context_code
58066   , p_side                         => 'NA'
58067   );
58068 
58069 
58070    --
58071    --
58072    END IF;
58073    --
58074    -- Bug 4922099
58075    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
58076           (NVL(l_enc_upg_option, 'N') = 'O')
58077         ) AND
58078         (l_bflow_method_code = 'PRIOR_ENTRY')
58079       )
58080    THEN
58081       IF
58082       --
58083       1 = 2
58084       --
58085       THEN
58086       xla_accounting_err_pkg.build_message
58087                                     (p_appli_s_name            => 'XLA'
58088                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58089                                     ,p_token_1                 => 'LINE_NUMBER'
58090                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
58091                                     ,p_token_2                 => 'LINE_TYPE_NAME'
58092                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
58093                                                                              l_component_type
58094                                                                             ,l_component_code
58095                                                                             ,l_component_type_code
58096                                                                             ,l_component_appl_id
58097                                                                             ,l_amb_context_code
58098                                                                             ,l_entity_code
58099                                                                             ,l_event_class_code
58100                                                                            )
58101                                     ,p_token_3                 => 'OWNER'
58102                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
58103                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
58104                                                                           ,p_lookup_code    => l_component_type_code
58105                                                                          )
58106                                     ,p_token_4                 => 'PRODUCT_NAME'
58107                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
58108                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
58109                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
58110                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
58111                                     ,p_ae_header_id            =>  NULL
58112                                        );
58113 
58114         IF (C_LEVEL_ERROR>= g_log_level) THEN
58115                  trace
58116                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58117                       ,p_level    => C_LEVEL_ERROR
58118                       ,p_module   => l_log_module);
58119         END IF;
58120       END IF;
58121    END IF;
58122    --
58123    --
58124    ------------------------------------------------------------------------------------------------
58125    -- 4219869 Business Flow
58126    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
58127    -- Prior Entry.  Currently, the following code is always generated.
58128    ------------------------------------------------------------------------------------------------
58129    XLA_AE_LINES_PKG.ValidateCurrentLine;
58130 
58131    ------------------------------------------------------------------------------------
58132    -- 4219869 Business Flow
58133    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
58134    ------------------------------------------------------------------------------------
58135    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58139    -- Update journal entry status -- Need to generate this within IF <condition>
58136 
58137    ----------------------------------------------------------------------------------
58138    -- 4219869 Business Flow
58140    ----------------------------------------------------------------------------------
58141    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58142          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
58143          ,p_balance_type_code => l_balance_type_code
58144          );
58145 
58146    -------------------------------------------------------------------------------------------
58147    -- 4262811 - Generate the Accrual Reversal lines
58148    -------------------------------------------------------------------------------------------
58149    BEGIN
58150       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
58151                               (g_array_event(p_event_id).array_value_num('header_index'));
58152       IF l_acc_rev_flag IS NULL THEN
58153          l_acc_rev_flag := 'N';
58154       END IF;
58155    EXCEPTION
58156       WHEN OTHERS THEN
58157          l_acc_rev_flag := 'N';
58158    END;
58159    --
58160    IF (l_acc_rev_flag = 'Y') THEN
58161 
58162        -- 4645092  ------------------------------------------------------------------------------
58163        -- To allow MPA report to determine if it should generate report process
58164        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
58165        ------------------------------------------------------------------------------------------
58166 
58167        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
58168        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
58169    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
58170    -- call ADRs
58171    -- Bug 4922099
58172    --
58173    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58174         (NVL(l_actual_upg_option, 'N') = 'O') OR
58175         (NVL(l_enc_upg_option, 'N') = 'O')
58176       )
58177    THEN
58178    NULL;
58179    --
58180    --
58181    
58182   l_ccid := AcctDerRule_17(
58183            p_application_id           => p_application_id
58184          , p_ae_header_id             => l_ae_header_id 
58185 , p_source_1 => p_source_1
58186 , p_source_2 => p_source_2
58187          , x_transaction_coa_id       => l_adr_transaction_coa_id
58188          , x_accounting_coa_id        => l_adr_accounting_coa_id
58189          , x_value_type_code          => l_adr_value_type_code
58190          , p_side                     => 'NA'
58191    );
58192 
58193    xla_ae_lines_pkg.set_ccid(
58194     p_code_combination_id          => l_ccid
58195   , p_value_type_code              => l_adr_value_type_code
58196   , p_transaction_coa_id           => l_adr_transaction_coa_id
58197   , p_accounting_coa_id            => l_adr_accounting_coa_id
58198   , p_adr_code                     => 'INV'
58199   , p_adr_type_code                => 'S'
58200   , p_component_type               => l_component_type
58201   , p_component_code               => l_component_code
58202   , p_component_type_code          => l_component_type_code
58203   , p_component_appl_id            => l_component_appl_id
58204   , p_amb_context_code             => l_amb_context_code
58205   , p_side                         => 'NA'
58206   );
58207 
58208 
58209    --
58210    --
58211    END IF;
58212 
58213        --
58214        -- Update the line information that should be overwritten
58215        --
58216        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
58217                                          p_header_num   => 1);
58218        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
58219 
58220        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
58221 
58222        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
58223           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
58224        END IF;
58225 
58226       --
58227       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
58228       --
58229       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
58230           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
58231       ELSE
58232           ---------------------------------------------------------------------------------------------------
58233           -- 4262811a Switch Sign
58234           ---------------------------------------------------------------------------------------------------
58235           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
58236           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58237                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58238           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58239                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58240           -- 5132302
58241           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
58245 
58242                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58243 
58244       END IF;
58246       -- 4955764
58247       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58248       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
58249 
58250 
58251       XLA_AE_LINES_PKG.ValidateCurrentLine;
58252       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58253 
58254       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58255                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
58256                ,p_balance_type_code => l_balance_type_code);
58257 
58258    END IF;
58259 
58260    -----------------------------------------------------------------------------------------
58261    -- 4262811 Multiperiod Accounting
58262    -----------------------------------------------------------------------------------------
58263      -- No MPA option is assigned.
58264 
58265 
58266 END IF;
58267 END IF;
58268 --
58269 
58270 --
58271 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58272    trace
58273       (p_msg      => 'END of AcctLineType_137'
58274       ,p_level    => C_LEVEL_PROCEDURE
58275       ,p_module   => l_log_module);
58276 END IF;
58277 --
58278 EXCEPTION
58279   WHEN xla_exceptions_pkg.application_exception THEN
58280       RAISE;
58281   WHEN OTHERS THEN
58282        xla_exceptions_pkg.raise_message
58283            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_137');
58284 END AcctLineType_137;
58285 --
58286 
58287 ---------------------------------------
58288 --
58289 -- PRIVATE FUNCTION
58290 --         AcctLineType_138
58291 --
58292 ---------------------------------------
58293 PROCEDURE AcctLineType_138 (
58294   p_application_id        IN NUMBER
58295  ,p_event_id              IN NUMBER
58296  ,p_calculate_acctd_flag  IN VARCHAR2
58297  ,p_calculate_g_l_flag    IN VARCHAR2
58298  ,p_actual_flag           IN OUT VARCHAR2
58299  ,p_balance_type_code     OUT VARCHAR2
58300  ,p_gain_or_loss_ref      OUT VARCHAR2
58301  
58302 --Transaction Account
58303  , p_source_1            IN NUMBER
58304 --Journal Line Type
58305  , p_source_2            IN VARCHAR2
58306 --Entered Amount
58307  , p_source_3            IN NUMBER
58308 --First Distribution Identifier
58309  , p_source_5            IN NUMBER
58310 --Distribution Type
58311  , p_source_6            IN VARCHAR2
58312 --Currency Code
58313  , p_source_7            IN VARCHAR2
58314 --Currency Conversion Date
58315  , p_source_8            IN DATE
58316 --Currency Conversion Rate
58317  , p_source_9            IN NUMBER
58318 --Currency Conversion Type
58319  , p_source_10            IN VARCHAR2
58320 --Accounted Amount
58321  , p_source_11            IN NUMBER
58322 )
58323 IS
58324 
58325 l_component_type              VARCHAR2(80);
58326 l_component_code              VARCHAR2(30);
58327 l_component_type_code         VARCHAR2(1);
58328 l_component_appl_id           INTEGER;
58329 l_amb_context_code            VARCHAR2(30);
58330 l_entity_code                 VARCHAR2(30);
58331 l_event_class_code            VARCHAR2(30);
58332 l_ae_header_id                NUMBER;
58333 l_event_type_code             VARCHAR2(30);
58334 l_line_definition_code        VARCHAR2(30);
58335 l_line_definition_owner_code  VARCHAR2(1);
58336 --
58337 -- adr variables
58338 l_segment                     VARCHAR2(30);
58339 l_ccid                        NUMBER;
58340 l_adr_transaction_coa_id      NUMBER;
58341 l_adr_accounting_coa_id       NUMBER;
58342 l_adr_flexfield_segment_code  VARCHAR2(30);
58343 l_adr_flex_value_set_id       NUMBER;
58344 l_adr_value_type_code         VARCHAR2(30);
58345 l_adr_value_combination_id    NUMBER;
58346 l_adr_value_segment_code      VARCHAR2(30);
58347 
58348 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
58349 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
58350 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
58351 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
58352 
58353 -- 4262811 Variables ------------------------------------------------------------------------------------------
58354 l_entered_amt_idx             NUMBER;
58355 l_accted_amt_idx              NUMBER;
58356 l_acc_rev_flag                VARCHAR2(1);
58357 l_accrual_line_num            NUMBER;
58358 l_tmp_amt                     NUMBER;
58359 l_acc_rev_natural_side_code   VARCHAR2(1);
58360 
58361 l_num_entries                 NUMBER;
58362 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
58363 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
58364 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
58365 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
58366 l_recog_line_1                NUMBER;
58367 l_recog_line_2                NUMBER;
58368 
58369 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
58370 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
58371 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
58372 
58376 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
58373 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
58374 
58375 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
58377 
58378 ---------------------------------------------------------------------------------------------------------------
58379 
58380 
58381 --
58382 -- bulk performance
58383 --
58384 l_balance_type_code           VARCHAR2(1);
58385 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
58386 l_log_module                  VARCHAR2(240);
58387 
58388 --
58389 -- Upgrade strategy
58390 --
58391 l_actual_upg_option           VARCHAR2(1);
58392 l_enc_upg_option           VARCHAR2(1);
58393 
58394 --
58395 BEGIN
58396 --
58397 IF g_log_enabled THEN
58398       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_138';
58399 END IF;
58400 --
58401 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58402 
58403       trace
58404          (p_msg      => 'BEGIN of AcctLineType_138'
58405          ,p_level    => C_LEVEL_PROCEDURE
58406          ,p_module   => l_log_module);
58407 
58408 END IF;
58409 --
58410 l_component_type             := 'AMB_JLT';
58411 l_component_code             := 'INV';
58412 l_component_type_code        := 'S';
58413 l_component_appl_id          :=  555;
58414 l_amb_context_code           := 'DEFAULT';
58415 l_entity_code                := 'PURCHASING';
58416 l_event_class_code           := 'DELIVER';
58417 l_event_type_code            := 'PO_RECEIPT';
58418 l_line_definition_owner_code := 'S';
58419 l_line_definition_code       := 'DELIVER';
58420 --
58421 l_balance_type_code          := 'A';
58422 l_segment                     := NULL;
58423 l_ccid                        := NULL;
58424 l_adr_transaction_coa_id      := NULL;
58425 l_adr_accounting_coa_id       := NULL;
58426 l_adr_flexfield_segment_code  := NULL;
58427 l_adr_flex_value_set_id       := NULL;
58428 l_adr_value_type_code         := NULL;
58429 l_adr_value_combination_id    := NULL;
58430 l_adr_value_segment_code      := NULL;
58431 
58432 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
58433 l_bflow_class_code           := '';    -- 4219869 Business Flow
58434 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
58435 l_budgetary_control_flag     := 'N';
58436 
58437 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
58438 l_bflow_applied_to_amt       := NULL; -- 5132302
58439 l_entered_amt_idx            := NULL;          -- 4262811
58440 l_accted_amt_idx             := NULL;          -- 4262811
58441 l_acc_rev_flag               := NULL;          -- 4262811
58442 l_accrual_line_num           := NULL;          -- 4262811
58443 l_tmp_amt                    := NULL;          -- 4262811
58444 --
58445  
58446 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
58447     l_balance_type_code <> 'B' THEN
58448 IF NVL(p_source_2,'
58449 ') =  'INV'
58450  THEN 
58451 
58452    --
58453    XLA_AE_LINES_PKG.SetNewLine;
58454 
58455    p_balance_type_code          := l_balance_type_code;
58456    -- set the flag so later we will know whether the gain loss line needs to be created
58457    
58458    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
58459      p_actual_flag :='A';
58460    END IF;
58461 
58462    --
58463    -- bulk performance
58464    --
58465    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
58466                                       p_header_num   => 0); -- 4262811
58467    --
58468    -- set accounting line options
58469    --
58470    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
58471            p_natural_side_code          => 'D'
58472          , p_gain_or_loss_flag          => 'N'
58473          , p_gl_transfer_mode_code      => 'D'
58474          , p_acct_entry_type_code       => 'A'
58475          , p_switch_side_flag           => 'Y'
58476          , p_merge_duplicate_code       => 'W'
58477          );
58478    --
58479    l_acc_rev_natural_side_code := 'C';  -- 4262811
58480    -- 
58481    --
58482    -- set accounting line type info
58483    --
58484    xla_ae_lines_pkg.SetAcctLineType
58485       (p_component_type             => l_component_type
58486       ,p_event_type_code            => l_event_type_code
58487       ,p_line_definition_owner_code => l_line_definition_owner_code
58488       ,p_line_definition_code       => l_line_definition_code
58489       ,p_accounting_line_code       => l_component_code
58490       ,p_accounting_line_type_code  => l_component_type_code
58491       ,p_accounting_line_appl_id    => l_component_appl_id
58492       ,p_amb_context_code           => l_amb_context_code
58493       ,p_entity_code                => l_entity_code
58494       ,p_event_class_code           => l_event_class_code);
58495    --
58496    -- set accounting class
58497    --
58498    xla_ae_lines_pkg.SetAcctClass(
58499            p_accounting_class_code  => 'INVENTORY_VALUATION'
58500          , p_ae_header_id           => l_ae_header_id
58501          );
58502 
58503    --
58504    -- set rounding class
58505    --
58506    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
58507                       'INVENTORY_VALUATION';
58508 
58509    --
58513    -- bulk performance
58510    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
58511    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
58512    --
58514    --
58515    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
58516 
58517    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
58518       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
58519 
58520    -- 4955764
58521    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58522       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
58523 
58524    -- 4458381 Public Sector Enh
58525    
58526    --
58527    -- set accounting attributes for the line type
58528    --
58529    l_entered_amt_idx := 3;
58530    l_accted_amt_idx  := 8;
58531    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
58532    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
58533    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
58534    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
58535    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
58536    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
58537    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
58538    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
58539    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
58540    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
58541    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
58542    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
58543    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
58544    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
58545    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
58546    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
58547    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
58548 
58549    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
58550    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
58551 
58552    ---------------------------------------------------------------------------------------------------------------
58553    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
58554    ---------------------------------------------------------------------------------------------------------------
58555    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
58556 
58557    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58558    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58559 
58560    IF xla_accounting_cache_pkg.GetValueChar
58561          (p_source_code         => 'LEDGER_CATEGORY_CODE'
58562          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
58563    AND l_bflow_method_code = 'PRIOR_ENTRY'
58564 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
58565    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
58566          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
58567        )
58568    THEN
58569          xla_ae_lines_pkg.BflowUpgEntry
58570            (p_business_method_code    => l_bflow_method_code
58571            ,p_business_class_code     => l_bflow_class_code
58572            ,p_balance_type            => l_balance_type_code);
58573    ELSE
58574       NULL;
58575 -- No business flow processing for business flow method of NONE.
58576    END IF;
58577 
58578    --
58579    -- call analytical criteria
58580    --
58581    
58582    --
58583    -- call description
58584    --
58585    -- No description or it is inherited.
58586    --
58587    -- call ADRs
58588    -- Bug 4922099
58589    --
58590    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58591         (NVL(l_actual_upg_option, 'N') = 'O') OR
58592         (NVL(l_enc_upg_option, 'N') = 'O')
58593       )
58594    THEN
58595    NULL;
58596    --
58597    --
58598    
58599   l_ccid := AcctDerRule_17(
58600            p_application_id           => p_application_id
58601          , p_ae_header_id             => l_ae_header_id 
58602 , p_source_1 => p_source_1
58603 , p_source_2 => p_source_2
58604          , x_transaction_coa_id       => l_adr_transaction_coa_id
58605          , x_accounting_coa_id        => l_adr_accounting_coa_id
58606          , x_value_type_code          => l_adr_value_type_code
58607          , p_side                     => 'NA'
58608    );
58609 
58610    xla_ae_lines_pkg.set_ccid(
58611     p_code_combination_id          => l_ccid
58612   , p_value_type_code              => l_adr_value_type_code
58613   , p_transaction_coa_id           => l_adr_transaction_coa_id
58614   , p_accounting_coa_id            => l_adr_accounting_coa_id
58615   , p_adr_code                     => 'INV'
58616   , p_adr_type_code                => 'S'
58617   , p_component_type               => l_component_type
58618   , p_component_code               => l_component_code
58619   , p_component_type_code          => l_component_type_code
58623   );
58620   , p_component_appl_id            => l_component_appl_id
58621   , p_amb_context_code             => l_amb_context_code
58622   , p_side                         => 'NA'
58624 
58625 
58626    --
58627    --
58628    END IF;
58629    --
58630    -- Bug 4922099
58631    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
58632           (NVL(l_enc_upg_option, 'N') = 'O')
58633         ) AND
58634         (l_bflow_method_code = 'PRIOR_ENTRY')
58635       )
58636    THEN
58637       IF
58638       --
58639       1 = 2
58640       --
58641       THEN
58642       xla_accounting_err_pkg.build_message
58643                                     (p_appli_s_name            => 'XLA'
58644                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58645                                     ,p_token_1                 => 'LINE_NUMBER'
58646                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
58647                                     ,p_token_2                 => 'LINE_TYPE_NAME'
58648                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
58649                                                                              l_component_type
58650                                                                             ,l_component_code
58651                                                                             ,l_component_type_code
58652                                                                             ,l_component_appl_id
58653                                                                             ,l_amb_context_code
58654                                                                             ,l_entity_code
58655                                                                             ,l_event_class_code
58656                                                                            )
58657                                     ,p_token_3                 => 'OWNER'
58658                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
58659                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
58660                                                                           ,p_lookup_code    => l_component_type_code
58661                                                                          )
58662                                     ,p_token_4                 => 'PRODUCT_NAME'
58663                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
58664                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
58665                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
58666                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
58667                                     ,p_ae_header_id            =>  NULL
58668                                        );
58669 
58670         IF (C_LEVEL_ERROR>= g_log_level) THEN
58671                  trace
58672                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58673                       ,p_level    => C_LEVEL_ERROR
58674                       ,p_module   => l_log_module);
58675         END IF;
58676       END IF;
58677    END IF;
58678    --
58679    --
58680    ------------------------------------------------------------------------------------------------
58681    -- 4219869 Business Flow
58682    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
58683    -- Prior Entry.  Currently, the following code is always generated.
58684    ------------------------------------------------------------------------------------------------
58685    XLA_AE_LINES_PKG.ValidateCurrentLine;
58686 
58687    ------------------------------------------------------------------------------------
58688    -- 4219869 Business Flow
58689    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
58690    ------------------------------------------------------------------------------------
58691    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58692 
58693    ----------------------------------------------------------------------------------
58694    -- 4219869 Business Flow
58695    -- Update journal entry status -- Need to generate this within IF <condition>
58696    ----------------------------------------------------------------------------------
58697    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58698          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
58699          ,p_balance_type_code => l_balance_type_code
58700          );
58701 
58702    -------------------------------------------------------------------------------------------
58703    -- 4262811 - Generate the Accrual Reversal lines
58704    -------------------------------------------------------------------------------------------
58705    BEGIN
58706       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
58707                               (g_array_event(p_event_id).array_value_num('header_index'));
58708       IF l_acc_rev_flag IS NULL THEN
58709          l_acc_rev_flag := 'N';
58710       END IF;
58711    EXCEPTION
58712       WHEN OTHERS THEN
58713          l_acc_rev_flag := 'N';
58714    END;
58715    --
58716    IF (l_acc_rev_flag = 'Y') THEN
58717 
58718        -- 4645092  ------------------------------------------------------------------------------
58722 
58719        -- To allow MPA report to determine if it should generate report process
58720        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
58721        ------------------------------------------------------------------------------------------
58723        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
58724        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
58725    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
58726    -- call ADRs
58727    -- Bug 4922099
58728    --
58729    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58730         (NVL(l_actual_upg_option, 'N') = 'O') OR
58731         (NVL(l_enc_upg_option, 'N') = 'O')
58732       )
58733    THEN
58734    NULL;
58735    --
58736    --
58737    
58738   l_ccid := AcctDerRule_17(
58739            p_application_id           => p_application_id
58740          , p_ae_header_id             => l_ae_header_id 
58741 , p_source_1 => p_source_1
58742 , p_source_2 => p_source_2
58743          , x_transaction_coa_id       => l_adr_transaction_coa_id
58744          , x_accounting_coa_id        => l_adr_accounting_coa_id
58745          , x_value_type_code          => l_adr_value_type_code
58746          , p_side                     => 'NA'
58747    );
58748 
58749    xla_ae_lines_pkg.set_ccid(
58750     p_code_combination_id          => l_ccid
58751   , p_value_type_code              => l_adr_value_type_code
58752   , p_transaction_coa_id           => l_adr_transaction_coa_id
58753   , p_accounting_coa_id            => l_adr_accounting_coa_id
58754   , p_adr_code                     => 'INV'
58755   , p_adr_type_code                => 'S'
58756   , p_component_type               => l_component_type
58757   , p_component_code               => l_component_code
58758   , p_component_type_code          => l_component_type_code
58759   , p_component_appl_id            => l_component_appl_id
58760   , p_amb_context_code             => l_amb_context_code
58761   , p_side                         => 'NA'
58762   );
58763 
58764 
58765    --
58766    --
58767    END IF;
58768 
58769        --
58770        -- Update the line information that should be overwritten
58771        --
58772        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
58773                                          p_header_num   => 1);
58774        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
58775 
58776        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
58777 
58778        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
58779           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
58780        END IF;
58781 
58782       --
58783       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
58784       --
58785       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
58786           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
58787       ELSE
58788           ---------------------------------------------------------------------------------------------------
58789           -- 4262811a Switch Sign
58790           ---------------------------------------------------------------------------------------------------
58791           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
58792           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58793                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58794           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58795                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58796           -- 5132302
58797           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
58798                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58799 
58800       END IF;
58801 
58802       -- 4955764
58803       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58804       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
58805 
58806 
58807       XLA_AE_LINES_PKG.ValidateCurrentLine;
58808       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58809 
58810       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58811                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
58812                ,p_balance_type_code => l_balance_type_code);
58813 
58814    END IF;
58815 
58816    -----------------------------------------------------------------------------------------
58817    -- 4262811 Multiperiod Accounting
58818    -----------------------------------------------------------------------------------------
58819      -- No MPA option is assigned.
58820 
58821 
58822 END IF;
58823 END IF;
58824 --
58825 
58826 --
58827 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58828    trace
58829       (p_msg      => 'END of AcctLineType_138'
58830       ,p_level    => C_LEVEL_PROCEDURE
58831       ,p_module   => l_log_module);
58835   WHEN xla_exceptions_pkg.application_exception THEN
58832 END IF;
58833 --
58834 EXCEPTION
58836       RAISE;
58837   WHEN OTHERS THEN
58838        xla_exceptions_pkg.raise_message
58839            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_138');
58840 END AcctLineType_138;
58841 --
58842 
58843 ---------------------------------------
58844 --
58845 -- PRIVATE FUNCTION
58846 --         AcctLineType_139
58847 --
58848 ---------------------------------------
58849 PROCEDURE AcctLineType_139 (
58850   p_application_id        IN NUMBER
58851  ,p_event_id              IN NUMBER
58852  ,p_calculate_acctd_flag  IN VARCHAR2
58853  ,p_calculate_g_l_flag    IN VARCHAR2
58854  ,p_actual_flag           IN OUT VARCHAR2
58855  ,p_balance_type_code     OUT VARCHAR2
58856  ,p_gain_or_loss_ref      OUT VARCHAR2
58857  
58858 --Transaction Account
58859  , p_source_1            IN NUMBER
58860 --Journal Line Type
58861  , p_source_2            IN VARCHAR2
58862 --Entered Amount
58863  , p_source_3            IN NUMBER
58864 --First Distribution Identifier
58865  , p_source_5            IN NUMBER
58866 --Distribution Type
58867  , p_source_6            IN VARCHAR2
58868 --Currency Code
58869  , p_source_7            IN VARCHAR2
58870 --Currency Conversion Date
58871  , p_source_8            IN DATE
58872 --Currency Conversion Rate
58873  , p_source_9            IN NUMBER
58874 --Currency Conversion Type
58875  , p_source_10            IN VARCHAR2
58876 --Accounted Amount
58877  , p_source_11            IN NUMBER
58878 )
58879 IS
58880 
58881 l_component_type              VARCHAR2(80);
58882 l_component_code              VARCHAR2(30);
58883 l_component_type_code         VARCHAR2(1);
58884 l_component_appl_id           INTEGER;
58885 l_amb_context_code            VARCHAR2(30);
58886 l_entity_code                 VARCHAR2(30);
58887 l_event_class_code            VARCHAR2(30);
58888 l_ae_header_id                NUMBER;
58889 l_event_type_code             VARCHAR2(30);
58890 l_line_definition_code        VARCHAR2(30);
58891 l_line_definition_owner_code  VARCHAR2(1);
58892 --
58893 -- adr variables
58894 l_segment                     VARCHAR2(30);
58895 l_ccid                        NUMBER;
58896 l_adr_transaction_coa_id      NUMBER;
58897 l_adr_accounting_coa_id       NUMBER;
58898 l_adr_flexfield_segment_code  VARCHAR2(30);
58899 l_adr_flex_value_set_id       NUMBER;
58900 l_adr_value_type_code         VARCHAR2(30);
58901 l_adr_value_combination_id    NUMBER;
58902 l_adr_value_segment_code      VARCHAR2(30);
58903 
58904 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
58905 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
58906 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
58907 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
58908 
58909 -- 4262811 Variables ------------------------------------------------------------------------------------------
58910 l_entered_amt_idx             NUMBER;
58911 l_accted_amt_idx              NUMBER;
58912 l_acc_rev_flag                VARCHAR2(1);
58913 l_accrual_line_num            NUMBER;
58914 l_tmp_amt                     NUMBER;
58915 l_acc_rev_natural_side_code   VARCHAR2(1);
58916 
58917 l_num_entries                 NUMBER;
58918 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
58919 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
58920 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
58921 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
58922 l_recog_line_1                NUMBER;
58923 l_recog_line_2                NUMBER;
58924 
58925 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
58926 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
58927 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
58928 
58929 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
58930 
58931 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
58932 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
58933 
58934 ---------------------------------------------------------------------------------------------------------------
58935 
58936 
58937 --
58938 -- bulk performance
58939 --
58940 l_balance_type_code           VARCHAR2(1);
58941 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
58942 l_log_module                  VARCHAR2(240);
58943 
58944 --
58945 -- Upgrade strategy
58946 --
58947 l_actual_upg_option           VARCHAR2(1);
58948 l_enc_upg_option           VARCHAR2(1);
58949 
58950 --
58951 BEGIN
58952 --
58953 IF g_log_enabled THEN
58954       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_139';
58955 END IF;
58956 --
58957 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58958 
58959       trace
58960          (p_msg      => 'BEGIN of AcctLineType_139'
58961          ,p_level    => C_LEVEL_PROCEDURE
58962          ,p_module   => l_log_module);
58963 
58964 END IF;
58965 --
58966 l_component_type             := 'AMB_JLT';
58967 l_component_code             := 'INV';
58968 l_component_type_code        := 'S';
58969 l_component_appl_id          :=  555;
58970 l_amb_context_code           := 'DEFAULT';
58974 l_line_definition_owner_code := 'S';
58971 l_entity_code                := 'PURCHASING';
58972 l_event_class_code           := 'DELIVER';
58973 l_event_type_code            := 'RET_TO_RECEIVING';
58975 l_line_definition_code       := 'PO_RETURN';
58976 --
58977 l_balance_type_code          := 'A';
58978 l_segment                     := NULL;
58979 l_ccid                        := NULL;
58980 l_adr_transaction_coa_id      := NULL;
58981 l_adr_accounting_coa_id       := NULL;
58982 l_adr_flexfield_segment_code  := NULL;
58983 l_adr_flex_value_set_id       := NULL;
58984 l_adr_value_type_code         := NULL;
58985 l_adr_value_combination_id    := NULL;
58986 l_adr_value_segment_code      := NULL;
58987 
58988 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
58989 l_bflow_class_code           := '';    -- 4219869 Business Flow
58990 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
58991 l_budgetary_control_flag     := 'N';
58992 
58993 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
58994 l_bflow_applied_to_amt       := NULL; -- 5132302
58995 l_entered_amt_idx            := NULL;          -- 4262811
58996 l_accted_amt_idx             := NULL;          -- 4262811
58997 l_acc_rev_flag               := NULL;          -- 4262811
58998 l_accrual_line_num           := NULL;          -- 4262811
58999 l_tmp_amt                    := NULL;          -- 4262811
59000 --
59001  
59002 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
59003     l_balance_type_code <> 'B' THEN
59004 IF NVL(p_source_2,'
59005 ') =  'INV'
59006  THEN 
59007 
59008    --
59009    XLA_AE_LINES_PKG.SetNewLine;
59010 
59011    p_balance_type_code          := l_balance_type_code;
59012    -- set the flag so later we will know whether the gain loss line needs to be created
59013    
59014    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
59015      p_actual_flag :='A';
59016    END IF;
59017 
59018    --
59019    -- bulk performance
59020    --
59021    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
59022                                       p_header_num   => 0); -- 4262811
59023    --
59024    -- set accounting line options
59025    --
59026    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
59027            p_natural_side_code          => 'D'
59028          , p_gain_or_loss_flag          => 'N'
59029          , p_gl_transfer_mode_code      => 'D'
59030          , p_acct_entry_type_code       => 'A'
59031          , p_switch_side_flag           => 'Y'
59032          , p_merge_duplicate_code       => 'W'
59033          );
59034    --
59035    l_acc_rev_natural_side_code := 'C';  -- 4262811
59036    -- 
59037    --
59038    -- set accounting line type info
59039    --
59040    xla_ae_lines_pkg.SetAcctLineType
59041       (p_component_type             => l_component_type
59042       ,p_event_type_code            => l_event_type_code
59043       ,p_line_definition_owner_code => l_line_definition_owner_code
59044       ,p_line_definition_code       => l_line_definition_code
59045       ,p_accounting_line_code       => l_component_code
59046       ,p_accounting_line_type_code  => l_component_type_code
59047       ,p_accounting_line_appl_id    => l_component_appl_id
59048       ,p_amb_context_code           => l_amb_context_code
59049       ,p_entity_code                => l_entity_code
59050       ,p_event_class_code           => l_event_class_code);
59051    --
59052    -- set accounting class
59053    --
59054    xla_ae_lines_pkg.SetAcctClass(
59055            p_accounting_class_code  => 'INVENTORY_VALUATION'
59056          , p_ae_header_id           => l_ae_header_id
59057          );
59058 
59059    --
59060    -- set rounding class
59061    --
59062    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
59063                       'INVENTORY_VALUATION';
59064 
59065    --
59066    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
59067    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
59068    --
59069    -- bulk performance
59070    --
59071    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
59072 
59073    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
59074       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
59075 
59076    -- 4955764
59077    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59078       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
59079 
59080    -- 4458381 Public Sector Enh
59081    
59082    --
59083    -- set accounting attributes for the line type
59084    --
59085    l_entered_amt_idx := 3;
59086    l_accted_amt_idx  := 8;
59087    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
59088    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
59089    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
59090    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
59091    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
59092    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
59093    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
59094    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
59098    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
59095    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
59096    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
59097    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
59099    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
59100    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
59101    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
59102    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
59103    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
59104 
59105    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
59106    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
59107 
59108    ---------------------------------------------------------------------------------------------------------------
59109    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
59110    ---------------------------------------------------------------------------------------------------------------
59111    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
59112 
59113    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59114    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59115 
59116    IF xla_accounting_cache_pkg.GetValueChar
59117          (p_source_code         => 'LEDGER_CATEGORY_CODE'
59118          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
59119    AND l_bflow_method_code = 'PRIOR_ENTRY'
59120 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
59121    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
59122          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
59123        )
59124    THEN
59125          xla_ae_lines_pkg.BflowUpgEntry
59126            (p_business_method_code    => l_bflow_method_code
59127            ,p_business_class_code     => l_bflow_class_code
59128            ,p_balance_type            => l_balance_type_code);
59129    ELSE
59130       NULL;
59131 -- No business flow processing for business flow method of NONE.
59132    END IF;
59133 
59134    --
59135    -- call analytical criteria
59136    --
59137    
59138    --
59139    -- call description
59140    --
59141    -- No description or it is inherited.
59142    --
59143    -- call ADRs
59144    -- Bug 4922099
59145    --
59146    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59147         (NVL(l_actual_upg_option, 'N') = 'O') OR
59148         (NVL(l_enc_upg_option, 'N') = 'O')
59149       )
59150    THEN
59151    NULL;
59152    --
59153    --
59154    
59155   l_ccid := AcctDerRule_17(
59156            p_application_id           => p_application_id
59157          , p_ae_header_id             => l_ae_header_id 
59158 , p_source_1 => p_source_1
59159 , p_source_2 => p_source_2
59160          , x_transaction_coa_id       => l_adr_transaction_coa_id
59161          , x_accounting_coa_id        => l_adr_accounting_coa_id
59162          , x_value_type_code          => l_adr_value_type_code
59163          , p_side                     => 'NA'
59164    );
59165 
59166    xla_ae_lines_pkg.set_ccid(
59167     p_code_combination_id          => l_ccid
59168   , p_value_type_code              => l_adr_value_type_code
59169   , p_transaction_coa_id           => l_adr_transaction_coa_id
59170   , p_accounting_coa_id            => l_adr_accounting_coa_id
59171   , p_adr_code                     => 'INV'
59172   , p_adr_type_code                => 'S'
59173   , p_component_type               => l_component_type
59174   , p_component_code               => l_component_code
59175   , p_component_type_code          => l_component_type_code
59176   , p_component_appl_id            => l_component_appl_id
59177   , p_amb_context_code             => l_amb_context_code
59178   , p_side                         => 'NA'
59179   );
59180 
59181 
59182    --
59183    --
59184    END IF;
59185    --
59186    -- Bug 4922099
59187    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
59188           (NVL(l_enc_upg_option, 'N') = 'O')
59189         ) AND
59190         (l_bflow_method_code = 'PRIOR_ENTRY')
59191       )
59192    THEN
59193       IF
59194       --
59195       1 = 2
59196       --
59197       THEN
59198       xla_accounting_err_pkg.build_message
59199                                     (p_appli_s_name            => 'XLA'
59200                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59201                                     ,p_token_1                 => 'LINE_NUMBER'
59202                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
59203                                     ,p_token_2                 => 'LINE_TYPE_NAME'
59204                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
59205                                                                              l_component_type
59206                                                                             ,l_component_code
59207                                                                             ,l_component_type_code
59208                                                                             ,l_component_appl_id
59212                                                                            )
59209                                                                             ,l_amb_context_code
59210                                                                             ,l_entity_code
59211                                                                             ,l_event_class_code
59213                                     ,p_token_3                 => 'OWNER'
59214                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
59215                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
59216                                                                           ,p_lookup_code    => l_component_type_code
59217                                                                          )
59218                                     ,p_token_4                 => 'PRODUCT_NAME'
59219                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
59220                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
59221                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
59222                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
59223                                     ,p_ae_header_id            =>  NULL
59224                                        );
59225 
59226         IF (C_LEVEL_ERROR>= g_log_level) THEN
59227                  trace
59228                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59229                       ,p_level    => C_LEVEL_ERROR
59230                       ,p_module   => l_log_module);
59231         END IF;
59232       END IF;
59233    END IF;
59234    --
59235    --
59236    ------------------------------------------------------------------------------------------------
59237    -- 4219869 Business Flow
59238    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
59239    -- Prior Entry.  Currently, the following code is always generated.
59240    ------------------------------------------------------------------------------------------------
59241    XLA_AE_LINES_PKG.ValidateCurrentLine;
59242 
59243    ------------------------------------------------------------------------------------
59244    -- 4219869 Business Flow
59245    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
59246    ------------------------------------------------------------------------------------
59247    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59248 
59249    ----------------------------------------------------------------------------------
59250    -- 4219869 Business Flow
59251    -- Update journal entry status -- Need to generate this within IF <condition>
59252    ----------------------------------------------------------------------------------
59253    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59254          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
59255          ,p_balance_type_code => l_balance_type_code
59256          );
59257 
59258    -------------------------------------------------------------------------------------------
59259    -- 4262811 - Generate the Accrual Reversal lines
59260    -------------------------------------------------------------------------------------------
59261    BEGIN
59262       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
59263                               (g_array_event(p_event_id).array_value_num('header_index'));
59264       IF l_acc_rev_flag IS NULL THEN
59265          l_acc_rev_flag := 'N';
59266       END IF;
59267    EXCEPTION
59268       WHEN OTHERS THEN
59269          l_acc_rev_flag := 'N';
59270    END;
59271    --
59272    IF (l_acc_rev_flag = 'Y') THEN
59273 
59274        -- 4645092  ------------------------------------------------------------------------------
59275        -- To allow MPA report to determine if it should generate report process
59276        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
59277        ------------------------------------------------------------------------------------------
59278 
59279        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
59280        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
59281    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
59282    -- call ADRs
59283    -- Bug 4922099
59284    --
59285    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59286         (NVL(l_actual_upg_option, 'N') = 'O') OR
59287         (NVL(l_enc_upg_option, 'N') = 'O')
59288       )
59289    THEN
59290    NULL;
59291    --
59292    --
59293    
59294   l_ccid := AcctDerRule_17(
59295            p_application_id           => p_application_id
59296          , p_ae_header_id             => l_ae_header_id 
59297 , p_source_1 => p_source_1
59298 , p_source_2 => p_source_2
59299          , x_transaction_coa_id       => l_adr_transaction_coa_id
59300          , x_accounting_coa_id        => l_adr_accounting_coa_id
59301          , x_value_type_code          => l_adr_value_type_code
59302          , p_side                     => 'NA'
59303    );
59304 
59305    xla_ae_lines_pkg.set_ccid(
59306     p_code_combination_id          => l_ccid
59307   , p_value_type_code              => l_adr_value_type_code
59311   , p_adr_type_code                => 'S'
59308   , p_transaction_coa_id           => l_adr_transaction_coa_id
59309   , p_accounting_coa_id            => l_adr_accounting_coa_id
59310   , p_adr_code                     => 'INV'
59312   , p_component_type               => l_component_type
59313   , p_component_code               => l_component_code
59314   , p_component_type_code          => l_component_type_code
59315   , p_component_appl_id            => l_component_appl_id
59316   , p_amb_context_code             => l_amb_context_code
59317   , p_side                         => 'NA'
59318   );
59319 
59320 
59321    --
59322    --
59323    END IF;
59324 
59325        --
59326        -- Update the line information that should be overwritten
59327        --
59328        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
59329                                          p_header_num   => 1);
59330        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
59331 
59332        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
59333 
59334        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
59335           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
59336        END IF;
59337 
59338       --
59339       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
59340       --
59341       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
59342           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
59343       ELSE
59344           ---------------------------------------------------------------------------------------------------
59345           -- 4262811a Switch Sign
59346           ---------------------------------------------------------------------------------------------------
59347           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
59348           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59349                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59350           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59351                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59352           -- 5132302
59353           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
59354                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59355 
59356       END IF;
59357 
59358       -- 4955764
59359       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59360       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
59361 
59362 
59363       XLA_AE_LINES_PKG.ValidateCurrentLine;
59364       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59365 
59366       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59367                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
59368                ,p_balance_type_code => l_balance_type_code);
59369 
59370    END IF;
59371 
59372    -----------------------------------------------------------------------------------------
59373    -- 4262811 Multiperiod Accounting
59374    -----------------------------------------------------------------------------------------
59375      -- No MPA option is assigned.
59376 
59377 
59378 END IF;
59379 END IF;
59380 --
59381 
59382 --
59383 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59384    trace
59385       (p_msg      => 'END of AcctLineType_139'
59386       ,p_level    => C_LEVEL_PROCEDURE
59387       ,p_module   => l_log_module);
59388 END IF;
59389 --
59390 EXCEPTION
59391   WHEN xla_exceptions_pkg.application_exception THEN
59392       RAISE;
59393   WHEN OTHERS THEN
59394        xla_exceptions_pkg.raise_message
59395            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_139');
59396 END AcctLineType_139;
59397 --
59398 
59399 ---------------------------------------
59400 --
59401 -- PRIVATE FUNCTION
59402 --         AcctLineType_140
59403 --
59404 ---------------------------------------
59405 PROCEDURE AcctLineType_140 (
59406   p_application_id        IN NUMBER
59407  ,p_event_id              IN NUMBER
59408  ,p_calculate_acctd_flag  IN VARCHAR2
59409  ,p_calculate_g_l_flag    IN VARCHAR2
59410  ,p_actual_flag           IN OUT VARCHAR2
59411  ,p_balance_type_code     OUT VARCHAR2
59412  ,p_gain_or_loss_ref      OUT VARCHAR2
59413  
59414 --Transaction Account
59415  , p_source_1            IN NUMBER
59416 --Journal Line Type
59417  , p_source_2            IN VARCHAR2
59418 --Entered Amount
59419  , p_source_3            IN NUMBER
59420 --First Distribution Identifier
59421  , p_source_5            IN NUMBER
59422 --Distribution Type
59423  , p_source_6            IN VARCHAR2
59424 --Currency Code
59425  , p_source_7            IN VARCHAR2
59426 --Currency Conversion Date
59427  , p_source_8            IN DATE
59428 --Currency Conversion Rate
59429  , p_source_9            IN NUMBER
59430 --Currency Conversion Type
59434 )
59431  , p_source_10            IN VARCHAR2
59432 --Accounted Amount
59433  , p_source_11            IN NUMBER
59435 IS
59436 
59437 l_component_type              VARCHAR2(80);
59438 l_component_code              VARCHAR2(30);
59439 l_component_type_code         VARCHAR2(1);
59440 l_component_appl_id           INTEGER;
59441 l_amb_context_code            VARCHAR2(30);
59442 l_entity_code                 VARCHAR2(30);
59443 l_event_class_code            VARCHAR2(30);
59444 l_ae_header_id                NUMBER;
59445 l_event_type_code             VARCHAR2(30);
59446 l_line_definition_code        VARCHAR2(30);
59447 l_line_definition_owner_code  VARCHAR2(1);
59448 --
59449 -- adr variables
59450 l_segment                     VARCHAR2(30);
59451 l_ccid                        NUMBER;
59452 l_adr_transaction_coa_id      NUMBER;
59453 l_adr_accounting_coa_id       NUMBER;
59454 l_adr_flexfield_segment_code  VARCHAR2(30);
59455 l_adr_flex_value_set_id       NUMBER;
59456 l_adr_value_type_code         VARCHAR2(30);
59457 l_adr_value_combination_id    NUMBER;
59458 l_adr_value_segment_code      VARCHAR2(30);
59459 
59460 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
59461 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
59462 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
59463 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
59464 
59465 -- 4262811 Variables ------------------------------------------------------------------------------------------
59466 l_entered_amt_idx             NUMBER;
59467 l_accted_amt_idx              NUMBER;
59468 l_acc_rev_flag                VARCHAR2(1);
59469 l_accrual_line_num            NUMBER;
59470 l_tmp_amt                     NUMBER;
59471 l_acc_rev_natural_side_code   VARCHAR2(1);
59472 
59473 l_num_entries                 NUMBER;
59474 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
59475 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
59476 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
59477 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
59478 l_recog_line_1                NUMBER;
59479 l_recog_line_2                NUMBER;
59480 
59481 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
59482 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
59483 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
59484 
59485 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
59486 
59487 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
59488 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
59489 
59490 ---------------------------------------------------------------------------------------------------------------
59491 
59492 
59493 --
59494 -- bulk performance
59495 --
59496 l_balance_type_code           VARCHAR2(1);
59497 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
59498 l_log_module                  VARCHAR2(240);
59499 
59500 --
59501 -- Upgrade strategy
59502 --
59503 l_actual_upg_option           VARCHAR2(1);
59504 l_enc_upg_option           VARCHAR2(1);
59505 
59506 --
59507 BEGIN
59508 --
59509 IF g_log_enabled THEN
59510       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_140';
59511 END IF;
59512 --
59513 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59514 
59515       trace
59516          (p_msg      => 'BEGIN of AcctLineType_140'
59517          ,p_level    => C_LEVEL_PROCEDURE
59518          ,p_module   => l_log_module);
59519 
59520 END IF;
59521 --
59522 l_component_type             := 'AMB_JLT';
59523 l_component_code             := 'INV';
59524 l_component_type_code        := 'S';
59525 l_component_appl_id          :=  555;
59526 l_amb_context_code           := 'DEFAULT';
59527 l_entity_code                := 'PURCHASING';
59528 l_event_class_code           := 'DELIVER';
59529 l_event_type_code            := 'XFER_TO_REGULAR';
59530 l_line_definition_owner_code := 'S';
59531 l_line_definition_code       := 'XFER_TO_REG';
59532 --
59533 l_balance_type_code          := 'A';
59534 l_segment                     := NULL;
59535 l_ccid                        := NULL;
59536 l_adr_transaction_coa_id      := NULL;
59537 l_adr_accounting_coa_id       := NULL;
59538 l_adr_flexfield_segment_code  := NULL;
59539 l_adr_flex_value_set_id       := NULL;
59540 l_adr_value_type_code         := NULL;
59541 l_adr_value_combination_id    := NULL;
59542 l_adr_value_segment_code      := NULL;
59543 
59544 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
59545 l_bflow_class_code           := '';    -- 4219869 Business Flow
59546 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
59547 l_budgetary_control_flag     := 'N';
59548 
59549 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
59550 l_bflow_applied_to_amt       := NULL; -- 5132302
59551 l_entered_amt_idx            := NULL;          -- 4262811
59552 l_accted_amt_idx             := NULL;          -- 4262811
59553 l_acc_rev_flag               := NULL;          -- 4262811
59554 l_accrual_line_num           := NULL;          -- 4262811
59555 l_tmp_amt                    := NULL;          -- 4262811
59556 --
59557  
59561 ') =  'INV'
59558 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
59559     l_balance_type_code <> 'B' THEN
59560 IF NVL(p_source_2,'
59562  THEN 
59563 
59564    --
59565    XLA_AE_LINES_PKG.SetNewLine;
59566 
59567    p_balance_type_code          := l_balance_type_code;
59568    -- set the flag so later we will know whether the gain loss line needs to be created
59569    
59570    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
59571      p_actual_flag :='A';
59572    END IF;
59573 
59574    --
59575    -- bulk performance
59576    --
59577    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
59578                                       p_header_num   => 0); -- 4262811
59579    --
59580    -- set accounting line options
59581    --
59582    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
59583            p_natural_side_code          => 'D'
59584          , p_gain_or_loss_flag          => 'N'
59585          , p_gl_transfer_mode_code      => 'D'
59586          , p_acct_entry_type_code       => 'A'
59587          , p_switch_side_flag           => 'Y'
59588          , p_merge_duplicate_code       => 'W'
59589          );
59590    --
59591    l_acc_rev_natural_side_code := 'C';  -- 4262811
59592    -- 
59593    --
59594    -- set accounting line type info
59595    --
59596    xla_ae_lines_pkg.SetAcctLineType
59597       (p_component_type             => l_component_type
59598       ,p_event_type_code            => l_event_type_code
59599       ,p_line_definition_owner_code => l_line_definition_owner_code
59600       ,p_line_definition_code       => l_line_definition_code
59601       ,p_accounting_line_code       => l_component_code
59602       ,p_accounting_line_type_code  => l_component_type_code
59603       ,p_accounting_line_appl_id    => l_component_appl_id
59604       ,p_amb_context_code           => l_amb_context_code
59605       ,p_entity_code                => l_entity_code
59606       ,p_event_class_code           => l_event_class_code);
59607    --
59608    -- set accounting class
59609    --
59610    xla_ae_lines_pkg.SetAcctClass(
59611            p_accounting_class_code  => 'INVENTORY_VALUATION'
59612          , p_ae_header_id           => l_ae_header_id
59613          );
59614 
59615    --
59616    -- set rounding class
59617    --
59618    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
59619                       'INVENTORY_VALUATION';
59620 
59621    --
59622    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
59623    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
59624    --
59625    -- bulk performance
59626    --
59627    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
59628 
59629    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
59630       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
59631 
59632    -- 4955764
59633    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59634       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
59635 
59636    -- 4458381 Public Sector Enh
59637    
59638    --
59639    -- set accounting attributes for the line type
59640    --
59641    l_entered_amt_idx := 3;
59642    l_accted_amt_idx  := 8;
59643    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
59644    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
59645    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
59646    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
59647    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
59648    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
59649    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
59650    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
59651    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
59652    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
59653    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
59654    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
59655    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
59656    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
59657    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
59658    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
59659    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
59660 
59661    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
59662    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
59663 
59664    ---------------------------------------------------------------------------------------------------------------
59665    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
59666    ---------------------------------------------------------------------------------------------------------------
59667    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
59668 
59669    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59673          (p_source_code         => 'LEDGER_CATEGORY_CODE'
59670    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59671 
59672    IF xla_accounting_cache_pkg.GetValueChar
59674          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
59675    AND l_bflow_method_code = 'PRIOR_ENTRY'
59676 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
59677    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
59678          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
59679        )
59680    THEN
59681          xla_ae_lines_pkg.BflowUpgEntry
59682            (p_business_method_code    => l_bflow_method_code
59683            ,p_business_class_code     => l_bflow_class_code
59684            ,p_balance_type            => l_balance_type_code);
59685    ELSE
59686       NULL;
59687 -- No business flow processing for business flow method of NONE.
59688    END IF;
59689 
59690    --
59691    -- call analytical criteria
59692    --
59693    
59694    --
59695    -- call description
59696    --
59697    -- No description or it is inherited.
59698    --
59699    -- call ADRs
59700    -- Bug 4922099
59701    --
59702    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59703         (NVL(l_actual_upg_option, 'N') = 'O') OR
59704         (NVL(l_enc_upg_option, 'N') = 'O')
59705       )
59706    THEN
59707    NULL;
59708    --
59709    --
59710    
59711   l_ccid := AcctDerRule_17(
59712            p_application_id           => p_application_id
59713          , p_ae_header_id             => l_ae_header_id 
59714 , p_source_1 => p_source_1
59715 , p_source_2 => p_source_2
59716          , x_transaction_coa_id       => l_adr_transaction_coa_id
59717          , x_accounting_coa_id        => l_adr_accounting_coa_id
59718          , x_value_type_code          => l_adr_value_type_code
59719          , p_side                     => 'NA'
59720    );
59721 
59722    xla_ae_lines_pkg.set_ccid(
59723     p_code_combination_id          => l_ccid
59724   , p_value_type_code              => l_adr_value_type_code
59725   , p_transaction_coa_id           => l_adr_transaction_coa_id
59726   , p_accounting_coa_id            => l_adr_accounting_coa_id
59727   , p_adr_code                     => 'INV'
59728   , p_adr_type_code                => 'S'
59729   , p_component_type               => l_component_type
59730   , p_component_code               => l_component_code
59731   , p_component_type_code          => l_component_type_code
59732   , p_component_appl_id            => l_component_appl_id
59733   , p_amb_context_code             => l_amb_context_code
59734   , p_side                         => 'NA'
59735   );
59736 
59737 
59738    --
59739    --
59740    END IF;
59741    --
59742    -- Bug 4922099
59743    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
59744           (NVL(l_enc_upg_option, 'N') = 'O')
59745         ) AND
59746         (l_bflow_method_code = 'PRIOR_ENTRY')
59747       )
59748    THEN
59749       IF
59750       --
59751       1 = 2
59752       --
59753       THEN
59754       xla_accounting_err_pkg.build_message
59755                                     (p_appli_s_name            => 'XLA'
59756                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59757                                     ,p_token_1                 => 'LINE_NUMBER'
59758                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
59759                                     ,p_token_2                 => 'LINE_TYPE_NAME'
59760                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
59761                                                                              l_component_type
59762                                                                             ,l_component_code
59763                                                                             ,l_component_type_code
59764                                                                             ,l_component_appl_id
59765                                                                             ,l_amb_context_code
59766                                                                             ,l_entity_code
59767                                                                             ,l_event_class_code
59768                                                                            )
59769                                     ,p_token_3                 => 'OWNER'
59770                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
59771                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
59772                                                                           ,p_lookup_code    => l_component_type_code
59773                                                                          )
59774                                     ,p_token_4                 => 'PRODUCT_NAME'
59775                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
59776                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
59777                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
59778                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
59782         IF (C_LEVEL_ERROR>= g_log_level) THEN
59779                                     ,p_ae_header_id            =>  NULL
59780                                        );
59781 
59783                  trace
59784                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59785                       ,p_level    => C_LEVEL_ERROR
59786                       ,p_module   => l_log_module);
59787         END IF;
59788       END IF;
59789    END IF;
59790    --
59791    --
59792    ------------------------------------------------------------------------------------------------
59793    -- 4219869 Business Flow
59794    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
59795    -- Prior Entry.  Currently, the following code is always generated.
59796    ------------------------------------------------------------------------------------------------
59797    XLA_AE_LINES_PKG.ValidateCurrentLine;
59798 
59799    ------------------------------------------------------------------------------------
59800    -- 4219869 Business Flow
59801    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
59802    ------------------------------------------------------------------------------------
59803    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59804 
59805    ----------------------------------------------------------------------------------
59806    -- 4219869 Business Flow
59807    -- Update journal entry status -- Need to generate this within IF <condition>
59808    ----------------------------------------------------------------------------------
59809    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59810          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
59811          ,p_balance_type_code => l_balance_type_code
59812          );
59813 
59814    -------------------------------------------------------------------------------------------
59815    -- 4262811 - Generate the Accrual Reversal lines
59816    -------------------------------------------------------------------------------------------
59817    BEGIN
59818       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
59819                               (g_array_event(p_event_id).array_value_num('header_index'));
59820       IF l_acc_rev_flag IS NULL THEN
59821          l_acc_rev_flag := 'N';
59822       END IF;
59823    EXCEPTION
59824       WHEN OTHERS THEN
59825          l_acc_rev_flag := 'N';
59826    END;
59827    --
59828    IF (l_acc_rev_flag = 'Y') THEN
59829 
59830        -- 4645092  ------------------------------------------------------------------------------
59831        -- To allow MPA report to determine if it should generate report process
59832        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
59833        ------------------------------------------------------------------------------------------
59834 
59835        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
59836        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
59837    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
59838    -- call ADRs
59839    -- Bug 4922099
59840    --
59841    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59842         (NVL(l_actual_upg_option, 'N') = 'O') OR
59843         (NVL(l_enc_upg_option, 'N') = 'O')
59844       )
59845    THEN
59846    NULL;
59847    --
59848    --
59849    
59850   l_ccid := AcctDerRule_17(
59851            p_application_id           => p_application_id
59852          , p_ae_header_id             => l_ae_header_id 
59853 , p_source_1 => p_source_1
59854 , p_source_2 => p_source_2
59855          , x_transaction_coa_id       => l_adr_transaction_coa_id
59856          , x_accounting_coa_id        => l_adr_accounting_coa_id
59857          , x_value_type_code          => l_adr_value_type_code
59858          , p_side                     => 'NA'
59859    );
59860 
59861    xla_ae_lines_pkg.set_ccid(
59862     p_code_combination_id          => l_ccid
59863   , p_value_type_code              => l_adr_value_type_code
59864   , p_transaction_coa_id           => l_adr_transaction_coa_id
59865   , p_accounting_coa_id            => l_adr_accounting_coa_id
59866   , p_adr_code                     => 'INV'
59867   , p_adr_type_code                => 'S'
59868   , p_component_type               => l_component_type
59869   , p_component_code               => l_component_code
59870   , p_component_type_code          => l_component_type_code
59871   , p_component_appl_id            => l_component_appl_id
59872   , p_amb_context_code             => l_amb_context_code
59873   , p_side                         => 'NA'
59874   );
59875 
59876 
59877    --
59878    --
59879    END IF;
59880 
59881        --
59882        -- Update the line information that should be overwritten
59883        --
59884        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
59885                                          p_header_num   => 1);
59886        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
59887 
59888        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
59889 
59890        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
59891           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
59895       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
59892        END IF;
59893 
59894       --
59896       --
59897       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
59898           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
59899       ELSE
59900           ---------------------------------------------------------------------------------------------------
59901           -- 4262811a Switch Sign
59902           ---------------------------------------------------------------------------------------------------
59903           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
59904           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59905                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59906           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59907                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59908           -- 5132302
59909           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
59910                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59911 
59912       END IF;
59913 
59914       -- 4955764
59915       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59916       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
59917 
59918 
59919       XLA_AE_LINES_PKG.ValidateCurrentLine;
59920       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59921 
59922       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59923                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
59924                ,p_balance_type_code => l_balance_type_code);
59925 
59926    END IF;
59927 
59928    -----------------------------------------------------------------------------------------
59929    -- 4262811 Multiperiod Accounting
59930    -----------------------------------------------------------------------------------------
59931      -- No MPA option is assigned.
59932 
59933 
59934 END IF;
59935 END IF;
59936 --
59937 
59938 --
59939 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59940    trace
59941       (p_msg      => 'END of AcctLineType_140'
59942       ,p_level    => C_LEVEL_PROCEDURE
59943       ,p_module   => l_log_module);
59944 END IF;
59945 --
59946 EXCEPTION
59947   WHEN xla_exceptions_pkg.application_exception THEN
59948       RAISE;
59949   WHEN OTHERS THEN
59950        xla_exceptions_pkg.raise_message
59951            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_140');
59952 END AcctLineType_140;
59953 --
59954 
59955 ---------------------------------------
59956 --
59957 -- PRIVATE FUNCTION
59958 --         AcctLineType_141
59959 --
59960 ---------------------------------------
59961 PROCEDURE AcctLineType_141 (
59962   p_application_id        IN NUMBER
59963  ,p_event_id              IN NUMBER
59964  ,p_calculate_acctd_flag  IN VARCHAR2
59965  ,p_calculate_g_l_flag    IN VARCHAR2
59966  ,p_actual_flag           IN OUT VARCHAR2
59967  ,p_balance_type_code     OUT VARCHAR2
59968  ,p_gain_or_loss_ref      OUT VARCHAR2
59969  
59970 --Transaction Account
59971  , p_source_1            IN NUMBER
59972 --Journal Line Type
59973  , p_source_2            IN VARCHAR2
59974 --Entered Amount
59975  , p_source_3            IN NUMBER
59976 --First Distribution Identifier
59977  , p_source_5            IN NUMBER
59978 --Distribution Type
59979  , p_source_6            IN VARCHAR2
59980 --Currency Code
59981  , p_source_7            IN VARCHAR2
59982 --Currency Conversion Date
59983  , p_source_8            IN DATE
59984 --Currency Conversion Rate
59985  , p_source_9            IN NUMBER
59986 --Currency Conversion Type
59987  , p_source_10            IN VARCHAR2
59988 --Accounted Amount
59989  , p_source_11            IN NUMBER
59990 )
59991 IS
59992 
59993 l_component_type              VARCHAR2(80);
59994 l_component_code              VARCHAR2(30);
59995 l_component_type_code         VARCHAR2(1);
59996 l_component_appl_id           INTEGER;
59997 l_amb_context_code            VARCHAR2(30);
59998 l_entity_code                 VARCHAR2(30);
59999 l_event_class_code            VARCHAR2(30);
60000 l_ae_header_id                NUMBER;
60001 l_event_type_code             VARCHAR2(30);
60002 l_line_definition_code        VARCHAR2(30);
60003 l_line_definition_owner_code  VARCHAR2(1);
60004 --
60005 -- adr variables
60006 l_segment                     VARCHAR2(30);
60007 l_ccid                        NUMBER;
60008 l_adr_transaction_coa_id      NUMBER;
60009 l_adr_accounting_coa_id       NUMBER;
60010 l_adr_flexfield_segment_code  VARCHAR2(30);
60011 l_adr_flex_value_set_id       NUMBER;
60012 l_adr_value_type_code         VARCHAR2(30);
60013 l_adr_value_combination_id    NUMBER;
60014 l_adr_value_segment_code      VARCHAR2(30);
60015 
60016 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
60017 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
60018 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
60019 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
60020 
60024 l_acc_rev_flag                VARCHAR2(1);
60021 -- 4262811 Variables ------------------------------------------------------------------------------------------
60022 l_entered_amt_idx             NUMBER;
60023 l_accted_amt_idx              NUMBER;
60025 l_accrual_line_num            NUMBER;
60026 l_tmp_amt                     NUMBER;
60027 l_acc_rev_natural_side_code   VARCHAR2(1);
60028 
60029 l_num_entries                 NUMBER;
60030 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
60031 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
60032 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
60033 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
60034 l_recog_line_1                NUMBER;
60035 l_recog_line_2                NUMBER;
60036 
60037 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
60038 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
60039 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
60040 
60041 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
60042 
60043 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
60044 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
60045 
60046 ---------------------------------------------------------------------------------------------------------------
60047 
60048 
60049 --
60050 -- bulk performance
60051 --
60052 l_balance_type_code           VARCHAR2(1);
60053 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
60054 l_log_module                  VARCHAR2(240);
60055 
60056 --
60057 -- Upgrade strategy
60058 --
60059 l_actual_upg_option           VARCHAR2(1);
60060 l_enc_upg_option           VARCHAR2(1);
60061 
60062 --
60063 BEGIN
60064 --
60065 IF g_log_enabled THEN
60066       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_141';
60067 END IF;
60068 --
60069 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60070 
60071       trace
60072          (p_msg      => 'BEGIN of AcctLineType_141'
60073          ,p_level    => C_LEVEL_PROCEDURE
60074          ,p_module   => l_log_module);
60075 
60076 END IF;
60077 --
60078 l_component_type             := 'AMB_JLT';
60079 l_component_code             := 'INV';
60080 l_component_type_code        := 'S';
60081 l_component_appl_id          :=  555;
60082 l_amb_context_code           := 'DEFAULT';
60083 l_entity_code                := 'REVALUATION';
60084 l_event_class_code           := 'GLCOSTALOC';
60085 l_event_type_code            := 'GLCOSTALOC';
60086 l_line_definition_owner_code := 'S';
60087 l_line_definition_code       := 'GLCOSTALOC';
60088 --
60089 l_balance_type_code          := 'A';
60090 l_segment                     := NULL;
60091 l_ccid                        := NULL;
60092 l_adr_transaction_coa_id      := NULL;
60093 l_adr_accounting_coa_id       := NULL;
60094 l_adr_flexfield_segment_code  := NULL;
60095 l_adr_flex_value_set_id       := NULL;
60096 l_adr_value_type_code         := NULL;
60097 l_adr_value_combination_id    := NULL;
60098 l_adr_value_segment_code      := NULL;
60099 
60100 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
60101 l_bflow_class_code           := '';    -- 4219869 Business Flow
60102 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
60103 l_budgetary_control_flag     := 'N';
60104 
60105 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
60106 l_bflow_applied_to_amt       := NULL; -- 5132302
60107 l_entered_amt_idx            := NULL;          -- 4262811
60108 l_accted_amt_idx             := NULL;          -- 4262811
60109 l_acc_rev_flag               := NULL;          -- 4262811
60110 l_accrual_line_num           := NULL;          -- 4262811
60111 l_tmp_amt                    := NULL;          -- 4262811
60112 --
60113  
60114 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
60115     l_balance_type_code <> 'B' THEN
60116 IF NVL(p_source_2,'
60117 ') =  'INV'
60118  THEN 
60119 
60120    --
60121    XLA_AE_LINES_PKG.SetNewLine;
60122 
60123    p_balance_type_code          := l_balance_type_code;
60124    -- set the flag so later we will know whether the gain loss line needs to be created
60125    
60126    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
60127      p_actual_flag :='A';
60128    END IF;
60129 
60130    --
60131    -- bulk performance
60132    --
60133    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
60134                                       p_header_num   => 0); -- 4262811
60135    --
60136    -- set accounting line options
60137    --
60138    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
60139            p_natural_side_code          => 'D'
60140          , p_gain_or_loss_flag          => 'N'
60141          , p_gl_transfer_mode_code      => 'D'
60142          , p_acct_entry_type_code       => 'A'
60143          , p_switch_side_flag           => 'Y'
60144          , p_merge_duplicate_code       => 'W'
60145          );
60146    --
60147    l_acc_rev_natural_side_code := 'C';  -- 4262811
60148    -- 
60149    --
60150    -- set accounting line type info
60151    --
60152    xla_ae_lines_pkg.SetAcctLineType
60156       ,p_line_definition_code       => l_line_definition_code
60153       (p_component_type             => l_component_type
60154       ,p_event_type_code            => l_event_type_code
60155       ,p_line_definition_owner_code => l_line_definition_owner_code
60157       ,p_accounting_line_code       => l_component_code
60158       ,p_accounting_line_type_code  => l_component_type_code
60159       ,p_accounting_line_appl_id    => l_component_appl_id
60160       ,p_amb_context_code           => l_amb_context_code
60161       ,p_entity_code                => l_entity_code
60162       ,p_event_class_code           => l_event_class_code);
60163    --
60164    -- set accounting class
60165    --
60166    xla_ae_lines_pkg.SetAcctClass(
60167            p_accounting_class_code  => 'INVENTORY_VALUATION'
60168          , p_ae_header_id           => l_ae_header_id
60169          );
60170 
60171    --
60172    -- set rounding class
60173    --
60174    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
60175                       'INVENTORY_VALUATION';
60176 
60177    --
60178    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
60179    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
60180    --
60181    -- bulk performance
60182    --
60183    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
60184 
60185    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
60186       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
60187 
60188    -- 4955764
60189    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60190       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
60191 
60192    -- 4458381 Public Sector Enh
60193    
60194    --
60195    -- set accounting attributes for the line type
60196    --
60197    l_entered_amt_idx := 3;
60198    l_accted_amt_idx  := 8;
60199    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
60200    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
60201    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
60202    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
60203    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
60204    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
60205    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
60206    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
60207    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
60208    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
60209    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
60210    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
60211    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
60212    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
60213    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
60214    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
60215    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
60216 
60217    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
60218    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
60219 
60220    ---------------------------------------------------------------------------------------------------------------
60221    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
60222    ---------------------------------------------------------------------------------------------------------------
60223    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
60224 
60225    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60226    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60227 
60228    IF xla_accounting_cache_pkg.GetValueChar
60229          (p_source_code         => 'LEDGER_CATEGORY_CODE'
60230          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
60231    AND l_bflow_method_code = 'PRIOR_ENTRY'
60232 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
60233    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
60234          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
60235        )
60236    THEN
60237          xla_ae_lines_pkg.BflowUpgEntry
60238            (p_business_method_code    => l_bflow_method_code
60239            ,p_business_class_code     => l_bflow_class_code
60240            ,p_balance_type            => l_balance_type_code);
60241    ELSE
60242       NULL;
60243 -- No business flow processing for business flow method of NONE.
60244    END IF;
60245 
60246    --
60247    -- call analytical criteria
60248    --
60249    
60250    --
60251    -- call description
60252    --
60253    -- No description or it is inherited.
60254    --
60255    -- call ADRs
60256    -- Bug 4922099
60257    --
60258    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60259         (NVL(l_actual_upg_option, 'N') = 'O') OR
60260         (NVL(l_enc_upg_option, 'N') = 'O')
60261       )
60262    THEN
60263    NULL;
60264    --
60265    --
60266    
60270 , p_source_1 => p_source_1
60267   l_ccid := AcctDerRule_17(
60268            p_application_id           => p_application_id
60269          , p_ae_header_id             => l_ae_header_id 
60271 , p_source_2 => p_source_2
60272          , x_transaction_coa_id       => l_adr_transaction_coa_id
60273          , x_accounting_coa_id        => l_adr_accounting_coa_id
60274          , x_value_type_code          => l_adr_value_type_code
60275          , p_side                     => 'NA'
60276    );
60277 
60278    xla_ae_lines_pkg.set_ccid(
60279     p_code_combination_id          => l_ccid
60280   , p_value_type_code              => l_adr_value_type_code
60281   , p_transaction_coa_id           => l_adr_transaction_coa_id
60282   , p_accounting_coa_id            => l_adr_accounting_coa_id
60283   , p_adr_code                     => 'INV'
60284   , p_adr_type_code                => 'S'
60285   , p_component_type               => l_component_type
60286   , p_component_code               => l_component_code
60287   , p_component_type_code          => l_component_type_code
60288   , p_component_appl_id            => l_component_appl_id
60289   , p_amb_context_code             => l_amb_context_code
60290   , p_side                         => 'NA'
60291   );
60292 
60293 
60294    --
60295    --
60296    END IF;
60297    --
60298    -- Bug 4922099
60299    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
60300           (NVL(l_enc_upg_option, 'N') = 'O')
60301         ) AND
60302         (l_bflow_method_code = 'PRIOR_ENTRY')
60303       )
60304    THEN
60305       IF
60306       --
60307       1 = 2
60308       --
60309       THEN
60310       xla_accounting_err_pkg.build_message
60311                                     (p_appli_s_name            => 'XLA'
60312                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60313                                     ,p_token_1                 => 'LINE_NUMBER'
60314                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
60315                                     ,p_token_2                 => 'LINE_TYPE_NAME'
60316                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
60317                                                                              l_component_type
60318                                                                             ,l_component_code
60319                                                                             ,l_component_type_code
60320                                                                             ,l_component_appl_id
60321                                                                             ,l_amb_context_code
60322                                                                             ,l_entity_code
60323                                                                             ,l_event_class_code
60324                                                                            )
60325                                     ,p_token_3                 => 'OWNER'
60326                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
60327                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
60328                                                                           ,p_lookup_code    => l_component_type_code
60329                                                                          )
60330                                     ,p_token_4                 => 'PRODUCT_NAME'
60331                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
60332                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
60333                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
60334                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
60335                                     ,p_ae_header_id            =>  NULL
60336                                        );
60337 
60338         IF (C_LEVEL_ERROR>= g_log_level) THEN
60339                  trace
60340                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60341                       ,p_level    => C_LEVEL_ERROR
60342                       ,p_module   => l_log_module);
60343         END IF;
60344       END IF;
60345    END IF;
60346    --
60347    --
60348    ------------------------------------------------------------------------------------------------
60349    -- 4219869 Business Flow
60350    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
60351    -- Prior Entry.  Currently, the following code is always generated.
60352    ------------------------------------------------------------------------------------------------
60353    XLA_AE_LINES_PKG.ValidateCurrentLine;
60354 
60355    ------------------------------------------------------------------------------------
60356    -- 4219869 Business Flow
60357    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
60358    ------------------------------------------------------------------------------------
60359    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60360 
60361    ----------------------------------------------------------------------------------
60362    -- 4219869 Business Flow
60363    -- Update journal entry status -- Need to generate this within IF <condition>
60367          ,p_balance_type_code => l_balance_type_code
60364    ----------------------------------------------------------------------------------
60365    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60366          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
60368          );
60369 
60370    -------------------------------------------------------------------------------------------
60371    -- 4262811 - Generate the Accrual Reversal lines
60372    -------------------------------------------------------------------------------------------
60373    BEGIN
60374       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
60375                               (g_array_event(p_event_id).array_value_num('header_index'));
60376       IF l_acc_rev_flag IS NULL THEN
60377          l_acc_rev_flag := 'N';
60378       END IF;
60379    EXCEPTION
60380       WHEN OTHERS THEN
60381          l_acc_rev_flag := 'N';
60382    END;
60383    --
60384    IF (l_acc_rev_flag = 'Y') THEN
60385 
60386        -- 4645092  ------------------------------------------------------------------------------
60387        -- To allow MPA report to determine if it should generate report process
60388        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
60389        ------------------------------------------------------------------------------------------
60390 
60391        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
60392        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
60393    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
60394    -- call ADRs
60395    -- Bug 4922099
60396    --
60397    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60398         (NVL(l_actual_upg_option, 'N') = 'O') OR
60399         (NVL(l_enc_upg_option, 'N') = 'O')
60400       )
60401    THEN
60402    NULL;
60403    --
60404    --
60405    
60406   l_ccid := AcctDerRule_17(
60407            p_application_id           => p_application_id
60408          , p_ae_header_id             => l_ae_header_id 
60409 , p_source_1 => p_source_1
60410 , p_source_2 => p_source_2
60411          , x_transaction_coa_id       => l_adr_transaction_coa_id
60412          , x_accounting_coa_id        => l_adr_accounting_coa_id
60413          , x_value_type_code          => l_adr_value_type_code
60414          , p_side                     => 'NA'
60415    );
60416 
60417    xla_ae_lines_pkg.set_ccid(
60418     p_code_combination_id          => l_ccid
60419   , p_value_type_code              => l_adr_value_type_code
60420   , p_transaction_coa_id           => l_adr_transaction_coa_id
60421   , p_accounting_coa_id            => l_adr_accounting_coa_id
60422   , p_adr_code                     => 'INV'
60423   , p_adr_type_code                => 'S'
60424   , p_component_type               => l_component_type
60425   , p_component_code               => l_component_code
60426   , p_component_type_code          => l_component_type_code
60427   , p_component_appl_id            => l_component_appl_id
60428   , p_amb_context_code             => l_amb_context_code
60429   , p_side                         => 'NA'
60430   );
60431 
60432 
60433    --
60434    --
60435    END IF;
60436 
60437        --
60438        -- Update the line information that should be overwritten
60439        --
60440        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
60441                                          p_header_num   => 1);
60442        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
60443 
60444        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
60445 
60446        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
60447           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
60448        END IF;
60449 
60450       --
60451       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
60452       --
60453       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
60454           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
60455       ELSE
60456           ---------------------------------------------------------------------------------------------------
60457           -- 4262811a Switch Sign
60458           ---------------------------------------------------------------------------------------------------
60459           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
60460           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60461                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60462           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60463                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60464           -- 5132302
60465           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
60466                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60467 
60468       END IF;
60469 
60470       -- 4955764
60471       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60472       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
60473 
60474 
60475       XLA_AE_LINES_PKG.ValidateCurrentLine;
60479                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
60476       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60477 
60478       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60480                ,p_balance_type_code => l_balance_type_code);
60481 
60482    END IF;
60483 
60484    -----------------------------------------------------------------------------------------
60485    -- 4262811 Multiperiod Accounting
60486    -----------------------------------------------------------------------------------------
60487      -- No MPA option is assigned.
60488 
60489 
60490 END IF;
60491 END IF;
60492 --
60493 
60494 --
60495 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60496    trace
60497       (p_msg      => 'END of AcctLineType_141'
60498       ,p_level    => C_LEVEL_PROCEDURE
60499       ,p_module   => l_log_module);
60500 END IF;
60501 --
60502 EXCEPTION
60503   WHEN xla_exceptions_pkg.application_exception THEN
60504       RAISE;
60505   WHEN OTHERS THEN
60506        xla_exceptions_pkg.raise_message
60507            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_141');
60508 END AcctLineType_141;
60509 --
60510 
60511 ---------------------------------------
60512 --
60513 -- PRIVATE FUNCTION
60514 --         AcctLineType_142
60515 --
60516 ---------------------------------------
60517 PROCEDURE AcctLineType_142 (
60518   p_application_id        IN NUMBER
60519  ,p_event_id              IN NUMBER
60520  ,p_calculate_acctd_flag  IN VARCHAR2
60521  ,p_calculate_g_l_flag    IN VARCHAR2
60522  ,p_actual_flag           IN OUT VARCHAR2
60523  ,p_balance_type_code     OUT VARCHAR2
60524  ,p_gain_or_loss_ref      OUT VARCHAR2
60525  
60526 --Transaction Account
60527  , p_source_1            IN NUMBER
60528 --Journal Line Type
60529  , p_source_2            IN VARCHAR2
60530 --Entered Amount
60531  , p_source_3            IN NUMBER
60532 --First Distribution Identifier
60533  , p_source_5            IN NUMBER
60534 --Distribution Type
60535  , p_source_6            IN VARCHAR2
60536 --Currency Code
60537  , p_source_7            IN VARCHAR2
60538 --Currency Conversion Date
60539  , p_source_8            IN DATE
60540 --Currency Conversion Rate
60541  , p_source_9            IN NUMBER
60542 --Currency Conversion Type
60543  , p_source_10            IN VARCHAR2
60544 --Accounted Amount
60545  , p_source_11            IN NUMBER
60546 )
60547 IS
60548 
60549 l_component_type              VARCHAR2(80);
60550 l_component_code              VARCHAR2(30);
60551 l_component_type_code         VARCHAR2(1);
60552 l_component_appl_id           INTEGER;
60553 l_amb_context_code            VARCHAR2(30);
60554 l_entity_code                 VARCHAR2(30);
60555 l_event_class_code            VARCHAR2(30);
60556 l_ae_header_id                NUMBER;
60557 l_event_type_code             VARCHAR2(30);
60558 l_line_definition_code        VARCHAR2(30);
60559 l_line_definition_owner_code  VARCHAR2(1);
60560 --
60561 -- adr variables
60562 l_segment                     VARCHAR2(30);
60563 l_ccid                        NUMBER;
60564 l_adr_transaction_coa_id      NUMBER;
60565 l_adr_accounting_coa_id       NUMBER;
60566 l_adr_flexfield_segment_code  VARCHAR2(30);
60567 l_adr_flex_value_set_id       NUMBER;
60568 l_adr_value_type_code         VARCHAR2(30);
60569 l_adr_value_combination_id    NUMBER;
60570 l_adr_value_segment_code      VARCHAR2(30);
60571 
60572 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
60573 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
60574 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
60575 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
60576 
60577 -- 4262811 Variables ------------------------------------------------------------------------------------------
60578 l_entered_amt_idx             NUMBER;
60579 l_accted_amt_idx              NUMBER;
60580 l_acc_rev_flag                VARCHAR2(1);
60581 l_accrual_line_num            NUMBER;
60582 l_tmp_amt                     NUMBER;
60583 l_acc_rev_natural_side_code   VARCHAR2(1);
60584 
60585 l_num_entries                 NUMBER;
60586 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
60587 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
60588 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
60589 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
60590 l_recog_line_1                NUMBER;
60591 l_recog_line_2                NUMBER;
60592 
60593 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
60594 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
60595 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
60596 
60597 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
60598 
60599 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
60600 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
60601 
60602 ---------------------------------------------------------------------------------------------------------------
60603 
60604 
60605 --
60606 -- bulk performance
60607 --
60608 l_balance_type_code           VARCHAR2(1);
60612 --
60609 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
60610 l_log_module                  VARCHAR2(240);
60611 
60613 -- Upgrade strategy
60614 --
60615 l_actual_upg_option           VARCHAR2(1);
60616 l_enc_upg_option           VARCHAR2(1);
60617 
60618 --
60619 BEGIN
60620 --
60621 IF g_log_enabled THEN
60622       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_142';
60623 END IF;
60624 --
60625 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60626 
60627       trace
60628          (p_msg      => 'BEGIN of AcctLineType_142'
60629          ,p_level    => C_LEVEL_PROCEDURE
60630          ,p_module   => l_log_module);
60631 
60632 END IF;
60633 --
60634 l_component_type             := 'AMB_JLT';
60635 l_component_code             := 'INV';
60636 l_component_type_code        := 'S';
60637 l_component_appl_id          :=  555;
60638 l_amb_context_code           := 'DEFAULT';
60639 l_entity_code                := 'INVENTORY';
60640 l_event_class_code           := 'DIR_INTERORG_SHIP';
60641 l_event_type_code            := 'DIR_INTERORG_SHIP_TP';
60642 l_line_definition_owner_code := 'S';
60643 l_line_definition_code       := 'DIRECT_XFER_SHIP_TP';
60644 --
60645 l_balance_type_code          := 'A';
60646 l_segment                     := NULL;
60647 l_ccid                        := NULL;
60648 l_adr_transaction_coa_id      := NULL;
60649 l_adr_accounting_coa_id       := NULL;
60650 l_adr_flexfield_segment_code  := NULL;
60651 l_adr_flex_value_set_id       := NULL;
60652 l_adr_value_type_code         := NULL;
60653 l_adr_value_combination_id    := NULL;
60654 l_adr_value_segment_code      := NULL;
60655 
60656 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
60657 l_bflow_class_code           := '';    -- 4219869 Business Flow
60658 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
60659 l_budgetary_control_flag     := 'N';
60660 
60661 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
60662 l_bflow_applied_to_amt       := NULL; -- 5132302
60663 l_entered_amt_idx            := NULL;          -- 4262811
60664 l_accted_amt_idx             := NULL;          -- 4262811
60665 l_acc_rev_flag               := NULL;          -- 4262811
60666 l_accrual_line_num           := NULL;          -- 4262811
60667 l_tmp_amt                    := NULL;          -- 4262811
60668 --
60669  
60670 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
60671     l_balance_type_code <> 'B' THEN
60672 IF NVL(p_source_2,'
60673 ') =  'INV'
60674  THEN 
60675 
60676    --
60677    XLA_AE_LINES_PKG.SetNewLine;
60678 
60679    p_balance_type_code          := l_balance_type_code;
60680    -- set the flag so later we will know whether the gain loss line needs to be created
60681    
60682    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
60683      p_actual_flag :='A';
60684    END IF;
60685 
60686    --
60687    -- bulk performance
60688    --
60689    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
60690                                       p_header_num   => 0); -- 4262811
60691    --
60692    -- set accounting line options
60693    --
60694    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
60695            p_natural_side_code          => 'D'
60696          , p_gain_or_loss_flag          => 'N'
60697          , p_gl_transfer_mode_code      => 'D'
60698          , p_acct_entry_type_code       => 'A'
60699          , p_switch_side_flag           => 'Y'
60700          , p_merge_duplicate_code       => 'W'
60701          );
60702    --
60703    l_acc_rev_natural_side_code := 'C';  -- 4262811
60704    -- 
60705    --
60706    -- set accounting line type info
60707    --
60708    xla_ae_lines_pkg.SetAcctLineType
60709       (p_component_type             => l_component_type
60710       ,p_event_type_code            => l_event_type_code
60711       ,p_line_definition_owner_code => l_line_definition_owner_code
60712       ,p_line_definition_code       => l_line_definition_code
60713       ,p_accounting_line_code       => l_component_code
60714       ,p_accounting_line_type_code  => l_component_type_code
60715       ,p_accounting_line_appl_id    => l_component_appl_id
60716       ,p_amb_context_code           => l_amb_context_code
60717       ,p_entity_code                => l_entity_code
60718       ,p_event_class_code           => l_event_class_code);
60719    --
60720    -- set accounting class
60721    --
60722    xla_ae_lines_pkg.SetAcctClass(
60723            p_accounting_class_code  => 'INVENTORY_VALUATION'
60724          , p_ae_header_id           => l_ae_header_id
60725          );
60726 
60727    --
60728    -- set rounding class
60729    --
60730    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
60731                       'INVENTORY_VALUATION';
60732 
60733    --
60734    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
60735    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
60736    --
60737    -- bulk performance
60738    --
60739    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
60740 
60741    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
60745    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60742       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
60743 
60744    -- 4955764
60746       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
60747 
60748    -- 4458381 Public Sector Enh
60749    
60750    --
60751    -- set accounting attributes for the line type
60752    --
60753    l_entered_amt_idx := 3;
60754    l_accted_amt_idx  := 8;
60755    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
60756    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
60757    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
60758    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
60759    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
60760    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
60761    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
60762    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
60763    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
60764    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
60765    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
60766    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
60767    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
60768    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
60769    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
60770    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
60771    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
60772 
60773    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
60774    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
60775 
60776    ---------------------------------------------------------------------------------------------------------------
60777    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
60778    ---------------------------------------------------------------------------------------------------------------
60779    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
60780 
60781    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60782    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60783 
60784    IF xla_accounting_cache_pkg.GetValueChar
60785          (p_source_code         => 'LEDGER_CATEGORY_CODE'
60786          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
60787    AND l_bflow_method_code = 'PRIOR_ENTRY'
60788 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
60789    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
60790          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
60791        )
60792    THEN
60793          xla_ae_lines_pkg.BflowUpgEntry
60794            (p_business_method_code    => l_bflow_method_code
60795            ,p_business_class_code     => l_bflow_class_code
60796            ,p_balance_type            => l_balance_type_code);
60797    ELSE
60798       NULL;
60799 -- No business flow processing for business flow method of NONE.
60800    END IF;
60801 
60802    --
60803    -- call analytical criteria
60804    --
60805    
60806    --
60807    -- call description
60808    --
60809    -- No description or it is inherited.
60810    --
60811    -- call ADRs
60812    -- Bug 4922099
60813    --
60814    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60815         (NVL(l_actual_upg_option, 'N') = 'O') OR
60816         (NVL(l_enc_upg_option, 'N') = 'O')
60817       )
60818    THEN
60819    NULL;
60820    --
60821    --
60822    
60823   l_ccid := AcctDerRule_17(
60824            p_application_id           => p_application_id
60825          , p_ae_header_id             => l_ae_header_id 
60826 , p_source_1 => p_source_1
60827 , p_source_2 => p_source_2
60828          , x_transaction_coa_id       => l_adr_transaction_coa_id
60829          , x_accounting_coa_id        => l_adr_accounting_coa_id
60830          , x_value_type_code          => l_adr_value_type_code
60831          , p_side                     => 'NA'
60832    );
60833 
60834    xla_ae_lines_pkg.set_ccid(
60835     p_code_combination_id          => l_ccid
60836   , p_value_type_code              => l_adr_value_type_code
60837   , p_transaction_coa_id           => l_adr_transaction_coa_id
60838   , p_accounting_coa_id            => l_adr_accounting_coa_id
60839   , p_adr_code                     => 'INV'
60840   , p_adr_type_code                => 'S'
60841   , p_component_type               => l_component_type
60842   , p_component_code               => l_component_code
60843   , p_component_type_code          => l_component_type_code
60844   , p_component_appl_id            => l_component_appl_id
60845   , p_amb_context_code             => l_amb_context_code
60846   , p_side                         => 'NA'
60847   );
60848 
60849 
60850    --
60851    --
60852    END IF;
60853    --
60854    -- Bug 4922099
60855    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
60856           (NVL(l_enc_upg_option, 'N') = 'O')
60857         ) AND
60858         (l_bflow_method_code = 'PRIOR_ENTRY')
60859       )
60860    THEN
60861       IF
60862       --
60866       xla_accounting_err_pkg.build_message
60863       1 = 2
60864       --
60865       THEN
60867                                     (p_appli_s_name            => 'XLA'
60868                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60869                                     ,p_token_1                 => 'LINE_NUMBER'
60870                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
60871                                     ,p_token_2                 => 'LINE_TYPE_NAME'
60872                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
60873                                                                              l_component_type
60874                                                                             ,l_component_code
60875                                                                             ,l_component_type_code
60876                                                                             ,l_component_appl_id
60877                                                                             ,l_amb_context_code
60878                                                                             ,l_entity_code
60879                                                                             ,l_event_class_code
60880                                                                            )
60881                                     ,p_token_3                 => 'OWNER'
60882                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
60883                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
60884                                                                           ,p_lookup_code    => l_component_type_code
60885                                                                          )
60886                                     ,p_token_4                 => 'PRODUCT_NAME'
60887                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
60888                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
60889                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
60890                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
60891                                     ,p_ae_header_id            =>  NULL
60892                                        );
60893 
60894         IF (C_LEVEL_ERROR>= g_log_level) THEN
60895                  trace
60896                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60897                       ,p_level    => C_LEVEL_ERROR
60898                       ,p_module   => l_log_module);
60899         END IF;
60900       END IF;
60901    END IF;
60902    --
60903    --
60904    ------------------------------------------------------------------------------------------------
60905    -- 4219869 Business Flow
60906    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
60907    -- Prior Entry.  Currently, the following code is always generated.
60908    ------------------------------------------------------------------------------------------------
60909    XLA_AE_LINES_PKG.ValidateCurrentLine;
60910 
60911    ------------------------------------------------------------------------------------
60912    -- 4219869 Business Flow
60913    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
60914    ------------------------------------------------------------------------------------
60915    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60916 
60917    ----------------------------------------------------------------------------------
60918    -- 4219869 Business Flow
60919    -- Update journal entry status -- Need to generate this within IF <condition>
60920    ----------------------------------------------------------------------------------
60921    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60922          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
60923          ,p_balance_type_code => l_balance_type_code
60924          );
60925 
60926    -------------------------------------------------------------------------------------------
60927    -- 4262811 - Generate the Accrual Reversal lines
60928    -------------------------------------------------------------------------------------------
60929    BEGIN
60930       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
60931                               (g_array_event(p_event_id).array_value_num('header_index'));
60932       IF l_acc_rev_flag IS NULL THEN
60933          l_acc_rev_flag := 'N';
60934       END IF;
60935    EXCEPTION
60936       WHEN OTHERS THEN
60937          l_acc_rev_flag := 'N';
60938    END;
60939    --
60940    IF (l_acc_rev_flag = 'Y') THEN
60941 
60942        -- 4645092  ------------------------------------------------------------------------------
60943        -- To allow MPA report to determine if it should generate report process
60944        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
60945        ------------------------------------------------------------------------------------------
60946 
60947        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
60948        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
60949    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
60950    -- call ADRs
60951    -- Bug 4922099
60952    --
60953    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60954         (NVL(l_actual_upg_option, 'N') = 'O') OR
60958    NULL;
60955         (NVL(l_enc_upg_option, 'N') = 'O')
60956       )
60957    THEN
60959    --
60960    --
60961    
60962   l_ccid := AcctDerRule_17(
60963            p_application_id           => p_application_id
60964          , p_ae_header_id             => l_ae_header_id 
60965 , p_source_1 => p_source_1
60966 , p_source_2 => p_source_2
60967          , x_transaction_coa_id       => l_adr_transaction_coa_id
60968          , x_accounting_coa_id        => l_adr_accounting_coa_id
60969          , x_value_type_code          => l_adr_value_type_code
60970          , p_side                     => 'NA'
60971    );
60972 
60973    xla_ae_lines_pkg.set_ccid(
60974     p_code_combination_id          => l_ccid
60975   , p_value_type_code              => l_adr_value_type_code
60976   , p_transaction_coa_id           => l_adr_transaction_coa_id
60977   , p_accounting_coa_id            => l_adr_accounting_coa_id
60978   , p_adr_code                     => 'INV'
60979   , p_adr_type_code                => 'S'
60980   , p_component_type               => l_component_type
60981   , p_component_code               => l_component_code
60982   , p_component_type_code          => l_component_type_code
60983   , p_component_appl_id            => l_component_appl_id
60984   , p_amb_context_code             => l_amb_context_code
60985   , p_side                         => 'NA'
60986   );
60987 
60988 
60989    --
60990    --
60991    END IF;
60992 
60993        --
60994        -- Update the line information that should be overwritten
60995        --
60996        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
60997                                          p_header_num   => 1);
60998        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
60999 
61000        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
61001 
61002        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
61003           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
61004        END IF;
61005 
61006       --
61007       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
61008       --
61009       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
61010           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
61011       ELSE
61012           ---------------------------------------------------------------------------------------------------
61013           -- 4262811a Switch Sign
61014           ---------------------------------------------------------------------------------------------------
61015           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
61016           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61017                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61018           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61019                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61020           -- 5132302
61021           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
61022                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61023 
61024       END IF;
61025 
61026       -- 4955764
61027       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61028       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
61029 
61030 
61031       XLA_AE_LINES_PKG.ValidateCurrentLine;
61032       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61033 
61034       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61035                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
61036                ,p_balance_type_code => l_balance_type_code);
61037 
61038    END IF;
61039 
61040    -----------------------------------------------------------------------------------------
61041    -- 4262811 Multiperiod Accounting
61042    -----------------------------------------------------------------------------------------
61043      -- No MPA option is assigned.
61044 
61045 
61046 END IF;
61047 END IF;
61048 --
61049 
61050 --
61051 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61052    trace
61053       (p_msg      => 'END of AcctLineType_142'
61054       ,p_level    => C_LEVEL_PROCEDURE
61055       ,p_module   => l_log_module);
61056 END IF;
61057 --
61058 EXCEPTION
61059   WHEN xla_exceptions_pkg.application_exception THEN
61060       RAISE;
61061   WHEN OTHERS THEN
61062        xla_exceptions_pkg.raise_message
61063            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_142');
61064 END AcctLineType_142;
61065 --
61066 
61067 ---------------------------------------
61068 --
61069 -- PRIVATE FUNCTION
61070 --         AcctLineType_143
61071 --
61072 ---------------------------------------
61073 PROCEDURE AcctLineType_143 (
61074   p_application_id        IN NUMBER
61075  ,p_event_id              IN NUMBER
61076  ,p_calculate_acctd_flag  IN VARCHAR2
61077  ,p_calculate_g_l_flag    IN VARCHAR2
61081  
61078  ,p_actual_flag           IN OUT VARCHAR2
61079  ,p_balance_type_code     OUT VARCHAR2
61080  ,p_gain_or_loss_ref      OUT VARCHAR2
61082 --Transaction Account
61083  , p_source_1            IN NUMBER
61084 --Journal Line Type
61085  , p_source_2            IN VARCHAR2
61086 --Entered Amount
61087  , p_source_3            IN NUMBER
61088 --First Distribution Identifier
61089  , p_source_5            IN NUMBER
61090 --Distribution Type
61091  , p_source_6            IN VARCHAR2
61092 --Currency Code
61093  , p_source_7            IN VARCHAR2
61094 --Currency Conversion Date
61095  , p_source_8            IN DATE
61096 --Currency Conversion Rate
61097  , p_source_9            IN NUMBER
61098 --Currency Conversion Type
61099  , p_source_10            IN VARCHAR2
61100 --Accounted Amount
61101  , p_source_11            IN NUMBER
61102 )
61103 IS
61104 
61105 l_component_type              VARCHAR2(80);
61106 l_component_code              VARCHAR2(30);
61107 l_component_type_code         VARCHAR2(1);
61108 l_component_appl_id           INTEGER;
61109 l_amb_context_code            VARCHAR2(30);
61110 l_entity_code                 VARCHAR2(30);
61111 l_event_class_code            VARCHAR2(30);
61112 l_ae_header_id                NUMBER;
61113 l_event_type_code             VARCHAR2(30);
61114 l_line_definition_code        VARCHAR2(30);
61115 l_line_definition_owner_code  VARCHAR2(1);
61116 --
61117 -- adr variables
61118 l_segment                     VARCHAR2(30);
61119 l_ccid                        NUMBER;
61120 l_adr_transaction_coa_id      NUMBER;
61121 l_adr_accounting_coa_id       NUMBER;
61122 l_adr_flexfield_segment_code  VARCHAR2(30);
61123 l_adr_flex_value_set_id       NUMBER;
61124 l_adr_value_type_code         VARCHAR2(30);
61125 l_adr_value_combination_id    NUMBER;
61126 l_adr_value_segment_code      VARCHAR2(30);
61127 
61128 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
61129 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
61130 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
61131 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
61132 
61133 -- 4262811 Variables ------------------------------------------------------------------------------------------
61134 l_entered_amt_idx             NUMBER;
61135 l_accted_amt_idx              NUMBER;
61136 l_acc_rev_flag                VARCHAR2(1);
61137 l_accrual_line_num            NUMBER;
61138 l_tmp_amt                     NUMBER;
61139 l_acc_rev_natural_side_code   VARCHAR2(1);
61140 
61141 l_num_entries                 NUMBER;
61142 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
61143 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
61144 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
61145 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
61146 l_recog_line_1                NUMBER;
61147 l_recog_line_2                NUMBER;
61148 
61149 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
61150 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
61151 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
61152 
61153 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
61154 
61155 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
61156 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
61157 
61158 ---------------------------------------------------------------------------------------------------------------
61159 
61160 
61161 --
61162 -- bulk performance
61163 --
61164 l_balance_type_code           VARCHAR2(1);
61165 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
61166 l_log_module                  VARCHAR2(240);
61167 
61168 --
61169 -- Upgrade strategy
61170 --
61171 l_actual_upg_option           VARCHAR2(1);
61172 l_enc_upg_option           VARCHAR2(1);
61173 
61174 --
61175 BEGIN
61176 --
61177 IF g_log_enabled THEN
61178       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_143';
61179 END IF;
61180 --
61181 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61182 
61183       trace
61184          (p_msg      => 'BEGIN of AcctLineType_143'
61185          ,p_level    => C_LEVEL_PROCEDURE
61186          ,p_module   => l_log_module);
61187 
61188 END IF;
61189 --
61190 l_component_type             := 'AMB_JLT';
61191 l_component_code             := 'INV';
61192 l_component_type_code        := 'S';
61193 l_component_appl_id          :=  555;
61194 l_amb_context_code           := 'DEFAULT';
61195 l_entity_code                := 'INVENTORY';
61196 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
61197 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_TP';
61198 l_line_definition_owner_code := 'S';
61199 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT_TP';
61200 --
61201 l_balance_type_code          := 'A';
61202 l_segment                     := NULL;
61203 l_ccid                        := NULL;
61204 l_adr_transaction_coa_id      := NULL;
61205 l_adr_accounting_coa_id       := NULL;
61206 l_adr_flexfield_segment_code  := NULL;
61207 l_adr_flex_value_set_id       := NULL;
61208 l_adr_value_type_code         := NULL;
61209 l_adr_value_combination_id    := NULL;
61210 l_adr_value_segment_code      := NULL;
61211 
61215 l_budgetary_control_flag     := 'N';
61212 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
61213 l_bflow_class_code           := '';    -- 4219869 Business Flow
61214 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
61216 
61217 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
61218 l_bflow_applied_to_amt       := NULL; -- 5132302
61219 l_entered_amt_idx            := NULL;          -- 4262811
61220 l_accted_amt_idx             := NULL;          -- 4262811
61221 l_acc_rev_flag               := NULL;          -- 4262811
61222 l_accrual_line_num           := NULL;          -- 4262811
61223 l_tmp_amt                    := NULL;          -- 4262811
61224 --
61225  
61226 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
61227     l_balance_type_code <> 'B' THEN
61228 IF NVL(p_source_2,'
61229 ') =  'INV'
61230  THEN 
61231 
61232    --
61233    XLA_AE_LINES_PKG.SetNewLine;
61234 
61235    p_balance_type_code          := l_balance_type_code;
61236    -- set the flag so later we will know whether the gain loss line needs to be created
61237    
61238    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
61239      p_actual_flag :='A';
61240    END IF;
61241 
61242    --
61243    -- bulk performance
61244    --
61245    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
61246                                       p_header_num   => 0); -- 4262811
61247    --
61248    -- set accounting line options
61249    --
61250    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
61251            p_natural_side_code          => 'D'
61252          , p_gain_or_loss_flag          => 'N'
61253          , p_gl_transfer_mode_code      => 'D'
61254          , p_acct_entry_type_code       => 'A'
61255          , p_switch_side_flag           => 'Y'
61256          , p_merge_duplicate_code       => 'W'
61257          );
61258    --
61259    l_acc_rev_natural_side_code := 'C';  -- 4262811
61260    -- 
61261    --
61262    -- set accounting line type info
61263    --
61264    xla_ae_lines_pkg.SetAcctLineType
61265       (p_component_type             => l_component_type
61266       ,p_event_type_code            => l_event_type_code
61267       ,p_line_definition_owner_code => l_line_definition_owner_code
61268       ,p_line_definition_code       => l_line_definition_code
61269       ,p_accounting_line_code       => l_component_code
61270       ,p_accounting_line_type_code  => l_component_type_code
61271       ,p_accounting_line_appl_id    => l_component_appl_id
61272       ,p_amb_context_code           => l_amb_context_code
61273       ,p_entity_code                => l_entity_code
61274       ,p_event_class_code           => l_event_class_code);
61275    --
61276    -- set accounting class
61277    --
61278    xla_ae_lines_pkg.SetAcctClass(
61279            p_accounting_class_code  => 'INVENTORY_VALUATION'
61280          , p_ae_header_id           => l_ae_header_id
61281          );
61282 
61283    --
61284    -- set rounding class
61285    --
61286    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61287                       'INVENTORY_VALUATION';
61288 
61289    --
61290    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61291    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61292    --
61293    -- bulk performance
61294    --
61295    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61296 
61297    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61298       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61299 
61300    -- 4955764
61301    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61302       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61303 
61304    -- 4458381 Public Sector Enh
61305    
61306    --
61307    -- set accounting attributes for the line type
61308    --
61309    l_entered_amt_idx := 3;
61310    l_accted_amt_idx  := 8;
61311    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
61312    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
61313    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
61314    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
61315    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
61316    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
61317    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
61318    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
61319    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
61320    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
61321    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
61322    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
61323    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
61324    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
61325    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
61326    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
61327    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
61328 
61329    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61333    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61330    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61331 
61332    ---------------------------------------------------------------------------------------------------------------
61334    ---------------------------------------------------------------------------------------------------------------
61335    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61336 
61337    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61338    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61339 
61340    IF xla_accounting_cache_pkg.GetValueChar
61341          (p_source_code         => 'LEDGER_CATEGORY_CODE'
61342          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
61343    AND l_bflow_method_code = 'PRIOR_ENTRY'
61344 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
61345    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
61346          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
61347        )
61348    THEN
61349          xla_ae_lines_pkg.BflowUpgEntry
61350            (p_business_method_code    => l_bflow_method_code
61351            ,p_business_class_code     => l_bflow_class_code
61352            ,p_balance_type            => l_balance_type_code);
61353    ELSE
61354       NULL;
61355 -- No business flow processing for business flow method of NONE.
61356    END IF;
61357 
61358    --
61359    -- call analytical criteria
61360    --
61361    
61362    --
61363    -- call description
61364    --
61365    -- No description or it is inherited.
61366    --
61367    -- call ADRs
61368    -- Bug 4922099
61369    --
61370    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61371         (NVL(l_actual_upg_option, 'N') = 'O') OR
61372         (NVL(l_enc_upg_option, 'N') = 'O')
61373       )
61374    THEN
61375    NULL;
61376    --
61377    --
61378    
61379   l_ccid := AcctDerRule_17(
61380            p_application_id           => p_application_id
61381          , p_ae_header_id             => l_ae_header_id 
61382 , p_source_1 => p_source_1
61383 , p_source_2 => p_source_2
61384          , x_transaction_coa_id       => l_adr_transaction_coa_id
61385          , x_accounting_coa_id        => l_adr_accounting_coa_id
61386          , x_value_type_code          => l_adr_value_type_code
61387          , p_side                     => 'NA'
61388    );
61389 
61390    xla_ae_lines_pkg.set_ccid(
61391     p_code_combination_id          => l_ccid
61392   , p_value_type_code              => l_adr_value_type_code
61393   , p_transaction_coa_id           => l_adr_transaction_coa_id
61394   , p_accounting_coa_id            => l_adr_accounting_coa_id
61395   , p_adr_code                     => 'INV'
61396   , p_adr_type_code                => 'S'
61397   , p_component_type               => l_component_type
61398   , p_component_code               => l_component_code
61399   , p_component_type_code          => l_component_type_code
61400   , p_component_appl_id            => l_component_appl_id
61401   , p_amb_context_code             => l_amb_context_code
61402   , p_side                         => 'NA'
61403   );
61404 
61405 
61406    --
61407    --
61408    END IF;
61409    --
61410    -- Bug 4922099
61411    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
61412           (NVL(l_enc_upg_option, 'N') = 'O')
61413         ) AND
61414         (l_bflow_method_code = 'PRIOR_ENTRY')
61415       )
61416    THEN
61417       IF
61418       --
61419       1 = 2
61420       --
61421       THEN
61422       xla_accounting_err_pkg.build_message
61423                                     (p_appli_s_name            => 'XLA'
61424                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61425                                     ,p_token_1                 => 'LINE_NUMBER'
61426                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
61427                                     ,p_token_2                 => 'LINE_TYPE_NAME'
61428                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
61429                                                                              l_component_type
61430                                                                             ,l_component_code
61431                                                                             ,l_component_type_code
61432                                                                             ,l_component_appl_id
61433                                                                             ,l_amb_context_code
61434                                                                             ,l_entity_code
61435                                                                             ,l_event_class_code
61436                                                                            )
61437                                     ,p_token_3                 => 'OWNER'
61438                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
61439                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
61443                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
61440                                                                           ,p_lookup_code    => l_component_type_code
61441                                                                          )
61442                                     ,p_token_4                 => 'PRODUCT_NAME'
61444                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
61445                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
61446                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
61447                                     ,p_ae_header_id            =>  NULL
61448                                        );
61449 
61450         IF (C_LEVEL_ERROR>= g_log_level) THEN
61451                  trace
61452                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61453                       ,p_level    => C_LEVEL_ERROR
61454                       ,p_module   => l_log_module);
61455         END IF;
61456       END IF;
61457    END IF;
61458    --
61459    --
61460    ------------------------------------------------------------------------------------------------
61461    -- 4219869 Business Flow
61462    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
61463    -- Prior Entry.  Currently, the following code is always generated.
61464    ------------------------------------------------------------------------------------------------
61465    XLA_AE_LINES_PKG.ValidateCurrentLine;
61466 
61467    ------------------------------------------------------------------------------------
61468    -- 4219869 Business Flow
61469    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
61470    ------------------------------------------------------------------------------------
61471    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61472 
61473    ----------------------------------------------------------------------------------
61474    -- 4219869 Business Flow
61475    -- Update journal entry status -- Need to generate this within IF <condition>
61476    ----------------------------------------------------------------------------------
61477    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61478          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
61479          ,p_balance_type_code => l_balance_type_code
61480          );
61481 
61482    -------------------------------------------------------------------------------------------
61483    -- 4262811 - Generate the Accrual Reversal lines
61484    -------------------------------------------------------------------------------------------
61485    BEGIN
61486       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
61487                               (g_array_event(p_event_id).array_value_num('header_index'));
61488       IF l_acc_rev_flag IS NULL THEN
61489          l_acc_rev_flag := 'N';
61490       END IF;
61491    EXCEPTION
61492       WHEN OTHERS THEN
61493          l_acc_rev_flag := 'N';
61494    END;
61495    --
61496    IF (l_acc_rev_flag = 'Y') THEN
61497 
61498        -- 4645092  ------------------------------------------------------------------------------
61499        -- To allow MPA report to determine if it should generate report process
61500        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
61501        ------------------------------------------------------------------------------------------
61502 
61503        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
61504        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
61505    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
61506    -- call ADRs
61507    -- Bug 4922099
61508    --
61509    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61510         (NVL(l_actual_upg_option, 'N') = 'O') OR
61511         (NVL(l_enc_upg_option, 'N') = 'O')
61512       )
61513    THEN
61514    NULL;
61515    --
61516    --
61517    
61518   l_ccid := AcctDerRule_17(
61519            p_application_id           => p_application_id
61520          , p_ae_header_id             => l_ae_header_id 
61521 , p_source_1 => p_source_1
61522 , p_source_2 => p_source_2
61523          , x_transaction_coa_id       => l_adr_transaction_coa_id
61524          , x_accounting_coa_id        => l_adr_accounting_coa_id
61525          , x_value_type_code          => l_adr_value_type_code
61526          , p_side                     => 'NA'
61527    );
61528 
61529    xla_ae_lines_pkg.set_ccid(
61530     p_code_combination_id          => l_ccid
61531   , p_value_type_code              => l_adr_value_type_code
61532   , p_transaction_coa_id           => l_adr_transaction_coa_id
61533   , p_accounting_coa_id            => l_adr_accounting_coa_id
61534   , p_adr_code                     => 'INV'
61535   , p_adr_type_code                => 'S'
61536   , p_component_type               => l_component_type
61537   , p_component_code               => l_component_code
61538   , p_component_type_code          => l_component_type_code
61539   , p_component_appl_id            => l_component_appl_id
61540   , p_amb_context_code             => l_amb_context_code
61541   , p_side                         => 'NA'
61542   );
61543 
61544 
61545    --
61546    --
61547    END IF;
61548 
61549        --
61550        -- Update the line information that should be overwritten
61554        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
61551        --
61552        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
61553                                          p_header_num   => 1);
61555 
61556        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
61557 
61558        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
61559           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
61560        END IF;
61561 
61562       --
61563       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
61564       --
61565       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
61566           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
61567       ELSE
61568           ---------------------------------------------------------------------------------------------------
61569           -- 4262811a Switch Sign
61570           ---------------------------------------------------------------------------------------------------
61571           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
61572           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61573                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61574           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61575                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61576           -- 5132302
61577           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
61578                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61579 
61580       END IF;
61581 
61582       -- 4955764
61583       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61584       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
61585 
61586 
61587       XLA_AE_LINES_PKG.ValidateCurrentLine;
61588       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61589 
61590       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61591                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
61592                ,p_balance_type_code => l_balance_type_code);
61593 
61594    END IF;
61595 
61596    -----------------------------------------------------------------------------------------
61597    -- 4262811 Multiperiod Accounting
61598    -----------------------------------------------------------------------------------------
61599      -- No MPA option is assigned.
61600 
61601 
61602 END IF;
61603 END IF;
61604 --
61605 
61606 --
61607 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61608    trace
61609       (p_msg      => 'END of AcctLineType_143'
61610       ,p_level    => C_LEVEL_PROCEDURE
61611       ,p_module   => l_log_module);
61612 END IF;
61613 --
61614 EXCEPTION
61615   WHEN xla_exceptions_pkg.application_exception THEN
61616       RAISE;
61617   WHEN OTHERS THEN
61618        xla_exceptions_pkg.raise_message
61619            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_143');
61620 END AcctLineType_143;
61621 --
61622 
61623 ---------------------------------------
61624 --
61625 -- PRIVATE FUNCTION
61626 --         AcctLineType_144
61627 --
61628 ---------------------------------------
61629 PROCEDURE AcctLineType_144 (
61630   p_application_id        IN NUMBER
61631  ,p_event_id              IN NUMBER
61632  ,p_calculate_acctd_flag  IN VARCHAR2
61633  ,p_calculate_g_l_flag    IN VARCHAR2
61634  ,p_actual_flag           IN OUT VARCHAR2
61635  ,p_balance_type_code     OUT VARCHAR2
61636  ,p_gain_or_loss_ref      OUT VARCHAR2
61637  
61638 --Transaction Account
61639  , p_source_1            IN NUMBER
61640 --Journal Line Type
61641  , p_source_2            IN VARCHAR2
61642 --Entered Amount
61643  , p_source_3            IN NUMBER
61644 --First Distribution Identifier
61645  , p_source_5            IN NUMBER
61646 --Distribution Type
61647  , p_source_6            IN VARCHAR2
61648 --Currency Code
61649  , p_source_7            IN VARCHAR2
61650 --Currency Conversion Date
61651  , p_source_8            IN DATE
61652 --Currency Conversion Rate
61653  , p_source_9            IN NUMBER
61654 --Currency Conversion Type
61655  , p_source_10            IN VARCHAR2
61656 --Accounted Amount
61657  , p_source_11            IN NUMBER
61658 )
61659 IS
61660 
61661 l_component_type              VARCHAR2(80);
61662 l_component_code              VARCHAR2(30);
61663 l_component_type_code         VARCHAR2(1);
61664 l_component_appl_id           INTEGER;
61665 l_amb_context_code            VARCHAR2(30);
61666 l_entity_code                 VARCHAR2(30);
61667 l_event_class_code            VARCHAR2(30);
61668 l_ae_header_id                NUMBER;
61669 l_event_type_code             VARCHAR2(30);
61670 l_line_definition_code        VARCHAR2(30);
61671 l_line_definition_owner_code  VARCHAR2(1);
61672 --
61673 -- adr variables
61674 l_segment                     VARCHAR2(30);
61675 l_ccid                        NUMBER;
61679 l_adr_flex_value_set_id       NUMBER;
61676 l_adr_transaction_coa_id      NUMBER;
61677 l_adr_accounting_coa_id       NUMBER;
61678 l_adr_flexfield_segment_code  VARCHAR2(30);
61680 l_adr_value_type_code         VARCHAR2(30);
61681 l_adr_value_combination_id    NUMBER;
61682 l_adr_value_segment_code      VARCHAR2(30);
61683 
61684 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
61685 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
61686 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
61687 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
61688 
61689 -- 4262811 Variables ------------------------------------------------------------------------------------------
61690 l_entered_amt_idx             NUMBER;
61691 l_accted_amt_idx              NUMBER;
61692 l_acc_rev_flag                VARCHAR2(1);
61693 l_accrual_line_num            NUMBER;
61694 l_tmp_amt                     NUMBER;
61695 l_acc_rev_natural_side_code   VARCHAR2(1);
61696 
61697 l_num_entries                 NUMBER;
61698 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
61699 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
61700 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
61701 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
61702 l_recog_line_1                NUMBER;
61703 l_recog_line_2                NUMBER;
61704 
61705 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
61706 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
61707 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
61708 
61709 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
61710 
61711 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
61712 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
61713 
61714 ---------------------------------------------------------------------------------------------------------------
61715 
61716 
61717 --
61718 -- bulk performance
61719 --
61720 l_balance_type_code           VARCHAR2(1);
61721 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
61722 l_log_module                  VARCHAR2(240);
61723 
61724 --
61725 -- Upgrade strategy
61726 --
61727 l_actual_upg_option           VARCHAR2(1);
61728 l_enc_upg_option           VARCHAR2(1);
61729 
61730 --
61731 BEGIN
61732 --
61733 IF g_log_enabled THEN
61734       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_144';
61735 END IF;
61736 --
61737 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61738 
61739       trace
61740          (p_msg      => 'BEGIN of AcctLineType_144'
61741          ,p_level    => C_LEVEL_PROCEDURE
61742          ,p_module   => l_log_module);
61743 
61744 END IF;
61745 --
61746 l_component_type             := 'AMB_JLT';
61747 l_component_code             := 'INV';
61748 l_component_type_code        := 'S';
61749 l_component_appl_id          :=  555;
61750 l_amb_context_code           := 'DEFAULT';
61751 l_entity_code                := 'INVENTORY';
61752 l_event_class_code           := 'FOB_SHIP_RECIPIENT_RCPT';
61753 l_event_type_code            := 'FOB_SHIP_RECIPIENT_RCPT';
61754 l_line_definition_owner_code := 'S';
61755 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_RCPT';
61756 --
61757 l_balance_type_code          := 'A';
61758 l_segment                     := NULL;
61759 l_ccid                        := NULL;
61760 l_adr_transaction_coa_id      := NULL;
61761 l_adr_accounting_coa_id       := NULL;
61762 l_adr_flexfield_segment_code  := NULL;
61763 l_adr_flex_value_set_id       := NULL;
61764 l_adr_value_type_code         := NULL;
61765 l_adr_value_combination_id    := NULL;
61766 l_adr_value_segment_code      := NULL;
61767 
61768 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
61769 l_bflow_class_code           := '';    -- 4219869 Business Flow
61770 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
61771 l_budgetary_control_flag     := 'N';
61772 
61773 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
61774 l_bflow_applied_to_amt       := NULL; -- 5132302
61775 l_entered_amt_idx            := NULL;          -- 4262811
61776 l_accted_amt_idx             := NULL;          -- 4262811
61777 l_acc_rev_flag               := NULL;          -- 4262811
61778 l_accrual_line_num           := NULL;          -- 4262811
61779 l_tmp_amt                    := NULL;          -- 4262811
61780 --
61781  
61782 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
61783     l_balance_type_code <> 'B' THEN
61784 IF NVL(p_source_2,'
61785 ') =  'INV'
61786  THEN 
61787 
61788    --
61789    XLA_AE_LINES_PKG.SetNewLine;
61790 
61791    p_balance_type_code          := l_balance_type_code;
61792    -- set the flag so later we will know whether the gain loss line needs to be created
61793    
61794    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
61795      p_actual_flag :='A';
61796    END IF;
61797 
61798    --
61799    -- bulk performance
61800    --
61801    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
61802                                       p_header_num   => 0); -- 4262811
61803    --
61807            p_natural_side_code          => 'D'
61804    -- set accounting line options
61805    --
61806    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
61808          , p_gain_or_loss_flag          => 'N'
61809          , p_gl_transfer_mode_code      => 'D'
61810          , p_acct_entry_type_code       => 'A'
61811          , p_switch_side_flag           => 'Y'
61812          , p_merge_duplicate_code       => 'W'
61813          );
61814    --
61815    l_acc_rev_natural_side_code := 'C';  -- 4262811
61816    -- 
61817    --
61818    -- set accounting line type info
61819    --
61820    xla_ae_lines_pkg.SetAcctLineType
61821       (p_component_type             => l_component_type
61822       ,p_event_type_code            => l_event_type_code
61823       ,p_line_definition_owner_code => l_line_definition_owner_code
61824       ,p_line_definition_code       => l_line_definition_code
61825       ,p_accounting_line_code       => l_component_code
61826       ,p_accounting_line_type_code  => l_component_type_code
61827       ,p_accounting_line_appl_id    => l_component_appl_id
61828       ,p_amb_context_code           => l_amb_context_code
61829       ,p_entity_code                => l_entity_code
61830       ,p_event_class_code           => l_event_class_code);
61831    --
61832    -- set accounting class
61833    --
61834    xla_ae_lines_pkg.SetAcctClass(
61835            p_accounting_class_code  => 'INVENTORY_VALUATION'
61836          , p_ae_header_id           => l_ae_header_id
61837          );
61838 
61839    --
61840    -- set rounding class
61841    --
61842    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61843                       'INVENTORY_VALUATION';
61844 
61845    --
61846    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61847    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61848    --
61849    -- bulk performance
61850    --
61851    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61852 
61853    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61854       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61855 
61856    -- 4955764
61857    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61858       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61859 
61860    -- 4458381 Public Sector Enh
61861    
61862    --
61863    -- set accounting attributes for the line type
61864    --
61865    l_entered_amt_idx := 3;
61866    l_accted_amt_idx  := 8;
61867    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
61868    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
61869    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
61870    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
61871    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
61872    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
61873    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
61874    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
61875    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
61876    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
61877    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
61878    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
61879    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
61880    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
61881    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
61882    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
61883    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
61884 
61885    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61886    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61887 
61888    ---------------------------------------------------------------------------------------------------------------
61889    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61890    ---------------------------------------------------------------------------------------------------------------
61891    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61892 
61893    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61894    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61895 
61896    IF xla_accounting_cache_pkg.GetValueChar
61897          (p_source_code         => 'LEDGER_CATEGORY_CODE'
61898          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
61899    AND l_bflow_method_code = 'PRIOR_ENTRY'
61900 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
61901    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
61902          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
61903        )
61904    THEN
61905          xla_ae_lines_pkg.BflowUpgEntry
61906            (p_business_method_code    => l_bflow_method_code
61907            ,p_business_class_code     => l_bflow_class_code
61908            ,p_balance_type            => l_balance_type_code);
61909    ELSE
61910       NULL;
61914    --
61911 -- No business flow processing for business flow method of NONE.
61912    END IF;
61913 
61915    -- call analytical criteria
61916    --
61917    
61918    --
61919    -- call description
61920    --
61921    -- No description or it is inherited.
61922    --
61923    -- call ADRs
61924    -- Bug 4922099
61925    --
61926    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61927         (NVL(l_actual_upg_option, 'N') = 'O') OR
61928         (NVL(l_enc_upg_option, 'N') = 'O')
61929       )
61930    THEN
61931    NULL;
61932    --
61933    --
61934    
61935   l_ccid := AcctDerRule_17(
61936            p_application_id           => p_application_id
61937          , p_ae_header_id             => l_ae_header_id 
61938 , p_source_1 => p_source_1
61939 , p_source_2 => p_source_2
61940          , x_transaction_coa_id       => l_adr_transaction_coa_id
61941          , x_accounting_coa_id        => l_adr_accounting_coa_id
61942          , x_value_type_code          => l_adr_value_type_code
61943          , p_side                     => 'NA'
61944    );
61945 
61946    xla_ae_lines_pkg.set_ccid(
61947     p_code_combination_id          => l_ccid
61948   , p_value_type_code              => l_adr_value_type_code
61949   , p_transaction_coa_id           => l_adr_transaction_coa_id
61950   , p_accounting_coa_id            => l_adr_accounting_coa_id
61951   , p_adr_code                     => 'INV'
61952   , p_adr_type_code                => 'S'
61953   , p_component_type               => l_component_type
61954   , p_component_code               => l_component_code
61955   , p_component_type_code          => l_component_type_code
61956   , p_component_appl_id            => l_component_appl_id
61957   , p_amb_context_code             => l_amb_context_code
61958   , p_side                         => 'NA'
61959   );
61960 
61961 
61962    --
61963    --
61964    END IF;
61965    --
61966    -- Bug 4922099
61967    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
61968           (NVL(l_enc_upg_option, 'N') = 'O')
61969         ) AND
61970         (l_bflow_method_code = 'PRIOR_ENTRY')
61971       )
61972    THEN
61973       IF
61974       --
61975       1 = 2
61976       --
61977       THEN
61978       xla_accounting_err_pkg.build_message
61979                                     (p_appli_s_name            => 'XLA'
61980                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61981                                     ,p_token_1                 => 'LINE_NUMBER'
61982                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
61983                                     ,p_token_2                 => 'LINE_TYPE_NAME'
61984                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
61985                                                                              l_component_type
61986                                                                             ,l_component_code
61987                                                                             ,l_component_type_code
61988                                                                             ,l_component_appl_id
61989                                                                             ,l_amb_context_code
61990                                                                             ,l_entity_code
61991                                                                             ,l_event_class_code
61992                                                                            )
61993                                     ,p_token_3                 => 'OWNER'
61994                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
61995                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
61996                                                                           ,p_lookup_code    => l_component_type_code
61997                                                                          )
61998                                     ,p_token_4                 => 'PRODUCT_NAME'
61999                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
62000                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
62001                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
62002                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
62003                                     ,p_ae_header_id            =>  NULL
62004                                        );
62005 
62006         IF (C_LEVEL_ERROR>= g_log_level) THEN
62007                  trace
62008                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62009                       ,p_level    => C_LEVEL_ERROR
62010                       ,p_module   => l_log_module);
62011         END IF;
62012       END IF;
62013    END IF;
62014    --
62015    --
62016    ------------------------------------------------------------------------------------------------
62017    -- 4219869 Business Flow
62018    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
62019    -- Prior Entry.  Currently, the following code is always generated.
62020    ------------------------------------------------------------------------------------------------
62021    XLA_AE_LINES_PKG.ValidateCurrentLine;
62022 
62026    ------------------------------------------------------------------------------------
62023    ------------------------------------------------------------------------------------
62024    -- 4219869 Business Flow
62025    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
62027    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62028 
62029    ----------------------------------------------------------------------------------
62030    -- 4219869 Business Flow
62031    -- Update journal entry status -- Need to generate this within IF <condition>
62032    ----------------------------------------------------------------------------------
62033    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62034          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
62035          ,p_balance_type_code => l_balance_type_code
62036          );
62037 
62038    -------------------------------------------------------------------------------------------
62039    -- 4262811 - Generate the Accrual Reversal lines
62040    -------------------------------------------------------------------------------------------
62041    BEGIN
62042       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
62043                               (g_array_event(p_event_id).array_value_num('header_index'));
62044       IF l_acc_rev_flag IS NULL THEN
62045          l_acc_rev_flag := 'N';
62046       END IF;
62047    EXCEPTION
62048       WHEN OTHERS THEN
62049          l_acc_rev_flag := 'N';
62050    END;
62051    --
62052    IF (l_acc_rev_flag = 'Y') THEN
62053 
62054        -- 4645092  ------------------------------------------------------------------------------
62055        -- To allow MPA report to determine if it should generate report process
62056        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
62057        ------------------------------------------------------------------------------------------
62058 
62059        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
62060        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
62061    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
62062    -- call ADRs
62063    -- Bug 4922099
62064    --
62065    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62066         (NVL(l_actual_upg_option, 'N') = 'O') OR
62067         (NVL(l_enc_upg_option, 'N') = 'O')
62068       )
62069    THEN
62070    NULL;
62071    --
62072    --
62073    
62074   l_ccid := AcctDerRule_17(
62075            p_application_id           => p_application_id
62076          , p_ae_header_id             => l_ae_header_id 
62077 , p_source_1 => p_source_1
62078 , p_source_2 => p_source_2
62079          , x_transaction_coa_id       => l_adr_transaction_coa_id
62080          , x_accounting_coa_id        => l_adr_accounting_coa_id
62081          , x_value_type_code          => l_adr_value_type_code
62082          , p_side                     => 'NA'
62083    );
62084 
62085    xla_ae_lines_pkg.set_ccid(
62086     p_code_combination_id          => l_ccid
62087   , p_value_type_code              => l_adr_value_type_code
62088   , p_transaction_coa_id           => l_adr_transaction_coa_id
62089   , p_accounting_coa_id            => l_adr_accounting_coa_id
62090   , p_adr_code                     => 'INV'
62091   , p_adr_type_code                => 'S'
62092   , p_component_type               => l_component_type
62093   , p_component_code               => l_component_code
62094   , p_component_type_code          => l_component_type_code
62095   , p_component_appl_id            => l_component_appl_id
62096   , p_amb_context_code             => l_amb_context_code
62097   , p_side                         => 'NA'
62098   );
62099 
62100 
62101    --
62102    --
62103    END IF;
62104 
62105        --
62106        -- Update the line information that should be overwritten
62107        --
62108        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
62109                                          p_header_num   => 1);
62110        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
62111 
62112        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
62113 
62114        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
62115           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
62116        END IF;
62117 
62118       --
62119       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
62120       --
62121       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
62122           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
62123       ELSE
62124           ---------------------------------------------------------------------------------------------------
62125           -- 4262811a Switch Sign
62126           ---------------------------------------------------------------------------------------------------
62127           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
62128           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62129                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62130           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62134                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62131                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62132           -- 5132302
62133           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
62135 
62136       END IF;
62137 
62138       -- 4955764
62139       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62140       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
62141 
62142 
62143       XLA_AE_LINES_PKG.ValidateCurrentLine;
62144       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62145 
62146       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62147                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
62148                ,p_balance_type_code => l_balance_type_code);
62149 
62150    END IF;
62151 
62152    -----------------------------------------------------------------------------------------
62153    -- 4262811 Multiperiod Accounting
62154    -----------------------------------------------------------------------------------------
62155      -- No MPA option is assigned.
62156 
62157 
62158 END IF;
62159 END IF;
62160 --
62161 
62162 --
62163 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62164    trace
62165       (p_msg      => 'END of AcctLineType_144'
62166       ,p_level    => C_LEVEL_PROCEDURE
62167       ,p_module   => l_log_module);
62168 END IF;
62169 --
62170 EXCEPTION
62171   WHEN xla_exceptions_pkg.application_exception THEN
62172       RAISE;
62173   WHEN OTHERS THEN
62174        xla_exceptions_pkg.raise_message
62175            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_144');
62176 END AcctLineType_144;
62177 --
62178 
62179 ---------------------------------------
62180 --
62181 -- PRIVATE FUNCTION
62182 --         AcctLineType_145
62183 --
62184 ---------------------------------------
62185 PROCEDURE AcctLineType_145 (
62186   p_application_id        IN NUMBER
62187  ,p_event_id              IN NUMBER
62188  ,p_calculate_acctd_flag  IN VARCHAR2
62189  ,p_calculate_g_l_flag    IN VARCHAR2
62190  ,p_actual_flag           IN OUT VARCHAR2
62191  ,p_balance_type_code     OUT VARCHAR2
62192  ,p_gain_or_loss_ref      OUT VARCHAR2
62193  
62194 --Transaction Account
62195  , p_source_1            IN NUMBER
62196 --Journal Line Type
62197  , p_source_2            IN VARCHAR2
62198 --Entered Amount
62199  , p_source_3            IN NUMBER
62200 --First Distribution Identifier
62201  , p_source_5            IN NUMBER
62202 --Distribution Type
62203  , p_source_6            IN VARCHAR2
62204 --Currency Code
62205  , p_source_7            IN VARCHAR2
62206 --Currency Conversion Date
62207  , p_source_8            IN DATE
62208 --Currency Conversion Rate
62209  , p_source_9            IN NUMBER
62210 --Currency Conversion Type
62211  , p_source_10            IN VARCHAR2
62212 --Accounted Amount
62213  , p_source_11            IN NUMBER
62214 )
62215 IS
62216 
62217 l_component_type              VARCHAR2(80);
62218 l_component_code              VARCHAR2(30);
62219 l_component_type_code         VARCHAR2(1);
62220 l_component_appl_id           INTEGER;
62221 l_amb_context_code            VARCHAR2(30);
62222 l_entity_code                 VARCHAR2(30);
62223 l_event_class_code            VARCHAR2(30);
62224 l_ae_header_id                NUMBER;
62225 l_event_type_code             VARCHAR2(30);
62226 l_line_definition_code        VARCHAR2(30);
62227 l_line_definition_owner_code  VARCHAR2(1);
62228 --
62229 -- adr variables
62230 l_segment                     VARCHAR2(30);
62231 l_ccid                        NUMBER;
62232 l_adr_transaction_coa_id      NUMBER;
62233 l_adr_accounting_coa_id       NUMBER;
62234 l_adr_flexfield_segment_code  VARCHAR2(30);
62235 l_adr_flex_value_set_id       NUMBER;
62236 l_adr_value_type_code         VARCHAR2(30);
62237 l_adr_value_combination_id    NUMBER;
62238 l_adr_value_segment_code      VARCHAR2(30);
62239 
62240 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
62241 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
62242 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
62243 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
62244 
62245 -- 4262811 Variables ------------------------------------------------------------------------------------------
62246 l_entered_amt_idx             NUMBER;
62247 l_accted_amt_idx              NUMBER;
62248 l_acc_rev_flag                VARCHAR2(1);
62249 l_accrual_line_num            NUMBER;
62250 l_tmp_amt                     NUMBER;
62251 l_acc_rev_natural_side_code   VARCHAR2(1);
62252 
62253 l_num_entries                 NUMBER;
62254 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
62255 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
62256 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
62257 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
62258 l_recog_line_1                NUMBER;
62259 l_recog_line_2                NUMBER;
62260 
62261 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
62262 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
62266 
62263 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
62264 
62265 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
62267 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
62268 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
62269 
62270 ---------------------------------------------------------------------------------------------------------------
62271 
62272 
62273 --
62274 -- bulk performance
62275 --
62276 l_balance_type_code           VARCHAR2(1);
62277 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
62278 l_log_module                  VARCHAR2(240);
62279 
62280 --
62281 -- Upgrade strategy
62282 --
62283 l_actual_upg_option           VARCHAR2(1);
62284 l_enc_upg_option           VARCHAR2(1);
62285 
62286 --
62287 BEGIN
62288 --
62289 IF g_log_enabled THEN
62290       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_145';
62291 END IF;
62292 --
62293 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62294 
62295       trace
62296          (p_msg      => 'BEGIN of AcctLineType_145'
62297          ,p_level    => C_LEVEL_PROCEDURE
62298          ,p_module   => l_log_module);
62299 
62300 END IF;
62301 --
62302 l_component_type             := 'AMB_JLT';
62303 l_component_code             := 'INV';
62304 l_component_type_code        := 'S';
62305 l_component_appl_id          :=  555;
62306 l_amb_context_code           := 'DEFAULT';
62307 l_entity_code                := 'INVENTORY';
62308 l_event_class_code           := 'LOG_INTERCOMPANY';
62309 l_event_type_code            := 'LOG_IC_SHIPMENT_RCPT';
62310 l_line_definition_owner_code := 'S';
62311 l_line_definition_code       := 'LOG_IC_SHIPMENT_RCPT';
62312 --
62313 l_balance_type_code          := 'A';
62314 l_segment                     := NULL;
62315 l_ccid                        := NULL;
62316 l_adr_transaction_coa_id      := NULL;
62317 l_adr_accounting_coa_id       := NULL;
62318 l_adr_flexfield_segment_code  := NULL;
62319 l_adr_flex_value_set_id       := NULL;
62320 l_adr_value_type_code         := NULL;
62321 l_adr_value_combination_id    := NULL;
62322 l_adr_value_segment_code      := NULL;
62323 
62324 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
62325 l_bflow_class_code           := '';    -- 4219869 Business Flow
62326 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
62327 l_budgetary_control_flag     := 'N';
62328 
62329 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
62330 l_bflow_applied_to_amt       := NULL; -- 5132302
62331 l_entered_amt_idx            := NULL;          -- 4262811
62332 l_accted_amt_idx             := NULL;          -- 4262811
62333 l_acc_rev_flag               := NULL;          -- 4262811
62334 l_accrual_line_num           := NULL;          -- 4262811
62335 l_tmp_amt                    := NULL;          -- 4262811
62336 --
62337  
62338 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
62339     l_balance_type_code <> 'B' THEN
62340 IF NVL(p_source_2,'
62341 ') =  'INV'
62342  THEN 
62343 
62344    --
62345    XLA_AE_LINES_PKG.SetNewLine;
62346 
62347    p_balance_type_code          := l_balance_type_code;
62348    -- set the flag so later we will know whether the gain loss line needs to be created
62349    
62350    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
62351      p_actual_flag :='A';
62352    END IF;
62353 
62354    --
62355    -- bulk performance
62356    --
62357    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
62358                                       p_header_num   => 0); -- 4262811
62359    --
62360    -- set accounting line options
62361    --
62362    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
62363            p_natural_side_code          => 'D'
62364          , p_gain_or_loss_flag          => 'N'
62365          , p_gl_transfer_mode_code      => 'D'
62366          , p_acct_entry_type_code       => 'A'
62367          , p_switch_side_flag           => 'Y'
62368          , p_merge_duplicate_code       => 'W'
62369          );
62370    --
62371    l_acc_rev_natural_side_code := 'C';  -- 4262811
62372    -- 
62373    --
62374    -- set accounting line type info
62375    --
62376    xla_ae_lines_pkg.SetAcctLineType
62377       (p_component_type             => l_component_type
62378       ,p_event_type_code            => l_event_type_code
62379       ,p_line_definition_owner_code => l_line_definition_owner_code
62380       ,p_line_definition_code       => l_line_definition_code
62381       ,p_accounting_line_code       => l_component_code
62382       ,p_accounting_line_type_code  => l_component_type_code
62383       ,p_accounting_line_appl_id    => l_component_appl_id
62384       ,p_amb_context_code           => l_amb_context_code
62385       ,p_entity_code                => l_entity_code
62386       ,p_event_class_code           => l_event_class_code);
62387    --
62388    -- set accounting class
62389    --
62390    xla_ae_lines_pkg.SetAcctClass(
62391            p_accounting_class_code  => 'INVENTORY_VALUATION'
62392          , p_ae_header_id           => l_ae_header_id
62393          );
62394 
62395    --
62396    -- set rounding class
62397    --
62401    --
62398    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
62399                       'INVENTORY_VALUATION';
62400 
62402    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
62403    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
62404    --
62405    -- bulk performance
62406    --
62407    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
62408 
62409    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
62410       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
62411 
62412    -- 4955764
62413    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62414       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
62415 
62416    -- 4458381 Public Sector Enh
62417    
62418    --
62419    -- set accounting attributes for the line type
62420    --
62421    l_entered_amt_idx := 3;
62422    l_accted_amt_idx  := 8;
62423    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
62424    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
62425    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
62426    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
62427    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
62428    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
62429    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
62430    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
62431    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
62432    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
62433    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
62434    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
62435    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
62436    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
62437    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
62438    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
62439    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
62440 
62441    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
62442    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
62443 
62444    ---------------------------------------------------------------------------------------------------------------
62445    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
62446    ---------------------------------------------------------------------------------------------------------------
62447    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
62448 
62449    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62450    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62451 
62452    IF xla_accounting_cache_pkg.GetValueChar
62453          (p_source_code         => 'LEDGER_CATEGORY_CODE'
62454          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
62455    AND l_bflow_method_code = 'PRIOR_ENTRY'
62456 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
62457    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
62458          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
62459        )
62460    THEN
62461          xla_ae_lines_pkg.BflowUpgEntry
62462            (p_business_method_code    => l_bflow_method_code
62463            ,p_business_class_code     => l_bflow_class_code
62464            ,p_balance_type            => l_balance_type_code);
62465    ELSE
62466       NULL;
62467 -- No business flow processing for business flow method of NONE.
62468    END IF;
62469 
62470    --
62471    -- call analytical criteria
62472    --
62473    
62474    --
62475    -- call description
62476    --
62477    -- No description or it is inherited.
62478    --
62479    -- call ADRs
62480    -- Bug 4922099
62481    --
62482    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62483         (NVL(l_actual_upg_option, 'N') = 'O') OR
62484         (NVL(l_enc_upg_option, 'N') = 'O')
62485       )
62486    THEN
62487    NULL;
62488    --
62489    --
62490    
62491   l_ccid := AcctDerRule_17(
62492            p_application_id           => p_application_id
62493          , p_ae_header_id             => l_ae_header_id 
62494 , p_source_1 => p_source_1
62495 , p_source_2 => p_source_2
62496          , x_transaction_coa_id       => l_adr_transaction_coa_id
62497          , x_accounting_coa_id        => l_adr_accounting_coa_id
62498          , x_value_type_code          => l_adr_value_type_code
62499          , p_side                     => 'NA'
62500    );
62501 
62502    xla_ae_lines_pkg.set_ccid(
62503     p_code_combination_id          => l_ccid
62504   , p_value_type_code              => l_adr_value_type_code
62505   , p_transaction_coa_id           => l_adr_transaction_coa_id
62506   , p_accounting_coa_id            => l_adr_accounting_coa_id
62507   , p_adr_code                     => 'INV'
62508   , p_adr_type_code                => 'S'
62509   , p_component_type               => l_component_type
62510   , p_component_code               => l_component_code
62514   , p_side                         => 'NA'
62511   , p_component_type_code          => l_component_type_code
62512   , p_component_appl_id            => l_component_appl_id
62513   , p_amb_context_code             => l_amb_context_code
62515   );
62516 
62517 
62518    --
62519    --
62520    END IF;
62521    --
62522    -- Bug 4922099
62523    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
62524           (NVL(l_enc_upg_option, 'N') = 'O')
62525         ) AND
62526         (l_bflow_method_code = 'PRIOR_ENTRY')
62527       )
62528    THEN
62529       IF
62530       --
62531       1 = 2
62532       --
62533       THEN
62534       xla_accounting_err_pkg.build_message
62535                                     (p_appli_s_name            => 'XLA'
62536                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62537                                     ,p_token_1                 => 'LINE_NUMBER'
62538                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
62539                                     ,p_token_2                 => 'LINE_TYPE_NAME'
62540                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
62541                                                                              l_component_type
62542                                                                             ,l_component_code
62543                                                                             ,l_component_type_code
62544                                                                             ,l_component_appl_id
62545                                                                             ,l_amb_context_code
62546                                                                             ,l_entity_code
62547                                                                             ,l_event_class_code
62548                                                                            )
62549                                     ,p_token_3                 => 'OWNER'
62550                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
62551                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
62552                                                                           ,p_lookup_code    => l_component_type_code
62553                                                                          )
62554                                     ,p_token_4                 => 'PRODUCT_NAME'
62555                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
62556                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
62557                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
62558                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
62559                                     ,p_ae_header_id            =>  NULL
62560                                        );
62561 
62562         IF (C_LEVEL_ERROR>= g_log_level) THEN
62563                  trace
62564                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62565                       ,p_level    => C_LEVEL_ERROR
62566                       ,p_module   => l_log_module);
62567         END IF;
62568       END IF;
62569    END IF;
62570    --
62571    --
62572    ------------------------------------------------------------------------------------------------
62573    -- 4219869 Business Flow
62574    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
62575    -- Prior Entry.  Currently, the following code is always generated.
62576    ------------------------------------------------------------------------------------------------
62577    XLA_AE_LINES_PKG.ValidateCurrentLine;
62578 
62579    ------------------------------------------------------------------------------------
62580    -- 4219869 Business Flow
62581    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
62582    ------------------------------------------------------------------------------------
62583    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62584 
62585    ----------------------------------------------------------------------------------
62586    -- 4219869 Business Flow
62587    -- Update journal entry status -- Need to generate this within IF <condition>
62588    ----------------------------------------------------------------------------------
62589    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62590          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
62591          ,p_balance_type_code => l_balance_type_code
62592          );
62593 
62594    -------------------------------------------------------------------------------------------
62595    -- 4262811 - Generate the Accrual Reversal lines
62596    -------------------------------------------------------------------------------------------
62597    BEGIN
62598       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
62599                               (g_array_event(p_event_id).array_value_num('header_index'));
62600       IF l_acc_rev_flag IS NULL THEN
62601          l_acc_rev_flag := 'N';
62602       END IF;
62603    EXCEPTION
62604       WHEN OTHERS THEN
62605          l_acc_rev_flag := 'N';
62606    END;
62607    --
62608    IF (l_acc_rev_flag = 'Y') THEN
62609 
62613        ------------------------------------------------------------------------------------------
62610        -- 4645092  ------------------------------------------------------------------------------
62611        -- To allow MPA report to determine if it should generate report process
62612        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
62614 
62615        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
62616        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
62617    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
62618    -- call ADRs
62619    -- Bug 4922099
62620    --
62621    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62622         (NVL(l_actual_upg_option, 'N') = 'O') OR
62623         (NVL(l_enc_upg_option, 'N') = 'O')
62624       )
62625    THEN
62626    NULL;
62627    --
62628    --
62629    
62630   l_ccid := AcctDerRule_17(
62631            p_application_id           => p_application_id
62632          , p_ae_header_id             => l_ae_header_id 
62633 , p_source_1 => p_source_1
62634 , p_source_2 => p_source_2
62635          , x_transaction_coa_id       => l_adr_transaction_coa_id
62636          , x_accounting_coa_id        => l_adr_accounting_coa_id
62637          , x_value_type_code          => l_adr_value_type_code
62638          , p_side                     => 'NA'
62639    );
62640 
62641    xla_ae_lines_pkg.set_ccid(
62642     p_code_combination_id          => l_ccid
62643   , p_value_type_code              => l_adr_value_type_code
62644   , p_transaction_coa_id           => l_adr_transaction_coa_id
62645   , p_accounting_coa_id            => l_adr_accounting_coa_id
62646   , p_adr_code                     => 'INV'
62647   , p_adr_type_code                => 'S'
62648   , p_component_type               => l_component_type
62649   , p_component_code               => l_component_code
62650   , p_component_type_code          => l_component_type_code
62651   , p_component_appl_id            => l_component_appl_id
62652   , p_amb_context_code             => l_amb_context_code
62653   , p_side                         => 'NA'
62654   );
62655 
62656 
62657    --
62658    --
62659    END IF;
62660 
62661        --
62662        -- Update the line information that should be overwritten
62663        --
62664        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
62665                                          p_header_num   => 1);
62666        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
62667 
62668        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
62669 
62670        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
62671           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
62672        END IF;
62673 
62674       --
62675       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
62676       --
62677       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
62678           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
62679       ELSE
62680           ---------------------------------------------------------------------------------------------------
62681           -- 4262811a Switch Sign
62682           ---------------------------------------------------------------------------------------------------
62683           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
62684           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62685                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62686           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62687                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62688           -- 5132302
62689           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
62690                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62691 
62692       END IF;
62693 
62694       -- 4955764
62695       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62696       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
62697 
62698 
62699       XLA_AE_LINES_PKG.ValidateCurrentLine;
62700       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62701 
62702       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62703                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
62704                ,p_balance_type_code => l_balance_type_code);
62705 
62706    END IF;
62707 
62708    -----------------------------------------------------------------------------------------
62709    -- 4262811 Multiperiod Accounting
62710    -----------------------------------------------------------------------------------------
62711      -- No MPA option is assigned.
62712 
62713 
62714 END IF;
62715 END IF;
62716 --
62717 
62718 --
62719 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62720    trace
62721       (p_msg      => 'END of AcctLineType_145'
62722       ,p_level    => C_LEVEL_PROCEDURE
62723       ,p_module   => l_log_module);
62724 END IF;
62725 --
62726 EXCEPTION
62730        xla_exceptions_pkg.raise_message
62727   WHEN xla_exceptions_pkg.application_exception THEN
62728       RAISE;
62729   WHEN OTHERS THEN
62731            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_145');
62732 END AcctLineType_145;
62733 --
62734 
62735 ---------------------------------------
62736 --
62737 -- PRIVATE FUNCTION
62738 --         AcctLineType_146
62739 --
62740 ---------------------------------------
62741 PROCEDURE AcctLineType_146 (
62742   p_application_id        IN NUMBER
62743  ,p_event_id              IN NUMBER
62744  ,p_calculate_acctd_flag  IN VARCHAR2
62745  ,p_calculate_g_l_flag    IN VARCHAR2
62746  ,p_actual_flag           IN OUT VARCHAR2
62747  ,p_balance_type_code     OUT VARCHAR2
62748  ,p_gain_or_loss_ref      OUT VARCHAR2
62749  
62750 --Transaction Account
62751  , p_source_1            IN NUMBER
62752 --Journal Line Type
62753  , p_source_2            IN VARCHAR2
62754 --Entered Amount
62755  , p_source_3            IN NUMBER
62756 --First Distribution Identifier
62757  , p_source_5            IN NUMBER
62758 --Distribution Type
62759  , p_source_6            IN VARCHAR2
62760 --Currency Code
62761  , p_source_7            IN VARCHAR2
62762 --Currency Conversion Date
62763  , p_source_8            IN DATE
62764 --Currency Conversion Rate
62765  , p_source_9            IN NUMBER
62766 --Currency Conversion Type
62767  , p_source_10            IN VARCHAR2
62768 --Accounted Amount
62769  , p_source_11            IN NUMBER
62770 )
62771 IS
62772 
62773 l_component_type              VARCHAR2(80);
62774 l_component_code              VARCHAR2(30);
62775 l_component_type_code         VARCHAR2(1);
62776 l_component_appl_id           INTEGER;
62777 l_amb_context_code            VARCHAR2(30);
62778 l_entity_code                 VARCHAR2(30);
62779 l_event_class_code            VARCHAR2(30);
62780 l_ae_header_id                NUMBER;
62781 l_event_type_code             VARCHAR2(30);
62782 l_line_definition_code        VARCHAR2(30);
62783 l_line_definition_owner_code  VARCHAR2(1);
62784 --
62785 -- adr variables
62786 l_segment                     VARCHAR2(30);
62787 l_ccid                        NUMBER;
62788 l_adr_transaction_coa_id      NUMBER;
62789 l_adr_accounting_coa_id       NUMBER;
62790 l_adr_flexfield_segment_code  VARCHAR2(30);
62791 l_adr_flex_value_set_id       NUMBER;
62792 l_adr_value_type_code         VARCHAR2(30);
62793 l_adr_value_combination_id    NUMBER;
62794 l_adr_value_segment_code      VARCHAR2(30);
62795 
62796 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
62797 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
62798 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
62799 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
62800 
62801 -- 4262811 Variables ------------------------------------------------------------------------------------------
62802 l_entered_amt_idx             NUMBER;
62803 l_accted_amt_idx              NUMBER;
62804 l_acc_rev_flag                VARCHAR2(1);
62805 l_accrual_line_num            NUMBER;
62806 l_tmp_amt                     NUMBER;
62807 l_acc_rev_natural_side_code   VARCHAR2(1);
62808 
62809 l_num_entries                 NUMBER;
62810 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
62811 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
62812 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
62813 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
62814 l_recog_line_1                NUMBER;
62815 l_recog_line_2                NUMBER;
62816 
62817 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
62818 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
62819 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
62820 
62821 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
62822 
62823 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
62824 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
62825 
62826 ---------------------------------------------------------------------------------------------------------------
62827 
62828 
62829 --
62830 -- bulk performance
62831 --
62832 l_balance_type_code           VARCHAR2(1);
62833 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
62834 l_log_module                  VARCHAR2(240);
62835 
62836 --
62837 -- Upgrade strategy
62838 --
62839 l_actual_upg_option           VARCHAR2(1);
62840 l_enc_upg_option           VARCHAR2(1);
62841 
62842 --
62843 BEGIN
62844 --
62845 IF g_log_enabled THEN
62846       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_146';
62847 END IF;
62848 --
62849 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62850 
62851       trace
62852          (p_msg      => 'BEGIN of AcctLineType_146'
62853          ,p_level    => C_LEVEL_PROCEDURE
62854          ,p_module   => l_log_module);
62855 
62856 END IF;
62857 --
62858 l_component_type             := 'AMB_JLT';
62859 l_component_code             := 'INV';
62860 l_component_type_code        := 'S';
62861 l_component_appl_id          :=  555;
62862 l_amb_context_code           := 'DEFAULT';
62866 l_line_definition_owner_code := 'S';
62863 l_entity_code                := 'REVALUATION';
62864 l_event_class_code           := 'COSTREVAL';
62865 l_event_type_code            := 'COSTREVAL';
62867 l_line_definition_code       := 'COSTREVAL';
62868 --
62869 l_balance_type_code          := 'A';
62870 l_segment                     := NULL;
62871 l_ccid                        := NULL;
62872 l_adr_transaction_coa_id      := NULL;
62873 l_adr_accounting_coa_id       := NULL;
62874 l_adr_flexfield_segment_code  := NULL;
62875 l_adr_flex_value_set_id       := NULL;
62876 l_adr_value_type_code         := NULL;
62877 l_adr_value_combination_id    := NULL;
62878 l_adr_value_segment_code      := NULL;
62879 
62880 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
62881 l_bflow_class_code           := '';    -- 4219869 Business Flow
62882 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
62883 l_budgetary_control_flag     := 'N';
62884 
62885 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
62886 l_bflow_applied_to_amt       := NULL; -- 5132302
62887 l_entered_amt_idx            := NULL;          -- 4262811
62888 l_accted_amt_idx             := NULL;          -- 4262811
62889 l_acc_rev_flag               := NULL;          -- 4262811
62890 l_accrual_line_num           := NULL;          -- 4262811
62891 l_tmp_amt                    := NULL;          -- 4262811
62892 --
62893  
62894 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
62895     l_balance_type_code <> 'B' THEN
62896 IF NVL(p_source_2,'
62897 ') =  'INV'
62898  THEN 
62899 
62900    --
62901    XLA_AE_LINES_PKG.SetNewLine;
62902 
62903    p_balance_type_code          := l_balance_type_code;
62904    -- set the flag so later we will know whether the gain loss line needs to be created
62905    
62906    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
62907      p_actual_flag :='A';
62908    END IF;
62909 
62910    --
62911    -- bulk performance
62912    --
62913    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
62914                                       p_header_num   => 0); -- 4262811
62915    --
62916    -- set accounting line options
62917    --
62918    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
62919            p_natural_side_code          => 'D'
62920          , p_gain_or_loss_flag          => 'N'
62921          , p_gl_transfer_mode_code      => 'D'
62922          , p_acct_entry_type_code       => 'A'
62923          , p_switch_side_flag           => 'Y'
62924          , p_merge_duplicate_code       => 'W'
62925          );
62926    --
62927    l_acc_rev_natural_side_code := 'C';  -- 4262811
62928    -- 
62929    --
62930    -- set accounting line type info
62931    --
62932    xla_ae_lines_pkg.SetAcctLineType
62933       (p_component_type             => l_component_type
62934       ,p_event_type_code            => l_event_type_code
62935       ,p_line_definition_owner_code => l_line_definition_owner_code
62936       ,p_line_definition_code       => l_line_definition_code
62937       ,p_accounting_line_code       => l_component_code
62938       ,p_accounting_line_type_code  => l_component_type_code
62939       ,p_accounting_line_appl_id    => l_component_appl_id
62940       ,p_amb_context_code           => l_amb_context_code
62941       ,p_entity_code                => l_entity_code
62942       ,p_event_class_code           => l_event_class_code);
62943    --
62944    -- set accounting class
62945    --
62946    xla_ae_lines_pkg.SetAcctClass(
62947            p_accounting_class_code  => 'INVENTORY_VALUATION'
62948          , p_ae_header_id           => l_ae_header_id
62949          );
62950 
62951    --
62952    -- set rounding class
62953    --
62954    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
62955                       'INVENTORY_VALUATION';
62956 
62957    --
62958    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
62959    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
62960    --
62961    -- bulk performance
62962    --
62963    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
62964 
62965    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
62966       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
62967 
62968    -- 4955764
62969    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62970       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
62971 
62972    -- 4458381 Public Sector Enh
62973    
62974    --
62975    -- set accounting attributes for the line type
62976    --
62977    l_entered_amt_idx := 3;
62978    l_accted_amt_idx  := 8;
62979    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
62980    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
62981    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
62982    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
62983    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
62984    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
62985    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
62989    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
62986    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
62987    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
62988    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
62990    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
62991    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
62992    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
62993    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
62994    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
62995    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
62996 
62997    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
62998    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
62999 
63000    ---------------------------------------------------------------------------------------------------------------
63001    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
63002    ---------------------------------------------------------------------------------------------------------------
63003    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
63004 
63005    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63006    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63007 
63008    IF xla_accounting_cache_pkg.GetValueChar
63009          (p_source_code         => 'LEDGER_CATEGORY_CODE'
63010          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
63011    AND l_bflow_method_code = 'PRIOR_ENTRY'
63012 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
63013    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
63014          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
63015        )
63016    THEN
63017          xla_ae_lines_pkg.BflowUpgEntry
63018            (p_business_method_code    => l_bflow_method_code
63019            ,p_business_class_code     => l_bflow_class_code
63020            ,p_balance_type            => l_balance_type_code);
63021    ELSE
63022       NULL;
63023 -- No business flow processing for business flow method of NONE.
63024    END IF;
63025 
63026    --
63027    -- call analytical criteria
63028    --
63029    
63030    --
63031    -- call description
63032    --
63033    -- No description or it is inherited.
63034    --
63035    -- call ADRs
63036    -- Bug 4922099
63037    --
63038    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63039         (NVL(l_actual_upg_option, 'N') = 'O') OR
63040         (NVL(l_enc_upg_option, 'N') = 'O')
63041       )
63042    THEN
63043    NULL;
63044    --
63045    --
63046    
63047   l_ccid := AcctDerRule_17(
63048            p_application_id           => p_application_id
63049          , p_ae_header_id             => l_ae_header_id 
63050 , p_source_1 => p_source_1
63051 , p_source_2 => p_source_2
63052          , x_transaction_coa_id       => l_adr_transaction_coa_id
63053          , x_accounting_coa_id        => l_adr_accounting_coa_id
63054          , x_value_type_code          => l_adr_value_type_code
63055          , p_side                     => 'NA'
63056    );
63057 
63058    xla_ae_lines_pkg.set_ccid(
63059     p_code_combination_id          => l_ccid
63060   , p_value_type_code              => l_adr_value_type_code
63061   , p_transaction_coa_id           => l_adr_transaction_coa_id
63062   , p_accounting_coa_id            => l_adr_accounting_coa_id
63063   , p_adr_code                     => 'INV'
63064   , p_adr_type_code                => 'S'
63065   , p_component_type               => l_component_type
63066   , p_component_code               => l_component_code
63067   , p_component_type_code          => l_component_type_code
63068   , p_component_appl_id            => l_component_appl_id
63069   , p_amb_context_code             => l_amb_context_code
63070   , p_side                         => 'NA'
63071   );
63072 
63073 
63074    --
63075    --
63076    END IF;
63077    --
63078    -- Bug 4922099
63079    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
63080           (NVL(l_enc_upg_option, 'N') = 'O')
63081         ) AND
63082         (l_bflow_method_code = 'PRIOR_ENTRY')
63083       )
63084    THEN
63085       IF
63086       --
63087       1 = 2
63088       --
63089       THEN
63090       xla_accounting_err_pkg.build_message
63091                                     (p_appli_s_name            => 'XLA'
63092                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63093                                     ,p_token_1                 => 'LINE_NUMBER'
63094                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
63095                                     ,p_token_2                 => 'LINE_TYPE_NAME'
63096                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
63097                                                                              l_component_type
63098                                                                             ,l_component_code
63099                                                                             ,l_component_type_code
63100                                                                             ,l_component_appl_id
63104                                                                            )
63101                                                                             ,l_amb_context_code
63102                                                                             ,l_entity_code
63103                                                                             ,l_event_class_code
63105                                     ,p_token_3                 => 'OWNER'
63106                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
63107                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
63108                                                                           ,p_lookup_code    => l_component_type_code
63109                                                                          )
63110                                     ,p_token_4                 => 'PRODUCT_NAME'
63111                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
63112                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
63113                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
63114                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
63115                                     ,p_ae_header_id            =>  NULL
63116                                        );
63117 
63118         IF (C_LEVEL_ERROR>= g_log_level) THEN
63119                  trace
63120                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63121                       ,p_level    => C_LEVEL_ERROR
63122                       ,p_module   => l_log_module);
63123         END IF;
63124       END IF;
63125    END IF;
63126    --
63127    --
63128    ------------------------------------------------------------------------------------------------
63129    -- 4219869 Business Flow
63130    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
63131    -- Prior Entry.  Currently, the following code is always generated.
63132    ------------------------------------------------------------------------------------------------
63133    XLA_AE_LINES_PKG.ValidateCurrentLine;
63134 
63135    ------------------------------------------------------------------------------------
63136    -- 4219869 Business Flow
63137    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
63138    ------------------------------------------------------------------------------------
63139    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63140 
63141    ----------------------------------------------------------------------------------
63142    -- 4219869 Business Flow
63143    -- Update journal entry status -- Need to generate this within IF <condition>
63144    ----------------------------------------------------------------------------------
63145    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63146          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
63147          ,p_balance_type_code => l_balance_type_code
63148          );
63149 
63150    -------------------------------------------------------------------------------------------
63151    -- 4262811 - Generate the Accrual Reversal lines
63152    -------------------------------------------------------------------------------------------
63153    BEGIN
63154       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
63155                               (g_array_event(p_event_id).array_value_num('header_index'));
63156       IF l_acc_rev_flag IS NULL THEN
63157          l_acc_rev_flag := 'N';
63158       END IF;
63159    EXCEPTION
63160       WHEN OTHERS THEN
63161          l_acc_rev_flag := 'N';
63162    END;
63163    --
63164    IF (l_acc_rev_flag = 'Y') THEN
63165 
63166        -- 4645092  ------------------------------------------------------------------------------
63167        -- To allow MPA report to determine if it should generate report process
63168        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
63169        ------------------------------------------------------------------------------------------
63170 
63171        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
63172        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
63173    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
63174    -- call ADRs
63175    -- Bug 4922099
63176    --
63177    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63178         (NVL(l_actual_upg_option, 'N') = 'O') OR
63179         (NVL(l_enc_upg_option, 'N') = 'O')
63180       )
63181    THEN
63182    NULL;
63183    --
63184    --
63185    
63186   l_ccid := AcctDerRule_17(
63187            p_application_id           => p_application_id
63188          , p_ae_header_id             => l_ae_header_id 
63189 , p_source_1 => p_source_1
63190 , p_source_2 => p_source_2
63191          , x_transaction_coa_id       => l_adr_transaction_coa_id
63192          , x_accounting_coa_id        => l_adr_accounting_coa_id
63193          , x_value_type_code          => l_adr_value_type_code
63194          , p_side                     => 'NA'
63195    );
63196 
63197    xla_ae_lines_pkg.set_ccid(
63198     p_code_combination_id          => l_ccid
63199   , p_value_type_code              => l_adr_value_type_code
63200   , p_transaction_coa_id           => l_adr_transaction_coa_id
63204   , p_component_type               => l_component_type
63201   , p_accounting_coa_id            => l_adr_accounting_coa_id
63202   , p_adr_code                     => 'INV'
63203   , p_adr_type_code                => 'S'
63205   , p_component_code               => l_component_code
63206   , p_component_type_code          => l_component_type_code
63207   , p_component_appl_id            => l_component_appl_id
63208   , p_amb_context_code             => l_amb_context_code
63209   , p_side                         => 'NA'
63210   );
63211 
63212 
63213    --
63214    --
63215    END IF;
63216 
63217        --
63218        -- Update the line information that should be overwritten
63219        --
63220        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
63221                                          p_header_num   => 1);
63222        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
63223 
63224        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
63225 
63226        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
63227           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
63228        END IF;
63229 
63230       --
63231       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
63232       --
63233       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
63234           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
63235       ELSE
63236           ---------------------------------------------------------------------------------------------------
63237           -- 4262811a Switch Sign
63238           ---------------------------------------------------------------------------------------------------
63239           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
63240           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63241                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63242           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63243                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63244           -- 5132302
63245           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
63246                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63247 
63248       END IF;
63249 
63250       -- 4955764
63251       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63252       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
63253 
63254 
63255       XLA_AE_LINES_PKG.ValidateCurrentLine;
63256       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63257 
63258       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63259                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
63260                ,p_balance_type_code => l_balance_type_code);
63261 
63262    END IF;
63263 
63264    -----------------------------------------------------------------------------------------
63265    -- 4262811 Multiperiod Accounting
63266    -----------------------------------------------------------------------------------------
63267      -- No MPA option is assigned.
63268 
63269 
63270 END IF;
63271 END IF;
63272 --
63273 
63274 --
63275 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63276    trace
63277       (p_msg      => 'END of AcctLineType_146'
63278       ,p_level    => C_LEVEL_PROCEDURE
63279       ,p_module   => l_log_module);
63280 END IF;
63281 --
63282 EXCEPTION
63283   WHEN xla_exceptions_pkg.application_exception THEN
63284       RAISE;
63285   WHEN OTHERS THEN
63286        xla_exceptions_pkg.raise_message
63287            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_146');
63288 END AcctLineType_146;
63289 --
63290 
63291 ---------------------------------------
63292 --
63293 -- PRIVATE FUNCTION
63294 --         AcctLineType_147
63295 --
63296 ---------------------------------------
63297 PROCEDURE AcctLineType_147 (
63298   p_application_id        IN NUMBER
63299  ,p_event_id              IN NUMBER
63300  ,p_calculate_acctd_flag  IN VARCHAR2
63301  ,p_calculate_g_l_flag    IN VARCHAR2
63302  ,p_actual_flag           IN OUT VARCHAR2
63303  ,p_balance_type_code     OUT VARCHAR2
63304  ,p_gain_or_loss_ref      OUT VARCHAR2
63305  
63306 --Transaction Account
63307  , p_source_1            IN NUMBER
63308 --Journal Line Type
63309  , p_source_2            IN VARCHAR2
63310 --Entered Amount
63311  , p_source_3            IN NUMBER
63312 --First Distribution Identifier
63313  , p_source_5            IN NUMBER
63314 --Distribution Type
63315  , p_source_6            IN VARCHAR2
63316 --Currency Code
63317  , p_source_7            IN VARCHAR2
63318 --Currency Conversion Date
63319  , p_source_8            IN DATE
63320 --Currency Conversion Rate
63321  , p_source_9            IN NUMBER
63322 --Currency Conversion Type
63323  , p_source_10            IN VARCHAR2
63324 --Accounted Amount
63328 
63325  , p_source_11            IN NUMBER
63326 )
63327 IS
63329 l_component_type              VARCHAR2(80);
63330 l_component_code              VARCHAR2(30);
63331 l_component_type_code         VARCHAR2(1);
63332 l_component_appl_id           INTEGER;
63333 l_amb_context_code            VARCHAR2(30);
63334 l_entity_code                 VARCHAR2(30);
63335 l_event_class_code            VARCHAR2(30);
63336 l_ae_header_id                NUMBER;
63337 l_event_type_code             VARCHAR2(30);
63338 l_line_definition_code        VARCHAR2(30);
63339 l_line_definition_owner_code  VARCHAR2(1);
63340 --
63341 -- adr variables
63342 l_segment                     VARCHAR2(30);
63343 l_ccid                        NUMBER;
63344 l_adr_transaction_coa_id      NUMBER;
63345 l_adr_accounting_coa_id       NUMBER;
63346 l_adr_flexfield_segment_code  VARCHAR2(30);
63347 l_adr_flex_value_set_id       NUMBER;
63348 l_adr_value_type_code         VARCHAR2(30);
63349 l_adr_value_combination_id    NUMBER;
63350 l_adr_value_segment_code      VARCHAR2(30);
63351 
63352 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
63353 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
63354 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
63355 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
63356 
63357 -- 4262811 Variables ------------------------------------------------------------------------------------------
63358 l_entered_amt_idx             NUMBER;
63359 l_accted_amt_idx              NUMBER;
63360 l_acc_rev_flag                VARCHAR2(1);
63361 l_accrual_line_num            NUMBER;
63362 l_tmp_amt                     NUMBER;
63363 l_acc_rev_natural_side_code   VARCHAR2(1);
63364 
63365 l_num_entries                 NUMBER;
63366 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
63367 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
63368 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
63369 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
63370 l_recog_line_1                NUMBER;
63371 l_recog_line_2                NUMBER;
63372 
63373 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
63374 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
63375 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
63376 
63377 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
63378 
63379 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
63380 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
63381 
63382 ---------------------------------------------------------------------------------------------------------------
63383 
63384 
63385 --
63386 -- bulk performance
63387 --
63388 l_balance_type_code           VARCHAR2(1);
63389 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
63390 l_log_module                  VARCHAR2(240);
63391 
63392 --
63393 -- Upgrade strategy
63394 --
63395 l_actual_upg_option           VARCHAR2(1);
63396 l_enc_upg_option           VARCHAR2(1);
63397 
63398 --
63399 BEGIN
63400 --
63401 IF g_log_enabled THEN
63402       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_147';
63403 END IF;
63404 --
63405 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63406 
63407       trace
63408          (p_msg      => 'BEGIN of AcctLineType_147'
63409          ,p_level    => C_LEVEL_PROCEDURE
63410          ,p_module   => l_log_module);
63411 
63412 END IF;
63413 --
63414 l_component_type             := 'AMB_JLT';
63415 l_component_code             := 'INV';
63416 l_component_type_code        := 'S';
63417 l_component_appl_id          :=  555;
63418 l_amb_context_code           := 'DEFAULT';
63419 l_entity_code                := 'INVENTORY';
63420 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
63421 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
63422 l_line_definition_owner_code := 'S';
63423 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
63424 --
63425 l_balance_type_code          := 'A';
63426 l_segment                     := NULL;
63427 l_ccid                        := NULL;
63428 l_adr_transaction_coa_id      := NULL;
63429 l_adr_accounting_coa_id       := NULL;
63430 l_adr_flexfield_segment_code  := NULL;
63431 l_adr_flex_value_set_id       := NULL;
63432 l_adr_value_type_code         := NULL;
63433 l_adr_value_combination_id    := NULL;
63434 l_adr_value_segment_code      := NULL;
63435 
63436 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
63437 l_bflow_class_code           := '';    -- 4219869 Business Flow
63438 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
63439 l_budgetary_control_flag     := 'N';
63440 
63441 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
63442 l_bflow_applied_to_amt       := NULL; -- 5132302
63443 l_entered_amt_idx            := NULL;          -- 4262811
63444 l_accted_amt_idx             := NULL;          -- 4262811
63445 l_acc_rev_flag               := NULL;          -- 4262811
63446 l_accrual_line_num           := NULL;          -- 4262811
63447 l_tmp_amt                    := NULL;          -- 4262811
63448 --
63449  
63453 ') =  'INV'
63450 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
63451     l_balance_type_code <> 'B' THEN
63452 IF NVL(p_source_2,'
63454  THEN 
63455 
63456    --
63457    XLA_AE_LINES_PKG.SetNewLine;
63458 
63459    p_balance_type_code          := l_balance_type_code;
63460    -- set the flag so later we will know whether the gain loss line needs to be created
63461    
63462    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
63463      p_actual_flag :='A';
63464    END IF;
63465 
63466    --
63467    -- bulk performance
63468    --
63469    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
63470                                       p_header_num   => 0); -- 4262811
63471    --
63472    -- set accounting line options
63473    --
63474    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
63475            p_natural_side_code          => 'D'
63476          , p_gain_or_loss_flag          => 'N'
63477          , p_gl_transfer_mode_code      => 'D'
63478          , p_acct_entry_type_code       => 'A'
63479          , p_switch_side_flag           => 'Y'
63480          , p_merge_duplicate_code       => 'W'
63481          );
63482    --
63483    l_acc_rev_natural_side_code := 'C';  -- 4262811
63484    -- 
63485    --
63486    -- set accounting line type info
63487    --
63488    xla_ae_lines_pkg.SetAcctLineType
63489       (p_component_type             => l_component_type
63490       ,p_event_type_code            => l_event_type_code
63491       ,p_line_definition_owner_code => l_line_definition_owner_code
63492       ,p_line_definition_code       => l_line_definition_code
63493       ,p_accounting_line_code       => l_component_code
63494       ,p_accounting_line_type_code  => l_component_type_code
63495       ,p_accounting_line_appl_id    => l_component_appl_id
63496       ,p_amb_context_code           => l_amb_context_code
63497       ,p_entity_code                => l_entity_code
63498       ,p_event_class_code           => l_event_class_code);
63499    --
63500    -- set accounting class
63501    --
63502    xla_ae_lines_pkg.SetAcctClass(
63503            p_accounting_class_code  => 'INVENTORY_VALUATION'
63504          , p_ae_header_id           => l_ae_header_id
63505          );
63506 
63507    --
63508    -- set rounding class
63509    --
63510    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
63511                       'INVENTORY_VALUATION';
63512 
63513    --
63514    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
63515    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
63516    --
63517    -- bulk performance
63518    --
63519    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
63520 
63521    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
63522       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
63523 
63524    -- 4955764
63525    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63526       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
63527 
63528    -- 4458381 Public Sector Enh
63529    
63530    --
63531    -- set accounting attributes for the line type
63532    --
63533    l_entered_amt_idx := 3;
63534    l_accted_amt_idx  := 8;
63535    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
63536    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
63537    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
63538    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
63539    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
63540    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
63541    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
63542    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
63543    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
63544    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
63545    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
63546    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
63547    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
63548    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
63549    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
63550    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
63551    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
63552 
63553    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
63554    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
63555 
63556    ---------------------------------------------------------------------------------------------------------------
63557    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
63558    ---------------------------------------------------------------------------------------------------------------
63559    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
63560 
63561    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63562    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63563 
63564    IF xla_accounting_cache_pkg.GetValueChar
63568 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
63565          (p_source_code         => 'LEDGER_CATEGORY_CODE'
63566          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
63567    AND l_bflow_method_code = 'PRIOR_ENTRY'
63569    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
63570          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
63571        )
63572    THEN
63573          xla_ae_lines_pkg.BflowUpgEntry
63574            (p_business_method_code    => l_bflow_method_code
63575            ,p_business_class_code     => l_bflow_class_code
63576            ,p_balance_type            => l_balance_type_code);
63577    ELSE
63578       NULL;
63579 -- No business flow processing for business flow method of NONE.
63580    END IF;
63581 
63582    --
63583    -- call analytical criteria
63584    --
63585    
63586    --
63587    -- call description
63588    --
63589    -- No description or it is inherited.
63590    --
63591    -- call ADRs
63592    -- Bug 4922099
63593    --
63594    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63595         (NVL(l_actual_upg_option, 'N') = 'O') OR
63596         (NVL(l_enc_upg_option, 'N') = 'O')
63597       )
63598    THEN
63599    NULL;
63600    --
63601    --
63602    
63603   l_ccid := AcctDerRule_17(
63604            p_application_id           => p_application_id
63605          , p_ae_header_id             => l_ae_header_id 
63606 , p_source_1 => p_source_1
63607 , p_source_2 => p_source_2
63608          , x_transaction_coa_id       => l_adr_transaction_coa_id
63609          , x_accounting_coa_id        => l_adr_accounting_coa_id
63610          , x_value_type_code          => l_adr_value_type_code
63611          , p_side                     => 'NA'
63612    );
63613 
63614    xla_ae_lines_pkg.set_ccid(
63615     p_code_combination_id          => l_ccid
63616   , p_value_type_code              => l_adr_value_type_code
63617   , p_transaction_coa_id           => l_adr_transaction_coa_id
63618   , p_accounting_coa_id            => l_adr_accounting_coa_id
63619   , p_adr_code                     => 'INV'
63620   , p_adr_type_code                => 'S'
63621   , p_component_type               => l_component_type
63622   , p_component_code               => l_component_code
63623   , p_component_type_code          => l_component_type_code
63624   , p_component_appl_id            => l_component_appl_id
63625   , p_amb_context_code             => l_amb_context_code
63626   , p_side                         => 'NA'
63627   );
63628 
63629 
63630    --
63631    --
63632    END IF;
63633    --
63634    -- Bug 4922099
63635    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
63636           (NVL(l_enc_upg_option, 'N') = 'O')
63637         ) AND
63638         (l_bflow_method_code = 'PRIOR_ENTRY')
63639       )
63640    THEN
63641       IF
63642       --
63643       1 = 2
63644       --
63645       THEN
63646       xla_accounting_err_pkg.build_message
63647                                     (p_appli_s_name            => 'XLA'
63648                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63649                                     ,p_token_1                 => 'LINE_NUMBER'
63650                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
63651                                     ,p_token_2                 => 'LINE_TYPE_NAME'
63652                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
63653                                                                              l_component_type
63654                                                                             ,l_component_code
63655                                                                             ,l_component_type_code
63656                                                                             ,l_component_appl_id
63657                                                                             ,l_amb_context_code
63658                                                                             ,l_entity_code
63659                                                                             ,l_event_class_code
63660                                                                            )
63661                                     ,p_token_3                 => 'OWNER'
63662                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
63663                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
63664                                                                           ,p_lookup_code    => l_component_type_code
63665                                                                          )
63666                                     ,p_token_4                 => 'PRODUCT_NAME'
63667                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
63668                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
63669                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
63670                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
63671                                     ,p_ae_header_id            =>  NULL
63672                                        );
63673 
63674         IF (C_LEVEL_ERROR>= g_log_level) THEN
63675                  trace
63679         END IF;
63676                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63677                       ,p_level    => C_LEVEL_ERROR
63678                       ,p_module   => l_log_module);
63680       END IF;
63681    END IF;
63682    --
63683    --
63684    ------------------------------------------------------------------------------------------------
63685    -- 4219869 Business Flow
63686    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
63687    -- Prior Entry.  Currently, the following code is always generated.
63688    ------------------------------------------------------------------------------------------------
63689    XLA_AE_LINES_PKG.ValidateCurrentLine;
63690 
63691    ------------------------------------------------------------------------------------
63692    -- 4219869 Business Flow
63693    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
63694    ------------------------------------------------------------------------------------
63695    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63696 
63697    ----------------------------------------------------------------------------------
63698    -- 4219869 Business Flow
63699    -- Update journal entry status -- Need to generate this within IF <condition>
63700    ----------------------------------------------------------------------------------
63701    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63702          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
63703          ,p_balance_type_code => l_balance_type_code
63704          );
63705 
63706    -------------------------------------------------------------------------------------------
63707    -- 4262811 - Generate the Accrual Reversal lines
63708    -------------------------------------------------------------------------------------------
63709    BEGIN
63710       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
63711                               (g_array_event(p_event_id).array_value_num('header_index'));
63712       IF l_acc_rev_flag IS NULL THEN
63713          l_acc_rev_flag := 'N';
63714       END IF;
63715    EXCEPTION
63716       WHEN OTHERS THEN
63717          l_acc_rev_flag := 'N';
63718    END;
63719    --
63720    IF (l_acc_rev_flag = 'Y') THEN
63721 
63722        -- 4645092  ------------------------------------------------------------------------------
63723        -- To allow MPA report to determine if it should generate report process
63724        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
63725        ------------------------------------------------------------------------------------------
63726 
63727        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
63728        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
63729    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
63730    -- call ADRs
63731    -- Bug 4922099
63732    --
63733    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63734         (NVL(l_actual_upg_option, 'N') = 'O') OR
63735         (NVL(l_enc_upg_option, 'N') = 'O')
63736       )
63737    THEN
63738    NULL;
63739    --
63740    --
63741    
63742   l_ccid := AcctDerRule_17(
63743            p_application_id           => p_application_id
63744          , p_ae_header_id             => l_ae_header_id 
63745 , p_source_1 => p_source_1
63746 , p_source_2 => p_source_2
63747          , x_transaction_coa_id       => l_adr_transaction_coa_id
63748          , x_accounting_coa_id        => l_adr_accounting_coa_id
63749          , x_value_type_code          => l_adr_value_type_code
63750          , p_side                     => 'NA'
63751    );
63752 
63753    xla_ae_lines_pkg.set_ccid(
63754     p_code_combination_id          => l_ccid
63755   , p_value_type_code              => l_adr_value_type_code
63756   , p_transaction_coa_id           => l_adr_transaction_coa_id
63757   , p_accounting_coa_id            => l_adr_accounting_coa_id
63758   , p_adr_code                     => 'INV'
63759   , p_adr_type_code                => 'S'
63760   , p_component_type               => l_component_type
63761   , p_component_code               => l_component_code
63762   , p_component_type_code          => l_component_type_code
63763   , p_component_appl_id            => l_component_appl_id
63764   , p_amb_context_code             => l_amb_context_code
63765   , p_side                         => 'NA'
63766   );
63767 
63768 
63769    --
63770    --
63771    END IF;
63772 
63773        --
63774        -- Update the line information that should be overwritten
63775        --
63776        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
63777                                          p_header_num   => 1);
63778        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
63779 
63780        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
63781 
63782        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
63783           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
63784        END IF;
63785 
63786       --
63787       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
63788       --
63789       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
63793           -- 4262811a Switch Sign
63790           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
63791       ELSE
63792           ---------------------------------------------------------------------------------------------------
63794           ---------------------------------------------------------------------------------------------------
63795           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
63796           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63797                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63798           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63799                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63800           -- 5132302
63801           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
63802                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63803 
63804       END IF;
63805 
63806       -- 4955764
63807       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63808       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
63809 
63810 
63811       XLA_AE_LINES_PKG.ValidateCurrentLine;
63812       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63813 
63814       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63815                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
63816                ,p_balance_type_code => l_balance_type_code);
63817 
63818    END IF;
63819 
63820    -----------------------------------------------------------------------------------------
63821    -- 4262811 Multiperiod Accounting
63822    -----------------------------------------------------------------------------------------
63823      -- No MPA option is assigned.
63824 
63825 
63826 END IF;
63827 END IF;
63828 --
63829 
63830 --
63831 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63832    trace
63833       (p_msg      => 'END of AcctLineType_147'
63834       ,p_level    => C_LEVEL_PROCEDURE
63835       ,p_module   => l_log_module);
63836 END IF;
63837 --
63838 EXCEPTION
63839   WHEN xla_exceptions_pkg.application_exception THEN
63840       RAISE;
63841   WHEN OTHERS THEN
63842        xla_exceptions_pkg.raise_message
63843            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_147');
63844 END AcctLineType_147;
63845 --
63846 
63847 ---------------------------------------
63848 --
63849 -- PRIVATE FUNCTION
63850 --         AcctLineType_148
63851 --
63852 ---------------------------------------
63853 PROCEDURE AcctLineType_148 (
63854   p_application_id        IN NUMBER
63855  ,p_event_id              IN NUMBER
63856  ,p_calculate_acctd_flag  IN VARCHAR2
63857  ,p_calculate_g_l_flag    IN VARCHAR2
63858  ,p_actual_flag           IN OUT VARCHAR2
63859  ,p_balance_type_code     OUT VARCHAR2
63860  ,p_gain_or_loss_ref      OUT VARCHAR2
63861  
63862 --Transaction Account
63863  , p_source_1            IN NUMBER
63864 --Journal Line Type
63865  , p_source_2            IN VARCHAR2
63866 --Entered Amount
63867  , p_source_3            IN NUMBER
63868 --First Distribution Identifier
63869  , p_source_5            IN NUMBER
63870 --Distribution Type
63871  , p_source_6            IN VARCHAR2
63872 --Currency Code
63873  , p_source_7            IN VARCHAR2
63874 --Currency Conversion Date
63875  , p_source_8            IN DATE
63876 --Currency Conversion Rate
63877  , p_source_9            IN NUMBER
63878 --Currency Conversion Type
63879  , p_source_10            IN VARCHAR2
63880 --Accounted Amount
63881  , p_source_11            IN NUMBER
63882 )
63883 IS
63884 
63885 l_component_type              VARCHAR2(80);
63886 l_component_code              VARCHAR2(30);
63887 l_component_type_code         VARCHAR2(1);
63888 l_component_appl_id           INTEGER;
63889 l_amb_context_code            VARCHAR2(30);
63890 l_entity_code                 VARCHAR2(30);
63891 l_event_class_code            VARCHAR2(30);
63892 l_ae_header_id                NUMBER;
63893 l_event_type_code             VARCHAR2(30);
63894 l_line_definition_code        VARCHAR2(30);
63895 l_line_definition_owner_code  VARCHAR2(1);
63896 --
63897 -- adr variables
63898 l_segment                     VARCHAR2(30);
63899 l_ccid                        NUMBER;
63900 l_adr_transaction_coa_id      NUMBER;
63901 l_adr_accounting_coa_id       NUMBER;
63902 l_adr_flexfield_segment_code  VARCHAR2(30);
63903 l_adr_flex_value_set_id       NUMBER;
63904 l_adr_value_type_code         VARCHAR2(30);
63905 l_adr_value_combination_id    NUMBER;
63906 l_adr_value_segment_code      VARCHAR2(30);
63907 
63908 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
63909 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
63910 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
63911 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
63912 
63913 -- 4262811 Variables ------------------------------------------------------------------------------------------
63914 l_entered_amt_idx             NUMBER;
63918 l_tmp_amt                     NUMBER;
63915 l_accted_amt_idx              NUMBER;
63916 l_acc_rev_flag                VARCHAR2(1);
63917 l_accrual_line_num            NUMBER;
63919 l_acc_rev_natural_side_code   VARCHAR2(1);
63920 
63921 l_num_entries                 NUMBER;
63922 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
63923 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
63924 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
63925 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
63926 l_recog_line_1                NUMBER;
63927 l_recog_line_2                NUMBER;
63928 
63929 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
63930 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
63931 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
63932 
63933 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
63934 
63935 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
63936 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
63937 
63938 ---------------------------------------------------------------------------------------------------------------
63939 
63940 
63941 --
63942 -- bulk performance
63943 --
63944 l_balance_type_code           VARCHAR2(1);
63945 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
63946 l_log_module                  VARCHAR2(240);
63947 
63948 --
63949 -- Upgrade strategy
63950 --
63951 l_actual_upg_option           VARCHAR2(1);
63952 l_enc_upg_option           VARCHAR2(1);
63953 
63954 --
63955 BEGIN
63956 --
63957 IF g_log_enabled THEN
63958       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_148';
63959 END IF;
63960 --
63961 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63962 
63963       trace
63964          (p_msg      => 'BEGIN of AcctLineType_148'
63965          ,p_level    => C_LEVEL_PROCEDURE
63966          ,p_module   => l_log_module);
63967 
63968 END IF;
63969 --
63970 l_component_type             := 'AMB_JLT';
63971 l_component_code             := 'INV';
63972 l_component_type_code        := 'S';
63973 l_component_appl_id          :=  555;
63974 l_amb_context_code           := 'DEFAULT';
63975 l_entity_code                := 'PURCHASING';
63976 l_event_class_code           := 'PAYABLES_INVOICE';
63977 l_event_type_code            := 'INVOICE_IPV_ADJ';
63978 l_line_definition_owner_code := 'S';
63979 l_line_definition_code       := 'INVOICE_IPV_ADJ';
63980 --
63981 l_balance_type_code          := 'A';
63982 l_segment                     := NULL;
63983 l_ccid                        := NULL;
63984 l_adr_transaction_coa_id      := NULL;
63985 l_adr_accounting_coa_id       := NULL;
63986 l_adr_flexfield_segment_code  := NULL;
63987 l_adr_flex_value_set_id       := NULL;
63988 l_adr_value_type_code         := NULL;
63989 l_adr_value_combination_id    := NULL;
63990 l_adr_value_segment_code      := NULL;
63991 
63992 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
63993 l_bflow_class_code           := '';    -- 4219869 Business Flow
63994 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
63995 l_budgetary_control_flag     := 'N';
63996 
63997 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
63998 l_bflow_applied_to_amt       := NULL; -- 5132302
63999 l_entered_amt_idx            := NULL;          -- 4262811
64000 l_accted_amt_idx             := NULL;          -- 4262811
64001 l_acc_rev_flag               := NULL;          -- 4262811
64002 l_accrual_line_num           := NULL;          -- 4262811
64003 l_tmp_amt                    := NULL;          -- 4262811
64004 --
64005  
64006 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
64007     l_balance_type_code <> 'B' THEN
64008 IF NVL(p_source_2,'
64009 ') =  'INV'
64010  THEN 
64011 
64012    --
64013    XLA_AE_LINES_PKG.SetNewLine;
64014 
64015    p_balance_type_code          := l_balance_type_code;
64016    -- set the flag so later we will know whether the gain loss line needs to be created
64017    
64018    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
64019      p_actual_flag :='A';
64020    END IF;
64021 
64022    --
64023    -- bulk performance
64024    --
64025    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
64026                                       p_header_num   => 0); -- 4262811
64027    --
64028    -- set accounting line options
64029    --
64030    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
64031            p_natural_side_code          => 'D'
64032          , p_gain_or_loss_flag          => 'N'
64033          , p_gl_transfer_mode_code      => 'D'
64034          , p_acct_entry_type_code       => 'A'
64035          , p_switch_side_flag           => 'Y'
64036          , p_merge_duplicate_code       => 'W'
64037          );
64038    --
64039    l_acc_rev_natural_side_code := 'C';  -- 4262811
64040    -- 
64041    --
64042    -- set accounting line type info
64043    --
64044    xla_ae_lines_pkg.SetAcctLineType
64045       (p_component_type             => l_component_type
64046       ,p_event_type_code            => l_event_type_code
64047       ,p_line_definition_owner_code => l_line_definition_owner_code
64051       ,p_accounting_line_appl_id    => l_component_appl_id
64048       ,p_line_definition_code       => l_line_definition_code
64049       ,p_accounting_line_code       => l_component_code
64050       ,p_accounting_line_type_code  => l_component_type_code
64052       ,p_amb_context_code           => l_amb_context_code
64053       ,p_entity_code                => l_entity_code
64054       ,p_event_class_code           => l_event_class_code);
64055    --
64056    -- set accounting class
64057    --
64058    xla_ae_lines_pkg.SetAcctClass(
64059            p_accounting_class_code  => 'INVENTORY_VALUATION'
64060          , p_ae_header_id           => l_ae_header_id
64061          );
64062 
64063    --
64064    -- set rounding class
64065    --
64066    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
64067                       'INVENTORY_VALUATION';
64068 
64069    --
64070    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
64071    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
64072    --
64073    -- bulk performance
64074    --
64075    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
64076 
64077    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
64078       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
64079 
64080    -- 4955764
64081    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64082       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
64083 
64084    -- 4458381 Public Sector Enh
64085    
64086    --
64087    -- set accounting attributes for the line type
64088    --
64089    l_entered_amt_idx := 3;
64090    l_accted_amt_idx  := 8;
64091    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
64092    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
64093    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
64094    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
64095    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
64096    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
64097    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
64098    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
64099    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
64100    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
64101    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
64102    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
64103    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
64104    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
64105    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
64106    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
64107    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
64108 
64109    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
64110    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
64111 
64112    ---------------------------------------------------------------------------------------------------------------
64113    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
64114    ---------------------------------------------------------------------------------------------------------------
64115    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
64116 
64117    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64118    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64119 
64120    IF xla_accounting_cache_pkg.GetValueChar
64121          (p_source_code         => 'LEDGER_CATEGORY_CODE'
64122          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
64123    AND l_bflow_method_code = 'PRIOR_ENTRY'
64124 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
64125    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
64126          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
64127        )
64128    THEN
64129          xla_ae_lines_pkg.BflowUpgEntry
64130            (p_business_method_code    => l_bflow_method_code
64131            ,p_business_class_code     => l_bflow_class_code
64132            ,p_balance_type            => l_balance_type_code);
64133    ELSE
64134       NULL;
64135 -- No business flow processing for business flow method of NONE.
64136    END IF;
64137 
64138    --
64139    -- call analytical criteria
64140    --
64141    
64142    --
64143    -- call description
64144    --
64145    -- No description or it is inherited.
64146    --
64147    -- call ADRs
64148    -- Bug 4922099
64149    --
64150    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64151         (NVL(l_actual_upg_option, 'N') = 'O') OR
64152         (NVL(l_enc_upg_option, 'N') = 'O')
64153       )
64154    THEN
64155    NULL;
64156    --
64157    --
64158    
64159   l_ccid := AcctDerRule_17(
64160            p_application_id           => p_application_id
64161          , p_ae_header_id             => l_ae_header_id 
64162 , p_source_1 => p_source_1
64163 , p_source_2 => p_source_2
64164          , x_transaction_coa_id       => l_adr_transaction_coa_id
64168    );
64165          , x_accounting_coa_id        => l_adr_accounting_coa_id
64166          , x_value_type_code          => l_adr_value_type_code
64167          , p_side                     => 'NA'
64169 
64170    xla_ae_lines_pkg.set_ccid(
64171     p_code_combination_id          => l_ccid
64172   , p_value_type_code              => l_adr_value_type_code
64173   , p_transaction_coa_id           => l_adr_transaction_coa_id
64174   , p_accounting_coa_id            => l_adr_accounting_coa_id
64175   , p_adr_code                     => 'INV'
64176   , p_adr_type_code                => 'S'
64177   , p_component_type               => l_component_type
64178   , p_component_code               => l_component_code
64179   , p_component_type_code          => l_component_type_code
64180   , p_component_appl_id            => l_component_appl_id
64181   , p_amb_context_code             => l_amb_context_code
64182   , p_side                         => 'NA'
64183   );
64184 
64185 
64186    --
64187    --
64188    END IF;
64189    --
64190    -- Bug 4922099
64191    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
64192           (NVL(l_enc_upg_option, 'N') = 'O')
64193         ) AND
64194         (l_bflow_method_code = 'PRIOR_ENTRY')
64195       )
64196    THEN
64197       IF
64198       --
64199       1 = 2
64200       --
64201       THEN
64202       xla_accounting_err_pkg.build_message
64203                                     (p_appli_s_name            => 'XLA'
64204                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64205                                     ,p_token_1                 => 'LINE_NUMBER'
64206                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
64207                                     ,p_token_2                 => 'LINE_TYPE_NAME'
64208                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
64209                                                                              l_component_type
64210                                                                             ,l_component_code
64211                                                                             ,l_component_type_code
64212                                                                             ,l_component_appl_id
64213                                                                             ,l_amb_context_code
64214                                                                             ,l_entity_code
64215                                                                             ,l_event_class_code
64216                                                                            )
64217                                     ,p_token_3                 => 'OWNER'
64218                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
64219                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
64220                                                                           ,p_lookup_code    => l_component_type_code
64221                                                                          )
64222                                     ,p_token_4                 => 'PRODUCT_NAME'
64223                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
64224                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
64225                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
64226                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
64227                                     ,p_ae_header_id            =>  NULL
64228                                        );
64229 
64230         IF (C_LEVEL_ERROR>= g_log_level) THEN
64231                  trace
64232                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64233                       ,p_level    => C_LEVEL_ERROR
64234                       ,p_module   => l_log_module);
64235         END IF;
64236       END IF;
64237    END IF;
64238    --
64239    --
64240    ------------------------------------------------------------------------------------------------
64241    -- 4219869 Business Flow
64242    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
64243    -- Prior Entry.  Currently, the following code is always generated.
64244    ------------------------------------------------------------------------------------------------
64245    XLA_AE_LINES_PKG.ValidateCurrentLine;
64246 
64247    ------------------------------------------------------------------------------------
64248    -- 4219869 Business Flow
64249    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
64250    ------------------------------------------------------------------------------------
64251    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64252 
64253    ----------------------------------------------------------------------------------
64254    -- 4219869 Business Flow
64255    -- Update journal entry status -- Need to generate this within IF <condition>
64256    ----------------------------------------------------------------------------------
64257    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64258          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
64259          ,p_balance_type_code => l_balance_type_code
64260          );
64261 
64265    BEGIN
64262    -------------------------------------------------------------------------------------------
64263    -- 4262811 - Generate the Accrual Reversal lines
64264    -------------------------------------------------------------------------------------------
64266       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
64267                               (g_array_event(p_event_id).array_value_num('header_index'));
64268       IF l_acc_rev_flag IS NULL THEN
64269          l_acc_rev_flag := 'N';
64270       END IF;
64271    EXCEPTION
64272       WHEN OTHERS THEN
64273          l_acc_rev_flag := 'N';
64274    END;
64275    --
64276    IF (l_acc_rev_flag = 'Y') THEN
64277 
64278        -- 4645092  ------------------------------------------------------------------------------
64279        -- To allow MPA report to determine if it should generate report process
64280        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
64281        ------------------------------------------------------------------------------------------
64282 
64283        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
64284        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
64285    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
64286    -- call ADRs
64287    -- Bug 4922099
64288    --
64289    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64290         (NVL(l_actual_upg_option, 'N') = 'O') OR
64291         (NVL(l_enc_upg_option, 'N') = 'O')
64292       )
64293    THEN
64294    NULL;
64295    --
64296    --
64297    
64298   l_ccid := AcctDerRule_17(
64299            p_application_id           => p_application_id
64300          , p_ae_header_id             => l_ae_header_id 
64301 , p_source_1 => p_source_1
64302 , p_source_2 => p_source_2
64303          , x_transaction_coa_id       => l_adr_transaction_coa_id
64304          , x_accounting_coa_id        => l_adr_accounting_coa_id
64305          , x_value_type_code          => l_adr_value_type_code
64306          , p_side                     => 'NA'
64307    );
64308 
64309    xla_ae_lines_pkg.set_ccid(
64310     p_code_combination_id          => l_ccid
64311   , p_value_type_code              => l_adr_value_type_code
64312   , p_transaction_coa_id           => l_adr_transaction_coa_id
64313   , p_accounting_coa_id            => l_adr_accounting_coa_id
64314   , p_adr_code                     => 'INV'
64315   , p_adr_type_code                => 'S'
64316   , p_component_type               => l_component_type
64317   , p_component_code               => l_component_code
64318   , p_component_type_code          => l_component_type_code
64319   , p_component_appl_id            => l_component_appl_id
64320   , p_amb_context_code             => l_amb_context_code
64321   , p_side                         => 'NA'
64322   );
64323 
64324 
64325    --
64326    --
64327    END IF;
64328 
64329        --
64330        -- Update the line information that should be overwritten
64331        --
64332        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
64333                                          p_header_num   => 1);
64334        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
64335 
64336        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
64337 
64338        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
64339           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
64340        END IF;
64341 
64342       --
64343       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
64344       --
64345       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
64346           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
64347       ELSE
64348           ---------------------------------------------------------------------------------------------------
64349           -- 4262811a Switch Sign
64350           ---------------------------------------------------------------------------------------------------
64351           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
64352           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64353                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64354           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64355                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64356           -- 5132302
64357           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
64358                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64359 
64360       END IF;
64361 
64362       -- 4955764
64363       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64364       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
64365 
64366 
64367       XLA_AE_LINES_PKG.ValidateCurrentLine;
64368       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64369 
64370       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64374    END IF;
64371                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
64372                ,p_balance_type_code => l_balance_type_code);
64373 
64375 
64376    -----------------------------------------------------------------------------------------
64377    -- 4262811 Multiperiod Accounting
64378    -----------------------------------------------------------------------------------------
64379      -- No MPA option is assigned.
64380 
64381 
64382 END IF;
64383 END IF;
64384 --
64385 
64386 --
64387 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64388    trace
64389       (p_msg      => 'END of AcctLineType_148'
64390       ,p_level    => C_LEVEL_PROCEDURE
64391       ,p_module   => l_log_module);
64392 END IF;
64393 --
64394 EXCEPTION
64395   WHEN xla_exceptions_pkg.application_exception THEN
64396       RAISE;
64397   WHEN OTHERS THEN
64398        xla_exceptions_pkg.raise_message
64399            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_148');
64400 END AcctLineType_148;
64401 --
64402 
64403 ---------------------------------------
64404 --
64405 -- PRIVATE FUNCTION
64406 --         AcctLineType_149
64407 --
64408 ---------------------------------------
64409 PROCEDURE AcctLineType_149 (
64410   p_application_id        IN NUMBER
64411  ,p_event_id              IN NUMBER
64412  ,p_calculate_acctd_flag  IN VARCHAR2
64413  ,p_calculate_g_l_flag    IN VARCHAR2
64414  ,p_actual_flag           IN OUT VARCHAR2
64415  ,p_balance_type_code     OUT VARCHAR2
64416  ,p_gain_or_loss_ref      OUT VARCHAR2
64417  
64418 --Transaction Account
64419  , p_source_1            IN NUMBER
64420 --Journal Line Type
64421  , p_source_2            IN VARCHAR2
64422 --Entered Amount
64423  , p_source_3            IN NUMBER
64424 --First Distribution Identifier
64425  , p_source_5            IN NUMBER
64426 --Distribution Type
64427  , p_source_6            IN VARCHAR2
64428 --Currency Code
64429  , p_source_7            IN VARCHAR2
64430 --Currency Conversion Date
64431  , p_source_8            IN DATE
64432 --Currency Conversion Rate
64433  , p_source_9            IN NUMBER
64434 --Currency Conversion Type
64435  , p_source_10            IN VARCHAR2
64436 --Accounted Amount
64437  , p_source_11            IN NUMBER
64438 )
64439 IS
64440 
64441 l_component_type              VARCHAR2(80);
64442 l_component_code              VARCHAR2(30);
64443 l_component_type_code         VARCHAR2(1);
64444 l_component_appl_id           INTEGER;
64445 l_amb_context_code            VARCHAR2(30);
64446 l_entity_code                 VARCHAR2(30);
64447 l_event_class_code            VARCHAR2(30);
64448 l_ae_header_id                NUMBER;
64449 l_event_type_code             VARCHAR2(30);
64450 l_line_definition_code        VARCHAR2(30);
64451 l_line_definition_owner_code  VARCHAR2(1);
64452 --
64453 -- adr variables
64454 l_segment                     VARCHAR2(30);
64455 l_ccid                        NUMBER;
64456 l_adr_transaction_coa_id      NUMBER;
64457 l_adr_accounting_coa_id       NUMBER;
64458 l_adr_flexfield_segment_code  VARCHAR2(30);
64459 l_adr_flex_value_set_id       NUMBER;
64460 l_adr_value_type_code         VARCHAR2(30);
64461 l_adr_value_combination_id    NUMBER;
64462 l_adr_value_segment_code      VARCHAR2(30);
64463 
64464 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
64465 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
64466 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
64467 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
64468 
64469 -- 4262811 Variables ------------------------------------------------------------------------------------------
64470 l_entered_amt_idx             NUMBER;
64471 l_accted_amt_idx              NUMBER;
64472 l_acc_rev_flag                VARCHAR2(1);
64473 l_accrual_line_num            NUMBER;
64474 l_tmp_amt                     NUMBER;
64475 l_acc_rev_natural_side_code   VARCHAR2(1);
64476 
64477 l_num_entries                 NUMBER;
64478 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
64479 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
64480 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
64481 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
64482 l_recog_line_1                NUMBER;
64483 l_recog_line_2                NUMBER;
64484 
64485 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
64486 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
64487 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
64488 
64489 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
64490 
64491 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
64492 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
64493 
64494 ---------------------------------------------------------------------------------------------------------------
64495 
64496 
64497 --
64498 -- bulk performance
64499 --
64500 l_balance_type_code           VARCHAR2(1);
64501 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
64502 l_log_module                  VARCHAR2(240);
64503 
64504 --
64508 l_enc_upg_option           VARCHAR2(1);
64505 -- Upgrade strategy
64506 --
64507 l_actual_upg_option           VARCHAR2(1);
64509 
64510 --
64511 BEGIN
64512 --
64513 IF g_log_enabled THEN
64514       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_149';
64515 END IF;
64516 --
64517 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64518 
64519       trace
64520          (p_msg      => 'BEGIN of AcctLineType_149'
64521          ,p_level    => C_LEVEL_PROCEDURE
64522          ,p_module   => l_log_module);
64523 
64524 END IF;
64525 --
64526 l_component_type             := 'AMB_JLT';
64527 l_component_code             := 'INV';
64528 l_component_type_code        := 'S';
64529 l_component_appl_id          :=  555;
64530 l_amb_context_code           := 'DEFAULT';
64531 l_entity_code                := 'REVALUATION';
64532 l_event_class_code           := 'ACTCOSTADJ';
64533 l_event_type_code            := 'ACTCOSTADJ';
64534 l_line_definition_owner_code := 'S';
64535 l_line_definition_code       := 'ACTCOSTADJ';
64536 --
64537 l_balance_type_code          := 'A';
64538 l_segment                     := NULL;
64539 l_ccid                        := NULL;
64540 l_adr_transaction_coa_id      := NULL;
64541 l_adr_accounting_coa_id       := NULL;
64542 l_adr_flexfield_segment_code  := NULL;
64543 l_adr_flex_value_set_id       := NULL;
64544 l_adr_value_type_code         := NULL;
64545 l_adr_value_combination_id    := NULL;
64546 l_adr_value_segment_code      := NULL;
64547 
64548 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
64549 l_bflow_class_code           := '';    -- 4219869 Business Flow
64550 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
64551 l_budgetary_control_flag     := 'N';
64552 
64553 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
64554 l_bflow_applied_to_amt       := NULL; -- 5132302
64555 l_entered_amt_idx            := NULL;          -- 4262811
64556 l_accted_amt_idx             := NULL;          -- 4262811
64557 l_acc_rev_flag               := NULL;          -- 4262811
64558 l_accrual_line_num           := NULL;          -- 4262811
64559 l_tmp_amt                    := NULL;          -- 4262811
64560 --
64561  
64562 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
64563     l_balance_type_code <> 'B' THEN
64564 IF NVL(p_source_2,'
64565 ') =  'INV'
64566  THEN 
64567 
64568    --
64569    XLA_AE_LINES_PKG.SetNewLine;
64570 
64571    p_balance_type_code          := l_balance_type_code;
64572    -- set the flag so later we will know whether the gain loss line needs to be created
64573    
64574    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
64575      p_actual_flag :='A';
64576    END IF;
64577 
64578    --
64579    -- bulk performance
64580    --
64581    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
64582                                       p_header_num   => 0); -- 4262811
64583    --
64584    -- set accounting line options
64585    --
64586    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
64587            p_natural_side_code          => 'D'
64588          , p_gain_or_loss_flag          => 'N'
64589          , p_gl_transfer_mode_code      => 'D'
64590          , p_acct_entry_type_code       => 'A'
64591          , p_switch_side_flag           => 'Y'
64592          , p_merge_duplicate_code       => 'W'
64593          );
64594    --
64595    l_acc_rev_natural_side_code := 'C';  -- 4262811
64596    -- 
64597    --
64598    -- set accounting line type info
64599    --
64600    xla_ae_lines_pkg.SetAcctLineType
64601       (p_component_type             => l_component_type
64602       ,p_event_type_code            => l_event_type_code
64603       ,p_line_definition_owner_code => l_line_definition_owner_code
64604       ,p_line_definition_code       => l_line_definition_code
64605       ,p_accounting_line_code       => l_component_code
64606       ,p_accounting_line_type_code  => l_component_type_code
64607       ,p_accounting_line_appl_id    => l_component_appl_id
64608       ,p_amb_context_code           => l_amb_context_code
64609       ,p_entity_code                => l_entity_code
64610       ,p_event_class_code           => l_event_class_code);
64611    --
64612    -- set accounting class
64613    --
64614    xla_ae_lines_pkg.SetAcctClass(
64615            p_accounting_class_code  => 'INVENTORY_VALUATION'
64616          , p_ae_header_id           => l_ae_header_id
64617          );
64618 
64619    --
64620    -- set rounding class
64621    --
64622    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
64623                       'INVENTORY_VALUATION';
64624 
64625    --
64626    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
64627    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
64628    --
64629    -- bulk performance
64630    --
64631    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
64632 
64633    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
64634       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
64635 
64636    -- 4955764
64637    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64638       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
64639 
64643    -- set accounting attributes for the line type
64640    -- 4458381 Public Sector Enh
64641    
64642    --
64644    --
64645    l_entered_amt_idx := 3;
64646    l_accted_amt_idx  := 8;
64647    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
64648    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
64649    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
64650    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
64651    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
64652    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
64653    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
64654    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
64655    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
64656    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
64657    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
64658    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
64659    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
64660    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
64661    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
64662    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
64663    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
64664 
64665    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
64666    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
64667 
64668    ---------------------------------------------------------------------------------------------------------------
64669    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
64670    ---------------------------------------------------------------------------------------------------------------
64671    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
64672 
64673    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64674    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64675 
64676    IF xla_accounting_cache_pkg.GetValueChar
64677          (p_source_code         => 'LEDGER_CATEGORY_CODE'
64678          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
64679    AND l_bflow_method_code = 'PRIOR_ENTRY'
64680 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
64681    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
64682          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
64683        )
64684    THEN
64685          xla_ae_lines_pkg.BflowUpgEntry
64686            (p_business_method_code    => l_bflow_method_code
64687            ,p_business_class_code     => l_bflow_class_code
64688            ,p_balance_type            => l_balance_type_code);
64689    ELSE
64690       NULL;
64691 -- No business flow processing for business flow method of NONE.
64692    END IF;
64693 
64694    --
64695    -- call analytical criteria
64696    --
64697    
64698    --
64699    -- call description
64700    --
64701    -- No description or it is inherited.
64702    --
64703    -- call ADRs
64704    -- Bug 4922099
64705    --
64706    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64707         (NVL(l_actual_upg_option, 'N') = 'O') OR
64708         (NVL(l_enc_upg_option, 'N') = 'O')
64709       )
64710    THEN
64711    NULL;
64712    --
64713    --
64714    
64715   l_ccid := AcctDerRule_17(
64716            p_application_id           => p_application_id
64717          , p_ae_header_id             => l_ae_header_id 
64718 , p_source_1 => p_source_1
64719 , p_source_2 => p_source_2
64720          , x_transaction_coa_id       => l_adr_transaction_coa_id
64721          , x_accounting_coa_id        => l_adr_accounting_coa_id
64722          , x_value_type_code          => l_adr_value_type_code
64723          , p_side                     => 'NA'
64724    );
64725 
64726    xla_ae_lines_pkg.set_ccid(
64727     p_code_combination_id          => l_ccid
64728   , p_value_type_code              => l_adr_value_type_code
64729   , p_transaction_coa_id           => l_adr_transaction_coa_id
64730   , p_accounting_coa_id            => l_adr_accounting_coa_id
64731   , p_adr_code                     => 'INV'
64732   , p_adr_type_code                => 'S'
64733   , p_component_type               => l_component_type
64734   , p_component_code               => l_component_code
64735   , p_component_type_code          => l_component_type_code
64736   , p_component_appl_id            => l_component_appl_id
64737   , p_amb_context_code             => l_amb_context_code
64738   , p_side                         => 'NA'
64739   );
64740 
64741 
64742    --
64743    --
64744    END IF;
64745    --
64746    -- Bug 4922099
64747    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
64748           (NVL(l_enc_upg_option, 'N') = 'O')
64749         ) AND
64750         (l_bflow_method_code = 'PRIOR_ENTRY')
64751       )
64752    THEN
64753       IF
64754       --
64755       1 = 2
64756       --
64757       THEN
64758       xla_accounting_err_pkg.build_message
64759                                     (p_appli_s_name            => 'XLA'
64760                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64761                                     ,p_token_1                 => 'LINE_NUMBER'
64765                                                                              l_component_type
64762                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
64763                                     ,p_token_2                 => 'LINE_TYPE_NAME'
64764                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
64766                                                                             ,l_component_code
64767                                                                             ,l_component_type_code
64768                                                                             ,l_component_appl_id
64769                                                                             ,l_amb_context_code
64770                                                                             ,l_entity_code
64771                                                                             ,l_event_class_code
64772                                                                            )
64773                                     ,p_token_3                 => 'OWNER'
64774                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
64775                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
64776                                                                           ,p_lookup_code    => l_component_type_code
64777                                                                          )
64778                                     ,p_token_4                 => 'PRODUCT_NAME'
64779                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
64780                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
64781                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
64782                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
64783                                     ,p_ae_header_id            =>  NULL
64784                                        );
64785 
64786         IF (C_LEVEL_ERROR>= g_log_level) THEN
64787                  trace
64788                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64789                       ,p_level    => C_LEVEL_ERROR
64790                       ,p_module   => l_log_module);
64791         END IF;
64792       END IF;
64793    END IF;
64794    --
64795    --
64796    ------------------------------------------------------------------------------------------------
64797    -- 4219869 Business Flow
64798    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
64799    -- Prior Entry.  Currently, the following code is always generated.
64800    ------------------------------------------------------------------------------------------------
64801    XLA_AE_LINES_PKG.ValidateCurrentLine;
64802 
64803    ------------------------------------------------------------------------------------
64804    -- 4219869 Business Flow
64805    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
64806    ------------------------------------------------------------------------------------
64807    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64808 
64809    ----------------------------------------------------------------------------------
64810    -- 4219869 Business Flow
64811    -- Update journal entry status -- Need to generate this within IF <condition>
64812    ----------------------------------------------------------------------------------
64813    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64814          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
64815          ,p_balance_type_code => l_balance_type_code
64816          );
64817 
64818    -------------------------------------------------------------------------------------------
64819    -- 4262811 - Generate the Accrual Reversal lines
64820    -------------------------------------------------------------------------------------------
64821    BEGIN
64822       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
64823                               (g_array_event(p_event_id).array_value_num('header_index'));
64824       IF l_acc_rev_flag IS NULL THEN
64825          l_acc_rev_flag := 'N';
64826       END IF;
64827    EXCEPTION
64828       WHEN OTHERS THEN
64829          l_acc_rev_flag := 'N';
64830    END;
64831    --
64832    IF (l_acc_rev_flag = 'Y') THEN
64833 
64834        -- 4645092  ------------------------------------------------------------------------------
64835        -- To allow MPA report to determine if it should generate report process
64836        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
64837        ------------------------------------------------------------------------------------------
64838 
64839        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
64840        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
64841    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
64842    -- call ADRs
64843    -- Bug 4922099
64844    --
64845    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64846         (NVL(l_actual_upg_option, 'N') = 'O') OR
64847         (NVL(l_enc_upg_option, 'N') = 'O')
64848       )
64849    THEN
64850    NULL;
64851    --
64852    --
64853    
64854   l_ccid := AcctDerRule_17(
64858 , p_source_2 => p_source_2
64855            p_application_id           => p_application_id
64856          , p_ae_header_id             => l_ae_header_id 
64857 , p_source_1 => p_source_1
64859          , x_transaction_coa_id       => l_adr_transaction_coa_id
64860          , x_accounting_coa_id        => l_adr_accounting_coa_id
64861          , x_value_type_code          => l_adr_value_type_code
64862          , p_side                     => 'NA'
64863    );
64864 
64865    xla_ae_lines_pkg.set_ccid(
64866     p_code_combination_id          => l_ccid
64867   , p_value_type_code              => l_adr_value_type_code
64868   , p_transaction_coa_id           => l_adr_transaction_coa_id
64869   , p_accounting_coa_id            => l_adr_accounting_coa_id
64870   , p_adr_code                     => 'INV'
64871   , p_adr_type_code                => 'S'
64872   , p_component_type               => l_component_type
64873   , p_component_code               => l_component_code
64874   , p_component_type_code          => l_component_type_code
64875   , p_component_appl_id            => l_component_appl_id
64876   , p_amb_context_code             => l_amb_context_code
64877   , p_side                         => 'NA'
64878   );
64879 
64880 
64881    --
64882    --
64883    END IF;
64884 
64885        --
64886        -- Update the line information that should be overwritten
64887        --
64888        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
64889                                          p_header_num   => 1);
64890        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
64891 
64892        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
64893 
64894        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
64895           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
64896        END IF;
64897 
64898       --
64899       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
64900       --
64901       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
64902           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
64903       ELSE
64904           ---------------------------------------------------------------------------------------------------
64905           -- 4262811a Switch Sign
64906           ---------------------------------------------------------------------------------------------------
64907           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
64908           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64909                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64910           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64911                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64912           -- 5132302
64913           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
64914                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64915 
64916       END IF;
64917 
64918       -- 4955764
64919       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64920       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
64921 
64922 
64923       XLA_AE_LINES_PKG.ValidateCurrentLine;
64924       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64925 
64926       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64927                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
64928                ,p_balance_type_code => l_balance_type_code);
64929 
64930    END IF;
64931 
64932    -----------------------------------------------------------------------------------------
64933    -- 4262811 Multiperiod Accounting
64934    -----------------------------------------------------------------------------------------
64935      -- No MPA option is assigned.
64936 
64937 
64938 END IF;
64939 END IF;
64940 --
64941 
64942 --
64943 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64944    trace
64945       (p_msg      => 'END of AcctLineType_149'
64946       ,p_level    => C_LEVEL_PROCEDURE
64947       ,p_module   => l_log_module);
64948 END IF;
64949 --
64950 EXCEPTION
64951   WHEN xla_exceptions_pkg.application_exception THEN
64952       RAISE;
64953   WHEN OTHERS THEN
64954        xla_exceptions_pkg.raise_message
64955            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_149');
64956 END AcctLineType_149;
64957 --
64958 
64959 ---------------------------------------
64960 --
64961 -- PRIVATE FUNCTION
64962 --         AcctLineType_150
64963 --
64964 ---------------------------------------
64965 PROCEDURE AcctLineType_150 (
64966   p_application_id        IN NUMBER
64967  ,p_event_id              IN NUMBER
64968  ,p_calculate_acctd_flag  IN VARCHAR2
64969  ,p_calculate_g_l_flag    IN VARCHAR2
64970  ,p_actual_flag           IN OUT VARCHAR2
64971  ,p_balance_type_code     OUT VARCHAR2
64972  ,p_gain_or_loss_ref      OUT VARCHAR2
64976 --Journal Line Type
64973  
64974 --Transaction Account
64975  , p_source_1            IN NUMBER
64977  , p_source_2            IN VARCHAR2
64978 --Entered Amount
64979  , p_source_3            IN NUMBER
64980 --First Distribution Identifier
64981  , p_source_5            IN NUMBER
64982 --Distribution Type
64983  , p_source_6            IN VARCHAR2
64984 --Currency Code
64985  , p_source_7            IN VARCHAR2
64986 --Currency Conversion Date
64987  , p_source_8            IN DATE
64988 --Currency Conversion Rate
64989  , p_source_9            IN NUMBER
64990 --Currency Conversion Type
64991  , p_source_10            IN VARCHAR2
64992 --Accounted Amount
64993  , p_source_11            IN NUMBER
64994 )
64995 IS
64996 
64997 l_component_type              VARCHAR2(80);
64998 l_component_code              VARCHAR2(30);
64999 l_component_type_code         VARCHAR2(1);
65000 l_component_appl_id           INTEGER;
65001 l_amb_context_code            VARCHAR2(30);
65002 l_entity_code                 VARCHAR2(30);
65003 l_event_class_code            VARCHAR2(30);
65004 l_ae_header_id                NUMBER;
65005 l_event_type_code             VARCHAR2(30);
65006 l_line_definition_code        VARCHAR2(30);
65007 l_line_definition_owner_code  VARCHAR2(1);
65008 --
65009 -- adr variables
65010 l_segment                     VARCHAR2(30);
65011 l_ccid                        NUMBER;
65012 l_adr_transaction_coa_id      NUMBER;
65013 l_adr_accounting_coa_id       NUMBER;
65014 l_adr_flexfield_segment_code  VARCHAR2(30);
65015 l_adr_flex_value_set_id       NUMBER;
65016 l_adr_value_type_code         VARCHAR2(30);
65017 l_adr_value_combination_id    NUMBER;
65018 l_adr_value_segment_code      VARCHAR2(30);
65019 
65020 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
65021 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
65022 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
65023 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
65024 
65025 -- 4262811 Variables ------------------------------------------------------------------------------------------
65026 l_entered_amt_idx             NUMBER;
65027 l_accted_amt_idx              NUMBER;
65028 l_acc_rev_flag                VARCHAR2(1);
65029 l_accrual_line_num            NUMBER;
65030 l_tmp_amt                     NUMBER;
65031 l_acc_rev_natural_side_code   VARCHAR2(1);
65032 
65033 l_num_entries                 NUMBER;
65034 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
65035 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
65036 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
65037 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
65038 l_recog_line_1                NUMBER;
65039 l_recog_line_2                NUMBER;
65040 
65041 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
65042 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
65043 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
65044 
65045 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
65046 
65047 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
65048 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
65049 
65050 ---------------------------------------------------------------------------------------------------------------
65051 
65052 
65053 --
65054 -- bulk performance
65055 --
65056 l_balance_type_code           VARCHAR2(1);
65057 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
65058 l_log_module                  VARCHAR2(240);
65059 
65060 --
65061 -- Upgrade strategy
65062 --
65063 l_actual_upg_option           VARCHAR2(1);
65064 l_enc_upg_option           VARCHAR2(1);
65065 
65066 --
65067 BEGIN
65068 --
65069 IF g_log_enabled THEN
65070       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_150';
65071 END IF;
65072 --
65073 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65074 
65075       trace
65076          (p_msg      => 'BEGIN of AcctLineType_150'
65077          ,p_level    => C_LEVEL_PROCEDURE
65078          ,p_module   => l_log_module);
65079 
65080 END IF;
65081 --
65082 l_component_type             := 'AMB_JLT';
65083 l_component_code             := 'INV';
65084 l_component_type_code        := 'S';
65085 l_component_appl_id          :=  555;
65086 l_amb_context_code           := 'DEFAULT';
65087 l_entity_code                := 'INVENTORY';
65088 l_event_class_code           := 'FOB_RCPT_SENDER_SHIP';
65089 l_event_type_code            := 'FOB_RCPT_SENDER_SHIP';
65090 l_line_definition_owner_code := 'S';
65091 l_line_definition_code       := 'FOB_RCPT_SENDER_SHIP';
65092 --
65093 l_balance_type_code          := 'A';
65094 l_segment                     := NULL;
65095 l_ccid                        := NULL;
65096 l_adr_transaction_coa_id      := NULL;
65097 l_adr_accounting_coa_id       := NULL;
65098 l_adr_flexfield_segment_code  := NULL;
65099 l_adr_flex_value_set_id       := NULL;
65100 l_adr_value_type_code         := NULL;
65101 l_adr_value_combination_id    := NULL;
65102 l_adr_value_segment_code      := NULL;
65103 
65104 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
65105 l_bflow_class_code           := '';    -- 4219869 Business Flow
65106 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
65110 l_bflow_applied_to_amt       := NULL; -- 5132302
65107 l_budgetary_control_flag     := 'N';
65108 
65109 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
65111 l_entered_amt_idx            := NULL;          -- 4262811
65112 l_accted_amt_idx             := NULL;          -- 4262811
65113 l_acc_rev_flag               := NULL;          -- 4262811
65114 l_accrual_line_num           := NULL;          -- 4262811
65115 l_tmp_amt                    := NULL;          -- 4262811
65116 --
65117  
65118 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
65119     l_balance_type_code <> 'B' THEN
65120 IF NVL(p_source_2,'
65121 ') =  'INV'
65122  THEN 
65123 
65124    --
65125    XLA_AE_LINES_PKG.SetNewLine;
65126 
65127    p_balance_type_code          := l_balance_type_code;
65128    -- set the flag so later we will know whether the gain loss line needs to be created
65129    
65130    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
65131      p_actual_flag :='A';
65132    END IF;
65133 
65134    --
65135    -- bulk performance
65136    --
65137    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
65138                                       p_header_num   => 0); -- 4262811
65139    --
65140    -- set accounting line options
65141    --
65142    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
65143            p_natural_side_code          => 'D'
65144          , p_gain_or_loss_flag          => 'N'
65145          , p_gl_transfer_mode_code      => 'D'
65146          , p_acct_entry_type_code       => 'A'
65147          , p_switch_side_flag           => 'Y'
65148          , p_merge_duplicate_code       => 'W'
65149          );
65150    --
65151    l_acc_rev_natural_side_code := 'C';  -- 4262811
65152    -- 
65153    --
65154    -- set accounting line type info
65155    --
65156    xla_ae_lines_pkg.SetAcctLineType
65157       (p_component_type             => l_component_type
65158       ,p_event_type_code            => l_event_type_code
65159       ,p_line_definition_owner_code => l_line_definition_owner_code
65160       ,p_line_definition_code       => l_line_definition_code
65161       ,p_accounting_line_code       => l_component_code
65162       ,p_accounting_line_type_code  => l_component_type_code
65163       ,p_accounting_line_appl_id    => l_component_appl_id
65164       ,p_amb_context_code           => l_amb_context_code
65165       ,p_entity_code                => l_entity_code
65166       ,p_event_class_code           => l_event_class_code);
65167    --
65168    -- set accounting class
65169    --
65170    xla_ae_lines_pkg.SetAcctClass(
65171            p_accounting_class_code  => 'INVENTORY_VALUATION'
65172          , p_ae_header_id           => l_ae_header_id
65173          );
65174 
65175    --
65176    -- set rounding class
65177    --
65178    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
65179                       'INVENTORY_VALUATION';
65180 
65181    --
65182    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
65183    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
65184    --
65185    -- bulk performance
65186    --
65187    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
65188 
65189    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
65190       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
65191 
65192    -- 4955764
65193    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65194       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
65195 
65196    -- 4458381 Public Sector Enh
65197    
65198    --
65199    -- set accounting attributes for the line type
65200    --
65201    l_entered_amt_idx := 3;
65202    l_accted_amt_idx  := 8;
65203    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
65204    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
65205    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
65206    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
65207    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
65208    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
65209    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
65210    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
65211    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
65212    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
65213    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
65214    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
65215    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
65216    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
65217    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
65218    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
65219    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
65220 
65221    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
65222    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
65223 
65224    ---------------------------------------------------------------------------------------------------------------
65225    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
65229    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65226    ---------------------------------------------------------------------------------------------------------------
65227    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
65228 
65230    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65231 
65232    IF xla_accounting_cache_pkg.GetValueChar
65233          (p_source_code         => 'LEDGER_CATEGORY_CODE'
65234          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
65235    AND l_bflow_method_code = 'PRIOR_ENTRY'
65236 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
65237    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
65238          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
65239        )
65240    THEN
65241          xla_ae_lines_pkg.BflowUpgEntry
65242            (p_business_method_code    => l_bflow_method_code
65243            ,p_business_class_code     => l_bflow_class_code
65244            ,p_balance_type            => l_balance_type_code);
65245    ELSE
65246       NULL;
65247 -- No business flow processing for business flow method of NONE.
65248    END IF;
65249 
65250    --
65251    -- call analytical criteria
65252    --
65253    
65254    --
65255    -- call description
65256    --
65257    -- No description or it is inherited.
65258    --
65259    -- call ADRs
65260    -- Bug 4922099
65261    --
65262    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65263         (NVL(l_actual_upg_option, 'N') = 'O') OR
65264         (NVL(l_enc_upg_option, 'N') = 'O')
65265       )
65266    THEN
65267    NULL;
65268    --
65269    --
65270    
65271   l_ccid := AcctDerRule_17(
65272            p_application_id           => p_application_id
65273          , p_ae_header_id             => l_ae_header_id 
65274 , p_source_1 => p_source_1
65275 , p_source_2 => p_source_2
65276          , x_transaction_coa_id       => l_adr_transaction_coa_id
65277          , x_accounting_coa_id        => l_adr_accounting_coa_id
65278          , x_value_type_code          => l_adr_value_type_code
65279          , p_side                     => 'NA'
65280    );
65281 
65282    xla_ae_lines_pkg.set_ccid(
65283     p_code_combination_id          => l_ccid
65284   , p_value_type_code              => l_adr_value_type_code
65285   , p_transaction_coa_id           => l_adr_transaction_coa_id
65286   , p_accounting_coa_id            => l_adr_accounting_coa_id
65287   , p_adr_code                     => 'INV'
65288   , p_adr_type_code                => 'S'
65289   , p_component_type               => l_component_type
65290   , p_component_code               => l_component_code
65291   , p_component_type_code          => l_component_type_code
65292   , p_component_appl_id            => l_component_appl_id
65293   , p_amb_context_code             => l_amb_context_code
65294   , p_side                         => 'NA'
65295   );
65296 
65297 
65298    --
65299    --
65300    END IF;
65301    --
65302    -- Bug 4922099
65303    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
65304           (NVL(l_enc_upg_option, 'N') = 'O')
65305         ) AND
65306         (l_bflow_method_code = 'PRIOR_ENTRY')
65307       )
65308    THEN
65309       IF
65310       --
65311       1 = 2
65312       --
65313       THEN
65314       xla_accounting_err_pkg.build_message
65315                                     (p_appli_s_name            => 'XLA'
65316                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65317                                     ,p_token_1                 => 'LINE_NUMBER'
65318                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
65319                                     ,p_token_2                 => 'LINE_TYPE_NAME'
65320                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
65321                                                                              l_component_type
65322                                                                             ,l_component_code
65323                                                                             ,l_component_type_code
65324                                                                             ,l_component_appl_id
65325                                                                             ,l_amb_context_code
65326                                                                             ,l_entity_code
65327                                                                             ,l_event_class_code
65328                                                                            )
65329                                     ,p_token_3                 => 'OWNER'
65330                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
65331                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
65332                                                                           ,p_lookup_code    => l_component_type_code
65333                                                                          )
65334                                     ,p_token_4                 => 'PRODUCT_NAME'
65335                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
65339                                     ,p_ae_header_id            =>  NULL
65336                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
65337                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
65338                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
65340                                        );
65341 
65342         IF (C_LEVEL_ERROR>= g_log_level) THEN
65343                  trace
65344                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65345                       ,p_level    => C_LEVEL_ERROR
65346                       ,p_module   => l_log_module);
65347         END IF;
65348       END IF;
65349    END IF;
65350    --
65351    --
65352    ------------------------------------------------------------------------------------------------
65353    -- 4219869 Business Flow
65354    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
65355    -- Prior Entry.  Currently, the following code is always generated.
65356    ------------------------------------------------------------------------------------------------
65357    XLA_AE_LINES_PKG.ValidateCurrentLine;
65358 
65359    ------------------------------------------------------------------------------------
65360    -- 4219869 Business Flow
65361    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
65362    ------------------------------------------------------------------------------------
65363    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65364 
65365    ----------------------------------------------------------------------------------
65366    -- 4219869 Business Flow
65367    -- Update journal entry status -- Need to generate this within IF <condition>
65368    ----------------------------------------------------------------------------------
65369    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65370          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
65371          ,p_balance_type_code => l_balance_type_code
65372          );
65373 
65374    -------------------------------------------------------------------------------------------
65375    -- 4262811 - Generate the Accrual Reversal lines
65376    -------------------------------------------------------------------------------------------
65377    BEGIN
65378       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
65379                               (g_array_event(p_event_id).array_value_num('header_index'));
65380       IF l_acc_rev_flag IS NULL THEN
65381          l_acc_rev_flag := 'N';
65382       END IF;
65383    EXCEPTION
65384       WHEN OTHERS THEN
65385          l_acc_rev_flag := 'N';
65386    END;
65387    --
65388    IF (l_acc_rev_flag = 'Y') THEN
65389 
65390        -- 4645092  ------------------------------------------------------------------------------
65391        -- To allow MPA report to determine if it should generate report process
65392        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
65393        ------------------------------------------------------------------------------------------
65394 
65395        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
65396        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
65397    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
65398    -- call ADRs
65399    -- Bug 4922099
65400    --
65401    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65402         (NVL(l_actual_upg_option, 'N') = 'O') OR
65403         (NVL(l_enc_upg_option, 'N') = 'O')
65404       )
65405    THEN
65406    NULL;
65407    --
65408    --
65409    
65410   l_ccid := AcctDerRule_17(
65411            p_application_id           => p_application_id
65412          , p_ae_header_id             => l_ae_header_id 
65413 , p_source_1 => p_source_1
65414 , p_source_2 => p_source_2
65415          , x_transaction_coa_id       => l_adr_transaction_coa_id
65416          , x_accounting_coa_id        => l_adr_accounting_coa_id
65417          , x_value_type_code          => l_adr_value_type_code
65418          , p_side                     => 'NA'
65419    );
65420 
65421    xla_ae_lines_pkg.set_ccid(
65422     p_code_combination_id          => l_ccid
65423   , p_value_type_code              => l_adr_value_type_code
65424   , p_transaction_coa_id           => l_adr_transaction_coa_id
65425   , p_accounting_coa_id            => l_adr_accounting_coa_id
65426   , p_adr_code                     => 'INV'
65427   , p_adr_type_code                => 'S'
65428   , p_component_type               => l_component_type
65429   , p_component_code               => l_component_code
65430   , p_component_type_code          => l_component_type_code
65431   , p_component_appl_id            => l_component_appl_id
65432   , p_amb_context_code             => l_amb_context_code
65433   , p_side                         => 'NA'
65434   );
65435 
65436 
65437    --
65438    --
65439    END IF;
65440 
65441        --
65442        -- Update the line information that should be overwritten
65443        --
65444        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
65445                                          p_header_num   => 1);
65446        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
65447 
65451           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
65448        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
65449 
65450        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
65452        END IF;
65453 
65454       --
65455       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
65456       --
65457       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
65458           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
65459       ELSE
65460           ---------------------------------------------------------------------------------------------------
65461           -- 4262811a Switch Sign
65462           ---------------------------------------------------------------------------------------------------
65463           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
65464           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65465                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65466           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65467                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65468           -- 5132302
65469           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
65470                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65471 
65472       END IF;
65473 
65474       -- 4955764
65475       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65476       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
65477 
65478 
65479       XLA_AE_LINES_PKG.ValidateCurrentLine;
65480       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65481 
65482       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65483                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
65484                ,p_balance_type_code => l_balance_type_code);
65485 
65486    END IF;
65487 
65488    -----------------------------------------------------------------------------------------
65489    -- 4262811 Multiperiod Accounting
65490    -----------------------------------------------------------------------------------------
65491      -- No MPA option is assigned.
65492 
65493 
65494 END IF;
65495 END IF;
65496 --
65497 
65498 --
65499 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65500    trace
65501       (p_msg      => 'END of AcctLineType_150'
65502       ,p_level    => C_LEVEL_PROCEDURE
65503       ,p_module   => l_log_module);
65504 END IF;
65505 --
65506 EXCEPTION
65507   WHEN xla_exceptions_pkg.application_exception THEN
65508       RAISE;
65509   WHEN OTHERS THEN
65510        xla_exceptions_pkg.raise_message
65511            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_150');
65512 END AcctLineType_150;
65513 --
65514 
65515 ---------------------------------------
65516 --
65517 -- PRIVATE FUNCTION
65518 --         AcctLineType_151
65519 --
65520 ---------------------------------------
65521 PROCEDURE AcctLineType_151 (
65522   p_application_id        IN NUMBER
65523  ,p_event_id              IN NUMBER
65524  ,p_calculate_acctd_flag  IN VARCHAR2
65525  ,p_calculate_g_l_flag    IN VARCHAR2
65526  ,p_actual_flag           IN OUT VARCHAR2
65527  ,p_balance_type_code     OUT VARCHAR2
65528  ,p_gain_or_loss_ref      OUT VARCHAR2
65529  
65530 --Transaction Account
65531  , p_source_1            IN NUMBER
65532 --Journal Line Type
65533  , p_source_2            IN VARCHAR2
65534 --Entered Amount
65535  , p_source_3            IN NUMBER
65536 --First Distribution Identifier
65537  , p_source_5            IN NUMBER
65538 --Distribution Type
65539  , p_source_6            IN VARCHAR2
65540 --Currency Code
65541  , p_source_7            IN VARCHAR2
65542 --Currency Conversion Date
65543  , p_source_8            IN DATE
65544 --Currency Conversion Rate
65545  , p_source_9            IN NUMBER
65546 --Currency Conversion Type
65547  , p_source_10            IN VARCHAR2
65548 --Accounted Amount
65549  , p_source_11            IN NUMBER
65550 )
65551 IS
65552 
65553 l_component_type              VARCHAR2(80);
65554 l_component_code              VARCHAR2(30);
65555 l_component_type_code         VARCHAR2(1);
65556 l_component_appl_id           INTEGER;
65557 l_amb_context_code            VARCHAR2(30);
65558 l_entity_code                 VARCHAR2(30);
65559 l_event_class_code            VARCHAR2(30);
65560 l_ae_header_id                NUMBER;
65561 l_event_type_code             VARCHAR2(30);
65562 l_line_definition_code        VARCHAR2(30);
65563 l_line_definition_owner_code  VARCHAR2(1);
65564 --
65565 -- adr variables
65566 l_segment                     VARCHAR2(30);
65567 l_ccid                        NUMBER;
65568 l_adr_transaction_coa_id      NUMBER;
65569 l_adr_accounting_coa_id       NUMBER;
65570 l_adr_flexfield_segment_code  VARCHAR2(30);
65571 l_adr_flex_value_set_id       NUMBER;
65572 l_adr_value_type_code         VARCHAR2(30);
65573 l_adr_value_combination_id    NUMBER;
65577 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
65574 l_adr_value_segment_code      VARCHAR2(30);
65575 
65576 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
65578 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
65579 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
65580 
65581 -- 4262811 Variables ------------------------------------------------------------------------------------------
65582 l_entered_amt_idx             NUMBER;
65583 l_accted_amt_idx              NUMBER;
65584 l_acc_rev_flag                VARCHAR2(1);
65585 l_accrual_line_num            NUMBER;
65586 l_tmp_amt                     NUMBER;
65587 l_acc_rev_natural_side_code   VARCHAR2(1);
65588 
65589 l_num_entries                 NUMBER;
65590 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
65591 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
65592 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
65593 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
65594 l_recog_line_1                NUMBER;
65595 l_recog_line_2                NUMBER;
65596 
65597 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
65598 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
65599 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
65600 
65601 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
65602 
65603 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
65604 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
65605 
65606 ---------------------------------------------------------------------------------------------------------------
65607 
65608 
65609 --
65610 -- bulk performance
65611 --
65612 l_balance_type_code           VARCHAR2(1);
65613 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
65614 l_log_module                  VARCHAR2(240);
65615 
65616 --
65617 -- Upgrade strategy
65618 --
65619 l_actual_upg_option           VARCHAR2(1);
65620 l_enc_upg_option           VARCHAR2(1);
65621 
65622 --
65623 BEGIN
65624 --
65625 IF g_log_enabled THEN
65626       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_151';
65627 END IF;
65628 --
65629 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65630 
65631       trace
65632          (p_msg      => 'BEGIN of AcctLineType_151'
65633          ,p_level    => C_LEVEL_PROCEDURE
65634          ,p_module   => l_log_module);
65635 
65636 END IF;
65637 --
65638 l_component_type             := 'AMB_JLT';
65639 l_component_code             := 'INV';
65640 l_component_type_code        := 'S';
65641 l_component_appl_id          :=  555;
65642 l_amb_context_code           := 'DEFAULT';
65643 l_entity_code                := 'INVENTORY';
65644 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
65645 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_NO_TP';
65646 l_line_definition_owner_code := 'S';
65647 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP_NO_TP';
65648 --
65649 l_balance_type_code          := 'A';
65650 l_segment                     := NULL;
65651 l_ccid                        := NULL;
65652 l_adr_transaction_coa_id      := NULL;
65653 l_adr_accounting_coa_id       := NULL;
65654 l_adr_flexfield_segment_code  := NULL;
65655 l_adr_flex_value_set_id       := NULL;
65656 l_adr_value_type_code         := NULL;
65657 l_adr_value_combination_id    := NULL;
65658 l_adr_value_segment_code      := NULL;
65659 
65660 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
65661 l_bflow_class_code           := '';    -- 4219869 Business Flow
65662 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
65663 l_budgetary_control_flag     := 'N';
65664 
65665 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
65666 l_bflow_applied_to_amt       := NULL; -- 5132302
65667 l_entered_amt_idx            := NULL;          -- 4262811
65668 l_accted_amt_idx             := NULL;          -- 4262811
65669 l_acc_rev_flag               := NULL;          -- 4262811
65670 l_accrual_line_num           := NULL;          -- 4262811
65671 l_tmp_amt                    := NULL;          -- 4262811
65672 --
65673  
65674 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
65675     l_balance_type_code <> 'B' THEN
65676 IF NVL(p_source_2,'
65677 ') =  'INV'
65678  THEN 
65679 
65680    --
65681    XLA_AE_LINES_PKG.SetNewLine;
65682 
65683    p_balance_type_code          := l_balance_type_code;
65684    -- set the flag so later we will know whether the gain loss line needs to be created
65685    
65686    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
65687      p_actual_flag :='A';
65688    END IF;
65689 
65690    --
65691    -- bulk performance
65692    --
65693    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
65694                                       p_header_num   => 0); -- 4262811
65695    --
65696    -- set accounting line options
65697    --
65698    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
65699            p_natural_side_code          => 'D'
65700          , p_gain_or_loss_flag          => 'N'
65701          , p_gl_transfer_mode_code      => 'D'
65702          , p_acct_entry_type_code       => 'A'
65703          , p_switch_side_flag           => 'Y'
65707    l_acc_rev_natural_side_code := 'C';  -- 4262811
65704          , p_merge_duplicate_code       => 'W'
65705          );
65706    --
65708    -- 
65709    --
65710    -- set accounting line type info
65711    --
65712    xla_ae_lines_pkg.SetAcctLineType
65713       (p_component_type             => l_component_type
65714       ,p_event_type_code            => l_event_type_code
65715       ,p_line_definition_owner_code => l_line_definition_owner_code
65716       ,p_line_definition_code       => l_line_definition_code
65717       ,p_accounting_line_code       => l_component_code
65718       ,p_accounting_line_type_code  => l_component_type_code
65719       ,p_accounting_line_appl_id    => l_component_appl_id
65720       ,p_amb_context_code           => l_amb_context_code
65721       ,p_entity_code                => l_entity_code
65722       ,p_event_class_code           => l_event_class_code);
65723    --
65724    -- set accounting class
65725    --
65726    xla_ae_lines_pkg.SetAcctClass(
65727            p_accounting_class_code  => 'INVENTORY_VALUATION'
65728          , p_ae_header_id           => l_ae_header_id
65729          );
65730 
65731    --
65732    -- set rounding class
65733    --
65734    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
65735                       'INVENTORY_VALUATION';
65736 
65737    --
65738    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
65739    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
65740    --
65741    -- bulk performance
65742    --
65743    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
65744 
65745    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
65746       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
65747 
65748    -- 4955764
65749    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65750       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
65751 
65752    -- 4458381 Public Sector Enh
65753    
65754    --
65755    -- set accounting attributes for the line type
65756    --
65757    l_entered_amt_idx := 3;
65758    l_accted_amt_idx  := 8;
65759    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
65760    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
65761    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
65762    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
65763    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
65764    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
65765    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
65766    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
65767    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
65768    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
65769    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
65770    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
65771    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
65772    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
65773    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
65774    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
65775    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
65776 
65777    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
65778    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
65779 
65780    ---------------------------------------------------------------------------------------------------------------
65781    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
65782    ---------------------------------------------------------------------------------------------------------------
65783    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
65784 
65785    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65786    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65787 
65788    IF xla_accounting_cache_pkg.GetValueChar
65789          (p_source_code         => 'LEDGER_CATEGORY_CODE'
65790          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
65791    AND l_bflow_method_code = 'PRIOR_ENTRY'
65792 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
65793    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
65794          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
65795        )
65796    THEN
65797          xla_ae_lines_pkg.BflowUpgEntry
65798            (p_business_method_code    => l_bflow_method_code
65799            ,p_business_class_code     => l_bflow_class_code
65800            ,p_balance_type            => l_balance_type_code);
65801    ELSE
65802       NULL;
65803 -- No business flow processing for business flow method of NONE.
65804    END IF;
65805 
65806    --
65807    -- call analytical criteria
65808    --
65809    
65810    --
65811    -- call description
65812    --
65813    -- No description or it is inherited.
65814    --
65815    -- call ADRs
65816    -- Bug 4922099
65817    --
65818    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65822    THEN
65819         (NVL(l_actual_upg_option, 'N') = 'O') OR
65820         (NVL(l_enc_upg_option, 'N') = 'O')
65821       )
65823    NULL;
65824    --
65825    --
65826    
65827   l_ccid := AcctDerRule_17(
65828            p_application_id           => p_application_id
65829          , p_ae_header_id             => l_ae_header_id 
65830 , p_source_1 => p_source_1
65831 , p_source_2 => p_source_2
65832          , x_transaction_coa_id       => l_adr_transaction_coa_id
65833          , x_accounting_coa_id        => l_adr_accounting_coa_id
65834          , x_value_type_code          => l_adr_value_type_code
65835          , p_side                     => 'NA'
65836    );
65837 
65838    xla_ae_lines_pkg.set_ccid(
65839     p_code_combination_id          => l_ccid
65840   , p_value_type_code              => l_adr_value_type_code
65841   , p_transaction_coa_id           => l_adr_transaction_coa_id
65842   , p_accounting_coa_id            => l_adr_accounting_coa_id
65843   , p_adr_code                     => 'INV'
65844   , p_adr_type_code                => 'S'
65845   , p_component_type               => l_component_type
65846   , p_component_code               => l_component_code
65847   , p_component_type_code          => l_component_type_code
65848   , p_component_appl_id            => l_component_appl_id
65849   , p_amb_context_code             => l_amb_context_code
65850   , p_side                         => 'NA'
65851   );
65852 
65853 
65854    --
65855    --
65856    END IF;
65857    --
65858    -- Bug 4922099
65859    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
65860           (NVL(l_enc_upg_option, 'N') = 'O')
65861         ) AND
65862         (l_bflow_method_code = 'PRIOR_ENTRY')
65863       )
65864    THEN
65865       IF
65866       --
65867       1 = 2
65868       --
65869       THEN
65870       xla_accounting_err_pkg.build_message
65871                                     (p_appli_s_name            => 'XLA'
65872                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65873                                     ,p_token_1                 => 'LINE_NUMBER'
65874                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
65875                                     ,p_token_2                 => 'LINE_TYPE_NAME'
65876                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
65877                                                                              l_component_type
65878                                                                             ,l_component_code
65879                                                                             ,l_component_type_code
65880                                                                             ,l_component_appl_id
65881                                                                             ,l_amb_context_code
65882                                                                             ,l_entity_code
65883                                                                             ,l_event_class_code
65884                                                                            )
65885                                     ,p_token_3                 => 'OWNER'
65886                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
65887                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
65888                                                                           ,p_lookup_code    => l_component_type_code
65889                                                                          )
65890                                     ,p_token_4                 => 'PRODUCT_NAME'
65891                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
65892                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
65893                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
65894                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
65895                                     ,p_ae_header_id            =>  NULL
65896                                        );
65897 
65898         IF (C_LEVEL_ERROR>= g_log_level) THEN
65899                  trace
65900                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65901                       ,p_level    => C_LEVEL_ERROR
65902                       ,p_module   => l_log_module);
65903         END IF;
65904       END IF;
65905    END IF;
65906    --
65907    --
65908    ------------------------------------------------------------------------------------------------
65909    -- 4219869 Business Flow
65910    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
65911    -- Prior Entry.  Currently, the following code is always generated.
65912    ------------------------------------------------------------------------------------------------
65913    XLA_AE_LINES_PKG.ValidateCurrentLine;
65914 
65915    ------------------------------------------------------------------------------------
65916    -- 4219869 Business Flow
65917    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
65918    ------------------------------------------------------------------------------------
65922    -- 4219869 Business Flow
65919    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65920 
65921    ----------------------------------------------------------------------------------
65923    -- Update journal entry status -- Need to generate this within IF <condition>
65924    ----------------------------------------------------------------------------------
65925    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65926          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
65927          ,p_balance_type_code => l_balance_type_code
65928          );
65929 
65930    -------------------------------------------------------------------------------------------
65931    -- 4262811 - Generate the Accrual Reversal lines
65932    -------------------------------------------------------------------------------------------
65933    BEGIN
65934       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
65935                               (g_array_event(p_event_id).array_value_num('header_index'));
65936       IF l_acc_rev_flag IS NULL THEN
65937          l_acc_rev_flag := 'N';
65938       END IF;
65939    EXCEPTION
65940       WHEN OTHERS THEN
65941          l_acc_rev_flag := 'N';
65942    END;
65943    --
65944    IF (l_acc_rev_flag = 'Y') THEN
65945 
65946        -- 4645092  ------------------------------------------------------------------------------
65947        -- To allow MPA report to determine if it should generate report process
65948        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
65949        ------------------------------------------------------------------------------------------
65950 
65951        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
65952        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
65953    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
65954    -- call ADRs
65955    -- Bug 4922099
65956    --
65957    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65958         (NVL(l_actual_upg_option, 'N') = 'O') OR
65959         (NVL(l_enc_upg_option, 'N') = 'O')
65960       )
65961    THEN
65962    NULL;
65963    --
65964    --
65965    
65966   l_ccid := AcctDerRule_17(
65967            p_application_id           => p_application_id
65968          , p_ae_header_id             => l_ae_header_id 
65969 , p_source_1 => p_source_1
65970 , p_source_2 => p_source_2
65971          , x_transaction_coa_id       => l_adr_transaction_coa_id
65972          , x_accounting_coa_id        => l_adr_accounting_coa_id
65973          , x_value_type_code          => l_adr_value_type_code
65974          , p_side                     => 'NA'
65975    );
65976 
65977    xla_ae_lines_pkg.set_ccid(
65978     p_code_combination_id          => l_ccid
65979   , p_value_type_code              => l_adr_value_type_code
65980   , p_transaction_coa_id           => l_adr_transaction_coa_id
65981   , p_accounting_coa_id            => l_adr_accounting_coa_id
65982   , p_adr_code                     => 'INV'
65983   , p_adr_type_code                => 'S'
65984   , p_component_type               => l_component_type
65985   , p_component_code               => l_component_code
65986   , p_component_type_code          => l_component_type_code
65987   , p_component_appl_id            => l_component_appl_id
65988   , p_amb_context_code             => l_amb_context_code
65989   , p_side                         => 'NA'
65990   );
65991 
65992 
65993    --
65994    --
65995    END IF;
65996 
65997        --
65998        -- Update the line information that should be overwritten
65999        --
66000        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
66001                                          p_header_num   => 1);
66002        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
66003 
66004        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
66005 
66006        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
66007           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
66008        END IF;
66009 
66010       --
66011       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
66012       --
66013       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
66014           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
66015       ELSE
66016           ---------------------------------------------------------------------------------------------------
66017           -- 4262811a Switch Sign
66018           ---------------------------------------------------------------------------------------------------
66019           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
66020           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66021                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66022           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66023                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66024           -- 5132302
66025           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
66029 
66026                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66027 
66028       END IF;
66030       -- 4955764
66031       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66032       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
66033 
66034 
66035       XLA_AE_LINES_PKG.ValidateCurrentLine;
66036       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66037 
66038       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66039                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
66040                ,p_balance_type_code => l_balance_type_code);
66041 
66042    END IF;
66043 
66044    -----------------------------------------------------------------------------------------
66045    -- 4262811 Multiperiod Accounting
66046    -----------------------------------------------------------------------------------------
66047      -- No MPA option is assigned.
66048 
66049 
66050 END IF;
66051 END IF;
66052 --
66053 
66054 --
66055 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66056    trace
66057       (p_msg      => 'END of AcctLineType_151'
66058       ,p_level    => C_LEVEL_PROCEDURE
66059       ,p_module   => l_log_module);
66060 END IF;
66061 --
66062 EXCEPTION
66063   WHEN xla_exceptions_pkg.application_exception THEN
66064       RAISE;
66065   WHEN OTHERS THEN
66066        xla_exceptions_pkg.raise_message
66067            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_151');
66068 END AcctLineType_151;
66069 --
66070 
66071 ---------------------------------------
66072 --
66073 -- PRIVATE FUNCTION
66074 --         AcctLineType_152
66075 --
66076 ---------------------------------------
66077 PROCEDURE AcctLineType_152 (
66078   p_application_id        IN NUMBER
66079  ,p_event_id              IN NUMBER
66080  ,p_calculate_acctd_flag  IN VARCHAR2
66081  ,p_calculate_g_l_flag    IN VARCHAR2
66082  ,p_actual_flag           IN OUT VARCHAR2
66083  ,p_balance_type_code     OUT VARCHAR2
66084  ,p_gain_or_loss_ref      OUT VARCHAR2
66085  
66086 --Transaction Account
66087  , p_source_1            IN NUMBER
66088 --Journal Line Type
66089  , p_source_2            IN VARCHAR2
66090 --Entered Amount
66091  , p_source_3            IN NUMBER
66092 --First Distribution Identifier
66093  , p_source_5            IN NUMBER
66094 --Distribution Type
66095  , p_source_6            IN VARCHAR2
66096 --Currency Code
66097  , p_source_7            IN VARCHAR2
66098 --Currency Conversion Date
66099  , p_source_8            IN DATE
66100 --Currency Conversion Rate
66101  , p_source_9            IN NUMBER
66102 --Currency Conversion Type
66103  , p_source_10            IN VARCHAR2
66104 --Accounted Amount
66105  , p_source_11            IN NUMBER
66106 )
66107 IS
66108 
66109 l_component_type              VARCHAR2(80);
66110 l_component_code              VARCHAR2(30);
66111 l_component_type_code         VARCHAR2(1);
66112 l_component_appl_id           INTEGER;
66113 l_amb_context_code            VARCHAR2(30);
66114 l_entity_code                 VARCHAR2(30);
66115 l_event_class_code            VARCHAR2(30);
66116 l_ae_header_id                NUMBER;
66117 l_event_type_code             VARCHAR2(30);
66118 l_line_definition_code        VARCHAR2(30);
66119 l_line_definition_owner_code  VARCHAR2(1);
66120 --
66121 -- adr variables
66122 l_segment                     VARCHAR2(30);
66123 l_ccid                        NUMBER;
66124 l_adr_transaction_coa_id      NUMBER;
66125 l_adr_accounting_coa_id       NUMBER;
66126 l_adr_flexfield_segment_code  VARCHAR2(30);
66127 l_adr_flex_value_set_id       NUMBER;
66128 l_adr_value_type_code         VARCHAR2(30);
66129 l_adr_value_combination_id    NUMBER;
66130 l_adr_value_segment_code      VARCHAR2(30);
66131 
66132 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
66133 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
66134 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
66135 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
66136 
66137 -- 4262811 Variables ------------------------------------------------------------------------------------------
66138 l_entered_amt_idx             NUMBER;
66139 l_accted_amt_idx              NUMBER;
66140 l_acc_rev_flag                VARCHAR2(1);
66141 l_accrual_line_num            NUMBER;
66142 l_tmp_amt                     NUMBER;
66143 l_acc_rev_natural_side_code   VARCHAR2(1);
66144 
66145 l_num_entries                 NUMBER;
66146 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
66147 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
66148 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
66149 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
66150 l_recog_line_1                NUMBER;
66151 l_recog_line_2                NUMBER;
66152 
66153 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
66154 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
66155 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
66156 
66157 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
66158 
66159 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
66163 
66160 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
66161 
66162 ---------------------------------------------------------------------------------------------------------------
66164 
66165 --
66166 -- bulk performance
66167 --
66168 l_balance_type_code           VARCHAR2(1);
66169 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
66170 l_log_module                  VARCHAR2(240);
66171 
66172 --
66173 -- Upgrade strategy
66174 --
66175 l_actual_upg_option           VARCHAR2(1);
66176 l_enc_upg_option           VARCHAR2(1);
66177 
66178 --
66179 BEGIN
66180 --
66181 IF g_log_enabled THEN
66182       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_152';
66183 END IF;
66184 --
66185 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66186 
66187       trace
66188          (p_msg      => 'BEGIN of AcctLineType_152'
66189          ,p_level    => C_LEVEL_PROCEDURE
66190          ,p_module   => l_log_module);
66191 
66192 END IF;
66193 --
66194 l_component_type             := 'AMB_JLT';
66195 l_component_code             := 'INV';
66196 l_component_type_code        := 'S';
66197 l_component_appl_id          :=  555;
66198 l_amb_context_code           := 'DEFAULT';
66199 l_entity_code                := 'INVENTORY';
66200 l_event_class_code           := 'LOG_INTERCOMPANY';
66201 l_event_type_code            := 'LOG_IC_SALES_RETURN';
66202 l_line_definition_owner_code := 'S';
66203 l_line_definition_code       := 'LOG_IC_SALES_RETURN';
66204 --
66205 l_balance_type_code          := 'A';
66206 l_segment                     := NULL;
66207 l_ccid                        := NULL;
66208 l_adr_transaction_coa_id      := NULL;
66209 l_adr_accounting_coa_id       := NULL;
66210 l_adr_flexfield_segment_code  := NULL;
66211 l_adr_flex_value_set_id       := NULL;
66212 l_adr_value_type_code         := NULL;
66213 l_adr_value_combination_id    := NULL;
66214 l_adr_value_segment_code      := NULL;
66215 
66216 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
66217 l_bflow_class_code           := '';    -- 4219869 Business Flow
66218 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
66219 l_budgetary_control_flag     := 'N';
66220 
66221 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
66222 l_bflow_applied_to_amt       := NULL; -- 5132302
66223 l_entered_amt_idx            := NULL;          -- 4262811
66224 l_accted_amt_idx             := NULL;          -- 4262811
66225 l_acc_rev_flag               := NULL;          -- 4262811
66226 l_accrual_line_num           := NULL;          -- 4262811
66227 l_tmp_amt                    := NULL;          -- 4262811
66228 --
66229  
66230 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
66231     l_balance_type_code <> 'B' THEN
66232 IF NVL(p_source_2,'
66233 ') =  'INV'
66234  THEN 
66235 
66236    --
66237    XLA_AE_LINES_PKG.SetNewLine;
66238 
66239    p_balance_type_code          := l_balance_type_code;
66240    -- set the flag so later we will know whether the gain loss line needs to be created
66241    
66242    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
66243      p_actual_flag :='A';
66244    END IF;
66245 
66246    --
66247    -- bulk performance
66248    --
66249    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
66250                                       p_header_num   => 0); -- 4262811
66251    --
66252    -- set accounting line options
66253    --
66254    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
66255            p_natural_side_code          => 'D'
66256          , p_gain_or_loss_flag          => 'N'
66257          , p_gl_transfer_mode_code      => 'D'
66258          , p_acct_entry_type_code       => 'A'
66259          , p_switch_side_flag           => 'Y'
66260          , p_merge_duplicate_code       => 'W'
66261          );
66262    --
66263    l_acc_rev_natural_side_code := 'C';  -- 4262811
66264    -- 
66265    --
66266    -- set accounting line type info
66267    --
66268    xla_ae_lines_pkg.SetAcctLineType
66269       (p_component_type             => l_component_type
66270       ,p_event_type_code            => l_event_type_code
66271       ,p_line_definition_owner_code => l_line_definition_owner_code
66272       ,p_line_definition_code       => l_line_definition_code
66273       ,p_accounting_line_code       => l_component_code
66274       ,p_accounting_line_type_code  => l_component_type_code
66275       ,p_accounting_line_appl_id    => l_component_appl_id
66276       ,p_amb_context_code           => l_amb_context_code
66277       ,p_entity_code                => l_entity_code
66278       ,p_event_class_code           => l_event_class_code);
66279    --
66280    -- set accounting class
66281    --
66282    xla_ae_lines_pkg.SetAcctClass(
66283            p_accounting_class_code  => 'INVENTORY_VALUATION'
66284          , p_ae_header_id           => l_ae_header_id
66285          );
66286 
66287    --
66288    -- set rounding class
66289    --
66290    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
66291                       'INVENTORY_VALUATION';
66292 
66293    --
66294    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
66295    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
66299    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
66296    --
66297    -- bulk performance
66298    --
66300 
66301    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
66302       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
66303 
66304    -- 4955764
66305    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66306       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
66307 
66308    -- 4458381 Public Sector Enh
66309    
66310    --
66311    -- set accounting attributes for the line type
66312    --
66313    l_entered_amt_idx := 3;
66314    l_accted_amt_idx  := 8;
66315    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
66316    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
66317    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
66318    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
66319    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
66320    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
66321    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
66322    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
66323    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
66324    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
66325    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
66326    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
66327    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
66328    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
66329    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
66330    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
66331    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
66332 
66333    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
66334    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
66335 
66336    ---------------------------------------------------------------------------------------------------------------
66337    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
66338    ---------------------------------------------------------------------------------------------------------------
66339    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
66340 
66341    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66342    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66343 
66344    IF xla_accounting_cache_pkg.GetValueChar
66345          (p_source_code         => 'LEDGER_CATEGORY_CODE'
66346          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
66347    AND l_bflow_method_code = 'PRIOR_ENTRY'
66348 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
66349    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
66350          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
66351        )
66352    THEN
66353          xla_ae_lines_pkg.BflowUpgEntry
66354            (p_business_method_code    => l_bflow_method_code
66355            ,p_business_class_code     => l_bflow_class_code
66356            ,p_balance_type            => l_balance_type_code);
66357    ELSE
66358       NULL;
66359 -- No business flow processing for business flow method of NONE.
66360    END IF;
66361 
66362    --
66363    -- call analytical criteria
66364    --
66365    
66366    --
66367    -- call description
66368    --
66369    -- No description or it is inherited.
66370    --
66371    -- call ADRs
66372    -- Bug 4922099
66373    --
66374    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66375         (NVL(l_actual_upg_option, 'N') = 'O') OR
66376         (NVL(l_enc_upg_option, 'N') = 'O')
66377       )
66378    THEN
66379    NULL;
66380    --
66381    --
66382    
66383   l_ccid := AcctDerRule_17(
66384            p_application_id           => p_application_id
66385          , p_ae_header_id             => l_ae_header_id 
66386 , p_source_1 => p_source_1
66387 , p_source_2 => p_source_2
66388          , x_transaction_coa_id       => l_adr_transaction_coa_id
66389          , x_accounting_coa_id        => l_adr_accounting_coa_id
66390          , x_value_type_code          => l_adr_value_type_code
66391          , p_side                     => 'NA'
66392    );
66393 
66394    xla_ae_lines_pkg.set_ccid(
66395     p_code_combination_id          => l_ccid
66396   , p_value_type_code              => l_adr_value_type_code
66397   , p_transaction_coa_id           => l_adr_transaction_coa_id
66398   , p_accounting_coa_id            => l_adr_accounting_coa_id
66399   , p_adr_code                     => 'INV'
66400   , p_adr_type_code                => 'S'
66401   , p_component_type               => l_component_type
66402   , p_component_code               => l_component_code
66403   , p_component_type_code          => l_component_type_code
66404   , p_component_appl_id            => l_component_appl_id
66405   , p_amb_context_code             => l_amb_context_code
66406   , p_side                         => 'NA'
66407   );
66408 
66409 
66410    --
66411    --
66412    END IF;
66413    --
66414    -- Bug 4922099
66418         (l_bflow_method_code = 'PRIOR_ENTRY')
66415    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
66416           (NVL(l_enc_upg_option, 'N') = 'O')
66417         ) AND
66419       )
66420    THEN
66421       IF
66422       --
66423       1 = 2
66424       --
66425       THEN
66426       xla_accounting_err_pkg.build_message
66427                                     (p_appli_s_name            => 'XLA'
66428                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66429                                     ,p_token_1                 => 'LINE_NUMBER'
66430                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
66431                                     ,p_token_2                 => 'LINE_TYPE_NAME'
66432                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
66433                                                                              l_component_type
66434                                                                             ,l_component_code
66435                                                                             ,l_component_type_code
66436                                                                             ,l_component_appl_id
66437                                                                             ,l_amb_context_code
66438                                                                             ,l_entity_code
66439                                                                             ,l_event_class_code
66440                                                                            )
66441                                     ,p_token_3                 => 'OWNER'
66442                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
66443                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
66444                                                                           ,p_lookup_code    => l_component_type_code
66445                                                                          )
66446                                     ,p_token_4                 => 'PRODUCT_NAME'
66447                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
66448                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
66449                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
66450                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
66451                                     ,p_ae_header_id            =>  NULL
66452                                        );
66453 
66454         IF (C_LEVEL_ERROR>= g_log_level) THEN
66455                  trace
66456                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66457                       ,p_level    => C_LEVEL_ERROR
66458                       ,p_module   => l_log_module);
66459         END IF;
66460       END IF;
66461    END IF;
66462    --
66463    --
66464    ------------------------------------------------------------------------------------------------
66465    -- 4219869 Business Flow
66466    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
66467    -- Prior Entry.  Currently, the following code is always generated.
66468    ------------------------------------------------------------------------------------------------
66469    XLA_AE_LINES_PKG.ValidateCurrentLine;
66470 
66471    ------------------------------------------------------------------------------------
66472    -- 4219869 Business Flow
66473    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
66474    ------------------------------------------------------------------------------------
66475    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66476 
66477    ----------------------------------------------------------------------------------
66478    -- 4219869 Business Flow
66479    -- Update journal entry status -- Need to generate this within IF <condition>
66480    ----------------------------------------------------------------------------------
66481    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66482          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
66483          ,p_balance_type_code => l_balance_type_code
66484          );
66485 
66486    -------------------------------------------------------------------------------------------
66487    -- 4262811 - Generate the Accrual Reversal lines
66488    -------------------------------------------------------------------------------------------
66489    BEGIN
66490       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
66491                               (g_array_event(p_event_id).array_value_num('header_index'));
66492       IF l_acc_rev_flag IS NULL THEN
66493          l_acc_rev_flag := 'N';
66494       END IF;
66495    EXCEPTION
66496       WHEN OTHERS THEN
66497          l_acc_rev_flag := 'N';
66498    END;
66499    --
66500    IF (l_acc_rev_flag = 'Y') THEN
66501 
66502        -- 4645092  ------------------------------------------------------------------------------
66503        -- To allow MPA report to determine if it should generate report process
66504        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
66505        ------------------------------------------------------------------------------------------
66506 
66510    -- call ADRs
66507        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
66508        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
66509    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
66511    -- Bug 4922099
66512    --
66513    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66514         (NVL(l_actual_upg_option, 'N') = 'O') OR
66515         (NVL(l_enc_upg_option, 'N') = 'O')
66516       )
66517    THEN
66518    NULL;
66519    --
66520    --
66521    
66522   l_ccid := AcctDerRule_17(
66523            p_application_id           => p_application_id
66524          , p_ae_header_id             => l_ae_header_id 
66525 , p_source_1 => p_source_1
66526 , p_source_2 => p_source_2
66527          , x_transaction_coa_id       => l_adr_transaction_coa_id
66528          , x_accounting_coa_id        => l_adr_accounting_coa_id
66529          , x_value_type_code          => l_adr_value_type_code
66530          , p_side                     => 'NA'
66531    );
66532 
66533    xla_ae_lines_pkg.set_ccid(
66534     p_code_combination_id          => l_ccid
66535   , p_value_type_code              => l_adr_value_type_code
66536   , p_transaction_coa_id           => l_adr_transaction_coa_id
66537   , p_accounting_coa_id            => l_adr_accounting_coa_id
66538   , p_adr_code                     => 'INV'
66539   , p_adr_type_code                => 'S'
66540   , p_component_type               => l_component_type
66541   , p_component_code               => l_component_code
66542   , p_component_type_code          => l_component_type_code
66543   , p_component_appl_id            => l_component_appl_id
66544   , p_amb_context_code             => l_amb_context_code
66545   , p_side                         => 'NA'
66546   );
66547 
66548 
66549    --
66550    --
66551    END IF;
66552 
66553        --
66554        -- Update the line information that should be overwritten
66555        --
66556        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
66557                                          p_header_num   => 1);
66558        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
66559 
66560        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
66561 
66562        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
66563           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
66564        END IF;
66565 
66566       --
66567       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
66568       --
66569       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
66570           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
66571       ELSE
66572           ---------------------------------------------------------------------------------------------------
66573           -- 4262811a Switch Sign
66574           ---------------------------------------------------------------------------------------------------
66575           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
66576           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66577                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66578           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66579                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66580           -- 5132302
66581           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
66582                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66583 
66584       END IF;
66585 
66586       -- 4955764
66587       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66588       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
66589 
66590 
66591       XLA_AE_LINES_PKG.ValidateCurrentLine;
66592       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66593 
66594       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66595                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
66596                ,p_balance_type_code => l_balance_type_code);
66597 
66598    END IF;
66599 
66600    -----------------------------------------------------------------------------------------
66601    -- 4262811 Multiperiod Accounting
66602    -----------------------------------------------------------------------------------------
66603      -- No MPA option is assigned.
66604 
66605 
66606 END IF;
66607 END IF;
66608 --
66609 
66610 --
66611 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66612    trace
66613       (p_msg      => 'END of AcctLineType_152'
66614       ,p_level    => C_LEVEL_PROCEDURE
66615       ,p_module   => l_log_module);
66616 END IF;
66617 --
66618 EXCEPTION
66619   WHEN xla_exceptions_pkg.application_exception THEN
66620       RAISE;
66621   WHEN OTHERS THEN
66622        xla_exceptions_pkg.raise_message
66623            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_152');
66624 END AcctLineType_152;
66625 --
66626 
66627 ---------------------------------------
66631 --
66628 --
66629 -- PRIVATE FUNCTION
66630 --         AcctLineType_153
66632 ---------------------------------------
66633 PROCEDURE AcctLineType_153 (
66634   p_application_id        IN NUMBER
66635  ,p_event_id              IN NUMBER
66636  ,p_calculate_acctd_flag  IN VARCHAR2
66637  ,p_calculate_g_l_flag    IN VARCHAR2
66638  ,p_actual_flag           IN OUT VARCHAR2
66639  ,p_balance_type_code     OUT VARCHAR2
66640  ,p_gain_or_loss_ref      OUT VARCHAR2
66641  
66642 --Transaction Account
66643  , p_source_1            IN NUMBER
66644 --Journal Line Type
66645  , p_source_2            IN VARCHAR2
66646 --Entered Amount
66647  , p_source_3            IN NUMBER
66648 --First Distribution Identifier
66649  , p_source_5            IN NUMBER
66650 --Distribution Type
66651  , p_source_6            IN VARCHAR2
66652 --Currency Code
66653  , p_source_7            IN VARCHAR2
66654 --Currency Conversion Date
66655  , p_source_8            IN DATE
66656 --Currency Conversion Rate
66657  , p_source_9            IN NUMBER
66658 --Currency Conversion Type
66659  , p_source_10            IN VARCHAR2
66660 --Accounted Amount
66661  , p_source_11            IN NUMBER
66662 )
66663 IS
66664 
66665 l_component_type              VARCHAR2(80);
66666 l_component_code              VARCHAR2(30);
66667 l_component_type_code         VARCHAR2(1);
66668 l_component_appl_id           INTEGER;
66669 l_amb_context_code            VARCHAR2(30);
66670 l_entity_code                 VARCHAR2(30);
66671 l_event_class_code            VARCHAR2(30);
66672 l_ae_header_id                NUMBER;
66673 l_event_type_code             VARCHAR2(30);
66674 l_line_definition_code        VARCHAR2(30);
66675 l_line_definition_owner_code  VARCHAR2(1);
66676 --
66677 -- adr variables
66678 l_segment                     VARCHAR2(30);
66679 l_ccid                        NUMBER;
66680 l_adr_transaction_coa_id      NUMBER;
66681 l_adr_accounting_coa_id       NUMBER;
66682 l_adr_flexfield_segment_code  VARCHAR2(30);
66683 l_adr_flex_value_set_id       NUMBER;
66684 l_adr_value_type_code         VARCHAR2(30);
66685 l_adr_value_combination_id    NUMBER;
66686 l_adr_value_segment_code      VARCHAR2(30);
66687 
66688 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
66689 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
66690 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
66691 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
66692 
66693 -- 4262811 Variables ------------------------------------------------------------------------------------------
66694 l_entered_amt_idx             NUMBER;
66695 l_accted_amt_idx              NUMBER;
66696 l_acc_rev_flag                VARCHAR2(1);
66697 l_accrual_line_num            NUMBER;
66698 l_tmp_amt                     NUMBER;
66699 l_acc_rev_natural_side_code   VARCHAR2(1);
66700 
66701 l_num_entries                 NUMBER;
66702 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
66703 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
66704 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
66705 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
66706 l_recog_line_1                NUMBER;
66707 l_recog_line_2                NUMBER;
66708 
66709 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
66710 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
66711 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
66712 
66713 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
66714 
66715 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
66716 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
66717 
66718 ---------------------------------------------------------------------------------------------------------------
66719 
66720 
66721 --
66722 -- bulk performance
66723 --
66724 l_balance_type_code           VARCHAR2(1);
66725 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
66726 l_log_module                  VARCHAR2(240);
66727 
66728 --
66729 -- Upgrade strategy
66730 --
66731 l_actual_upg_option           VARCHAR2(1);
66732 l_enc_upg_option           VARCHAR2(1);
66733 
66734 --
66735 BEGIN
66736 --
66737 IF g_log_enabled THEN
66738       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_153';
66739 END IF;
66740 --
66741 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66742 
66743       trace
66744          (p_msg      => 'BEGIN of AcctLineType_153'
66745          ,p_level    => C_LEVEL_PROCEDURE
66746          ,p_module   => l_log_module);
66747 
66748 END IF;
66749 --
66750 l_component_type             := 'AMB_JLT';
66751 l_component_code             := 'INV';
66752 l_component_type_code        := 'S';
66753 l_component_appl_id          :=  555;
66754 l_amb_context_code           := 'DEFAULT';
66755 l_entity_code                := 'ORDERMANAGEMENT';
66756 l_event_class_code           := 'SHIPPING';
66757 l_event_type_code            := 'SO_ISSUE';
66758 l_line_definition_owner_code := 'S';
66759 l_line_definition_code       := 'SO_ISSUE';
66760 --
66761 l_balance_type_code          := 'A';
66762 l_segment                     := NULL;
66763 l_ccid                        := NULL;
66764 l_adr_transaction_coa_id      := NULL;
66768 l_adr_value_type_code         := NULL;
66765 l_adr_accounting_coa_id       := NULL;
66766 l_adr_flexfield_segment_code  := NULL;
66767 l_adr_flex_value_set_id       := NULL;
66769 l_adr_value_combination_id    := NULL;
66770 l_adr_value_segment_code      := NULL;
66771 
66772 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
66773 l_bflow_class_code           := '';    -- 4219869 Business Flow
66774 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
66775 l_budgetary_control_flag     := 'N';
66776 
66777 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
66778 l_bflow_applied_to_amt       := NULL; -- 5132302
66779 l_entered_amt_idx            := NULL;          -- 4262811
66780 l_accted_amt_idx             := NULL;          -- 4262811
66781 l_acc_rev_flag               := NULL;          -- 4262811
66782 l_accrual_line_num           := NULL;          -- 4262811
66783 l_tmp_amt                    := NULL;          -- 4262811
66784 --
66785  
66786 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
66787     l_balance_type_code <> 'B' THEN
66788 IF NVL(p_source_2,'
66789 ') =  'INV'
66790  THEN 
66791 
66792    --
66793    XLA_AE_LINES_PKG.SetNewLine;
66794 
66795    p_balance_type_code          := l_balance_type_code;
66796    -- set the flag so later we will know whether the gain loss line needs to be created
66797    
66798    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
66799      p_actual_flag :='A';
66800    END IF;
66801 
66802    --
66803    -- bulk performance
66804    --
66805    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
66806                                       p_header_num   => 0); -- 4262811
66807    --
66808    -- set accounting line options
66809    --
66810    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
66811            p_natural_side_code          => 'D'
66812          , p_gain_or_loss_flag          => 'N'
66813          , p_gl_transfer_mode_code      => 'D'
66814          , p_acct_entry_type_code       => 'A'
66815          , p_switch_side_flag           => 'Y'
66816          , p_merge_duplicate_code       => 'W'
66817          );
66818    --
66819    l_acc_rev_natural_side_code := 'C';  -- 4262811
66820    -- 
66821    --
66822    -- set accounting line type info
66823    --
66824    xla_ae_lines_pkg.SetAcctLineType
66825       (p_component_type             => l_component_type
66826       ,p_event_type_code            => l_event_type_code
66827       ,p_line_definition_owner_code => l_line_definition_owner_code
66828       ,p_line_definition_code       => l_line_definition_code
66829       ,p_accounting_line_code       => l_component_code
66830       ,p_accounting_line_type_code  => l_component_type_code
66831       ,p_accounting_line_appl_id    => l_component_appl_id
66832       ,p_amb_context_code           => l_amb_context_code
66833       ,p_entity_code                => l_entity_code
66834       ,p_event_class_code           => l_event_class_code);
66835    --
66836    -- set accounting class
66837    --
66838    xla_ae_lines_pkg.SetAcctClass(
66839            p_accounting_class_code  => 'INVENTORY_VALUATION'
66840          , p_ae_header_id           => l_ae_header_id
66841          );
66842 
66843    --
66844    -- set rounding class
66845    --
66846    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
66847                       'INVENTORY_VALUATION';
66848 
66849    --
66850    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
66851    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
66852    --
66853    -- bulk performance
66854    --
66855    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
66856 
66857    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
66858       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
66859 
66860    -- 4955764
66861    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66862       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
66863 
66864    -- 4458381 Public Sector Enh
66865    
66866    --
66867    -- set accounting attributes for the line type
66868    --
66869    l_entered_amt_idx := 3;
66870    l_accted_amt_idx  := 8;
66871    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
66872    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
66873    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
66874    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
66875    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
66876    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
66877    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
66878    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
66879    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
66880    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
66881    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
66882    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
66883    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
66884    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
66885    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
66889    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
66886    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
66887    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
66888 
66890    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
66891 
66892    ---------------------------------------------------------------------------------------------------------------
66893    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
66894    ---------------------------------------------------------------------------------------------------------------
66895    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
66896 
66897    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66898    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66899 
66900    IF xla_accounting_cache_pkg.GetValueChar
66901          (p_source_code         => 'LEDGER_CATEGORY_CODE'
66902          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
66903    AND l_bflow_method_code = 'PRIOR_ENTRY'
66904 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
66905    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
66906          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
66907        )
66908    THEN
66909          xla_ae_lines_pkg.BflowUpgEntry
66910            (p_business_method_code    => l_bflow_method_code
66911            ,p_business_class_code     => l_bflow_class_code
66912            ,p_balance_type            => l_balance_type_code);
66913    ELSE
66914       NULL;
66915 -- No business flow processing for business flow method of NONE.
66916    END IF;
66917 
66918    --
66919    -- call analytical criteria
66920    --
66921    
66922    --
66923    -- call description
66924    --
66925    -- No description or it is inherited.
66926    --
66927    -- call ADRs
66928    -- Bug 4922099
66929    --
66930    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66931         (NVL(l_actual_upg_option, 'N') = 'O') OR
66932         (NVL(l_enc_upg_option, 'N') = 'O')
66933       )
66934    THEN
66935    NULL;
66936    --
66937    --
66938    
66939   l_ccid := AcctDerRule_17(
66940            p_application_id           => p_application_id
66941          , p_ae_header_id             => l_ae_header_id 
66942 , p_source_1 => p_source_1
66943 , p_source_2 => p_source_2
66944          , x_transaction_coa_id       => l_adr_transaction_coa_id
66945          , x_accounting_coa_id        => l_adr_accounting_coa_id
66946          , x_value_type_code          => l_adr_value_type_code
66947          , p_side                     => 'NA'
66948    );
66949 
66950    xla_ae_lines_pkg.set_ccid(
66951     p_code_combination_id          => l_ccid
66952   , p_value_type_code              => l_adr_value_type_code
66953   , p_transaction_coa_id           => l_adr_transaction_coa_id
66954   , p_accounting_coa_id            => l_adr_accounting_coa_id
66955   , p_adr_code                     => 'INV'
66956   , p_adr_type_code                => 'S'
66957   , p_component_type               => l_component_type
66958   , p_component_code               => l_component_code
66959   , p_component_type_code          => l_component_type_code
66960   , p_component_appl_id            => l_component_appl_id
66961   , p_amb_context_code             => l_amb_context_code
66962   , p_side                         => 'NA'
66963   );
66964 
66965 
66966    --
66967    --
66968    END IF;
66969    --
66970    -- Bug 4922099
66971    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
66972           (NVL(l_enc_upg_option, 'N') = 'O')
66973         ) AND
66974         (l_bflow_method_code = 'PRIOR_ENTRY')
66975       )
66976    THEN
66977       IF
66978       --
66979       1 = 2
66980       --
66981       THEN
66982       xla_accounting_err_pkg.build_message
66983                                     (p_appli_s_name            => 'XLA'
66984                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66985                                     ,p_token_1                 => 'LINE_NUMBER'
66986                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
66987                                     ,p_token_2                 => 'LINE_TYPE_NAME'
66988                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
66989                                                                              l_component_type
66990                                                                             ,l_component_code
66991                                                                             ,l_component_type_code
66992                                                                             ,l_component_appl_id
66993                                                                             ,l_amb_context_code
66994                                                                             ,l_entity_code
66995                                                                             ,l_event_class_code
66996                                                                            )
66997                                     ,p_token_3                 => 'OWNER'
67001                                                                          )
66998                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
66999                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
67000                                                                           ,p_lookup_code    => l_component_type_code
67002                                     ,p_token_4                 => 'PRODUCT_NAME'
67003                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
67004                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
67005                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
67006                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
67007                                     ,p_ae_header_id            =>  NULL
67008                                        );
67009 
67010         IF (C_LEVEL_ERROR>= g_log_level) THEN
67011                  trace
67012                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67013                       ,p_level    => C_LEVEL_ERROR
67014                       ,p_module   => l_log_module);
67015         END IF;
67016       END IF;
67017    END IF;
67018    --
67019    --
67020    ------------------------------------------------------------------------------------------------
67021    -- 4219869 Business Flow
67022    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
67023    -- Prior Entry.  Currently, the following code is always generated.
67024    ------------------------------------------------------------------------------------------------
67025    XLA_AE_LINES_PKG.ValidateCurrentLine;
67026 
67027    ------------------------------------------------------------------------------------
67028    -- 4219869 Business Flow
67029    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
67030    ------------------------------------------------------------------------------------
67031    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67032 
67033    ----------------------------------------------------------------------------------
67034    -- 4219869 Business Flow
67035    -- Update journal entry status -- Need to generate this within IF <condition>
67036    ----------------------------------------------------------------------------------
67037    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67038          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
67039          ,p_balance_type_code => l_balance_type_code
67040          );
67041 
67042    -------------------------------------------------------------------------------------------
67043    -- 4262811 - Generate the Accrual Reversal lines
67044    -------------------------------------------------------------------------------------------
67045    BEGIN
67046       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
67047                               (g_array_event(p_event_id).array_value_num('header_index'));
67048       IF l_acc_rev_flag IS NULL THEN
67049          l_acc_rev_flag := 'N';
67050       END IF;
67051    EXCEPTION
67052       WHEN OTHERS THEN
67053          l_acc_rev_flag := 'N';
67054    END;
67055    --
67056    IF (l_acc_rev_flag = 'Y') THEN
67057 
67058        -- 4645092  ------------------------------------------------------------------------------
67059        -- To allow MPA report to determine if it should generate report process
67060        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
67061        ------------------------------------------------------------------------------------------
67062 
67063        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
67064        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
67065    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
67066    -- call ADRs
67067    -- Bug 4922099
67068    --
67069    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67070         (NVL(l_actual_upg_option, 'N') = 'O') OR
67071         (NVL(l_enc_upg_option, 'N') = 'O')
67072       )
67073    THEN
67074    NULL;
67075    --
67076    --
67077    
67078   l_ccid := AcctDerRule_17(
67079            p_application_id           => p_application_id
67080          , p_ae_header_id             => l_ae_header_id 
67081 , p_source_1 => p_source_1
67082 , p_source_2 => p_source_2
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                     => 'INV'
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
67104 
67101   , p_side                         => 'NA'
67102   );
67103 
67105    --
67106    --
67107    END IF;
67108 
67109        --
67110        -- Update the line information that should be overwritten
67111        --
67112        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
67113                                          p_header_num   => 1);
67114        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
67115 
67116        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
67117 
67118        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
67119           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
67120        END IF;
67121 
67122       --
67123       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
67124       --
67125       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
67126           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
67127       ELSE
67128           ---------------------------------------------------------------------------------------------------
67129           -- 4262811a Switch Sign
67130           ---------------------------------------------------------------------------------------------------
67131           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
67132           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67133                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67134           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67135                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67136           -- 5132302
67137           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
67138                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67139 
67140       END IF;
67141 
67142       -- 4955764
67143       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67144       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
67145 
67146 
67147       XLA_AE_LINES_PKG.ValidateCurrentLine;
67148       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67149 
67150       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67151                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
67152                ,p_balance_type_code => l_balance_type_code);
67153 
67154    END IF;
67155 
67156    -----------------------------------------------------------------------------------------
67157    -- 4262811 Multiperiod Accounting
67158    -----------------------------------------------------------------------------------------
67159      -- No MPA option is assigned.
67160 
67161 
67162 END IF;
67163 END IF;
67164 --
67165 
67166 --
67167 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67168    trace
67169       (p_msg      => 'END of AcctLineType_153'
67170       ,p_level    => C_LEVEL_PROCEDURE
67171       ,p_module   => l_log_module);
67172 END IF;
67173 --
67174 EXCEPTION
67175   WHEN xla_exceptions_pkg.application_exception THEN
67176       RAISE;
67177   WHEN OTHERS THEN
67178        xla_exceptions_pkg.raise_message
67179            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_153');
67180 END AcctLineType_153;
67181 --
67182 
67183 ---------------------------------------
67184 --
67185 -- PRIVATE FUNCTION
67186 --         AcctLineType_154
67187 --
67188 ---------------------------------------
67189 PROCEDURE AcctLineType_154 (
67190   p_application_id        IN NUMBER
67191  ,p_event_id              IN NUMBER
67192  ,p_calculate_acctd_flag  IN VARCHAR2
67193  ,p_calculate_g_l_flag    IN VARCHAR2
67194  ,p_actual_flag           IN OUT VARCHAR2
67195  ,p_balance_type_code     OUT VARCHAR2
67196  ,p_gain_or_loss_ref      OUT VARCHAR2
67197  
67198 --Transaction Account
67199  , p_source_1            IN NUMBER
67200 --Journal Line Type
67201  , p_source_2            IN VARCHAR2
67202 --Entered Amount
67203  , p_source_3            IN NUMBER
67204 --First Distribution Identifier
67205  , p_source_5            IN NUMBER
67206 --Distribution Type
67207  , p_source_6            IN VARCHAR2
67208 --Currency Code
67209  , p_source_7            IN VARCHAR2
67210 --Currency Conversion Date
67211  , p_source_8            IN DATE
67212 --Currency Conversion Rate
67213  , p_source_9            IN NUMBER
67214 --Currency Conversion Type
67215  , p_source_10            IN VARCHAR2
67216 --Accounted Amount
67217  , p_source_11            IN NUMBER
67218 )
67219 IS
67220 
67221 l_component_type              VARCHAR2(80);
67222 l_component_code              VARCHAR2(30);
67223 l_component_type_code         VARCHAR2(1);
67224 l_component_appl_id           INTEGER;
67225 l_amb_context_code            VARCHAR2(30);
67226 l_entity_code                 VARCHAR2(30);
67227 l_event_class_code            VARCHAR2(30);
67228 l_ae_header_id                NUMBER;
67229 l_event_type_code             VARCHAR2(30);
67230 l_line_definition_code        VARCHAR2(30);
67231 l_line_definition_owner_code  VARCHAR2(1);
67232 --
67236 l_adr_transaction_coa_id      NUMBER;
67233 -- adr variables
67234 l_segment                     VARCHAR2(30);
67235 l_ccid                        NUMBER;
67237 l_adr_accounting_coa_id       NUMBER;
67238 l_adr_flexfield_segment_code  VARCHAR2(30);
67239 l_adr_flex_value_set_id       NUMBER;
67240 l_adr_value_type_code         VARCHAR2(30);
67241 l_adr_value_combination_id    NUMBER;
67242 l_adr_value_segment_code      VARCHAR2(30);
67243 
67244 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
67245 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
67246 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
67247 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
67248 
67249 -- 4262811 Variables ------------------------------------------------------------------------------------------
67250 l_entered_amt_idx             NUMBER;
67251 l_accted_amt_idx              NUMBER;
67252 l_acc_rev_flag                VARCHAR2(1);
67253 l_accrual_line_num            NUMBER;
67254 l_tmp_amt                     NUMBER;
67255 l_acc_rev_natural_side_code   VARCHAR2(1);
67256 
67257 l_num_entries                 NUMBER;
67258 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
67259 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
67260 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
67261 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
67262 l_recog_line_1                NUMBER;
67263 l_recog_line_2                NUMBER;
67264 
67265 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
67266 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
67267 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
67268 
67269 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
67270 
67271 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
67272 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
67273 
67274 ---------------------------------------------------------------------------------------------------------------
67275 
67276 
67277 --
67278 -- bulk performance
67279 --
67280 l_balance_type_code           VARCHAR2(1);
67281 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
67282 l_log_module                  VARCHAR2(240);
67283 
67284 --
67285 -- Upgrade strategy
67286 --
67287 l_actual_upg_option           VARCHAR2(1);
67288 l_enc_upg_option           VARCHAR2(1);
67289 
67290 --
67291 BEGIN
67292 --
67293 IF g_log_enabled THEN
67294       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_154';
67295 END IF;
67296 --
67297 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67298 
67299       trace
67300          (p_msg      => 'BEGIN of AcctLineType_154'
67301          ,p_level    => C_LEVEL_PROCEDURE
67302          ,p_module   => l_log_module);
67303 
67304 END IF;
67305 --
67306 l_component_type             := 'AMB_JLT';
67307 l_component_code             := 'INV';
67308 l_component_type_code        := 'S';
67309 l_component_appl_id          :=  555;
67310 l_amb_context_code           := 'DEFAULT';
67311 l_entity_code                := 'PRODUCTION';
67312 l_event_class_code           := 'BATCH_MATERIAL';
67313 l_event_type_code            := 'CERT';
67314 l_line_definition_owner_code := 'S';
67315 l_line_definition_code       := 'BATCH_COMPLETION';
67316 --
67317 l_balance_type_code          := 'A';
67318 l_segment                     := NULL;
67319 l_ccid                        := NULL;
67320 l_adr_transaction_coa_id      := NULL;
67321 l_adr_accounting_coa_id       := NULL;
67322 l_adr_flexfield_segment_code  := NULL;
67323 l_adr_flex_value_set_id       := NULL;
67324 l_adr_value_type_code         := NULL;
67325 l_adr_value_combination_id    := NULL;
67326 l_adr_value_segment_code      := NULL;
67327 
67328 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
67329 l_bflow_class_code           := '';    -- 4219869 Business Flow
67330 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
67331 l_budgetary_control_flag     := 'N';
67332 
67333 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
67334 l_bflow_applied_to_amt       := NULL; -- 5132302
67335 l_entered_amt_idx            := NULL;          -- 4262811
67336 l_accted_amt_idx             := NULL;          -- 4262811
67337 l_acc_rev_flag               := NULL;          -- 4262811
67338 l_accrual_line_num           := NULL;          -- 4262811
67339 l_tmp_amt                    := NULL;          -- 4262811
67340 --
67341  
67342 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
67343     l_balance_type_code <> 'B' THEN
67344 IF NVL(p_source_2,'
67345 ') =  'INV'
67346  THEN 
67347 
67348    --
67349    XLA_AE_LINES_PKG.SetNewLine;
67350 
67351    p_balance_type_code          := l_balance_type_code;
67352    -- set the flag so later we will know whether the gain loss line needs to be created
67353    
67354    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
67355      p_actual_flag :='A';
67356    END IF;
67357 
67358    --
67359    -- bulk performance
67360    --
67361    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
67365    --
67362                                       p_header_num   => 0); -- 4262811
67363    --
67364    -- set accounting line options
67366    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
67367            p_natural_side_code          => 'D'
67368          , p_gain_or_loss_flag          => 'N'
67369          , p_gl_transfer_mode_code      => 'D'
67370          , p_acct_entry_type_code       => 'A'
67371          , p_switch_side_flag           => 'Y'
67372          , p_merge_duplicate_code       => 'W'
67373          );
67374    --
67375    l_acc_rev_natural_side_code := 'C';  -- 4262811
67376    -- 
67377    --
67378    -- set accounting line type info
67379    --
67380    xla_ae_lines_pkg.SetAcctLineType
67381       (p_component_type             => l_component_type
67382       ,p_event_type_code            => l_event_type_code
67383       ,p_line_definition_owner_code => l_line_definition_owner_code
67384       ,p_line_definition_code       => l_line_definition_code
67385       ,p_accounting_line_code       => l_component_code
67386       ,p_accounting_line_type_code  => l_component_type_code
67387       ,p_accounting_line_appl_id    => l_component_appl_id
67388       ,p_amb_context_code           => l_amb_context_code
67389       ,p_entity_code                => l_entity_code
67390       ,p_event_class_code           => l_event_class_code);
67391    --
67392    -- set accounting class
67393    --
67394    xla_ae_lines_pkg.SetAcctClass(
67395            p_accounting_class_code  => 'INVENTORY_VALUATION'
67396          , p_ae_header_id           => l_ae_header_id
67397          );
67398 
67399    --
67400    -- set rounding class
67401    --
67402    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
67403                       'INVENTORY_VALUATION';
67404 
67405    --
67406    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
67407    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
67408    --
67409    -- bulk performance
67410    --
67411    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
67412 
67413    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
67414       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
67415 
67416    -- 4955764
67417    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67418       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
67419 
67420    -- 4458381 Public Sector Enh
67421    
67422    --
67423    -- set accounting attributes for the line type
67424    --
67425    l_entered_amt_idx := 3;
67426    l_accted_amt_idx  := 8;
67427    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
67428    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
67429    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
67430    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
67431    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
67432    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
67433    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
67434    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
67435    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
67436    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
67437    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
67438    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
67439    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
67440    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
67441    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
67442    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
67443    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
67444 
67445    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
67446    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
67447 
67448    ---------------------------------------------------------------------------------------------------------------
67449    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
67450    ---------------------------------------------------------------------------------------------------------------
67451    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
67452 
67453    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67454    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67455 
67456    IF xla_accounting_cache_pkg.GetValueChar
67457          (p_source_code         => 'LEDGER_CATEGORY_CODE'
67458          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
67459    AND l_bflow_method_code = 'PRIOR_ENTRY'
67460 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
67461    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
67462          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
67463        )
67464    THEN
67465          xla_ae_lines_pkg.BflowUpgEntry
67466            (p_business_method_code    => l_bflow_method_code
67467            ,p_business_class_code     => l_bflow_class_code
67471 -- No business flow processing for business flow method of NONE.
67468            ,p_balance_type            => l_balance_type_code);
67469    ELSE
67470       NULL;
67472    END IF;
67473 
67474    --
67475    -- call analytical criteria
67476    --
67477    
67478    --
67479    -- call description
67480    --
67481    -- No description or it is inherited.
67482    --
67483    -- call ADRs
67484    -- Bug 4922099
67485    --
67486    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67487         (NVL(l_actual_upg_option, 'N') = 'O') OR
67488         (NVL(l_enc_upg_option, 'N') = 'O')
67489       )
67490    THEN
67491    NULL;
67492    --
67493    --
67494    
67495   l_ccid := AcctDerRule_17(
67496            p_application_id           => p_application_id
67497          , p_ae_header_id             => l_ae_header_id 
67498 , p_source_1 => p_source_1
67499 , p_source_2 => p_source_2
67500          , x_transaction_coa_id       => l_adr_transaction_coa_id
67501          , x_accounting_coa_id        => l_adr_accounting_coa_id
67502          , x_value_type_code          => l_adr_value_type_code
67503          , p_side                     => 'NA'
67504    );
67505 
67506    xla_ae_lines_pkg.set_ccid(
67507     p_code_combination_id          => l_ccid
67508   , p_value_type_code              => l_adr_value_type_code
67509   , p_transaction_coa_id           => l_adr_transaction_coa_id
67510   , p_accounting_coa_id            => l_adr_accounting_coa_id
67511   , p_adr_code                     => 'INV'
67512   , p_adr_type_code                => 'S'
67513   , p_component_type               => l_component_type
67514   , p_component_code               => l_component_code
67515   , p_component_type_code          => l_component_type_code
67516   , p_component_appl_id            => l_component_appl_id
67517   , p_amb_context_code             => l_amb_context_code
67518   , p_side                         => 'NA'
67519   );
67520 
67521 
67522    --
67523    --
67524    END IF;
67525    --
67526    -- Bug 4922099
67527    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
67528           (NVL(l_enc_upg_option, 'N') = 'O')
67529         ) AND
67530         (l_bflow_method_code = 'PRIOR_ENTRY')
67531       )
67532    THEN
67533       IF
67534       --
67535       1 = 2
67536       --
67537       THEN
67538       xla_accounting_err_pkg.build_message
67539                                     (p_appli_s_name            => 'XLA'
67540                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67541                                     ,p_token_1                 => 'LINE_NUMBER'
67542                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
67543                                     ,p_token_2                 => 'LINE_TYPE_NAME'
67544                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
67545                                                                              l_component_type
67546                                                                             ,l_component_code
67547                                                                             ,l_component_type_code
67548                                                                             ,l_component_appl_id
67549                                                                             ,l_amb_context_code
67550                                                                             ,l_entity_code
67551                                                                             ,l_event_class_code
67552                                                                            )
67553                                     ,p_token_3                 => 'OWNER'
67554                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
67555                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
67556                                                                           ,p_lookup_code    => l_component_type_code
67557                                                                          )
67558                                     ,p_token_4                 => 'PRODUCT_NAME'
67559                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
67560                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
67561                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
67562                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
67563                                     ,p_ae_header_id            =>  NULL
67564                                        );
67565 
67566         IF (C_LEVEL_ERROR>= g_log_level) THEN
67567                  trace
67568                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67569                       ,p_level    => C_LEVEL_ERROR
67570                       ,p_module   => l_log_module);
67571         END IF;
67572       END IF;
67573    END IF;
67574    --
67575    --
67576    ------------------------------------------------------------------------------------------------
67577    -- 4219869 Business Flow
67578    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
67582 
67579    -- Prior Entry.  Currently, the following code is always generated.
67580    ------------------------------------------------------------------------------------------------
67581    XLA_AE_LINES_PKG.ValidateCurrentLine;
67583    ------------------------------------------------------------------------------------
67584    -- 4219869 Business Flow
67585    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
67586    ------------------------------------------------------------------------------------
67587    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67588 
67589    ----------------------------------------------------------------------------------
67590    -- 4219869 Business Flow
67591    -- Update journal entry status -- Need to generate this within IF <condition>
67592    ----------------------------------------------------------------------------------
67593    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67594          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
67595          ,p_balance_type_code => l_balance_type_code
67596          );
67597 
67598    -------------------------------------------------------------------------------------------
67599    -- 4262811 - Generate the Accrual Reversal lines
67600    -------------------------------------------------------------------------------------------
67601    BEGIN
67602       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
67603                               (g_array_event(p_event_id).array_value_num('header_index'));
67604       IF l_acc_rev_flag IS NULL THEN
67605          l_acc_rev_flag := 'N';
67606       END IF;
67607    EXCEPTION
67608       WHEN OTHERS THEN
67609          l_acc_rev_flag := 'N';
67610    END;
67611    --
67612    IF (l_acc_rev_flag = 'Y') THEN
67613 
67614        -- 4645092  ------------------------------------------------------------------------------
67615        -- To allow MPA report to determine if it should generate report process
67616        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
67617        ------------------------------------------------------------------------------------------
67618 
67619        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
67620        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
67621    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
67622    -- call ADRs
67623    -- Bug 4922099
67624    --
67625    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67626         (NVL(l_actual_upg_option, 'N') = 'O') OR
67627         (NVL(l_enc_upg_option, 'N') = 'O')
67628       )
67629    THEN
67630    NULL;
67631    --
67632    --
67633    
67634   l_ccid := AcctDerRule_17(
67635            p_application_id           => p_application_id
67636          , p_ae_header_id             => l_ae_header_id 
67637 , p_source_1 => p_source_1
67638 , p_source_2 => p_source_2
67639          , x_transaction_coa_id       => l_adr_transaction_coa_id
67640          , x_accounting_coa_id        => l_adr_accounting_coa_id
67641          , x_value_type_code          => l_adr_value_type_code
67642          , p_side                     => 'NA'
67643    );
67644 
67645    xla_ae_lines_pkg.set_ccid(
67646     p_code_combination_id          => l_ccid
67647   , p_value_type_code              => l_adr_value_type_code
67648   , p_transaction_coa_id           => l_adr_transaction_coa_id
67649   , p_accounting_coa_id            => l_adr_accounting_coa_id
67650   , p_adr_code                     => 'INV'
67651   , p_adr_type_code                => 'S'
67652   , p_component_type               => l_component_type
67653   , p_component_code               => l_component_code
67654   , p_component_type_code          => l_component_type_code
67655   , p_component_appl_id            => l_component_appl_id
67656   , p_amb_context_code             => l_amb_context_code
67657   , p_side                         => 'NA'
67658   );
67659 
67660 
67661    --
67662    --
67663    END IF;
67664 
67665        --
67666        -- Update the line information that should be overwritten
67667        --
67668        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
67669                                          p_header_num   => 1);
67670        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
67671 
67672        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
67673 
67674        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
67675           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
67676        END IF;
67677 
67678       --
67679       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
67680       --
67681       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
67682           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
67683       ELSE
67684           ---------------------------------------------------------------------------------------------------
67685           -- 4262811a Switch Sign
67686           ---------------------------------------------------------------------------------------------------
67687           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
67688           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67692           -- 5132302
67689                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67690           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67691                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67693           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
67694                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67695 
67696       END IF;
67697 
67698       -- 4955764
67699       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67700       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
67701 
67702 
67703       XLA_AE_LINES_PKG.ValidateCurrentLine;
67704       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67705 
67706       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67707                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
67708                ,p_balance_type_code => l_balance_type_code);
67709 
67710    END IF;
67711 
67712    -----------------------------------------------------------------------------------------
67713    -- 4262811 Multiperiod Accounting
67714    -----------------------------------------------------------------------------------------
67715      -- No MPA option is assigned.
67716 
67717 
67718 END IF;
67719 END IF;
67720 --
67721 
67722 --
67723 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67724    trace
67725       (p_msg      => 'END of AcctLineType_154'
67726       ,p_level    => C_LEVEL_PROCEDURE
67727       ,p_module   => l_log_module);
67728 END IF;
67729 --
67730 EXCEPTION
67731   WHEN xla_exceptions_pkg.application_exception THEN
67732       RAISE;
67733   WHEN OTHERS THEN
67734        xla_exceptions_pkg.raise_message
67735            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_154');
67736 END AcctLineType_154;
67737 --
67738 
67739 ---------------------------------------
67740 --
67741 -- PRIVATE FUNCTION
67742 --         AcctLineType_155
67743 --
67744 ---------------------------------------
67745 PROCEDURE AcctLineType_155 (
67746   p_application_id        IN NUMBER
67747  ,p_event_id              IN NUMBER
67748  ,p_calculate_acctd_flag  IN VARCHAR2
67749  ,p_calculate_g_l_flag    IN VARCHAR2
67750  ,p_actual_flag           IN OUT VARCHAR2
67751  ,p_balance_type_code     OUT VARCHAR2
67752  ,p_gain_or_loss_ref      OUT VARCHAR2
67753  
67754 --Transaction Account
67755  , p_source_1            IN NUMBER
67756 --Journal Line Type
67757  , p_source_2            IN VARCHAR2
67758 --Entered Amount
67759  , p_source_3            IN NUMBER
67760 --First Distribution Identifier
67761  , p_source_5            IN NUMBER
67762 --Distribution Type
67763  , p_source_6            IN VARCHAR2
67764 --Currency Code
67765  , p_source_7            IN VARCHAR2
67766 --Currency Conversion Date
67767  , p_source_8            IN DATE
67768 --Currency Conversion Rate
67769  , p_source_9            IN NUMBER
67770 --Currency Conversion Type
67771  , p_source_10            IN VARCHAR2
67772 --Accounted Amount
67773  , p_source_11            IN NUMBER
67774 )
67775 IS
67776 
67777 l_component_type              VARCHAR2(80);
67778 l_component_code              VARCHAR2(30);
67779 l_component_type_code         VARCHAR2(1);
67780 l_component_appl_id           INTEGER;
67781 l_amb_context_code            VARCHAR2(30);
67782 l_entity_code                 VARCHAR2(30);
67783 l_event_class_code            VARCHAR2(30);
67784 l_ae_header_id                NUMBER;
67785 l_event_type_code             VARCHAR2(30);
67786 l_line_definition_code        VARCHAR2(30);
67787 l_line_definition_owner_code  VARCHAR2(1);
67788 --
67789 -- adr variables
67790 l_segment                     VARCHAR2(30);
67791 l_ccid                        NUMBER;
67792 l_adr_transaction_coa_id      NUMBER;
67793 l_adr_accounting_coa_id       NUMBER;
67794 l_adr_flexfield_segment_code  VARCHAR2(30);
67795 l_adr_flex_value_set_id       NUMBER;
67796 l_adr_value_type_code         VARCHAR2(30);
67797 l_adr_value_combination_id    NUMBER;
67798 l_adr_value_segment_code      VARCHAR2(30);
67799 
67800 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
67801 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
67802 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
67803 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
67804 
67805 -- 4262811 Variables ------------------------------------------------------------------------------------------
67806 l_entered_amt_idx             NUMBER;
67807 l_accted_amt_idx              NUMBER;
67808 l_acc_rev_flag                VARCHAR2(1);
67809 l_accrual_line_num            NUMBER;
67810 l_tmp_amt                     NUMBER;
67811 l_acc_rev_natural_side_code   VARCHAR2(1);
67812 
67813 l_num_entries                 NUMBER;
67814 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
67815 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
67816 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
67817 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
67818 l_recog_line_1                NUMBER;
67819 l_recog_line_2                NUMBER;
67823 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
67820 
67821 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
67822 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
67824 
67825 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
67826 
67827 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
67828 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
67829 
67830 ---------------------------------------------------------------------------------------------------------------
67831 
67832 
67833 --
67834 -- bulk performance
67835 --
67836 l_balance_type_code           VARCHAR2(1);
67837 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
67838 l_log_module                  VARCHAR2(240);
67839 
67840 --
67841 -- Upgrade strategy
67842 --
67843 l_actual_upg_option           VARCHAR2(1);
67844 l_enc_upg_option           VARCHAR2(1);
67845 
67846 --
67847 BEGIN
67848 --
67849 IF g_log_enabled THEN
67850       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_155';
67851 END IF;
67852 --
67853 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67854 
67855       trace
67856          (p_msg      => 'BEGIN of AcctLineType_155'
67857          ,p_level    => C_LEVEL_PROCEDURE
67858          ,p_module   => l_log_module);
67859 
67860 END IF;
67861 --
67862 l_component_type             := 'AMB_JLT';
67863 l_component_code             := 'INV';
67864 l_component_type_code        := 'S';
67865 l_component_appl_id          :=  555;
67866 l_amb_context_code           := 'DEFAULT';
67867 l_entity_code                := 'PURCHASING';
67868 l_event_class_code           := 'DELIVER';
67869 l_event_type_code            := 'PO_RECEIPT_ADJ';
67870 l_line_definition_owner_code := 'S';
67871 l_line_definition_code       := 'PO_RECEIPT_ADJ';
67872 --
67873 l_balance_type_code          := 'A';
67874 l_segment                     := NULL;
67875 l_ccid                        := NULL;
67876 l_adr_transaction_coa_id      := NULL;
67877 l_adr_accounting_coa_id       := NULL;
67878 l_adr_flexfield_segment_code  := NULL;
67879 l_adr_flex_value_set_id       := NULL;
67880 l_adr_value_type_code         := NULL;
67881 l_adr_value_combination_id    := NULL;
67882 l_adr_value_segment_code      := NULL;
67883 
67884 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
67885 l_bflow_class_code           := '';    -- 4219869 Business Flow
67886 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
67887 l_budgetary_control_flag     := 'N';
67888 
67889 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
67890 l_bflow_applied_to_amt       := NULL; -- 5132302
67891 l_entered_amt_idx            := NULL;          -- 4262811
67892 l_accted_amt_idx             := NULL;          -- 4262811
67893 l_acc_rev_flag               := NULL;          -- 4262811
67894 l_accrual_line_num           := NULL;          -- 4262811
67895 l_tmp_amt                    := NULL;          -- 4262811
67896 --
67897  
67898 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
67899     l_balance_type_code <> 'B' THEN
67900 IF NVL(p_source_2,'
67901 ') =  'INV'
67902  THEN 
67903 
67904    --
67905    XLA_AE_LINES_PKG.SetNewLine;
67906 
67907    p_balance_type_code          := l_balance_type_code;
67908    -- set the flag so later we will know whether the gain loss line needs to be created
67909    
67910    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
67911      p_actual_flag :='A';
67912    END IF;
67913 
67914    --
67915    -- bulk performance
67916    --
67917    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
67918                                       p_header_num   => 0); -- 4262811
67919    --
67920    -- set accounting line options
67921    --
67922    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
67923            p_natural_side_code          => 'D'
67924          , p_gain_or_loss_flag          => 'N'
67925          , p_gl_transfer_mode_code      => 'D'
67926          , p_acct_entry_type_code       => 'A'
67927          , p_switch_side_flag           => 'Y'
67928          , p_merge_duplicate_code       => 'W'
67929          );
67930    --
67931    l_acc_rev_natural_side_code := 'C';  -- 4262811
67932    -- 
67933    --
67934    -- set accounting line type info
67935    --
67936    xla_ae_lines_pkg.SetAcctLineType
67937       (p_component_type             => l_component_type
67938       ,p_event_type_code            => l_event_type_code
67939       ,p_line_definition_owner_code => l_line_definition_owner_code
67940       ,p_line_definition_code       => l_line_definition_code
67941       ,p_accounting_line_code       => l_component_code
67942       ,p_accounting_line_type_code  => l_component_type_code
67943       ,p_accounting_line_appl_id    => l_component_appl_id
67944       ,p_amb_context_code           => l_amb_context_code
67945       ,p_entity_code                => l_entity_code
67946       ,p_event_class_code           => l_event_class_code);
67947    --
67948    -- set accounting class
67949    --
67950    xla_ae_lines_pkg.SetAcctClass(
67951            p_accounting_class_code  => 'INVENTORY_VALUATION'
67952          , p_ae_header_id           => l_ae_header_id
67953          );
67954 
67958    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
67955    --
67956    -- set rounding class
67957    --
67959                       'INVENTORY_VALUATION';
67960 
67961    --
67962    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
67963    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
67964    --
67965    -- bulk performance
67966    --
67967    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
67968 
67969    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
67970       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
67971 
67972    -- 4955764
67973    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67974       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
67975 
67976    -- 4458381 Public Sector Enh
67977    
67978    --
67979    -- set accounting attributes for the line type
67980    --
67981    l_entered_amt_idx := 3;
67982    l_accted_amt_idx  := 8;
67983    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
67984    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
67985    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
67986    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
67987    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
67988    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
67989    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
67990    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
67991    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
67992    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
67993    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
67994    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
67995    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
67996    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
67997    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
67998    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
67999    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
68000 
68001    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
68002    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
68003 
68004    ---------------------------------------------------------------------------------------------------------------
68005    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
68006    ---------------------------------------------------------------------------------------------------------------
68007    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
68008 
68009    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68010    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68011 
68012    IF xla_accounting_cache_pkg.GetValueChar
68013          (p_source_code         => 'LEDGER_CATEGORY_CODE'
68014          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
68015    AND l_bflow_method_code = 'PRIOR_ENTRY'
68016 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
68017    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
68018          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
68019        )
68020    THEN
68021          xla_ae_lines_pkg.BflowUpgEntry
68022            (p_business_method_code    => l_bflow_method_code
68023            ,p_business_class_code     => l_bflow_class_code
68024            ,p_balance_type            => l_balance_type_code);
68025    ELSE
68026       NULL;
68027 -- No business flow processing for business flow method of NONE.
68028    END IF;
68029 
68030    --
68031    -- call analytical criteria
68032    --
68033    
68034    --
68035    -- call description
68036    --
68037    -- No description or it is inherited.
68038    --
68039    -- call ADRs
68040    -- Bug 4922099
68041    --
68042    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68043         (NVL(l_actual_upg_option, 'N') = 'O') OR
68044         (NVL(l_enc_upg_option, 'N') = 'O')
68045       )
68046    THEN
68047    NULL;
68048    --
68049    --
68050    
68051   l_ccid := AcctDerRule_17(
68052            p_application_id           => p_application_id
68053          , p_ae_header_id             => l_ae_header_id 
68054 , p_source_1 => p_source_1
68055 , p_source_2 => p_source_2
68056          , x_transaction_coa_id       => l_adr_transaction_coa_id
68057          , x_accounting_coa_id        => l_adr_accounting_coa_id
68058          , x_value_type_code          => l_adr_value_type_code
68059          , p_side                     => 'NA'
68060    );
68061 
68062    xla_ae_lines_pkg.set_ccid(
68063     p_code_combination_id          => l_ccid
68064   , p_value_type_code              => l_adr_value_type_code
68065   , p_transaction_coa_id           => l_adr_transaction_coa_id
68066   , p_accounting_coa_id            => l_adr_accounting_coa_id
68067   , p_adr_code                     => 'INV'
68068   , p_adr_type_code                => 'S'
68069   , p_component_type               => l_component_type
68073   , p_amb_context_code             => l_amb_context_code
68070   , p_component_code               => l_component_code
68071   , p_component_type_code          => l_component_type_code
68072   , p_component_appl_id            => l_component_appl_id
68074   , p_side                         => 'NA'
68075   );
68076 
68077 
68078    --
68079    --
68080    END IF;
68081    --
68082    -- Bug 4922099
68083    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
68084           (NVL(l_enc_upg_option, 'N') = 'O')
68085         ) AND
68086         (l_bflow_method_code = 'PRIOR_ENTRY')
68087       )
68088    THEN
68089       IF
68090       --
68091       1 = 2
68092       --
68093       THEN
68094       xla_accounting_err_pkg.build_message
68095                                     (p_appli_s_name            => 'XLA'
68096                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68097                                     ,p_token_1                 => 'LINE_NUMBER'
68098                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
68099                                     ,p_token_2                 => 'LINE_TYPE_NAME'
68100                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
68101                                                                              l_component_type
68102                                                                             ,l_component_code
68103                                                                             ,l_component_type_code
68104                                                                             ,l_component_appl_id
68105                                                                             ,l_amb_context_code
68106                                                                             ,l_entity_code
68107                                                                             ,l_event_class_code
68108                                                                            )
68109                                     ,p_token_3                 => 'OWNER'
68110                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
68111                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
68112                                                                           ,p_lookup_code    => l_component_type_code
68113                                                                          )
68114                                     ,p_token_4                 => 'PRODUCT_NAME'
68115                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
68116                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
68117                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
68118                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
68119                                     ,p_ae_header_id            =>  NULL
68120                                        );
68121 
68122         IF (C_LEVEL_ERROR>= g_log_level) THEN
68123                  trace
68124                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68125                       ,p_level    => C_LEVEL_ERROR
68126                       ,p_module   => l_log_module);
68127         END IF;
68128       END IF;
68129    END IF;
68130    --
68131    --
68132    ------------------------------------------------------------------------------------------------
68133    -- 4219869 Business Flow
68134    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
68135    -- Prior Entry.  Currently, the following code is always generated.
68136    ------------------------------------------------------------------------------------------------
68137    XLA_AE_LINES_PKG.ValidateCurrentLine;
68138 
68139    ------------------------------------------------------------------------------------
68140    -- 4219869 Business Flow
68141    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
68142    ------------------------------------------------------------------------------------
68143    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68144 
68145    ----------------------------------------------------------------------------------
68146    -- 4219869 Business Flow
68147    -- Update journal entry status -- Need to generate this within IF <condition>
68148    ----------------------------------------------------------------------------------
68149    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68150          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
68151          ,p_balance_type_code => l_balance_type_code
68152          );
68153 
68154    -------------------------------------------------------------------------------------------
68155    -- 4262811 - Generate the Accrual Reversal lines
68156    -------------------------------------------------------------------------------------------
68157    BEGIN
68158       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
68159                               (g_array_event(p_event_id).array_value_num('header_index'));
68160       IF l_acc_rev_flag IS NULL THEN
68161          l_acc_rev_flag := 'N';
68162       END IF;
68163    EXCEPTION
68164       WHEN OTHERS THEN
68165          l_acc_rev_flag := 'N';
68166    END;
68167    --
68168    IF (l_acc_rev_flag = 'Y') THEN
68172        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
68169 
68170        -- 4645092  ------------------------------------------------------------------------------
68171        -- To allow MPA report to determine if it should generate report process
68173        ------------------------------------------------------------------------------------------
68174 
68175        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
68176        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
68177    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
68178    -- call ADRs
68179    -- Bug 4922099
68180    --
68181    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68182         (NVL(l_actual_upg_option, 'N') = 'O') OR
68183         (NVL(l_enc_upg_option, 'N') = 'O')
68184       )
68185    THEN
68186    NULL;
68187    --
68188    --
68189    
68190   l_ccid := AcctDerRule_17(
68191            p_application_id           => p_application_id
68192          , p_ae_header_id             => l_ae_header_id 
68193 , p_source_1 => p_source_1
68194 , p_source_2 => p_source_2
68195          , x_transaction_coa_id       => l_adr_transaction_coa_id
68196          , x_accounting_coa_id        => l_adr_accounting_coa_id
68197          , x_value_type_code          => l_adr_value_type_code
68198          , p_side                     => 'NA'
68199    );
68200 
68201    xla_ae_lines_pkg.set_ccid(
68202     p_code_combination_id          => l_ccid
68203   , p_value_type_code              => l_adr_value_type_code
68204   , p_transaction_coa_id           => l_adr_transaction_coa_id
68205   , p_accounting_coa_id            => l_adr_accounting_coa_id
68206   , p_adr_code                     => 'INV'
68207   , p_adr_type_code                => 'S'
68208   , p_component_type               => l_component_type
68209   , p_component_code               => l_component_code
68210   , p_component_type_code          => l_component_type_code
68211   , p_component_appl_id            => l_component_appl_id
68212   , p_amb_context_code             => l_amb_context_code
68213   , p_side                         => 'NA'
68214   );
68215 
68216 
68217    --
68218    --
68219    END IF;
68220 
68221        --
68222        -- Update the line information that should be overwritten
68223        --
68224        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
68225                                          p_header_num   => 1);
68226        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
68227 
68228        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
68229 
68230        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
68231           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
68232        END IF;
68233 
68234       --
68235       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
68236       --
68237       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
68238           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
68239       ELSE
68240           ---------------------------------------------------------------------------------------------------
68241           -- 4262811a Switch Sign
68242           ---------------------------------------------------------------------------------------------------
68243           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
68244           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68245                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68246           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68247                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68248           -- 5132302
68249           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
68250                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68251 
68252       END IF;
68253 
68254       -- 4955764
68255       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68256       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
68257 
68258 
68259       XLA_AE_LINES_PKG.ValidateCurrentLine;
68260       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68261 
68262       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68263                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
68264                ,p_balance_type_code => l_balance_type_code);
68265 
68266    END IF;
68267 
68268    -----------------------------------------------------------------------------------------
68269    -- 4262811 Multiperiod Accounting
68270    -----------------------------------------------------------------------------------------
68271      -- No MPA option is assigned.
68272 
68273 
68274 END IF;
68275 END IF;
68276 --
68277 
68278 --
68279 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68280    trace
68281       (p_msg      => 'END of AcctLineType_155'
68282       ,p_level    => C_LEVEL_PROCEDURE
68283       ,p_module   => l_log_module);
68284 END IF;
68285 --
68286 EXCEPTION
68290        xla_exceptions_pkg.raise_message
68287   WHEN xla_exceptions_pkg.application_exception THEN
68288       RAISE;
68289   WHEN OTHERS THEN
68291            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_155');
68292 END AcctLineType_155;
68293 --
68294 
68295 ---------------------------------------
68296 --
68297 -- PRIVATE FUNCTION
68298 --         AcctLineType_156
68299 --
68300 ---------------------------------------
68301 PROCEDURE AcctLineType_156 (
68302   p_application_id        IN NUMBER
68303  ,p_event_id              IN NUMBER
68304  ,p_calculate_acctd_flag  IN VARCHAR2
68305  ,p_calculate_g_l_flag    IN VARCHAR2
68306  ,p_actual_flag           IN OUT VARCHAR2
68307  ,p_balance_type_code     OUT VARCHAR2
68308  ,p_gain_or_loss_ref      OUT VARCHAR2
68309  
68310 --Transaction Account
68311  , p_source_1            IN NUMBER
68312 --Journal Line Type
68313  , p_source_2            IN VARCHAR2
68314 --Entered Amount
68315  , p_source_3            IN NUMBER
68316 --First Distribution Identifier
68317  , p_source_5            IN NUMBER
68318 --Distribution Type
68319  , p_source_6            IN VARCHAR2
68320 --Currency Code
68321  , p_source_7            IN VARCHAR2
68322 --Currency Conversion Date
68323  , p_source_8            IN DATE
68324 --Currency Conversion Rate
68325  , p_source_9            IN NUMBER
68326 --Currency Conversion Type
68327  , p_source_10            IN VARCHAR2
68328 --Accounted Amount
68329  , p_source_11            IN NUMBER
68330 )
68331 IS
68332 
68333 l_component_type              VARCHAR2(80);
68334 l_component_code              VARCHAR2(30);
68335 l_component_type_code         VARCHAR2(1);
68336 l_component_appl_id           INTEGER;
68337 l_amb_context_code            VARCHAR2(30);
68338 l_entity_code                 VARCHAR2(30);
68339 l_event_class_code            VARCHAR2(30);
68340 l_ae_header_id                NUMBER;
68341 l_event_type_code             VARCHAR2(30);
68342 l_line_definition_code        VARCHAR2(30);
68343 l_line_definition_owner_code  VARCHAR2(1);
68344 --
68345 -- adr variables
68346 l_segment                     VARCHAR2(30);
68347 l_ccid                        NUMBER;
68348 l_adr_transaction_coa_id      NUMBER;
68349 l_adr_accounting_coa_id       NUMBER;
68350 l_adr_flexfield_segment_code  VARCHAR2(30);
68351 l_adr_flex_value_set_id       NUMBER;
68352 l_adr_value_type_code         VARCHAR2(30);
68353 l_adr_value_combination_id    NUMBER;
68354 l_adr_value_segment_code      VARCHAR2(30);
68355 
68356 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
68357 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
68358 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
68359 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
68360 
68361 -- 4262811 Variables ------------------------------------------------------------------------------------------
68362 l_entered_amt_idx             NUMBER;
68363 l_accted_amt_idx              NUMBER;
68364 l_acc_rev_flag                VARCHAR2(1);
68365 l_accrual_line_num            NUMBER;
68366 l_tmp_amt                     NUMBER;
68367 l_acc_rev_natural_side_code   VARCHAR2(1);
68368 
68369 l_num_entries                 NUMBER;
68370 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
68371 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
68372 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
68373 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
68374 l_recog_line_1                NUMBER;
68375 l_recog_line_2                NUMBER;
68376 
68377 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
68378 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
68379 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
68380 
68381 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
68382 
68383 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
68384 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
68385 
68386 ---------------------------------------------------------------------------------------------------------------
68387 
68388 
68389 --
68390 -- bulk performance
68391 --
68392 l_balance_type_code           VARCHAR2(1);
68393 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
68394 l_log_module                  VARCHAR2(240);
68395 
68396 --
68397 -- Upgrade strategy
68398 --
68399 l_actual_upg_option           VARCHAR2(1);
68400 l_enc_upg_option           VARCHAR2(1);
68401 
68402 --
68403 BEGIN
68404 --
68405 IF g_log_enabled THEN
68406       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_156';
68407 END IF;
68408 --
68409 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68410 
68411       trace
68412          (p_msg      => 'BEGIN of AcctLineType_156'
68413          ,p_level    => C_LEVEL_PROCEDURE
68414          ,p_module   => l_log_module);
68415 
68416 END IF;
68417 --
68418 l_component_type             := 'AMB_JLT';
68419 l_component_code             := 'INV';
68420 l_component_type_code        := 'S';
68421 l_component_appl_id          :=  555;
68422 l_amb_context_code           := 'DEFAULT';
68423 l_entity_code                := 'PURCHASING';
68427 l_line_definition_code       := 'XFER_TO_CONSIGN';
68424 l_event_class_code           := 'DELIVER';
68425 l_event_type_code            := 'XFER_TO_CONSIGNED';
68426 l_line_definition_owner_code := 'S';
68428 --
68429 l_balance_type_code          := 'A';
68430 l_segment                     := NULL;
68431 l_ccid                        := NULL;
68432 l_adr_transaction_coa_id      := NULL;
68433 l_adr_accounting_coa_id       := NULL;
68434 l_adr_flexfield_segment_code  := NULL;
68435 l_adr_flex_value_set_id       := NULL;
68436 l_adr_value_type_code         := NULL;
68437 l_adr_value_combination_id    := NULL;
68438 l_adr_value_segment_code      := NULL;
68439 
68440 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
68441 l_bflow_class_code           := '';    -- 4219869 Business Flow
68442 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
68443 l_budgetary_control_flag     := 'N';
68444 
68445 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
68446 l_bflow_applied_to_amt       := NULL; -- 5132302
68447 l_entered_amt_idx            := NULL;          -- 4262811
68448 l_accted_amt_idx             := NULL;          -- 4262811
68449 l_acc_rev_flag               := NULL;          -- 4262811
68450 l_accrual_line_num           := NULL;          -- 4262811
68451 l_tmp_amt                    := NULL;          -- 4262811
68452 --
68453  
68454 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
68455     l_balance_type_code <> 'B' THEN
68456 IF NVL(p_source_2,'
68457 ') =  'INV'
68458  THEN 
68459 
68460    --
68461    XLA_AE_LINES_PKG.SetNewLine;
68462 
68463    p_balance_type_code          := l_balance_type_code;
68464    -- set the flag so later we will know whether the gain loss line needs to be created
68465    
68466    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
68467      p_actual_flag :='A';
68468    END IF;
68469 
68470    --
68471    -- bulk performance
68472    --
68473    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
68474                                       p_header_num   => 0); -- 4262811
68475    --
68476    -- set accounting line options
68477    --
68478    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
68479            p_natural_side_code          => 'D'
68480          , p_gain_or_loss_flag          => 'N'
68481          , p_gl_transfer_mode_code      => 'D'
68482          , p_acct_entry_type_code       => 'A'
68483          , p_switch_side_flag           => 'Y'
68484          , p_merge_duplicate_code       => 'W'
68485          );
68486    --
68487    l_acc_rev_natural_side_code := 'C';  -- 4262811
68488    -- 
68489    --
68490    -- set accounting line type info
68491    --
68492    xla_ae_lines_pkg.SetAcctLineType
68493       (p_component_type             => l_component_type
68494       ,p_event_type_code            => l_event_type_code
68495       ,p_line_definition_owner_code => l_line_definition_owner_code
68496       ,p_line_definition_code       => l_line_definition_code
68497       ,p_accounting_line_code       => l_component_code
68498       ,p_accounting_line_type_code  => l_component_type_code
68499       ,p_accounting_line_appl_id    => l_component_appl_id
68500       ,p_amb_context_code           => l_amb_context_code
68501       ,p_entity_code                => l_entity_code
68502       ,p_event_class_code           => l_event_class_code);
68503    --
68504    -- set accounting class
68505    --
68506    xla_ae_lines_pkg.SetAcctClass(
68507            p_accounting_class_code  => 'INVENTORY_VALUATION'
68508          , p_ae_header_id           => l_ae_header_id
68509          );
68510 
68511    --
68512    -- set rounding class
68513    --
68514    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
68515                       'INVENTORY_VALUATION';
68516 
68517    --
68518    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
68519    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
68520    --
68521    -- bulk performance
68522    --
68523    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
68524 
68525    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
68526       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
68527 
68528    -- 4955764
68529    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68530       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
68531 
68532    -- 4458381 Public Sector Enh
68533    
68534    --
68535    -- set accounting attributes for the line type
68536    --
68537    l_entered_amt_idx := 3;
68538    l_accted_amt_idx  := 8;
68539    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
68540    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
68541    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
68542    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
68543    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
68544    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
68545    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
68546    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
68550    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
68547    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
68548    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
68549    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
68551    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
68552    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
68553    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
68554    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
68555    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
68556 
68557    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
68558    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
68559 
68560    ---------------------------------------------------------------------------------------------------------------
68561    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
68562    ---------------------------------------------------------------------------------------------------------------
68563    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
68564 
68565    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68566    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68567 
68568    IF xla_accounting_cache_pkg.GetValueChar
68569          (p_source_code         => 'LEDGER_CATEGORY_CODE'
68570          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
68571    AND l_bflow_method_code = 'PRIOR_ENTRY'
68572 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
68573    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
68574          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
68575        )
68576    THEN
68577          xla_ae_lines_pkg.BflowUpgEntry
68578            (p_business_method_code    => l_bflow_method_code
68579            ,p_business_class_code     => l_bflow_class_code
68580            ,p_balance_type            => l_balance_type_code);
68581    ELSE
68582       NULL;
68583 -- No business flow processing for business flow method of NONE.
68584    END IF;
68585 
68586    --
68587    -- call analytical criteria
68588    --
68589    
68590    --
68591    -- call description
68592    --
68593    -- No description or it is inherited.
68594    --
68595    -- call ADRs
68596    -- Bug 4922099
68597    --
68598    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68599         (NVL(l_actual_upg_option, 'N') = 'O') OR
68600         (NVL(l_enc_upg_option, 'N') = 'O')
68601       )
68602    THEN
68603    NULL;
68604    --
68605    --
68606    
68607   l_ccid := AcctDerRule_17(
68608            p_application_id           => p_application_id
68609          , p_ae_header_id             => l_ae_header_id 
68610 , p_source_1 => p_source_1
68611 , p_source_2 => p_source_2
68612          , x_transaction_coa_id       => l_adr_transaction_coa_id
68613          , x_accounting_coa_id        => l_adr_accounting_coa_id
68614          , x_value_type_code          => l_adr_value_type_code
68615          , p_side                     => 'NA'
68616    );
68617 
68618    xla_ae_lines_pkg.set_ccid(
68619     p_code_combination_id          => l_ccid
68620   , p_value_type_code              => l_adr_value_type_code
68621   , p_transaction_coa_id           => l_adr_transaction_coa_id
68622   , p_accounting_coa_id            => l_adr_accounting_coa_id
68623   , p_adr_code                     => 'INV'
68624   , p_adr_type_code                => 'S'
68625   , p_component_type               => l_component_type
68626   , p_component_code               => l_component_code
68627   , p_component_type_code          => l_component_type_code
68628   , p_component_appl_id            => l_component_appl_id
68629   , p_amb_context_code             => l_amb_context_code
68630   , p_side                         => 'NA'
68631   );
68632 
68633 
68634    --
68635    --
68636    END IF;
68637    --
68638    -- Bug 4922099
68639    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
68640           (NVL(l_enc_upg_option, 'N') = 'O')
68641         ) AND
68642         (l_bflow_method_code = 'PRIOR_ENTRY')
68643       )
68644    THEN
68645       IF
68646       --
68647       1 = 2
68648       --
68649       THEN
68650       xla_accounting_err_pkg.build_message
68651                                     (p_appli_s_name            => 'XLA'
68652                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68653                                     ,p_token_1                 => 'LINE_NUMBER'
68654                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
68655                                     ,p_token_2                 => 'LINE_TYPE_NAME'
68656                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
68657                                                                              l_component_type
68658                                                                             ,l_component_code
68659                                                                             ,l_component_type_code
68660                                                                             ,l_component_appl_id
68664                                                                            )
68661                                                                             ,l_amb_context_code
68662                                                                             ,l_entity_code
68663                                                                             ,l_event_class_code
68665                                     ,p_token_3                 => 'OWNER'
68666                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
68667                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
68668                                                                           ,p_lookup_code    => l_component_type_code
68669                                                                          )
68670                                     ,p_token_4                 => 'PRODUCT_NAME'
68671                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
68672                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
68673                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
68674                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
68675                                     ,p_ae_header_id            =>  NULL
68676                                        );
68677 
68678         IF (C_LEVEL_ERROR>= g_log_level) THEN
68679                  trace
68680                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68681                       ,p_level    => C_LEVEL_ERROR
68682                       ,p_module   => l_log_module);
68683         END IF;
68684       END IF;
68685    END IF;
68686    --
68687    --
68688    ------------------------------------------------------------------------------------------------
68689    -- 4219869 Business Flow
68690    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
68691    -- Prior Entry.  Currently, the following code is always generated.
68692    ------------------------------------------------------------------------------------------------
68693    XLA_AE_LINES_PKG.ValidateCurrentLine;
68694 
68695    ------------------------------------------------------------------------------------
68696    -- 4219869 Business Flow
68697    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
68698    ------------------------------------------------------------------------------------
68699    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68700 
68701    ----------------------------------------------------------------------------------
68702    -- 4219869 Business Flow
68703    -- Update journal entry status -- Need to generate this within IF <condition>
68704    ----------------------------------------------------------------------------------
68705    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68706          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
68707          ,p_balance_type_code => l_balance_type_code
68708          );
68709 
68710    -------------------------------------------------------------------------------------------
68711    -- 4262811 - Generate the Accrual Reversal lines
68712    -------------------------------------------------------------------------------------------
68713    BEGIN
68714       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
68715                               (g_array_event(p_event_id).array_value_num('header_index'));
68716       IF l_acc_rev_flag IS NULL THEN
68717          l_acc_rev_flag := 'N';
68718       END IF;
68719    EXCEPTION
68720       WHEN OTHERS THEN
68721          l_acc_rev_flag := 'N';
68722    END;
68723    --
68724    IF (l_acc_rev_flag = 'Y') THEN
68725 
68726        -- 4645092  ------------------------------------------------------------------------------
68727        -- To allow MPA report to determine if it should generate report process
68728        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
68729        ------------------------------------------------------------------------------------------
68730 
68731        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
68732        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
68733    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
68734    -- call ADRs
68735    -- Bug 4922099
68736    --
68737    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68738         (NVL(l_actual_upg_option, 'N') = 'O') OR
68739         (NVL(l_enc_upg_option, 'N') = 'O')
68740       )
68741    THEN
68742    NULL;
68743    --
68744    --
68745    
68746   l_ccid := AcctDerRule_17(
68747            p_application_id           => p_application_id
68748          , p_ae_header_id             => l_ae_header_id 
68749 , p_source_1 => p_source_1
68750 , p_source_2 => p_source_2
68751          , x_transaction_coa_id       => l_adr_transaction_coa_id
68752          , x_accounting_coa_id        => l_adr_accounting_coa_id
68753          , x_value_type_code          => l_adr_value_type_code
68754          , p_side                     => 'NA'
68755    );
68756 
68757    xla_ae_lines_pkg.set_ccid(
68758     p_code_combination_id          => l_ccid
68759   , p_value_type_code              => l_adr_value_type_code
68760   , p_transaction_coa_id           => l_adr_transaction_coa_id
68761   , p_accounting_coa_id            => l_adr_accounting_coa_id
68765   , p_component_code               => l_component_code
68762   , p_adr_code                     => 'INV'
68763   , p_adr_type_code                => 'S'
68764   , p_component_type               => l_component_type
68766   , p_component_type_code          => l_component_type_code
68767   , p_component_appl_id            => l_component_appl_id
68768   , p_amb_context_code             => l_amb_context_code
68769   , p_side                         => 'NA'
68770   );
68771 
68772 
68773    --
68774    --
68775    END IF;
68776 
68777        --
68778        -- Update the line information that should be overwritten
68779        --
68780        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
68781                                          p_header_num   => 1);
68782        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
68783 
68784        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
68785 
68786        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
68787           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
68788        END IF;
68789 
68790       --
68791       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
68792       --
68793       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
68794           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
68795       ELSE
68796           ---------------------------------------------------------------------------------------------------
68797           -- 4262811a Switch Sign
68798           ---------------------------------------------------------------------------------------------------
68799           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
68800           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68801                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68802           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68803                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68804           -- 5132302
68805           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
68806                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68807 
68808       END IF;
68809 
68810       -- 4955764
68811       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68812       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
68813 
68814 
68815       XLA_AE_LINES_PKG.ValidateCurrentLine;
68816       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68817 
68818       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68819                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
68820                ,p_balance_type_code => l_balance_type_code);
68821 
68822    END IF;
68823 
68824    -----------------------------------------------------------------------------------------
68825    -- 4262811 Multiperiod Accounting
68826    -----------------------------------------------------------------------------------------
68827      -- No MPA option is assigned.
68828 
68829 
68830 END IF;
68831 END IF;
68832 --
68833 
68834 --
68835 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68836    trace
68837       (p_msg      => 'END of AcctLineType_156'
68838       ,p_level    => C_LEVEL_PROCEDURE
68839       ,p_module   => l_log_module);
68840 END IF;
68841 --
68842 EXCEPTION
68843   WHEN xla_exceptions_pkg.application_exception THEN
68844       RAISE;
68845   WHEN OTHERS THEN
68846        xla_exceptions_pkg.raise_message
68847            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_156');
68848 END AcctLineType_156;
68849 --
68850 
68851 ---------------------------------------
68852 --
68853 -- PRIVATE FUNCTION
68854 --         AcctLineType_157
68855 --
68856 ---------------------------------------
68857 PROCEDURE AcctLineType_157 (
68858   p_application_id        IN NUMBER
68859  ,p_event_id              IN NUMBER
68860  ,p_calculate_acctd_flag  IN VARCHAR2
68861  ,p_calculate_g_l_flag    IN VARCHAR2
68862  ,p_actual_flag           IN OUT VARCHAR2
68863  ,p_balance_type_code     OUT VARCHAR2
68864  ,p_gain_or_loss_ref      OUT VARCHAR2
68865  
68866 --Transaction Account
68867  , p_source_1            IN NUMBER
68868 --Journal Line Type
68869  , p_source_2            IN VARCHAR2
68870 --Entered Amount
68871  , p_source_3            IN NUMBER
68872 --First Distribution Identifier
68873  , p_source_5            IN NUMBER
68874 --Distribution Type
68875  , p_source_6            IN VARCHAR2
68876 --Currency Code
68877  , p_source_7            IN VARCHAR2
68878 --Currency Conversion Date
68879  , p_source_8            IN DATE
68880 --Currency Conversion Rate
68881  , p_source_9            IN NUMBER
68882 --Currency Conversion Type
68883  , p_source_10            IN VARCHAR2
68884 --Accounted Amount
68885  , p_source_11            IN NUMBER
68886 )
68887 IS
68888 
68892 l_component_appl_id           INTEGER;
68889 l_component_type              VARCHAR2(80);
68890 l_component_code              VARCHAR2(30);
68891 l_component_type_code         VARCHAR2(1);
68893 l_amb_context_code            VARCHAR2(30);
68894 l_entity_code                 VARCHAR2(30);
68895 l_event_class_code            VARCHAR2(30);
68896 l_ae_header_id                NUMBER;
68897 l_event_type_code             VARCHAR2(30);
68898 l_line_definition_code        VARCHAR2(30);
68899 l_line_definition_owner_code  VARCHAR2(1);
68900 --
68901 -- adr variables
68902 l_segment                     VARCHAR2(30);
68903 l_ccid                        NUMBER;
68904 l_adr_transaction_coa_id      NUMBER;
68905 l_adr_accounting_coa_id       NUMBER;
68906 l_adr_flexfield_segment_code  VARCHAR2(30);
68907 l_adr_flex_value_set_id       NUMBER;
68908 l_adr_value_type_code         VARCHAR2(30);
68909 l_adr_value_combination_id    NUMBER;
68910 l_adr_value_segment_code      VARCHAR2(30);
68911 
68912 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
68913 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
68914 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
68915 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
68916 
68917 -- 4262811 Variables ------------------------------------------------------------------------------------------
68918 l_entered_amt_idx             NUMBER;
68919 l_accted_amt_idx              NUMBER;
68920 l_acc_rev_flag                VARCHAR2(1);
68921 l_accrual_line_num            NUMBER;
68922 l_tmp_amt                     NUMBER;
68923 l_acc_rev_natural_side_code   VARCHAR2(1);
68924 
68925 l_num_entries                 NUMBER;
68926 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
68927 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
68928 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
68929 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
68930 l_recog_line_1                NUMBER;
68931 l_recog_line_2                NUMBER;
68932 
68933 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
68934 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
68935 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
68936 
68937 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
68938 
68939 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
68940 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
68941 
68942 ---------------------------------------------------------------------------------------------------------------
68943 
68944 
68945 --
68946 -- bulk performance
68947 --
68948 l_balance_type_code           VARCHAR2(1);
68949 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
68950 l_log_module                  VARCHAR2(240);
68951 
68952 --
68953 -- Upgrade strategy
68954 --
68955 l_actual_upg_option           VARCHAR2(1);
68956 l_enc_upg_option           VARCHAR2(1);
68957 
68958 --
68959 BEGIN
68960 --
68961 IF g_log_enabled THEN
68962       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_157';
68963 END IF;
68964 --
68965 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68966 
68967       trace
68968          (p_msg      => 'BEGIN of AcctLineType_157'
68969          ,p_level    => C_LEVEL_PROCEDURE
68970          ,p_module   => l_log_module);
68971 
68972 END IF;
68973 --
68974 l_component_type             := 'AMB_JLT';
68975 l_component_code             := 'INV';
68976 l_component_type_code        := 'S';
68977 l_component_appl_id          :=  555;
68978 l_amb_context_code           := 'DEFAULT';
68979 l_entity_code                := 'INVENTORY';
68980 l_event_class_code           := 'DIR_INTERORG_RCPT';
68981 l_event_type_code            := 'DIR_INTERORG_RCPT';
68982 l_line_definition_owner_code := 'S';
68983 l_line_definition_code       := 'DIRECT_XFER_RECV';
68984 --
68985 l_balance_type_code          := 'A';
68986 l_segment                     := NULL;
68987 l_ccid                        := NULL;
68988 l_adr_transaction_coa_id      := NULL;
68989 l_adr_accounting_coa_id       := NULL;
68990 l_adr_flexfield_segment_code  := NULL;
68991 l_adr_flex_value_set_id       := NULL;
68992 l_adr_value_type_code         := NULL;
68993 l_adr_value_combination_id    := NULL;
68994 l_adr_value_segment_code      := NULL;
68995 
68996 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
68997 l_bflow_class_code           := '';    -- 4219869 Business Flow
68998 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
68999 l_budgetary_control_flag     := 'N';
69000 
69001 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
69002 l_bflow_applied_to_amt       := NULL; -- 5132302
69003 l_entered_amt_idx            := NULL;          -- 4262811
69004 l_accted_amt_idx             := NULL;          -- 4262811
69005 l_acc_rev_flag               := NULL;          -- 4262811
69006 l_accrual_line_num           := NULL;          -- 4262811
69007 l_tmp_amt                    := NULL;          -- 4262811
69008 --
69009  
69010 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
69011     l_balance_type_code <> 'B' THEN
69012 IF NVL(p_source_2,'
69013 ') =  'INV'
69014  THEN 
69015 
69019    p_balance_type_code          := l_balance_type_code;
69016    --
69017    XLA_AE_LINES_PKG.SetNewLine;
69018 
69020    -- set the flag so later we will know whether the gain loss line needs to be created
69021    
69022    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
69023      p_actual_flag :='A';
69024    END IF;
69025 
69026    --
69027    -- bulk performance
69028    --
69029    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
69030                                       p_header_num   => 0); -- 4262811
69031    --
69032    -- set accounting line options
69033    --
69034    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
69035            p_natural_side_code          => 'D'
69036          , p_gain_or_loss_flag          => 'N'
69037          , p_gl_transfer_mode_code      => 'D'
69038          , p_acct_entry_type_code       => 'A'
69039          , p_switch_side_flag           => 'Y'
69040          , p_merge_duplicate_code       => 'W'
69041          );
69042    --
69043    l_acc_rev_natural_side_code := 'C';  -- 4262811
69044    -- 
69045    --
69046    -- set accounting line type info
69047    --
69048    xla_ae_lines_pkg.SetAcctLineType
69049       (p_component_type             => l_component_type
69050       ,p_event_type_code            => l_event_type_code
69051       ,p_line_definition_owner_code => l_line_definition_owner_code
69052       ,p_line_definition_code       => l_line_definition_code
69053       ,p_accounting_line_code       => l_component_code
69054       ,p_accounting_line_type_code  => l_component_type_code
69055       ,p_accounting_line_appl_id    => l_component_appl_id
69056       ,p_amb_context_code           => l_amb_context_code
69057       ,p_entity_code                => l_entity_code
69058       ,p_event_class_code           => l_event_class_code);
69059    --
69060    -- set accounting class
69061    --
69062    xla_ae_lines_pkg.SetAcctClass(
69063            p_accounting_class_code  => 'INVENTORY_VALUATION'
69064          , p_ae_header_id           => l_ae_header_id
69065          );
69066 
69067    --
69068    -- set rounding class
69069    --
69070    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
69071                       'INVENTORY_VALUATION';
69072 
69073    --
69074    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
69075    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
69076    --
69077    -- bulk performance
69078    --
69079    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
69080 
69081    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
69082       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
69083 
69084    -- 4955764
69085    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69086       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
69087 
69088    -- 4458381 Public Sector Enh
69089    
69090    --
69091    -- set accounting attributes for the line type
69092    --
69093    l_entered_amt_idx := 3;
69094    l_accted_amt_idx  := 8;
69095    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
69096    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
69097    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
69098    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
69099    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
69100    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
69101    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
69102    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
69103    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
69104    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
69105    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
69106    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
69107    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
69108    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
69109    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
69110    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
69111    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
69112 
69113    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
69114    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
69115 
69116    ---------------------------------------------------------------------------------------------------------------
69117    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
69118    ---------------------------------------------------------------------------------------------------------------
69119    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
69120 
69121    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69122    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69123 
69124    IF xla_accounting_cache_pkg.GetValueChar
69125          (p_source_code         => 'LEDGER_CATEGORY_CODE'
69129    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
69126          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
69127    AND l_bflow_method_code = 'PRIOR_ENTRY'
69128 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
69130          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
69131        )
69132    THEN
69133          xla_ae_lines_pkg.BflowUpgEntry
69134            (p_business_method_code    => l_bflow_method_code
69135            ,p_business_class_code     => l_bflow_class_code
69136            ,p_balance_type            => l_balance_type_code);
69137    ELSE
69138       NULL;
69139 -- No business flow processing for business flow method of NONE.
69140    END IF;
69141 
69142    --
69143    -- call analytical criteria
69144    --
69145    
69146    --
69147    -- call description
69148    --
69149    -- No description or it is inherited.
69150    --
69151    -- call ADRs
69152    -- Bug 4922099
69153    --
69154    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69155         (NVL(l_actual_upg_option, 'N') = 'O') OR
69156         (NVL(l_enc_upg_option, 'N') = 'O')
69157       )
69158    THEN
69159    NULL;
69160    --
69161    --
69162    
69163   l_ccid := AcctDerRule_17(
69164            p_application_id           => p_application_id
69165          , p_ae_header_id             => l_ae_header_id 
69166 , p_source_1 => p_source_1
69167 , p_source_2 => p_source_2
69168          , x_transaction_coa_id       => l_adr_transaction_coa_id
69169          , x_accounting_coa_id        => l_adr_accounting_coa_id
69170          , x_value_type_code          => l_adr_value_type_code
69171          , p_side                     => 'NA'
69172    );
69173 
69174    xla_ae_lines_pkg.set_ccid(
69175     p_code_combination_id          => l_ccid
69176   , p_value_type_code              => l_adr_value_type_code
69177   , p_transaction_coa_id           => l_adr_transaction_coa_id
69178   , p_accounting_coa_id            => l_adr_accounting_coa_id
69179   , p_adr_code                     => 'INV'
69180   , p_adr_type_code                => 'S'
69181   , p_component_type               => l_component_type
69182   , p_component_code               => l_component_code
69183   , p_component_type_code          => l_component_type_code
69184   , p_component_appl_id            => l_component_appl_id
69185   , p_amb_context_code             => l_amb_context_code
69186   , p_side                         => 'NA'
69187   );
69188 
69189 
69190    --
69191    --
69192    END IF;
69193    --
69194    -- Bug 4922099
69195    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
69196           (NVL(l_enc_upg_option, 'N') = 'O')
69197         ) AND
69198         (l_bflow_method_code = 'PRIOR_ENTRY')
69199       )
69200    THEN
69201       IF
69202       --
69203       1 = 2
69204       --
69205       THEN
69206       xla_accounting_err_pkg.build_message
69207                                     (p_appli_s_name            => 'XLA'
69208                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69209                                     ,p_token_1                 => 'LINE_NUMBER'
69210                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
69211                                     ,p_token_2                 => 'LINE_TYPE_NAME'
69212                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
69213                                                                              l_component_type
69214                                                                             ,l_component_code
69215                                                                             ,l_component_type_code
69216                                                                             ,l_component_appl_id
69217                                                                             ,l_amb_context_code
69218                                                                             ,l_entity_code
69219                                                                             ,l_event_class_code
69220                                                                            )
69221                                     ,p_token_3                 => 'OWNER'
69222                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
69223                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
69224                                                                           ,p_lookup_code    => l_component_type_code
69225                                                                          )
69226                                     ,p_token_4                 => 'PRODUCT_NAME'
69227                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
69228                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
69229                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
69230                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
69231                                     ,p_ae_header_id            =>  NULL
69232                                        );
69233 
69234         IF (C_LEVEL_ERROR>= g_log_level) THEN
69235                  trace
69236                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69240       END IF;
69237                       ,p_level    => C_LEVEL_ERROR
69238                       ,p_module   => l_log_module);
69239         END IF;
69241    END IF;
69242    --
69243    --
69244    ------------------------------------------------------------------------------------------------
69245    -- 4219869 Business Flow
69246    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
69247    -- Prior Entry.  Currently, the following code is always generated.
69248    ------------------------------------------------------------------------------------------------
69249    XLA_AE_LINES_PKG.ValidateCurrentLine;
69250 
69251    ------------------------------------------------------------------------------------
69252    -- 4219869 Business Flow
69253    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
69254    ------------------------------------------------------------------------------------
69255    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69256 
69257    ----------------------------------------------------------------------------------
69258    -- 4219869 Business Flow
69259    -- Update journal entry status -- Need to generate this within IF <condition>
69260    ----------------------------------------------------------------------------------
69261    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69262          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
69263          ,p_balance_type_code => l_balance_type_code
69264          );
69265 
69266    -------------------------------------------------------------------------------------------
69267    -- 4262811 - Generate the Accrual Reversal lines
69268    -------------------------------------------------------------------------------------------
69269    BEGIN
69270       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
69271                               (g_array_event(p_event_id).array_value_num('header_index'));
69272       IF l_acc_rev_flag IS NULL THEN
69273          l_acc_rev_flag := 'N';
69274       END IF;
69275    EXCEPTION
69276       WHEN OTHERS THEN
69277          l_acc_rev_flag := 'N';
69278    END;
69279    --
69280    IF (l_acc_rev_flag = 'Y') THEN
69281 
69282        -- 4645092  ------------------------------------------------------------------------------
69283        -- To allow MPA report to determine if it should generate report process
69284        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
69285        ------------------------------------------------------------------------------------------
69286 
69287        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
69288        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
69289    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
69290    -- call ADRs
69291    -- Bug 4922099
69292    --
69293    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69294         (NVL(l_actual_upg_option, 'N') = 'O') OR
69295         (NVL(l_enc_upg_option, 'N') = 'O')
69296       )
69297    THEN
69298    NULL;
69299    --
69300    --
69301    
69302   l_ccid := AcctDerRule_17(
69303            p_application_id           => p_application_id
69304          , p_ae_header_id             => l_ae_header_id 
69305 , p_source_1 => p_source_1
69306 , p_source_2 => p_source_2
69307          , x_transaction_coa_id       => l_adr_transaction_coa_id
69308          , x_accounting_coa_id        => l_adr_accounting_coa_id
69309          , x_value_type_code          => l_adr_value_type_code
69310          , p_side                     => 'NA'
69311    );
69312 
69313    xla_ae_lines_pkg.set_ccid(
69314     p_code_combination_id          => l_ccid
69315   , p_value_type_code              => l_adr_value_type_code
69316   , p_transaction_coa_id           => l_adr_transaction_coa_id
69317   , p_accounting_coa_id            => l_adr_accounting_coa_id
69318   , p_adr_code                     => 'INV'
69319   , p_adr_type_code                => 'S'
69320   , p_component_type               => l_component_type
69321   , p_component_code               => l_component_code
69322   , p_component_type_code          => l_component_type_code
69323   , p_component_appl_id            => l_component_appl_id
69324   , p_amb_context_code             => l_amb_context_code
69325   , p_side                         => 'NA'
69326   );
69327 
69328 
69329    --
69330    --
69331    END IF;
69332 
69333        --
69334        -- Update the line information that should be overwritten
69335        --
69336        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
69337                                          p_header_num   => 1);
69338        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
69339 
69340        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
69341 
69342        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
69343           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
69344        END IF;
69345 
69346       --
69347       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
69348       --
69349       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
69350           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
69351       ELSE
69355           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
69352           ---------------------------------------------------------------------------------------------------
69353           -- 4262811a Switch Sign
69354           ---------------------------------------------------------------------------------------------------
69356           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69357                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69358           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69359                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69360           -- 5132302
69361           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
69362                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69363 
69364       END IF;
69365 
69366       -- 4955764
69367       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69368       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
69369 
69370 
69371       XLA_AE_LINES_PKG.ValidateCurrentLine;
69372       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69373 
69374       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69375                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
69376                ,p_balance_type_code => l_balance_type_code);
69377 
69378    END IF;
69379 
69380    -----------------------------------------------------------------------------------------
69381    -- 4262811 Multiperiod Accounting
69382    -----------------------------------------------------------------------------------------
69383      -- No MPA option is assigned.
69384 
69385 
69386 END IF;
69387 END IF;
69388 --
69389 
69390 --
69391 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69392    trace
69393       (p_msg      => 'END of AcctLineType_157'
69394       ,p_level    => C_LEVEL_PROCEDURE
69395       ,p_module   => l_log_module);
69396 END IF;
69397 --
69398 EXCEPTION
69399   WHEN xla_exceptions_pkg.application_exception THEN
69400       RAISE;
69401   WHEN OTHERS THEN
69402        xla_exceptions_pkg.raise_message
69403            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_157');
69404 END AcctLineType_157;
69405 --
69406 
69407 ---------------------------------------
69408 --
69409 -- PRIVATE FUNCTION
69410 --         AcctLineType_158
69411 --
69412 ---------------------------------------
69413 PROCEDURE AcctLineType_158 (
69414   p_application_id        IN NUMBER
69415  ,p_event_id              IN NUMBER
69416  ,p_calculate_acctd_flag  IN VARCHAR2
69417  ,p_calculate_g_l_flag    IN VARCHAR2
69418  ,p_actual_flag           IN OUT VARCHAR2
69419  ,p_balance_type_code     OUT VARCHAR2
69420  ,p_gain_or_loss_ref      OUT VARCHAR2
69421  
69422 --Transaction Account
69423  , p_source_1            IN NUMBER
69424 --Journal Line Type
69425  , p_source_2            IN VARCHAR2
69426 --Entered Amount
69427  , p_source_3            IN NUMBER
69428 --First Distribution Identifier
69429  , p_source_5            IN NUMBER
69430 --Distribution Type
69431  , p_source_6            IN VARCHAR2
69432 --Currency Code
69433  , p_source_7            IN VARCHAR2
69434 --Currency Conversion Date
69435  , p_source_8            IN DATE
69436 --Currency Conversion Rate
69437  , p_source_9            IN NUMBER
69438 --Currency Conversion Type
69439  , p_source_10            IN VARCHAR2
69440 --Accounted Amount
69441  , p_source_11            IN NUMBER
69442 )
69443 IS
69444 
69445 l_component_type              VARCHAR2(80);
69446 l_component_code              VARCHAR2(30);
69447 l_component_type_code         VARCHAR2(1);
69448 l_component_appl_id           INTEGER;
69449 l_amb_context_code            VARCHAR2(30);
69450 l_entity_code                 VARCHAR2(30);
69451 l_event_class_code            VARCHAR2(30);
69452 l_ae_header_id                NUMBER;
69453 l_event_type_code             VARCHAR2(30);
69454 l_line_definition_code        VARCHAR2(30);
69455 l_line_definition_owner_code  VARCHAR2(1);
69456 --
69457 -- adr variables
69458 l_segment                     VARCHAR2(30);
69459 l_ccid                        NUMBER;
69460 l_adr_transaction_coa_id      NUMBER;
69461 l_adr_accounting_coa_id       NUMBER;
69462 l_adr_flexfield_segment_code  VARCHAR2(30);
69463 l_adr_flex_value_set_id       NUMBER;
69464 l_adr_value_type_code         VARCHAR2(30);
69465 l_adr_value_combination_id    NUMBER;
69466 l_adr_value_segment_code      VARCHAR2(30);
69467 
69468 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
69469 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
69470 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
69471 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
69472 
69473 -- 4262811 Variables ------------------------------------------------------------------------------------------
69474 l_entered_amt_idx             NUMBER;
69475 l_accted_amt_idx              NUMBER;
69476 l_acc_rev_flag                VARCHAR2(1);
69477 l_accrual_line_num            NUMBER;
69478 l_tmp_amt                     NUMBER;
69479 l_acc_rev_natural_side_code   VARCHAR2(1);
69483 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
69480 
69481 l_num_entries                 NUMBER;
69482 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
69484 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
69485 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
69486 l_recog_line_1                NUMBER;
69487 l_recog_line_2                NUMBER;
69488 
69489 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
69490 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
69491 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
69492 
69493 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
69494 
69495 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
69496 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
69497 
69498 ---------------------------------------------------------------------------------------------------------------
69499 
69500 
69501 --
69502 -- bulk performance
69503 --
69504 l_balance_type_code           VARCHAR2(1);
69505 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
69506 l_log_module                  VARCHAR2(240);
69507 
69508 --
69509 -- Upgrade strategy
69510 --
69511 l_actual_upg_option           VARCHAR2(1);
69512 l_enc_upg_option           VARCHAR2(1);
69513 
69514 --
69515 BEGIN
69516 --
69517 IF g_log_enabled THEN
69518       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_158';
69519 END IF;
69520 --
69521 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69522 
69523       trace
69524          (p_msg      => 'BEGIN of AcctLineType_158'
69525          ,p_level    => C_LEVEL_PROCEDURE
69526          ,p_module   => l_log_module);
69527 
69528 END IF;
69529 --
69530 l_component_type             := 'AMB_JLT';
69531 l_component_code             := 'INV';
69532 l_component_type_code        := 'S';
69533 l_component_appl_id          :=  555;
69534 l_amb_context_code           := 'DEFAULT';
69535 l_entity_code                := 'INVENTORY';
69536 l_event_class_code           := 'DIR_INTERORG_RCPT';
69537 l_event_type_code            := 'DIR_INTERORG_RCPT_TP';
69538 l_line_definition_owner_code := 'S';
69539 l_line_definition_code       := 'DIRECT_XFER_RECV_TP';
69540 --
69541 l_balance_type_code          := 'A';
69542 l_segment                     := NULL;
69543 l_ccid                        := NULL;
69544 l_adr_transaction_coa_id      := NULL;
69545 l_adr_accounting_coa_id       := NULL;
69546 l_adr_flexfield_segment_code  := NULL;
69547 l_adr_flex_value_set_id       := NULL;
69548 l_adr_value_type_code         := NULL;
69549 l_adr_value_combination_id    := NULL;
69550 l_adr_value_segment_code      := NULL;
69551 
69552 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
69553 l_bflow_class_code           := '';    -- 4219869 Business Flow
69554 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
69555 l_budgetary_control_flag     := 'N';
69556 
69557 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
69558 l_bflow_applied_to_amt       := NULL; -- 5132302
69559 l_entered_amt_idx            := NULL;          -- 4262811
69560 l_accted_amt_idx             := NULL;          -- 4262811
69561 l_acc_rev_flag               := NULL;          -- 4262811
69562 l_accrual_line_num           := NULL;          -- 4262811
69563 l_tmp_amt                    := NULL;          -- 4262811
69564 --
69565  
69566 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
69567     l_balance_type_code <> 'B' THEN
69568 IF NVL(p_source_2,'
69569 ') =  'INV'
69570  THEN 
69571 
69572    --
69573    XLA_AE_LINES_PKG.SetNewLine;
69574 
69575    p_balance_type_code          := l_balance_type_code;
69576    -- set the flag so later we will know whether the gain loss line needs to be created
69577    
69578    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
69579      p_actual_flag :='A';
69580    END IF;
69581 
69582    --
69583    -- bulk performance
69584    --
69585    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
69586                                       p_header_num   => 0); -- 4262811
69587    --
69588    -- set accounting line options
69589    --
69590    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
69591            p_natural_side_code          => 'D'
69592          , p_gain_or_loss_flag          => 'N'
69593          , p_gl_transfer_mode_code      => 'D'
69594          , p_acct_entry_type_code       => 'A'
69595          , p_switch_side_flag           => 'Y'
69596          , p_merge_duplicate_code       => 'W'
69597          );
69598    --
69599    l_acc_rev_natural_side_code := 'C';  -- 4262811
69600    -- 
69601    --
69602    -- set accounting line type info
69603    --
69604    xla_ae_lines_pkg.SetAcctLineType
69605       (p_component_type             => l_component_type
69606       ,p_event_type_code            => l_event_type_code
69607       ,p_line_definition_owner_code => l_line_definition_owner_code
69608       ,p_line_definition_code       => l_line_definition_code
69609       ,p_accounting_line_code       => l_component_code
69610       ,p_accounting_line_type_code  => l_component_type_code
69614       ,p_event_class_code           => l_event_class_code);
69611       ,p_accounting_line_appl_id    => l_component_appl_id
69612       ,p_amb_context_code           => l_amb_context_code
69613       ,p_entity_code                => l_entity_code
69615    --
69616    -- set accounting class
69617    --
69618    xla_ae_lines_pkg.SetAcctClass(
69619            p_accounting_class_code  => 'INVENTORY_VALUATION'
69620          , p_ae_header_id           => l_ae_header_id
69621          );
69622 
69623    --
69624    -- set rounding class
69625    --
69626    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
69627                       'INVENTORY_VALUATION';
69628 
69629    --
69630    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
69631    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
69632    --
69633    -- bulk performance
69634    --
69635    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
69636 
69637    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
69638       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
69639 
69640    -- 4955764
69641    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69642       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
69643 
69644    -- 4458381 Public Sector Enh
69645    
69646    --
69647    -- set accounting attributes for the line type
69648    --
69649    l_entered_amt_idx := 3;
69650    l_accted_amt_idx  := 8;
69651    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
69652    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
69653    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
69654    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
69655    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
69656    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
69657    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
69658    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
69659    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
69660    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
69661    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
69662    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
69663    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
69664    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
69665    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
69666    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
69667    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
69668 
69669    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
69670    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
69671 
69672    ---------------------------------------------------------------------------------------------------------------
69673    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
69674    ---------------------------------------------------------------------------------------------------------------
69675    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
69676 
69677    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69678    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69679 
69680    IF xla_accounting_cache_pkg.GetValueChar
69681          (p_source_code         => 'LEDGER_CATEGORY_CODE'
69682          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
69683    AND l_bflow_method_code = 'PRIOR_ENTRY'
69684 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
69685    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
69686          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
69687        )
69688    THEN
69689          xla_ae_lines_pkg.BflowUpgEntry
69690            (p_business_method_code    => l_bflow_method_code
69691            ,p_business_class_code     => l_bflow_class_code
69692            ,p_balance_type            => l_balance_type_code);
69693    ELSE
69694       NULL;
69695 -- No business flow processing for business flow method of NONE.
69696    END IF;
69697 
69698    --
69699    -- call analytical criteria
69700    --
69701    
69702    --
69703    -- call description
69704    --
69705    -- No description or it is inherited.
69706    --
69707    -- call ADRs
69708    -- Bug 4922099
69709    --
69710    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69711         (NVL(l_actual_upg_option, 'N') = 'O') OR
69712         (NVL(l_enc_upg_option, 'N') = 'O')
69713       )
69714    THEN
69715    NULL;
69716    --
69717    --
69718    
69719   l_ccid := AcctDerRule_17(
69720            p_application_id           => p_application_id
69721          , p_ae_header_id             => l_ae_header_id 
69722 , p_source_1 => p_source_1
69723 , p_source_2 => p_source_2
69724          , x_transaction_coa_id       => l_adr_transaction_coa_id
69725          , x_accounting_coa_id        => l_adr_accounting_coa_id
69729 
69726          , x_value_type_code          => l_adr_value_type_code
69727          , p_side                     => 'NA'
69728    );
69730    xla_ae_lines_pkg.set_ccid(
69731     p_code_combination_id          => l_ccid
69732   , p_value_type_code              => l_adr_value_type_code
69733   , p_transaction_coa_id           => l_adr_transaction_coa_id
69734   , p_accounting_coa_id            => l_adr_accounting_coa_id
69735   , p_adr_code                     => 'INV'
69736   , p_adr_type_code                => 'S'
69737   , p_component_type               => l_component_type
69738   , p_component_code               => l_component_code
69739   , p_component_type_code          => l_component_type_code
69740   , p_component_appl_id            => l_component_appl_id
69741   , p_amb_context_code             => l_amb_context_code
69742   , p_side                         => 'NA'
69743   );
69744 
69745 
69746    --
69747    --
69748    END IF;
69749    --
69750    -- Bug 4922099
69751    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
69752           (NVL(l_enc_upg_option, 'N') = 'O')
69753         ) AND
69754         (l_bflow_method_code = 'PRIOR_ENTRY')
69755       )
69756    THEN
69757       IF
69758       --
69759       1 = 2
69760       --
69761       THEN
69762       xla_accounting_err_pkg.build_message
69763                                     (p_appli_s_name            => 'XLA'
69764                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69765                                     ,p_token_1                 => 'LINE_NUMBER'
69766                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
69767                                     ,p_token_2                 => 'LINE_TYPE_NAME'
69768                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
69769                                                                              l_component_type
69770                                                                             ,l_component_code
69771                                                                             ,l_component_type_code
69772                                                                             ,l_component_appl_id
69773                                                                             ,l_amb_context_code
69774                                                                             ,l_entity_code
69775                                                                             ,l_event_class_code
69776                                                                            )
69777                                     ,p_token_3                 => 'OWNER'
69778                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
69779                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
69780                                                                           ,p_lookup_code    => l_component_type_code
69781                                                                          )
69782                                     ,p_token_4                 => 'PRODUCT_NAME'
69783                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
69784                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
69785                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
69786                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
69787                                     ,p_ae_header_id            =>  NULL
69788                                        );
69789 
69790         IF (C_LEVEL_ERROR>= g_log_level) THEN
69791                  trace
69792                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69793                       ,p_level    => C_LEVEL_ERROR
69794                       ,p_module   => l_log_module);
69795         END IF;
69796       END IF;
69797    END IF;
69798    --
69799    --
69800    ------------------------------------------------------------------------------------------------
69801    -- 4219869 Business Flow
69802    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
69803    -- Prior Entry.  Currently, the following code is always generated.
69804    ------------------------------------------------------------------------------------------------
69805    XLA_AE_LINES_PKG.ValidateCurrentLine;
69806 
69807    ------------------------------------------------------------------------------------
69808    -- 4219869 Business Flow
69809    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
69810    ------------------------------------------------------------------------------------
69811    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69812 
69813    ----------------------------------------------------------------------------------
69814    -- 4219869 Business Flow
69815    -- Update journal entry status -- Need to generate this within IF <condition>
69816    ----------------------------------------------------------------------------------
69817    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69818          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
69819          ,p_balance_type_code => l_balance_type_code
69820          );
69821 
69822    -------------------------------------------------------------------------------------------
69823    -- 4262811 - Generate the Accrual Reversal lines
69827                               (g_array_event(p_event_id).array_value_num('header_index'));
69824    -------------------------------------------------------------------------------------------
69825    BEGIN
69826       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
69828       IF l_acc_rev_flag IS NULL THEN
69829          l_acc_rev_flag := 'N';
69830       END IF;
69831    EXCEPTION
69832       WHEN OTHERS THEN
69833          l_acc_rev_flag := 'N';
69834    END;
69835    --
69836    IF (l_acc_rev_flag = 'Y') THEN
69837 
69838        -- 4645092  ------------------------------------------------------------------------------
69839        -- To allow MPA report to determine if it should generate report process
69840        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
69841        ------------------------------------------------------------------------------------------
69842 
69843        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
69844        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
69845    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
69846    -- call ADRs
69847    -- Bug 4922099
69848    --
69849    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69850         (NVL(l_actual_upg_option, 'N') = 'O') OR
69851         (NVL(l_enc_upg_option, 'N') = 'O')
69852       )
69853    THEN
69854    NULL;
69855    --
69856    --
69857    
69858   l_ccid := AcctDerRule_17(
69859            p_application_id           => p_application_id
69860          , p_ae_header_id             => l_ae_header_id 
69861 , p_source_1 => p_source_1
69862 , p_source_2 => p_source_2
69863          , x_transaction_coa_id       => l_adr_transaction_coa_id
69864          , x_accounting_coa_id        => l_adr_accounting_coa_id
69865          , x_value_type_code          => l_adr_value_type_code
69866          , p_side                     => 'NA'
69867    );
69868 
69869    xla_ae_lines_pkg.set_ccid(
69870     p_code_combination_id          => l_ccid
69871   , p_value_type_code              => l_adr_value_type_code
69872   , p_transaction_coa_id           => l_adr_transaction_coa_id
69873   , p_accounting_coa_id            => l_adr_accounting_coa_id
69874   , p_adr_code                     => 'INV'
69875   , p_adr_type_code                => 'S'
69876   , p_component_type               => l_component_type
69877   , p_component_code               => l_component_code
69878   , p_component_type_code          => l_component_type_code
69879   , p_component_appl_id            => l_component_appl_id
69880   , p_amb_context_code             => l_amb_context_code
69881   , p_side                         => 'NA'
69882   );
69883 
69884 
69885    --
69886    --
69887    END IF;
69888 
69889        --
69890        -- Update the line information that should be overwritten
69891        --
69892        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
69893                                          p_header_num   => 1);
69894        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
69895 
69896        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
69897 
69898        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
69899           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
69900        END IF;
69901 
69902       --
69903       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
69904       --
69905       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
69906           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
69907       ELSE
69908           ---------------------------------------------------------------------------------------------------
69909           -- 4262811a Switch Sign
69910           ---------------------------------------------------------------------------------------------------
69911           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
69912           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69913                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69914           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69915                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69916           -- 5132302
69917           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
69918                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69919 
69920       END IF;
69921 
69922       -- 4955764
69923       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69924       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
69925 
69926 
69927       XLA_AE_LINES_PKG.ValidateCurrentLine;
69928       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69929 
69930       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69931                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
69932                ,p_balance_type_code => l_balance_type_code);
69933 
69934    END IF;
69935 
69939      -- No MPA option is assigned.
69936    -----------------------------------------------------------------------------------------
69937    -- 4262811 Multiperiod Accounting
69938    -----------------------------------------------------------------------------------------
69940 
69941 
69942 END IF;
69943 END IF;
69944 --
69945 
69946 --
69947 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69948    trace
69949       (p_msg      => 'END of AcctLineType_158'
69950       ,p_level    => C_LEVEL_PROCEDURE
69951       ,p_module   => l_log_module);
69952 END IF;
69953 --
69954 EXCEPTION
69955   WHEN xla_exceptions_pkg.application_exception THEN
69956       RAISE;
69957   WHEN OTHERS THEN
69958        xla_exceptions_pkg.raise_message
69959            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_158');
69960 END AcctLineType_158;
69961 --
69962 
69963 ---------------------------------------
69964 --
69965 -- PRIVATE FUNCTION
69966 --         AcctLineType_159
69967 --
69968 ---------------------------------------
69969 PROCEDURE AcctLineType_159 (
69970   p_application_id        IN NUMBER
69971  ,p_event_id              IN NUMBER
69972  ,p_calculate_acctd_flag  IN VARCHAR2
69973  ,p_calculate_g_l_flag    IN VARCHAR2
69974  ,p_actual_flag           IN OUT VARCHAR2
69975  ,p_balance_type_code     OUT VARCHAR2
69976  ,p_gain_or_loss_ref      OUT VARCHAR2
69977  
69978 --Transaction Account
69979  , p_source_1            IN NUMBER
69980 --Journal Line Type
69981  , p_source_2            IN VARCHAR2
69982 --Entered Amount
69983  , p_source_3            IN NUMBER
69984 --First Distribution Identifier
69985  , p_source_5            IN NUMBER
69986 --Distribution Type
69987  , p_source_6            IN VARCHAR2
69988 --Currency Code
69989  , p_source_7            IN VARCHAR2
69990 --Currency Conversion Date
69991  , p_source_8            IN DATE
69992 --Currency Conversion Rate
69993  , p_source_9            IN NUMBER
69994 --Currency Conversion Type
69995  , p_source_10            IN VARCHAR2
69996 --Accounted Amount
69997  , p_source_11            IN NUMBER
69998 )
69999 IS
70000 
70001 l_component_type              VARCHAR2(80);
70002 l_component_code              VARCHAR2(30);
70003 l_component_type_code         VARCHAR2(1);
70004 l_component_appl_id           INTEGER;
70005 l_amb_context_code            VARCHAR2(30);
70006 l_entity_code                 VARCHAR2(30);
70007 l_event_class_code            VARCHAR2(30);
70008 l_ae_header_id                NUMBER;
70009 l_event_type_code             VARCHAR2(30);
70010 l_line_definition_code        VARCHAR2(30);
70011 l_line_definition_owner_code  VARCHAR2(1);
70012 --
70013 -- adr variables
70014 l_segment                     VARCHAR2(30);
70015 l_ccid                        NUMBER;
70016 l_adr_transaction_coa_id      NUMBER;
70017 l_adr_accounting_coa_id       NUMBER;
70018 l_adr_flexfield_segment_code  VARCHAR2(30);
70019 l_adr_flex_value_set_id       NUMBER;
70020 l_adr_value_type_code         VARCHAR2(30);
70021 l_adr_value_combination_id    NUMBER;
70022 l_adr_value_segment_code      VARCHAR2(30);
70023 
70024 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
70025 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
70026 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
70027 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
70028 
70029 -- 4262811 Variables ------------------------------------------------------------------------------------------
70030 l_entered_amt_idx             NUMBER;
70031 l_accted_amt_idx              NUMBER;
70032 l_acc_rev_flag                VARCHAR2(1);
70033 l_accrual_line_num            NUMBER;
70034 l_tmp_amt                     NUMBER;
70035 l_acc_rev_natural_side_code   VARCHAR2(1);
70036 
70037 l_num_entries                 NUMBER;
70038 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
70039 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
70040 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
70041 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
70042 l_recog_line_1                NUMBER;
70043 l_recog_line_2                NUMBER;
70044 
70045 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
70046 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
70047 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
70048 
70049 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
70050 
70051 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
70052 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
70053 
70054 ---------------------------------------------------------------------------------------------------------------
70055 
70056 
70057 --
70058 -- bulk performance
70059 --
70060 l_balance_type_code           VARCHAR2(1);
70061 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
70062 l_log_module                  VARCHAR2(240);
70063 
70064 --
70065 -- Upgrade strategy
70066 --
70067 l_actual_upg_option           VARCHAR2(1);
70068 l_enc_upg_option           VARCHAR2(1);
70069 
70070 --
70071 BEGIN
70072 --
70076 --
70073 IF g_log_enabled THEN
70074       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_159';
70075 END IF;
70077 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70078 
70079       trace
70080          (p_msg      => 'BEGIN of AcctLineType_159'
70081          ,p_level    => C_LEVEL_PROCEDURE
70082          ,p_module   => l_log_module);
70083 
70084 END IF;
70085 --
70086 l_component_type             := 'AMB_JLT';
70087 l_component_code             := 'INV';
70088 l_component_type_code        := 'S';
70089 l_component_appl_id          :=  555;
70090 l_amb_context_code           := 'DEFAULT';
70091 l_entity_code                := 'INVENTORY';
70092 l_event_class_code           := 'INT_ORDER_TO_EXP';
70093 l_event_type_code            := 'INT_ORDER_ISSUE_TP';
70094 l_line_definition_owner_code := 'S';
70095 l_line_definition_code       := 'INT_ORDER_ISSUE_TP';
70096 --
70097 l_balance_type_code          := 'A';
70098 l_segment                     := NULL;
70099 l_ccid                        := NULL;
70100 l_adr_transaction_coa_id      := NULL;
70101 l_adr_accounting_coa_id       := NULL;
70102 l_adr_flexfield_segment_code  := NULL;
70103 l_adr_flex_value_set_id       := NULL;
70104 l_adr_value_type_code         := NULL;
70105 l_adr_value_combination_id    := NULL;
70106 l_adr_value_segment_code      := NULL;
70107 
70108 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
70109 l_bflow_class_code           := '';    -- 4219869 Business Flow
70110 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
70111 l_budgetary_control_flag     := 'N';
70112 
70113 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
70114 l_bflow_applied_to_amt       := NULL; -- 5132302
70115 l_entered_amt_idx            := NULL;          -- 4262811
70116 l_accted_amt_idx             := NULL;          -- 4262811
70117 l_acc_rev_flag               := NULL;          -- 4262811
70118 l_accrual_line_num           := NULL;          -- 4262811
70119 l_tmp_amt                    := NULL;          -- 4262811
70120 --
70121  
70122 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
70123     l_balance_type_code <> 'B' THEN
70124 IF NVL(p_source_2,'
70125 ') =  'INV'
70126  THEN 
70127 
70128    --
70129    XLA_AE_LINES_PKG.SetNewLine;
70130 
70131    p_balance_type_code          := l_balance_type_code;
70132    -- set the flag so later we will know whether the gain loss line needs to be created
70133    
70134    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
70135      p_actual_flag :='A';
70136    END IF;
70137 
70138    --
70139    -- bulk performance
70140    --
70141    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
70142                                       p_header_num   => 0); -- 4262811
70143    --
70144    -- set accounting line options
70145    --
70146    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
70147            p_natural_side_code          => 'D'
70148          , p_gain_or_loss_flag          => 'N'
70149          , p_gl_transfer_mode_code      => 'D'
70150          , p_acct_entry_type_code       => 'A'
70151          , p_switch_side_flag           => 'Y'
70152          , p_merge_duplicate_code       => 'W'
70153          );
70154    --
70155    l_acc_rev_natural_side_code := 'C';  -- 4262811
70156    -- 
70157    --
70158    -- set accounting line type info
70159    --
70160    xla_ae_lines_pkg.SetAcctLineType
70161       (p_component_type             => l_component_type
70162       ,p_event_type_code            => l_event_type_code
70163       ,p_line_definition_owner_code => l_line_definition_owner_code
70164       ,p_line_definition_code       => l_line_definition_code
70165       ,p_accounting_line_code       => l_component_code
70166       ,p_accounting_line_type_code  => l_component_type_code
70167       ,p_accounting_line_appl_id    => l_component_appl_id
70168       ,p_amb_context_code           => l_amb_context_code
70169       ,p_entity_code                => l_entity_code
70170       ,p_event_class_code           => l_event_class_code);
70171    --
70172    -- set accounting class
70173    --
70174    xla_ae_lines_pkg.SetAcctClass(
70175            p_accounting_class_code  => 'INVENTORY_VALUATION'
70176          , p_ae_header_id           => l_ae_header_id
70177          );
70178 
70179    --
70180    -- set rounding class
70181    --
70182    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
70183                       'INVENTORY_VALUATION';
70184 
70185    --
70186    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
70187    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
70188    --
70189    -- bulk performance
70190    --
70191    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
70192 
70193    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
70194       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
70195 
70196    -- 4955764
70197    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70198       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
70199 
70200    -- 4458381 Public Sector Enh
70201    
70205    l_entered_amt_idx := 3;
70202    --
70203    -- set accounting attributes for the line type
70204    --
70206    l_accted_amt_idx  := 8;
70207    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
70208    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
70209    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
70210    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
70211    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
70212    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
70213    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
70214    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
70215    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
70216    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
70217    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
70218    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
70219    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
70220    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
70221    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
70222    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
70223    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
70224 
70225    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
70226    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
70227 
70228    ---------------------------------------------------------------------------------------------------------------
70229    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
70230    ---------------------------------------------------------------------------------------------------------------
70231    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
70232 
70233    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70234    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70235 
70236    IF xla_accounting_cache_pkg.GetValueChar
70237          (p_source_code         => 'LEDGER_CATEGORY_CODE'
70238          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
70239    AND l_bflow_method_code = 'PRIOR_ENTRY'
70240 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
70241    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
70242          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
70243        )
70244    THEN
70245          xla_ae_lines_pkg.BflowUpgEntry
70246            (p_business_method_code    => l_bflow_method_code
70247            ,p_business_class_code     => l_bflow_class_code
70248            ,p_balance_type            => l_balance_type_code);
70249    ELSE
70250       NULL;
70251 -- No business flow processing for business flow method of NONE.
70252    END IF;
70253 
70254    --
70255    -- call analytical criteria
70256    --
70257    
70258    --
70259    -- call description
70260    --
70261    -- No description or it is inherited.
70262    --
70263    -- call ADRs
70264    -- Bug 4922099
70265    --
70266    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
70267         (NVL(l_actual_upg_option, 'N') = 'O') OR
70268         (NVL(l_enc_upg_option, 'N') = 'O')
70269       )
70270    THEN
70271    NULL;
70272    --
70273    --
70274    
70275   l_ccid := AcctDerRule_17(
70276            p_application_id           => p_application_id
70277          , p_ae_header_id             => l_ae_header_id 
70278 , p_source_1 => p_source_1
70279 , p_source_2 => p_source_2
70280          , x_transaction_coa_id       => l_adr_transaction_coa_id
70281          , x_accounting_coa_id        => l_adr_accounting_coa_id
70282          , x_value_type_code          => l_adr_value_type_code
70283          , p_side                     => 'NA'
70284    );
70285 
70286    xla_ae_lines_pkg.set_ccid(
70287     p_code_combination_id          => l_ccid
70288   , p_value_type_code              => l_adr_value_type_code
70289   , p_transaction_coa_id           => l_adr_transaction_coa_id
70290   , p_accounting_coa_id            => l_adr_accounting_coa_id
70291   , p_adr_code                     => 'INV'
70292   , p_adr_type_code                => 'S'
70293   , p_component_type               => l_component_type
70294   , p_component_code               => l_component_code
70295   , p_component_type_code          => l_component_type_code
70296   , p_component_appl_id            => l_component_appl_id
70297   , p_amb_context_code             => l_amb_context_code
70298   , p_side                         => 'NA'
70299   );
70300 
70301 
70302    --
70303    --
70304    END IF;
70305    --
70306    -- Bug 4922099
70307    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
70308           (NVL(l_enc_upg_option, 'N') = 'O')
70309         ) AND
70310         (l_bflow_method_code = 'PRIOR_ENTRY')
70311       )
70312    THEN
70313       IF
70314       --
70315       1 = 2
70316       --
70317       THEN
70318       xla_accounting_err_pkg.build_message
70319                                     (p_appli_s_name            => 'XLA'
70320                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
70321                                     ,p_token_1                 => 'LINE_NUMBER'
70325                                                                              l_component_type
70322                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
70323                                     ,p_token_2                 => 'LINE_TYPE_NAME'
70324                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
70326                                                                             ,l_component_code
70327                                                                             ,l_component_type_code
70328                                                                             ,l_component_appl_id
70329                                                                             ,l_amb_context_code
70330                                                                             ,l_entity_code
70331                                                                             ,l_event_class_code
70332                                                                            )
70333                                     ,p_token_3                 => 'OWNER'
70334                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
70335                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
70336                                                                           ,p_lookup_code    => l_component_type_code
70337                                                                          )
70338                                     ,p_token_4                 => 'PRODUCT_NAME'
70339                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
70340                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
70341                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
70342                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
70343                                     ,p_ae_header_id            =>  NULL
70344                                        );
70345 
70346         IF (C_LEVEL_ERROR>= g_log_level) THEN
70347                  trace
70348                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
70349                       ,p_level    => C_LEVEL_ERROR
70350                       ,p_module   => l_log_module);
70351         END IF;
70352       END IF;
70353    END IF;
70354    --
70355    --
70356    ------------------------------------------------------------------------------------------------
70357    -- 4219869 Business Flow
70358    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
70359    -- Prior Entry.  Currently, the following code is always generated.
70360    ------------------------------------------------------------------------------------------------
70361    XLA_AE_LINES_PKG.ValidateCurrentLine;
70362 
70363    ------------------------------------------------------------------------------------
70364    -- 4219869 Business Flow
70365    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
70366    ------------------------------------------------------------------------------------
70367    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
70368 
70369    ----------------------------------------------------------------------------------
70370    -- 4219869 Business Flow
70371    -- Update journal entry status -- Need to generate this within IF <condition>
70372    ----------------------------------------------------------------------------------
70373    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70374          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
70375          ,p_balance_type_code => l_balance_type_code
70376          );
70377 
70378    -------------------------------------------------------------------------------------------
70379    -- 4262811 - Generate the Accrual Reversal lines
70380    -------------------------------------------------------------------------------------------
70381    BEGIN
70382       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
70383                               (g_array_event(p_event_id).array_value_num('header_index'));
70384       IF l_acc_rev_flag IS NULL THEN
70385          l_acc_rev_flag := 'N';
70386       END IF;
70387    EXCEPTION
70388       WHEN OTHERS THEN
70389          l_acc_rev_flag := 'N';
70390    END;
70391    --
70392    IF (l_acc_rev_flag = 'Y') THEN
70393 
70394        -- 4645092  ------------------------------------------------------------------------------
70395        -- To allow MPA report to determine if it should generate report process
70396        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
70397        ------------------------------------------------------------------------------------------
70398 
70399        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
70400        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
70401    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
70402    -- call ADRs
70403    -- Bug 4922099
70404    --
70405    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
70406         (NVL(l_actual_upg_option, 'N') = 'O') OR
70407         (NVL(l_enc_upg_option, 'N') = 'O')
70408       )
70409    THEN
70410    NULL;
70411    --
70412    --
70413    
70414   l_ccid := AcctDerRule_17(
70415            p_application_id           => p_application_id
70419          , x_transaction_coa_id       => l_adr_transaction_coa_id
70416          , p_ae_header_id             => l_ae_header_id 
70417 , p_source_1 => p_source_1
70418 , p_source_2 => p_source_2
70420          , x_accounting_coa_id        => l_adr_accounting_coa_id
70421          , x_value_type_code          => l_adr_value_type_code
70422          , p_side                     => 'NA'
70423    );
70424 
70425    xla_ae_lines_pkg.set_ccid(
70426     p_code_combination_id          => l_ccid
70427   , p_value_type_code              => l_adr_value_type_code
70428   , p_transaction_coa_id           => l_adr_transaction_coa_id
70429   , p_accounting_coa_id            => l_adr_accounting_coa_id
70430   , p_adr_code                     => 'INV'
70431   , p_adr_type_code                => 'S'
70432   , p_component_type               => l_component_type
70433   , p_component_code               => l_component_code
70434   , p_component_type_code          => l_component_type_code
70435   , p_component_appl_id            => l_component_appl_id
70436   , p_amb_context_code             => l_amb_context_code
70437   , p_side                         => 'NA'
70438   );
70439 
70440 
70441    --
70442    --
70443    END IF;
70444 
70445        --
70446        -- Update the line information that should be overwritten
70447        --
70448        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
70449                                          p_header_num   => 1);
70450        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
70451 
70452        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
70453 
70454        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
70455           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
70456        END IF;
70457 
70458       --
70459       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
70460       --
70461       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
70462           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
70463       ELSE
70464           ---------------------------------------------------------------------------------------------------
70465           -- 4262811a Switch Sign
70466           ---------------------------------------------------------------------------------------------------
70467           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
70468           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
70469                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70470           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
70471                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70472           -- 5132302
70473           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
70474                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70475 
70476       END IF;
70477 
70478       -- 4955764
70479       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70480       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
70481 
70482 
70483       XLA_AE_LINES_PKG.ValidateCurrentLine;
70484       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
70485 
70486       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70487                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
70488                ,p_balance_type_code => l_balance_type_code);
70489 
70490    END IF;
70491 
70492    -----------------------------------------------------------------------------------------
70493    -- 4262811 Multiperiod Accounting
70494    -----------------------------------------------------------------------------------------
70495      -- No MPA option is assigned.
70496 
70497 
70498 END IF;
70499 END IF;
70500 --
70501 
70502 --
70503 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70504    trace
70505       (p_msg      => 'END of AcctLineType_159'
70506       ,p_level    => C_LEVEL_PROCEDURE
70507       ,p_module   => l_log_module);
70508 END IF;
70509 --
70510 EXCEPTION
70511   WHEN xla_exceptions_pkg.application_exception THEN
70512       RAISE;
70513   WHEN OTHERS THEN
70514        xla_exceptions_pkg.raise_message
70515            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_159');
70516 END AcctLineType_159;
70517 --
70518 
70519 ---------------------------------------
70520 --
70521 -- PRIVATE FUNCTION
70522 --         AcctLineType_160
70523 --
70524 ---------------------------------------
70525 PROCEDURE AcctLineType_160 (
70526   p_application_id        IN NUMBER
70527  ,p_event_id              IN NUMBER
70528  ,p_calculate_acctd_flag  IN VARCHAR2
70529  ,p_calculate_g_l_flag    IN VARCHAR2
70530  ,p_actual_flag           IN OUT VARCHAR2
70531  ,p_balance_type_code     OUT VARCHAR2
70532  ,p_gain_or_loss_ref      OUT VARCHAR2
70533  
70534 --Transaction Account
70535  , p_source_1            IN NUMBER
70536 --Journal Line Type
70537  , p_source_2            IN VARCHAR2
70541  , p_source_5            IN NUMBER
70538 --Entered Amount
70539  , p_source_3            IN NUMBER
70540 --First Distribution Identifier
70542 --Distribution Type
70543  , p_source_6            IN VARCHAR2
70544 --Currency Code
70545  , p_source_7            IN VARCHAR2
70546 --Currency Conversion Date
70547  , p_source_8            IN DATE
70548 --Currency Conversion Rate
70549  , p_source_9            IN NUMBER
70550 --Accounted Amount
70551  , p_source_11            IN NUMBER
70552 )
70553 IS
70554 
70555 l_component_type              VARCHAR2(80);
70556 l_component_code              VARCHAR2(30);
70557 l_component_type_code         VARCHAR2(1);
70558 l_component_appl_id           INTEGER;
70559 l_amb_context_code            VARCHAR2(30);
70560 l_entity_code                 VARCHAR2(30);
70561 l_event_class_code            VARCHAR2(30);
70562 l_ae_header_id                NUMBER;
70563 l_event_type_code             VARCHAR2(30);
70564 l_line_definition_code        VARCHAR2(30);
70565 l_line_definition_owner_code  VARCHAR2(1);
70566 --
70567 -- adr variables
70568 l_segment                     VARCHAR2(30);
70569 l_ccid                        NUMBER;
70570 l_adr_transaction_coa_id      NUMBER;
70571 l_adr_accounting_coa_id       NUMBER;
70572 l_adr_flexfield_segment_code  VARCHAR2(30);
70573 l_adr_flex_value_set_id       NUMBER;
70574 l_adr_value_type_code         VARCHAR2(30);
70575 l_adr_value_combination_id    NUMBER;
70576 l_adr_value_segment_code      VARCHAR2(30);
70577 
70578 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
70579 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
70580 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
70581 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
70582 
70583 -- 4262811 Variables ------------------------------------------------------------------------------------------
70584 l_entered_amt_idx             NUMBER;
70585 l_accted_amt_idx              NUMBER;
70586 l_acc_rev_flag                VARCHAR2(1);
70587 l_accrual_line_num            NUMBER;
70588 l_tmp_amt                     NUMBER;
70589 l_acc_rev_natural_side_code   VARCHAR2(1);
70590 
70591 l_num_entries                 NUMBER;
70592 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
70593 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
70594 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
70595 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
70596 l_recog_line_1                NUMBER;
70597 l_recog_line_2                NUMBER;
70598 
70599 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
70600 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
70601 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
70602 
70603 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
70604 
70605 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
70606 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
70607 
70608 ---------------------------------------------------------------------------------------------------------------
70609 
70610 
70611 --
70612 -- bulk performance
70613 --
70614 l_balance_type_code           VARCHAR2(1);
70615 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
70616 l_log_module                  VARCHAR2(240);
70617 
70618 --
70619 -- Upgrade strategy
70620 --
70621 l_actual_upg_option           VARCHAR2(1);
70622 l_enc_upg_option           VARCHAR2(1);
70623 
70624 --
70625 BEGIN
70626 --
70627 IF g_log_enabled THEN
70628       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_160';
70629 END IF;
70630 --
70631 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70632 
70633       trace
70634          (p_msg      => 'BEGIN of AcctLineType_160'
70635          ,p_level    => C_LEVEL_PROCEDURE
70636          ,p_module   => l_log_module);
70637 
70638 END IF;
70639 --
70640 l_component_type             := 'AMB_JLT';
70641 l_component_code             := 'INV';
70642 l_component_type_code        := 'S';
70643 l_component_appl_id          :=  555;
70644 l_amb_context_code           := 'DEFAULT';
70645 l_entity_code                := 'INVENTORY';
70646 l_event_class_code           := 'MISC_TXN';
70647 l_event_type_code            := 'MISC_TXN_ALL';
70648 l_line_definition_owner_code := 'S';
70649 l_line_definition_code       := 'MISC_TXN';
70650 --
70651 l_balance_type_code          := 'A';
70652 l_segment                     := NULL;
70653 l_ccid                        := NULL;
70654 l_adr_transaction_coa_id      := NULL;
70655 l_adr_accounting_coa_id       := NULL;
70656 l_adr_flexfield_segment_code  := NULL;
70657 l_adr_flex_value_set_id       := NULL;
70658 l_adr_value_type_code         := NULL;
70659 l_adr_value_combination_id    := NULL;
70660 l_adr_value_segment_code      := NULL;
70661 
70662 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
70663 l_bflow_class_code           := '';    -- 4219869 Business Flow
70664 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
70665 l_budgetary_control_flag     := 'N';
70666 
70667 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
70668 l_bflow_applied_to_amt       := NULL; -- 5132302
70672 l_accrual_line_num           := NULL;          -- 4262811
70669 l_entered_amt_idx            := NULL;          -- 4262811
70670 l_accted_amt_idx             := NULL;          -- 4262811
70671 l_acc_rev_flag               := NULL;          -- 4262811
70673 l_tmp_amt                    := NULL;          -- 4262811
70674 --
70675  
70676 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
70677     l_balance_type_code <> 'B' THEN
70678 IF NVL(p_source_2,'
70679 ') =  'INV'
70680  THEN 
70681 
70682    --
70683    XLA_AE_LINES_PKG.SetNewLine;
70684 
70685    p_balance_type_code          := l_balance_type_code;
70686    -- set the flag so later we will know whether the gain loss line needs to be created
70687    
70688    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
70689      p_actual_flag :='A';
70690    END IF;
70691 
70692    --
70693    -- bulk performance
70694    --
70695    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
70696                                       p_header_num   => 0); -- 4262811
70697    --
70698    -- set accounting line options
70699    --
70700    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
70701            p_natural_side_code          => 'D'
70702          , p_gain_or_loss_flag          => 'N'
70703          , p_gl_transfer_mode_code      => 'D'
70704          , p_acct_entry_type_code       => 'A'
70705          , p_switch_side_flag           => 'Y'
70706          , p_merge_duplicate_code       => 'W'
70707          );
70708    --
70709    l_acc_rev_natural_side_code := 'C';  -- 4262811
70710    -- 
70711    --
70712    -- set accounting line type info
70713    --
70714    xla_ae_lines_pkg.SetAcctLineType
70715       (p_component_type             => l_component_type
70716       ,p_event_type_code            => l_event_type_code
70717       ,p_line_definition_owner_code => l_line_definition_owner_code
70718       ,p_line_definition_code       => l_line_definition_code
70719       ,p_accounting_line_code       => l_component_code
70720       ,p_accounting_line_type_code  => l_component_type_code
70721       ,p_accounting_line_appl_id    => l_component_appl_id
70722       ,p_amb_context_code           => l_amb_context_code
70723       ,p_entity_code                => l_entity_code
70724       ,p_event_class_code           => l_event_class_code);
70725    --
70726    -- set accounting class
70727    --
70728    xla_ae_lines_pkg.SetAcctClass(
70729            p_accounting_class_code  => 'INVENTORY_VALUATION'
70730          , p_ae_header_id           => l_ae_header_id
70731          );
70732 
70733    --
70734    -- set rounding class
70735    --
70736    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
70737                       'INVENTORY_VALUATION';
70738 
70739    --
70740    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
70741    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
70742    --
70743    -- bulk performance
70744    --
70745    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
70746 
70747    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
70748       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
70749 
70750    -- 4955764
70751    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70752       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
70753 
70754    -- 4458381 Public Sector Enh
70755    
70756    --
70757    -- set accounting attributes for the line type
70758    --
70759    l_entered_amt_idx := 3;
70760    l_accted_amt_idx  := 8;
70761    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
70762    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
70763    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
70764    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
70765    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
70766    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
70767    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
70768    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
70769    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
70770    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
70771    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
70772    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
70773    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
70774    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
70775    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_9);
70776    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
70777    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
70778 
70779    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
70780    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
70781 
70782    ---------------------------------------------------------------------------------------------------------------
70783    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
70784    ---------------------------------------------------------------------------------------------------------------
70788    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70785    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
70786 
70787    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70789 
70790    IF xla_accounting_cache_pkg.GetValueChar
70791          (p_source_code         => 'LEDGER_CATEGORY_CODE'
70792          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
70793    AND l_bflow_method_code = 'PRIOR_ENTRY'
70794 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
70795    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
70796          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
70797        )
70798    THEN
70799          xla_ae_lines_pkg.BflowUpgEntry
70800            (p_business_method_code    => l_bflow_method_code
70801            ,p_business_class_code     => l_bflow_class_code
70802            ,p_balance_type            => l_balance_type_code);
70803    ELSE
70804       NULL;
70805 -- No business flow processing for business flow method of NONE.
70806    END IF;
70807 
70808    --
70809    -- call analytical criteria
70810    --
70811    
70812    --
70813    -- call description
70814    --
70815    -- No description or it is inherited.
70816    --
70817    -- call ADRs
70818    -- Bug 4922099
70819    --
70820    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
70821         (NVL(l_actual_upg_option, 'N') = 'O') OR
70822         (NVL(l_enc_upg_option, 'N') = 'O')
70823       )
70824    THEN
70825    NULL;
70826    --
70827    --
70828    
70829   l_ccid := AcctDerRule_17(
70830            p_application_id           => p_application_id
70831          , p_ae_header_id             => l_ae_header_id 
70832 , p_source_1 => p_source_1
70833 , p_source_2 => p_source_2
70834          , x_transaction_coa_id       => l_adr_transaction_coa_id
70835          , x_accounting_coa_id        => l_adr_accounting_coa_id
70836          , x_value_type_code          => l_adr_value_type_code
70837          , p_side                     => 'NA'
70838    );
70839 
70840    xla_ae_lines_pkg.set_ccid(
70841     p_code_combination_id          => l_ccid
70842   , p_value_type_code              => l_adr_value_type_code
70843   , p_transaction_coa_id           => l_adr_transaction_coa_id
70844   , p_accounting_coa_id            => l_adr_accounting_coa_id
70845   , p_adr_code                     => 'INV'
70846   , p_adr_type_code                => 'S'
70847   , p_component_type               => l_component_type
70848   , p_component_code               => l_component_code
70849   , p_component_type_code          => l_component_type_code
70850   , p_component_appl_id            => l_component_appl_id
70851   , p_amb_context_code             => l_amb_context_code
70852   , p_side                         => 'NA'
70853   );
70854 
70855 
70856    --
70857    --
70858    END IF;
70859    --
70860    -- Bug 4922099
70861    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
70862           (NVL(l_enc_upg_option, 'N') = 'O')
70863         ) AND
70864         (l_bflow_method_code = 'PRIOR_ENTRY')
70865       )
70866    THEN
70867       IF
70868       --
70869       1 = 2
70870       --
70871       THEN
70872       xla_accounting_err_pkg.build_message
70873                                     (p_appli_s_name            => 'XLA'
70874                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
70875                                     ,p_token_1                 => 'LINE_NUMBER'
70876                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
70877                                     ,p_token_2                 => 'LINE_TYPE_NAME'
70878                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
70879                                                                              l_component_type
70880                                                                             ,l_component_code
70881                                                                             ,l_component_type_code
70882                                                                             ,l_component_appl_id
70883                                                                             ,l_amb_context_code
70884                                                                             ,l_entity_code
70885                                                                             ,l_event_class_code
70886                                                                            )
70887                                     ,p_token_3                 => 'OWNER'
70888                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
70889                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
70890                                                                           ,p_lookup_code    => l_component_type_code
70891                                                                          )
70892                                     ,p_token_4                 => 'PRODUCT_NAME'
70893                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
70894                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
70895                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
70899 
70896                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
70897                                     ,p_ae_header_id            =>  NULL
70898                                        );
70900         IF (C_LEVEL_ERROR>= g_log_level) THEN
70901                  trace
70902                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
70903                       ,p_level    => C_LEVEL_ERROR
70904                       ,p_module   => l_log_module);
70905         END IF;
70906       END IF;
70907    END IF;
70908    --
70909    --
70910    ------------------------------------------------------------------------------------------------
70911    -- 4219869 Business Flow
70912    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
70913    -- Prior Entry.  Currently, the following code is always generated.
70914    ------------------------------------------------------------------------------------------------
70915    XLA_AE_LINES_PKG.ValidateCurrentLine;
70916 
70917    ------------------------------------------------------------------------------------
70918    -- 4219869 Business Flow
70919    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
70920    ------------------------------------------------------------------------------------
70921    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
70922 
70923    ----------------------------------------------------------------------------------
70924    -- 4219869 Business Flow
70925    -- Update journal entry status -- Need to generate this within IF <condition>
70926    ----------------------------------------------------------------------------------
70927    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70928          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
70929          ,p_balance_type_code => l_balance_type_code
70930          );
70931 
70932    -------------------------------------------------------------------------------------------
70933    -- 4262811 - Generate the Accrual Reversal lines
70934    -------------------------------------------------------------------------------------------
70935    BEGIN
70936       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
70937                               (g_array_event(p_event_id).array_value_num('header_index'));
70938       IF l_acc_rev_flag IS NULL THEN
70939          l_acc_rev_flag := 'N';
70940       END IF;
70941    EXCEPTION
70942       WHEN OTHERS THEN
70943          l_acc_rev_flag := 'N';
70944    END;
70945    --
70946    IF (l_acc_rev_flag = 'Y') THEN
70947 
70948        -- 4645092  ------------------------------------------------------------------------------
70949        -- To allow MPA report to determine if it should generate report process
70950        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
70951        ------------------------------------------------------------------------------------------
70952 
70953        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
70954        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
70955    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
70956    -- call ADRs
70957    -- Bug 4922099
70958    --
70959    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
70960         (NVL(l_actual_upg_option, 'N') = 'O') OR
70961         (NVL(l_enc_upg_option, 'N') = 'O')
70962       )
70963    THEN
70964    NULL;
70965    --
70966    --
70967    
70968   l_ccid := AcctDerRule_17(
70969            p_application_id           => p_application_id
70970          , p_ae_header_id             => l_ae_header_id 
70971 , p_source_1 => p_source_1
70972 , p_source_2 => p_source_2
70973          , x_transaction_coa_id       => l_adr_transaction_coa_id
70974          , x_accounting_coa_id        => l_adr_accounting_coa_id
70975          , x_value_type_code          => l_adr_value_type_code
70976          , p_side                     => 'NA'
70977    );
70978 
70979    xla_ae_lines_pkg.set_ccid(
70980     p_code_combination_id          => l_ccid
70981   , p_value_type_code              => l_adr_value_type_code
70982   , p_transaction_coa_id           => l_adr_transaction_coa_id
70983   , p_accounting_coa_id            => l_adr_accounting_coa_id
70984   , p_adr_code                     => 'INV'
70985   , p_adr_type_code                => 'S'
70986   , p_component_type               => l_component_type
70987   , p_component_code               => l_component_code
70988   , p_component_type_code          => l_component_type_code
70989   , p_component_appl_id            => l_component_appl_id
70990   , p_amb_context_code             => l_amb_context_code
70991   , p_side                         => 'NA'
70992   );
70993 
70994 
70995    --
70996    --
70997    END IF;
70998 
70999        --
71000        -- Update the line information that should be overwritten
71001        --
71002        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
71003                                          p_header_num   => 1);
71004        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
71005 
71006        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
71007 
71008        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
71009           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
71010        END IF;
71014       --
71011 
71012       --
71013       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
71015       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
71016           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
71017       ELSE
71018           ---------------------------------------------------------------------------------------------------
71019           -- 4262811a Switch Sign
71020           ---------------------------------------------------------------------------------------------------
71021           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
71022           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71023                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71024           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71025                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71026           -- 5132302
71027           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
71028                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71029 
71030       END IF;
71031 
71032       -- 4955764
71033       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71034       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
71035 
71036 
71037       XLA_AE_LINES_PKG.ValidateCurrentLine;
71038       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71039 
71040       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71041                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
71042                ,p_balance_type_code => l_balance_type_code);
71043 
71044    END IF;
71045 
71046    -----------------------------------------------------------------------------------------
71047    -- 4262811 Multiperiod Accounting
71048    -----------------------------------------------------------------------------------------
71049      -- No MPA option is assigned.
71050 
71051 
71052 END IF;
71053 END IF;
71054 --
71055 
71056 --
71057 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71058    trace
71059       (p_msg      => 'END of AcctLineType_160'
71060       ,p_level    => C_LEVEL_PROCEDURE
71061       ,p_module   => l_log_module);
71062 END IF;
71063 --
71064 EXCEPTION
71065   WHEN xla_exceptions_pkg.application_exception THEN
71066       RAISE;
71067   WHEN OTHERS THEN
71068        xla_exceptions_pkg.raise_message
71069            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_160');
71070 END AcctLineType_160;
71071 --
71072 
71073 ---------------------------------------
71074 --
71075 -- PRIVATE FUNCTION
71076 --         AcctLineType_161
71077 --
71078 ---------------------------------------
71079 PROCEDURE AcctLineType_161 (
71080   p_application_id        IN NUMBER
71081  ,p_event_id              IN NUMBER
71082  ,p_calculate_acctd_flag  IN VARCHAR2
71083  ,p_calculate_g_l_flag    IN VARCHAR2
71084  ,p_actual_flag           IN OUT VARCHAR2
71085  ,p_balance_type_code     OUT VARCHAR2
71086  ,p_gain_or_loss_ref      OUT VARCHAR2
71087  
71088 --Transaction Account
71089  , p_source_1            IN NUMBER
71090 --Journal Line Type
71091  , p_source_2            IN VARCHAR2
71092 --Entered Amount
71093  , p_source_3            IN NUMBER
71094 --First Distribution Identifier
71095  , p_source_5            IN NUMBER
71096 --Distribution Type
71097  , p_source_6            IN VARCHAR2
71098 --Currency Code
71099  , p_source_7            IN VARCHAR2
71100 --Currency Conversion Date
71101  , p_source_8            IN DATE
71102 --Currency Conversion Rate
71103  , p_source_9            IN NUMBER
71104 --Currency Conversion Type
71105  , p_source_10            IN VARCHAR2
71106 --Accounted Amount
71107  , p_source_11            IN NUMBER
71108 )
71109 IS
71110 
71111 l_component_type              VARCHAR2(80);
71112 l_component_code              VARCHAR2(30);
71113 l_component_type_code         VARCHAR2(1);
71114 l_component_appl_id           INTEGER;
71115 l_amb_context_code            VARCHAR2(30);
71116 l_entity_code                 VARCHAR2(30);
71117 l_event_class_code            VARCHAR2(30);
71118 l_ae_header_id                NUMBER;
71119 l_event_type_code             VARCHAR2(30);
71120 l_line_definition_code        VARCHAR2(30);
71121 l_line_definition_owner_code  VARCHAR2(1);
71122 --
71123 -- adr variables
71124 l_segment                     VARCHAR2(30);
71125 l_ccid                        NUMBER;
71126 l_adr_transaction_coa_id      NUMBER;
71127 l_adr_accounting_coa_id       NUMBER;
71128 l_adr_flexfield_segment_code  VARCHAR2(30);
71129 l_adr_flex_value_set_id       NUMBER;
71130 l_adr_value_type_code         VARCHAR2(30);
71131 l_adr_value_combination_id    NUMBER;
71132 l_adr_value_segment_code      VARCHAR2(30);
71133 
71134 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
71135 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
71136 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
71140 l_entered_amt_idx             NUMBER;
71137 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
71138 
71139 -- 4262811 Variables ------------------------------------------------------------------------------------------
71141 l_accted_amt_idx              NUMBER;
71142 l_acc_rev_flag                VARCHAR2(1);
71143 l_accrual_line_num            NUMBER;
71144 l_tmp_amt                     NUMBER;
71145 l_acc_rev_natural_side_code   VARCHAR2(1);
71146 
71147 l_num_entries                 NUMBER;
71148 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
71149 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
71150 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
71151 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
71152 l_recog_line_1                NUMBER;
71153 l_recog_line_2                NUMBER;
71154 
71155 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
71156 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
71157 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
71158 
71159 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
71160 
71161 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
71162 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
71163 
71164 ---------------------------------------------------------------------------------------------------------------
71165 
71166 
71167 --
71168 -- bulk performance
71169 --
71170 l_balance_type_code           VARCHAR2(1);
71171 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
71172 l_log_module                  VARCHAR2(240);
71173 
71174 --
71175 -- Upgrade strategy
71176 --
71177 l_actual_upg_option           VARCHAR2(1);
71178 l_enc_upg_option           VARCHAR2(1);
71179 
71180 --
71181 BEGIN
71182 --
71183 IF g_log_enabled THEN
71184       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_161';
71185 END IF;
71186 --
71187 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71188 
71189       trace
71190          (p_msg      => 'BEGIN of AcctLineType_161'
71191          ,p_level    => C_LEVEL_PROCEDURE
71192          ,p_module   => l_log_module);
71193 
71194 END IF;
71195 --
71196 l_component_type             := 'AMB_JLT';
71197 l_component_code             := 'INV';
71198 l_component_type_code        := 'S';
71199 l_component_appl_id          :=  555;
71200 l_amb_context_code           := 'DEFAULT';
71201 l_entity_code                := 'PURCHASING';
71202 l_event_class_code           := 'DELIVER';
71203 l_event_type_code            := 'INT_REQ_RECEIPT_ADJ';
71204 l_line_definition_owner_code := 'S';
71205 l_line_definition_code       := 'INT_REQ_RCPT_ADJ';
71206 --
71207 l_balance_type_code          := 'A';
71208 l_segment                     := NULL;
71209 l_ccid                        := NULL;
71210 l_adr_transaction_coa_id      := NULL;
71211 l_adr_accounting_coa_id       := NULL;
71212 l_adr_flexfield_segment_code  := NULL;
71213 l_adr_flex_value_set_id       := NULL;
71214 l_adr_value_type_code         := NULL;
71215 l_adr_value_combination_id    := NULL;
71216 l_adr_value_segment_code      := NULL;
71217 
71218 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
71219 l_bflow_class_code           := '';    -- 4219869 Business Flow
71220 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
71221 l_budgetary_control_flag     := 'N';
71222 
71223 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
71224 l_bflow_applied_to_amt       := NULL; -- 5132302
71225 l_entered_amt_idx            := NULL;          -- 4262811
71226 l_accted_amt_idx             := NULL;          -- 4262811
71227 l_acc_rev_flag               := NULL;          -- 4262811
71228 l_accrual_line_num           := NULL;          -- 4262811
71229 l_tmp_amt                    := NULL;          -- 4262811
71230 --
71231  
71232 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
71233     l_balance_type_code <> 'B' THEN
71234 IF NVL(p_source_2,'
71235 ') =  'INV'
71236  THEN 
71237 
71238    --
71239    XLA_AE_LINES_PKG.SetNewLine;
71240 
71241    p_balance_type_code          := l_balance_type_code;
71242    -- set the flag so later we will know whether the gain loss line needs to be created
71243    
71244    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
71245      p_actual_flag :='A';
71246    END IF;
71247 
71248    --
71249    -- bulk performance
71250    --
71251    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
71252                                       p_header_num   => 0); -- 4262811
71253    --
71254    -- set accounting line options
71255    --
71256    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
71257            p_natural_side_code          => 'D'
71258          , p_gain_or_loss_flag          => 'N'
71259          , p_gl_transfer_mode_code      => 'D'
71260          , p_acct_entry_type_code       => 'A'
71261          , p_switch_side_flag           => 'Y'
71262          , p_merge_duplicate_code       => 'W'
71263          );
71264    --
71265    l_acc_rev_natural_side_code := 'C';  -- 4262811
71266    -- 
71267    --
71268    -- set accounting line type info
71272       ,p_event_type_code            => l_event_type_code
71269    --
71270    xla_ae_lines_pkg.SetAcctLineType
71271       (p_component_type             => l_component_type
71273       ,p_line_definition_owner_code => l_line_definition_owner_code
71274       ,p_line_definition_code       => l_line_definition_code
71275       ,p_accounting_line_code       => l_component_code
71276       ,p_accounting_line_type_code  => l_component_type_code
71277       ,p_accounting_line_appl_id    => l_component_appl_id
71278       ,p_amb_context_code           => l_amb_context_code
71279       ,p_entity_code                => l_entity_code
71280       ,p_event_class_code           => l_event_class_code);
71281    --
71282    -- set accounting class
71283    --
71284    xla_ae_lines_pkg.SetAcctClass(
71285            p_accounting_class_code  => 'INVENTORY_VALUATION'
71286          , p_ae_header_id           => l_ae_header_id
71287          );
71288 
71289    --
71290    -- set rounding class
71291    --
71292    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
71293                       'INVENTORY_VALUATION';
71294 
71295    --
71296    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
71297    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
71298    --
71299    -- bulk performance
71300    --
71301    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
71302 
71303    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
71304       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
71305 
71306    -- 4955764
71307    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71308       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
71309 
71310    -- 4458381 Public Sector Enh
71311    
71312    --
71313    -- set accounting attributes for the line type
71314    --
71315    l_entered_amt_idx := 3;
71316    l_accted_amt_idx  := 8;
71317    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
71318    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
71319    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
71320    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
71321    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
71322    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
71323    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
71324    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
71325    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
71326    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
71327    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
71328    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
71329    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
71330    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
71331    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
71332    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
71333    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
71334 
71335    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
71336    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
71337 
71338    ---------------------------------------------------------------------------------------------------------------
71339    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
71340    ---------------------------------------------------------------------------------------------------------------
71341    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
71342 
71343    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
71344    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
71345 
71346    IF xla_accounting_cache_pkg.GetValueChar
71347          (p_source_code         => 'LEDGER_CATEGORY_CODE'
71348          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
71349    AND l_bflow_method_code = 'PRIOR_ENTRY'
71350 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
71351    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
71352          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
71353        )
71354    THEN
71355          xla_ae_lines_pkg.BflowUpgEntry
71356            (p_business_method_code    => l_bflow_method_code
71357            ,p_business_class_code     => l_bflow_class_code
71358            ,p_balance_type            => l_balance_type_code);
71359    ELSE
71360       NULL;
71361 -- No business flow processing for business flow method of NONE.
71362    END IF;
71363 
71364    --
71365    -- call analytical criteria
71366    --
71367    
71368    --
71369    -- call description
71370    --
71371    -- No description or it is inherited.
71372    --
71373    -- call ADRs
71374    -- Bug 4922099
71375    --
71376    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
71377         (NVL(l_actual_upg_option, 'N') = 'O') OR
71378         (NVL(l_enc_upg_option, 'N') = 'O')
71379       )
71380    THEN
71381    NULL;
71382    --
71383    --
71384    
71385   l_ccid := AcctDerRule_17(
71386            p_application_id           => p_application_id
71390          , x_transaction_coa_id       => l_adr_transaction_coa_id
71387          , p_ae_header_id             => l_ae_header_id 
71388 , p_source_1 => p_source_1
71389 , p_source_2 => p_source_2
71391          , x_accounting_coa_id        => l_adr_accounting_coa_id
71392          , x_value_type_code          => l_adr_value_type_code
71393          , p_side                     => 'NA'
71394    );
71395 
71396    xla_ae_lines_pkg.set_ccid(
71397     p_code_combination_id          => l_ccid
71398   , p_value_type_code              => l_adr_value_type_code
71399   , p_transaction_coa_id           => l_adr_transaction_coa_id
71400   , p_accounting_coa_id            => l_adr_accounting_coa_id
71401   , p_adr_code                     => 'INV'
71402   , p_adr_type_code                => 'S'
71403   , p_component_type               => l_component_type
71404   , p_component_code               => l_component_code
71405   , p_component_type_code          => l_component_type_code
71406   , p_component_appl_id            => l_component_appl_id
71407   , p_amb_context_code             => l_amb_context_code
71408   , p_side                         => 'NA'
71409   );
71410 
71411 
71412    --
71413    --
71414    END IF;
71415    --
71416    -- Bug 4922099
71417    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
71418           (NVL(l_enc_upg_option, 'N') = 'O')
71419         ) AND
71420         (l_bflow_method_code = 'PRIOR_ENTRY')
71421       )
71422    THEN
71423       IF
71424       --
71425       1 = 2
71426       --
71427       THEN
71428       xla_accounting_err_pkg.build_message
71429                                     (p_appli_s_name            => 'XLA'
71430                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71431                                     ,p_token_1                 => 'LINE_NUMBER'
71432                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
71433                                     ,p_token_2                 => 'LINE_TYPE_NAME'
71434                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
71435                                                                              l_component_type
71436                                                                             ,l_component_code
71437                                                                             ,l_component_type_code
71438                                                                             ,l_component_appl_id
71439                                                                             ,l_amb_context_code
71440                                                                             ,l_entity_code
71441                                                                             ,l_event_class_code
71442                                                                            )
71443                                     ,p_token_3                 => 'OWNER'
71444                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
71445                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
71446                                                                           ,p_lookup_code    => l_component_type_code
71447                                                                          )
71448                                     ,p_token_4                 => 'PRODUCT_NAME'
71449                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
71450                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
71451                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
71452                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
71453                                     ,p_ae_header_id            =>  NULL
71454                                        );
71455 
71456         IF (C_LEVEL_ERROR>= g_log_level) THEN
71457                  trace
71458                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71459                       ,p_level    => C_LEVEL_ERROR
71460                       ,p_module   => l_log_module);
71461         END IF;
71462       END IF;
71463    END IF;
71464    --
71465    --
71466    ------------------------------------------------------------------------------------------------
71467    -- 4219869 Business Flow
71468    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
71469    -- Prior Entry.  Currently, the following code is always generated.
71470    ------------------------------------------------------------------------------------------------
71471    XLA_AE_LINES_PKG.ValidateCurrentLine;
71472 
71473    ------------------------------------------------------------------------------------
71474    -- 4219869 Business Flow
71475    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
71476    ------------------------------------------------------------------------------------
71477    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71478 
71479    ----------------------------------------------------------------------------------
71480    -- 4219869 Business Flow
71481    -- Update journal entry status -- Need to generate this within IF <condition>
71482    ----------------------------------------------------------------------------------
71483    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71487 
71484          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
71485          ,p_balance_type_code => l_balance_type_code
71486          );
71488    -------------------------------------------------------------------------------------------
71489    -- 4262811 - Generate the Accrual Reversal lines
71490    -------------------------------------------------------------------------------------------
71491    BEGIN
71492       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
71493                               (g_array_event(p_event_id).array_value_num('header_index'));
71494       IF l_acc_rev_flag IS NULL THEN
71495          l_acc_rev_flag := 'N';
71496       END IF;
71497    EXCEPTION
71498       WHEN OTHERS THEN
71499          l_acc_rev_flag := 'N';
71500    END;
71501    --
71502    IF (l_acc_rev_flag = 'Y') THEN
71503 
71504        -- 4645092  ------------------------------------------------------------------------------
71505        -- To allow MPA report to determine if it should generate report process
71506        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
71507        ------------------------------------------------------------------------------------------
71508 
71509        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
71510        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
71511    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
71512    -- call ADRs
71513    -- Bug 4922099
71514    --
71515    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
71516         (NVL(l_actual_upg_option, 'N') = 'O') OR
71517         (NVL(l_enc_upg_option, 'N') = 'O')
71518       )
71519    THEN
71520    NULL;
71521    --
71522    --
71523    
71524   l_ccid := AcctDerRule_17(
71525            p_application_id           => p_application_id
71526          , p_ae_header_id             => l_ae_header_id 
71527 , p_source_1 => p_source_1
71528 , p_source_2 => p_source_2
71529          , x_transaction_coa_id       => l_adr_transaction_coa_id
71530          , x_accounting_coa_id        => l_adr_accounting_coa_id
71531          , x_value_type_code          => l_adr_value_type_code
71532          , p_side                     => 'NA'
71533    );
71534 
71535    xla_ae_lines_pkg.set_ccid(
71536     p_code_combination_id          => l_ccid
71537   , p_value_type_code              => l_adr_value_type_code
71538   , p_transaction_coa_id           => l_adr_transaction_coa_id
71539   , p_accounting_coa_id            => l_adr_accounting_coa_id
71540   , p_adr_code                     => 'INV'
71541   , p_adr_type_code                => 'S'
71542   , p_component_type               => l_component_type
71543   , p_component_code               => l_component_code
71544   , p_component_type_code          => l_component_type_code
71545   , p_component_appl_id            => l_component_appl_id
71546   , p_amb_context_code             => l_amb_context_code
71547   , p_side                         => 'NA'
71548   );
71549 
71550 
71551    --
71552    --
71553    END IF;
71554 
71555        --
71556        -- Update the line information that should be overwritten
71557        --
71558        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
71559                                          p_header_num   => 1);
71560        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
71561 
71562        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
71563 
71564        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
71565           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
71566        END IF;
71567 
71568       --
71569       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
71570       --
71571       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
71572           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
71573       ELSE
71574           ---------------------------------------------------------------------------------------------------
71575           -- 4262811a Switch Sign
71576           ---------------------------------------------------------------------------------------------------
71577           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
71578           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71579                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71580           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71581                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71582           -- 5132302
71583           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
71584                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71585 
71586       END IF;
71587 
71588       -- 4955764
71589       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71590       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
71591 
71592 
71593       XLA_AE_LINES_PKG.ValidateCurrentLine;
71597                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
71594       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71595 
71596       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71598                ,p_balance_type_code => l_balance_type_code);
71599 
71600    END IF;
71601 
71602    -----------------------------------------------------------------------------------------
71603    -- 4262811 Multiperiod Accounting
71604    -----------------------------------------------------------------------------------------
71605      -- No MPA option is assigned.
71606 
71607 
71608 END IF;
71609 END IF;
71610 --
71611 
71612 --
71613 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71614    trace
71615       (p_msg      => 'END of AcctLineType_161'
71616       ,p_level    => C_LEVEL_PROCEDURE
71617       ,p_module   => l_log_module);
71618 END IF;
71619 --
71620 EXCEPTION
71621   WHEN xla_exceptions_pkg.application_exception THEN
71622       RAISE;
71623   WHEN OTHERS THEN
71624        xla_exceptions_pkg.raise_message
71625            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_161');
71626 END AcctLineType_161;
71627 --
71628 
71629 ---------------------------------------
71630 --
71631 -- PRIVATE FUNCTION
71632 --         AcctLineType_162
71633 --
71634 ---------------------------------------
71635 PROCEDURE AcctLineType_162 (
71636   p_application_id        IN NUMBER
71637  ,p_event_id              IN NUMBER
71638  ,p_calculate_acctd_flag  IN VARCHAR2
71639  ,p_calculate_g_l_flag    IN VARCHAR2
71640  ,p_actual_flag           IN OUT VARCHAR2
71641  ,p_balance_type_code     OUT VARCHAR2
71642  ,p_gain_or_loss_ref      OUT VARCHAR2
71643  
71644 --Transaction Account
71645  , p_source_1            IN NUMBER
71646 --Journal Line Type
71647  , p_source_2            IN VARCHAR2
71648 --Entered Amount
71649  , p_source_3            IN NUMBER
71650 --First Distribution Identifier
71651  , p_source_5            IN NUMBER
71652 --Distribution Type
71653  , p_source_6            IN VARCHAR2
71654 --Currency Code
71655  , p_source_7            IN VARCHAR2
71656 --Currency Conversion Date
71657  , p_source_8            IN DATE
71658 --Currency Conversion Rate
71659  , p_source_9            IN NUMBER
71660 --Currency Conversion Type
71661  , p_source_10            IN VARCHAR2
71662 --Accounted Amount
71663  , p_source_11            IN NUMBER
71664 )
71665 IS
71666 
71667 l_component_type              VARCHAR2(80);
71668 l_component_code              VARCHAR2(30);
71669 l_component_type_code         VARCHAR2(1);
71670 l_component_appl_id           INTEGER;
71671 l_amb_context_code            VARCHAR2(30);
71672 l_entity_code                 VARCHAR2(30);
71673 l_event_class_code            VARCHAR2(30);
71674 l_ae_header_id                NUMBER;
71675 l_event_type_code             VARCHAR2(30);
71676 l_line_definition_code        VARCHAR2(30);
71677 l_line_definition_owner_code  VARCHAR2(1);
71678 --
71679 -- adr variables
71680 l_segment                     VARCHAR2(30);
71681 l_ccid                        NUMBER;
71682 l_adr_transaction_coa_id      NUMBER;
71683 l_adr_accounting_coa_id       NUMBER;
71684 l_adr_flexfield_segment_code  VARCHAR2(30);
71685 l_adr_flex_value_set_id       NUMBER;
71686 l_adr_value_type_code         VARCHAR2(30);
71687 l_adr_value_combination_id    NUMBER;
71688 l_adr_value_segment_code      VARCHAR2(30);
71689 
71690 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
71691 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
71692 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
71693 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
71694 
71695 -- 4262811 Variables ------------------------------------------------------------------------------------------
71696 l_entered_amt_idx             NUMBER;
71697 l_accted_amt_idx              NUMBER;
71698 l_acc_rev_flag                VARCHAR2(1);
71699 l_accrual_line_num            NUMBER;
71700 l_tmp_amt                     NUMBER;
71701 l_acc_rev_natural_side_code   VARCHAR2(1);
71702 
71703 l_num_entries                 NUMBER;
71704 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
71705 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
71706 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
71707 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
71708 l_recog_line_1                NUMBER;
71709 l_recog_line_2                NUMBER;
71710 
71711 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
71712 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
71713 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
71714 
71715 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
71716 
71717 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
71718 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
71719 
71720 ---------------------------------------------------------------------------------------------------------------
71721 
71722 
71723 --
71724 -- bulk performance
71725 --
71726 l_balance_type_code           VARCHAR2(1);
71730 --
71727 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
71728 l_log_module                  VARCHAR2(240);
71729 
71731 -- Upgrade strategy
71732 --
71733 l_actual_upg_option           VARCHAR2(1);
71734 l_enc_upg_option           VARCHAR2(1);
71735 
71736 --
71737 BEGIN
71738 --
71739 IF g_log_enabled THEN
71740       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_162';
71741 END IF;
71742 --
71743 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71744 
71745       trace
71746          (p_msg      => 'BEGIN of AcctLineType_162'
71747          ,p_level    => C_LEVEL_PROCEDURE
71748          ,p_module   => l_log_module);
71749 
71750 END IF;
71751 --
71752 l_component_type             := 'AMB_JLT';
71753 l_component_code             := 'INV';
71754 l_component_type_code        := 'S';
71755 l_component_appl_id          :=  555;
71756 l_amb_context_code           := 'DEFAULT';
71757 l_entity_code                := 'PURCHASING';
71758 l_event_class_code           := 'DELIVER';
71759 l_event_type_code            := 'LOG_PO_RCV_ADJ';
71760 l_line_definition_owner_code := 'S';
71761 l_line_definition_code       := 'LOG_PO_RCV_ADJ';
71762 --
71763 l_balance_type_code          := 'A';
71764 l_segment                     := NULL;
71765 l_ccid                        := NULL;
71766 l_adr_transaction_coa_id      := NULL;
71767 l_adr_accounting_coa_id       := NULL;
71768 l_adr_flexfield_segment_code  := NULL;
71769 l_adr_flex_value_set_id       := NULL;
71770 l_adr_value_type_code         := NULL;
71771 l_adr_value_combination_id    := NULL;
71772 l_adr_value_segment_code      := NULL;
71773 
71774 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
71775 l_bflow_class_code           := '';    -- 4219869 Business Flow
71776 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
71777 l_budgetary_control_flag     := 'N';
71778 
71779 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
71780 l_bflow_applied_to_amt       := NULL; -- 5132302
71781 l_entered_amt_idx            := NULL;          -- 4262811
71782 l_accted_amt_idx             := NULL;          -- 4262811
71783 l_acc_rev_flag               := NULL;          -- 4262811
71784 l_accrual_line_num           := NULL;          -- 4262811
71785 l_tmp_amt                    := NULL;          -- 4262811
71786 --
71787  
71788 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
71789     l_balance_type_code <> 'B' THEN
71790 IF NVL(p_source_2,'
71791 ') =  'INV'
71792  THEN 
71793 
71794    --
71795    XLA_AE_LINES_PKG.SetNewLine;
71796 
71797    p_balance_type_code          := l_balance_type_code;
71798    -- set the flag so later we will know whether the gain loss line needs to be created
71799    
71800    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
71801      p_actual_flag :='A';
71802    END IF;
71803 
71804    --
71805    -- bulk performance
71806    --
71807    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
71808                                       p_header_num   => 0); -- 4262811
71809    --
71810    -- set accounting line options
71811    --
71812    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
71813            p_natural_side_code          => 'D'
71814          , p_gain_or_loss_flag          => 'N'
71815          , p_gl_transfer_mode_code      => 'D'
71816          , p_acct_entry_type_code       => 'A'
71817          , p_switch_side_flag           => 'Y'
71818          , p_merge_duplicate_code       => 'W'
71819          );
71820    --
71821    l_acc_rev_natural_side_code := 'C';  -- 4262811
71822    -- 
71823    --
71824    -- set accounting line type info
71825    --
71826    xla_ae_lines_pkg.SetAcctLineType
71827       (p_component_type             => l_component_type
71828       ,p_event_type_code            => l_event_type_code
71829       ,p_line_definition_owner_code => l_line_definition_owner_code
71830       ,p_line_definition_code       => l_line_definition_code
71831       ,p_accounting_line_code       => l_component_code
71832       ,p_accounting_line_type_code  => l_component_type_code
71833       ,p_accounting_line_appl_id    => l_component_appl_id
71834       ,p_amb_context_code           => l_amb_context_code
71835       ,p_entity_code                => l_entity_code
71836       ,p_event_class_code           => l_event_class_code);
71837    --
71838    -- set accounting class
71839    --
71840    xla_ae_lines_pkg.SetAcctClass(
71841            p_accounting_class_code  => 'INVENTORY_VALUATION'
71842          , p_ae_header_id           => l_ae_header_id
71843          );
71844 
71845    --
71846    -- set rounding class
71847    --
71848    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
71849                       'INVENTORY_VALUATION';
71850 
71851    --
71852    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
71853    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
71854    --
71855    -- bulk performance
71856    --
71857    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
71858 
71859    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
71860       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
71861 
71862    -- 4955764
71866    -- 4458381 Public Sector Enh
71863    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71864       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
71865 
71867    
71868    --
71869    -- set accounting attributes for the line type
71870    --
71871    l_entered_amt_idx := 3;
71872    l_accted_amt_idx  := 8;
71873    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
71874    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
71875    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
71876    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
71877    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
71878    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
71879    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
71880    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
71881    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
71882    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
71883    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
71884    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
71885    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
71886    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
71887    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
71888    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
71889    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
71890 
71891    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
71892    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
71893 
71894    ---------------------------------------------------------------------------------------------------------------
71895    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
71896    ---------------------------------------------------------------------------------------------------------------
71897    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
71898 
71899    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
71900    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
71901 
71902    IF xla_accounting_cache_pkg.GetValueChar
71903          (p_source_code         => 'LEDGER_CATEGORY_CODE'
71904          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
71905    AND l_bflow_method_code = 'PRIOR_ENTRY'
71906 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
71907    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
71908          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
71909        )
71910    THEN
71911          xla_ae_lines_pkg.BflowUpgEntry
71912            (p_business_method_code    => l_bflow_method_code
71913            ,p_business_class_code     => l_bflow_class_code
71914            ,p_balance_type            => l_balance_type_code);
71915    ELSE
71916       NULL;
71917 -- No business flow processing for business flow method of NONE.
71918    END IF;
71919 
71920    --
71921    -- call analytical criteria
71922    --
71923    
71924    --
71925    -- call description
71926    --
71927    -- No description or it is inherited.
71928    --
71929    -- call ADRs
71930    -- Bug 4922099
71931    --
71932    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
71933         (NVL(l_actual_upg_option, 'N') = 'O') OR
71934         (NVL(l_enc_upg_option, 'N') = 'O')
71935       )
71936    THEN
71937    NULL;
71938    --
71939    --
71940    
71941   l_ccid := AcctDerRule_17(
71942            p_application_id           => p_application_id
71943          , p_ae_header_id             => l_ae_header_id 
71944 , p_source_1 => p_source_1
71945 , p_source_2 => p_source_2
71946          , x_transaction_coa_id       => l_adr_transaction_coa_id
71947          , x_accounting_coa_id        => l_adr_accounting_coa_id
71948          , x_value_type_code          => l_adr_value_type_code
71949          , p_side                     => 'NA'
71950    );
71951 
71952    xla_ae_lines_pkg.set_ccid(
71953     p_code_combination_id          => l_ccid
71954   , p_value_type_code              => l_adr_value_type_code
71955   , p_transaction_coa_id           => l_adr_transaction_coa_id
71956   , p_accounting_coa_id            => l_adr_accounting_coa_id
71957   , p_adr_code                     => 'INV'
71958   , p_adr_type_code                => 'S'
71959   , p_component_type               => l_component_type
71960   , p_component_code               => l_component_code
71961   , p_component_type_code          => l_component_type_code
71962   , p_component_appl_id            => l_component_appl_id
71963   , p_amb_context_code             => l_amb_context_code
71964   , p_side                         => 'NA'
71965   );
71966 
71967 
71968    --
71969    --
71970    END IF;
71971    --
71972    -- Bug 4922099
71973    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
71974           (NVL(l_enc_upg_option, 'N') = 'O')
71975         ) AND
71976         (l_bflow_method_code = 'PRIOR_ENTRY')
71977       )
71978    THEN
71979       IF
71980       --
71981       1 = 2
71982       --
71983       THEN
71984       xla_accounting_err_pkg.build_message
71988                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
71985                                     (p_appli_s_name            => 'XLA'
71986                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71987                                     ,p_token_1                 => 'LINE_NUMBER'
71989                                     ,p_token_2                 => 'LINE_TYPE_NAME'
71990                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
71991                                                                              l_component_type
71992                                                                             ,l_component_code
71993                                                                             ,l_component_type_code
71994                                                                             ,l_component_appl_id
71995                                                                             ,l_amb_context_code
71996                                                                             ,l_entity_code
71997                                                                             ,l_event_class_code
71998                                                                            )
71999                                     ,p_token_3                 => 'OWNER'
72000                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
72001                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
72002                                                                           ,p_lookup_code    => l_component_type_code
72003                                                                          )
72004                                     ,p_token_4                 => 'PRODUCT_NAME'
72005                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
72006                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
72007                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
72008                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
72009                                     ,p_ae_header_id            =>  NULL
72010                                        );
72011 
72012         IF (C_LEVEL_ERROR>= g_log_level) THEN
72013                  trace
72014                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72015                       ,p_level    => C_LEVEL_ERROR
72016                       ,p_module   => l_log_module);
72017         END IF;
72018       END IF;
72019    END IF;
72020    --
72021    --
72022    ------------------------------------------------------------------------------------------------
72023    -- 4219869 Business Flow
72024    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
72025    -- Prior Entry.  Currently, the following code is always generated.
72026    ------------------------------------------------------------------------------------------------
72027    XLA_AE_LINES_PKG.ValidateCurrentLine;
72028 
72029    ------------------------------------------------------------------------------------
72030    -- 4219869 Business Flow
72031    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
72032    ------------------------------------------------------------------------------------
72033    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72034 
72035    ----------------------------------------------------------------------------------
72036    -- 4219869 Business Flow
72037    -- Update journal entry status -- Need to generate this within IF <condition>
72038    ----------------------------------------------------------------------------------
72039    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72040          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
72041          ,p_balance_type_code => l_balance_type_code
72042          );
72043 
72044    -------------------------------------------------------------------------------------------
72045    -- 4262811 - Generate the Accrual Reversal lines
72046    -------------------------------------------------------------------------------------------
72047    BEGIN
72048       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
72049                               (g_array_event(p_event_id).array_value_num('header_index'));
72050       IF l_acc_rev_flag IS NULL THEN
72051          l_acc_rev_flag := 'N';
72052       END IF;
72053    EXCEPTION
72054       WHEN OTHERS THEN
72055          l_acc_rev_flag := 'N';
72056    END;
72057    --
72058    IF (l_acc_rev_flag = 'Y') THEN
72059 
72060        -- 4645092  ------------------------------------------------------------------------------
72061        -- To allow MPA report to determine if it should generate report process
72062        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
72063        ------------------------------------------------------------------------------------------
72064 
72065        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
72066        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
72067    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
72068    -- call ADRs
72069    -- Bug 4922099
72070    --
72071    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72072         (NVL(l_actual_upg_option, 'N') = 'O') OR
72073         (NVL(l_enc_upg_option, 'N') = 'O')
72077    --
72074       )
72075    THEN
72076    NULL;
72078    --
72079    
72080   l_ccid := AcctDerRule_17(
72081            p_application_id           => p_application_id
72082          , p_ae_header_id             => l_ae_header_id 
72083 , p_source_1 => p_source_1
72084 , p_source_2 => p_source_2
72085          , x_transaction_coa_id       => l_adr_transaction_coa_id
72086          , x_accounting_coa_id        => l_adr_accounting_coa_id
72087          , x_value_type_code          => l_adr_value_type_code
72088          , p_side                     => 'NA'
72089    );
72090 
72091    xla_ae_lines_pkg.set_ccid(
72092     p_code_combination_id          => l_ccid
72093   , p_value_type_code              => l_adr_value_type_code
72094   , p_transaction_coa_id           => l_adr_transaction_coa_id
72095   , p_accounting_coa_id            => l_adr_accounting_coa_id
72096   , p_adr_code                     => 'INV'
72097   , p_adr_type_code                => 'S'
72098   , p_component_type               => l_component_type
72099   , p_component_code               => l_component_code
72100   , p_component_type_code          => l_component_type_code
72101   , p_component_appl_id            => l_component_appl_id
72102   , p_amb_context_code             => l_amb_context_code
72103   , p_side                         => 'NA'
72104   );
72105 
72106 
72107    --
72108    --
72109    END IF;
72110 
72111        --
72112        -- Update the line information that should be overwritten
72113        --
72114        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
72115                                          p_header_num   => 1);
72116        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
72117 
72118        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
72119 
72120        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
72121           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
72122        END IF;
72123 
72124       --
72125       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
72126       --
72127       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
72128           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
72129       ELSE
72130           ---------------------------------------------------------------------------------------------------
72131           -- 4262811a Switch Sign
72132           ---------------------------------------------------------------------------------------------------
72133           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
72134           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72135                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72136           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72137                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72138           -- 5132302
72139           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
72140                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72141 
72142       END IF;
72143 
72144       -- 4955764
72145       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72146       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
72147 
72148 
72149       XLA_AE_LINES_PKG.ValidateCurrentLine;
72150       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72151 
72152       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72153                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
72154                ,p_balance_type_code => l_balance_type_code);
72155 
72156    END IF;
72157 
72158    -----------------------------------------------------------------------------------------
72159    -- 4262811 Multiperiod Accounting
72160    -----------------------------------------------------------------------------------------
72161      -- No MPA option is assigned.
72162 
72163 
72164 END IF;
72165 END IF;
72166 --
72167 
72168 --
72169 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72170    trace
72171       (p_msg      => 'END of AcctLineType_162'
72172       ,p_level    => C_LEVEL_PROCEDURE
72173       ,p_module   => l_log_module);
72174 END IF;
72175 --
72176 EXCEPTION
72177   WHEN xla_exceptions_pkg.application_exception THEN
72178       RAISE;
72179   WHEN OTHERS THEN
72180        xla_exceptions_pkg.raise_message
72181            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_162');
72182 END AcctLineType_162;
72183 --
72184 
72185 ---------------------------------------
72186 --
72187 -- PRIVATE FUNCTION
72188 --         AcctLineType_163
72189 --
72190 ---------------------------------------
72191 PROCEDURE AcctLineType_163 (
72192   p_application_id        IN NUMBER
72193  ,p_event_id              IN NUMBER
72194  ,p_calculate_acctd_flag  IN VARCHAR2
72195  ,p_calculate_g_l_flag    IN VARCHAR2
72199  
72196  ,p_actual_flag           IN OUT VARCHAR2
72197  ,p_balance_type_code     OUT VARCHAR2
72198  ,p_gain_or_loss_ref      OUT VARCHAR2
72200 --Transaction Account
72201  , p_source_1            IN NUMBER
72202 --Journal Line Type
72203  , p_source_2            IN VARCHAR2
72204 --Entered Amount
72205  , p_source_3            IN NUMBER
72206 --First Distribution Identifier
72207  , p_source_5            IN NUMBER
72208 --Distribution Type
72209  , p_source_6            IN VARCHAR2
72210 --Currency Code
72211  , p_source_7            IN VARCHAR2
72212 --Currency Conversion Date
72213  , p_source_8            IN DATE
72214 --Currency Conversion Rate
72215  , p_source_9            IN NUMBER
72216 --Currency Conversion Type
72217  , p_source_10            IN VARCHAR2
72218 --Accounted Amount
72219  , p_source_11            IN NUMBER
72220 )
72221 IS
72222 
72223 l_component_type              VARCHAR2(80);
72224 l_component_code              VARCHAR2(30);
72225 l_component_type_code         VARCHAR2(1);
72226 l_component_appl_id           INTEGER;
72227 l_amb_context_code            VARCHAR2(30);
72228 l_entity_code                 VARCHAR2(30);
72229 l_event_class_code            VARCHAR2(30);
72230 l_ae_header_id                NUMBER;
72231 l_event_type_code             VARCHAR2(30);
72232 l_line_definition_code        VARCHAR2(30);
72233 l_line_definition_owner_code  VARCHAR2(1);
72234 --
72235 -- adr variables
72236 l_segment                     VARCHAR2(30);
72237 l_ccid                        NUMBER;
72238 l_adr_transaction_coa_id      NUMBER;
72239 l_adr_accounting_coa_id       NUMBER;
72240 l_adr_flexfield_segment_code  VARCHAR2(30);
72241 l_adr_flex_value_set_id       NUMBER;
72242 l_adr_value_type_code         VARCHAR2(30);
72243 l_adr_value_combination_id    NUMBER;
72244 l_adr_value_segment_code      VARCHAR2(30);
72245 
72246 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
72247 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
72248 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
72249 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
72250 
72251 -- 4262811 Variables ------------------------------------------------------------------------------------------
72252 l_entered_amt_idx             NUMBER;
72253 l_accted_amt_idx              NUMBER;
72254 l_acc_rev_flag                VARCHAR2(1);
72255 l_accrual_line_num            NUMBER;
72256 l_tmp_amt                     NUMBER;
72257 l_acc_rev_natural_side_code   VARCHAR2(1);
72258 
72259 l_num_entries                 NUMBER;
72260 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
72261 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
72262 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
72263 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
72264 l_recog_line_1                NUMBER;
72265 l_recog_line_2                NUMBER;
72266 
72267 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
72268 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
72269 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
72270 
72271 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
72272 
72273 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
72274 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
72275 
72276 ---------------------------------------------------------------------------------------------------------------
72277 
72278 
72279 --
72280 -- bulk performance
72281 --
72282 l_balance_type_code           VARCHAR2(1);
72283 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
72284 l_log_module                  VARCHAR2(240);
72285 
72286 --
72287 -- Upgrade strategy
72288 --
72289 l_actual_upg_option           VARCHAR2(1);
72290 l_enc_upg_option           VARCHAR2(1);
72291 
72292 --
72293 BEGIN
72294 --
72295 IF g_log_enabled THEN
72296       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_163';
72297 END IF;
72298 --
72299 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72300 
72301       trace
72302          (p_msg      => 'BEGIN of AcctLineType_163'
72303          ,p_level    => C_LEVEL_PROCEDURE
72304          ,p_module   => l_log_module);
72305 
72306 END IF;
72307 --
72308 l_component_type             := 'AMB_JLT';
72309 l_component_code             := 'INV';
72310 l_component_type_code        := 'S';
72311 l_component_appl_id          :=  555;
72312 l_amb_context_code           := 'DEFAULT';
72313 l_entity_code                := 'REVALUATION';
72314 l_event_class_code           := 'LOTCOSTADJ';
72315 l_event_type_code            := 'LOTCOSTADJ';
72316 l_line_definition_owner_code := 'S';
72317 l_line_definition_code       := 'LOTCOSTADJ';
72318 --
72319 l_balance_type_code          := 'A';
72320 l_segment                     := NULL;
72321 l_ccid                        := NULL;
72322 l_adr_transaction_coa_id      := NULL;
72323 l_adr_accounting_coa_id       := NULL;
72324 l_adr_flexfield_segment_code  := NULL;
72325 l_adr_flex_value_set_id       := NULL;
72326 l_adr_value_type_code         := NULL;
72327 l_adr_value_combination_id    := NULL;
72328 l_adr_value_segment_code      := NULL;
72329 
72333 l_budgetary_control_flag     := 'N';
72330 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
72331 l_bflow_class_code           := '';    -- 4219869 Business Flow
72332 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
72334 
72335 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
72336 l_bflow_applied_to_amt       := NULL; -- 5132302
72337 l_entered_amt_idx            := NULL;          -- 4262811
72338 l_accted_amt_idx             := NULL;          -- 4262811
72339 l_acc_rev_flag               := NULL;          -- 4262811
72340 l_accrual_line_num           := NULL;          -- 4262811
72341 l_tmp_amt                    := NULL;          -- 4262811
72342 --
72343  
72344 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
72345     l_balance_type_code <> 'B' THEN
72346 IF NVL(p_source_2,'
72347 ') =  'INV'
72348  THEN 
72349 
72350    --
72351    XLA_AE_LINES_PKG.SetNewLine;
72352 
72353    p_balance_type_code          := l_balance_type_code;
72354    -- set the flag so later we will know whether the gain loss line needs to be created
72355    
72356    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
72357      p_actual_flag :='A';
72358    END IF;
72359 
72360    --
72361    -- bulk performance
72362    --
72363    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
72364                                       p_header_num   => 0); -- 4262811
72365    --
72366    -- set accounting line options
72367    --
72368    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
72369            p_natural_side_code          => 'D'
72370          , p_gain_or_loss_flag          => 'N'
72371          , p_gl_transfer_mode_code      => 'D'
72372          , p_acct_entry_type_code       => 'A'
72373          , p_switch_side_flag           => 'Y'
72374          , p_merge_duplicate_code       => 'W'
72375          );
72376    --
72377    l_acc_rev_natural_side_code := 'C';  -- 4262811
72378    -- 
72379    --
72380    -- set accounting line type info
72381    --
72382    xla_ae_lines_pkg.SetAcctLineType
72383       (p_component_type             => l_component_type
72384       ,p_event_type_code            => l_event_type_code
72385       ,p_line_definition_owner_code => l_line_definition_owner_code
72386       ,p_line_definition_code       => l_line_definition_code
72387       ,p_accounting_line_code       => l_component_code
72388       ,p_accounting_line_type_code  => l_component_type_code
72389       ,p_accounting_line_appl_id    => l_component_appl_id
72390       ,p_amb_context_code           => l_amb_context_code
72391       ,p_entity_code                => l_entity_code
72392       ,p_event_class_code           => l_event_class_code);
72393    --
72394    -- set accounting class
72395    --
72396    xla_ae_lines_pkg.SetAcctClass(
72397            p_accounting_class_code  => 'INVENTORY_VALUATION'
72398          , p_ae_header_id           => l_ae_header_id
72399          );
72400 
72401    --
72402    -- set rounding class
72403    --
72404    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
72405                       'INVENTORY_VALUATION';
72406 
72407    --
72408    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
72409    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
72410    --
72411    -- bulk performance
72412    --
72413    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
72414 
72415    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
72416       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
72417 
72418    -- 4955764
72419    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72420       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
72421 
72422    -- 4458381 Public Sector Enh
72423    
72424    --
72425    -- set accounting attributes for the line type
72426    --
72427    l_entered_amt_idx := 3;
72428    l_accted_amt_idx  := 8;
72429    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
72430    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
72431    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
72432    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
72433    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
72434    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
72435    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
72436    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
72437    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
72438    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
72439    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
72440    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
72441    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
72442    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
72443    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
72444    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
72445    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
72446 
72447    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
72448    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
72449 
72453    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
72450    ---------------------------------------------------------------------------------------------------------------
72451    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
72452    ---------------------------------------------------------------------------------------------------------------
72454 
72455    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72456    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72457 
72458    IF xla_accounting_cache_pkg.GetValueChar
72459          (p_source_code         => 'LEDGER_CATEGORY_CODE'
72460          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
72461    AND l_bflow_method_code = 'PRIOR_ENTRY'
72462 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
72463    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
72464          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
72465        )
72466    THEN
72467          xla_ae_lines_pkg.BflowUpgEntry
72468            (p_business_method_code    => l_bflow_method_code
72469            ,p_business_class_code     => l_bflow_class_code
72470            ,p_balance_type            => l_balance_type_code);
72471    ELSE
72472       NULL;
72473 -- No business flow processing for business flow method of NONE.
72474    END IF;
72475 
72476    --
72477    -- call analytical criteria
72478    --
72479    
72480    --
72481    -- call description
72482    --
72483    -- No description or it is inherited.
72484    --
72485    -- call ADRs
72486    -- Bug 4922099
72487    --
72488    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72489         (NVL(l_actual_upg_option, 'N') = 'O') OR
72490         (NVL(l_enc_upg_option, 'N') = 'O')
72491       )
72492    THEN
72493    NULL;
72494    --
72495    --
72496    
72497   l_ccid := AcctDerRule_17(
72498            p_application_id           => p_application_id
72499          , p_ae_header_id             => l_ae_header_id 
72500 , p_source_1 => p_source_1
72501 , p_source_2 => p_source_2
72502          , x_transaction_coa_id       => l_adr_transaction_coa_id
72503          , x_accounting_coa_id        => l_adr_accounting_coa_id
72504          , x_value_type_code          => l_adr_value_type_code
72505          , p_side                     => 'NA'
72506    );
72507 
72508    xla_ae_lines_pkg.set_ccid(
72509     p_code_combination_id          => l_ccid
72510   , p_value_type_code              => l_adr_value_type_code
72511   , p_transaction_coa_id           => l_adr_transaction_coa_id
72512   , p_accounting_coa_id            => l_adr_accounting_coa_id
72513   , p_adr_code                     => 'INV'
72514   , p_adr_type_code                => 'S'
72515   , p_component_type               => l_component_type
72516   , p_component_code               => l_component_code
72517   , p_component_type_code          => l_component_type_code
72518   , p_component_appl_id            => l_component_appl_id
72519   , p_amb_context_code             => l_amb_context_code
72520   , p_side                         => 'NA'
72521   );
72522 
72523 
72524    --
72525    --
72526    END IF;
72527    --
72528    -- Bug 4922099
72529    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
72530           (NVL(l_enc_upg_option, 'N') = 'O')
72531         ) AND
72532         (l_bflow_method_code = 'PRIOR_ENTRY')
72533       )
72534    THEN
72535       IF
72536       --
72537       1 = 2
72538       --
72539       THEN
72540       xla_accounting_err_pkg.build_message
72541                                     (p_appli_s_name            => 'XLA'
72542                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72543                                     ,p_token_1                 => 'LINE_NUMBER'
72544                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
72545                                     ,p_token_2                 => 'LINE_TYPE_NAME'
72546                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
72547                                                                              l_component_type
72548                                                                             ,l_component_code
72549                                                                             ,l_component_type_code
72550                                                                             ,l_component_appl_id
72551                                                                             ,l_amb_context_code
72552                                                                             ,l_entity_code
72553                                                                             ,l_event_class_code
72554                                                                            )
72555                                     ,p_token_3                 => 'OWNER'
72556                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
72557                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
72558                                                                           ,p_lookup_code    => l_component_type_code
72559                                                                          )
72563                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
72560                                     ,p_token_4                 => 'PRODUCT_NAME'
72561                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
72562                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
72564                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
72565                                     ,p_ae_header_id            =>  NULL
72566                                        );
72567 
72568         IF (C_LEVEL_ERROR>= g_log_level) THEN
72569                  trace
72570                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72571                       ,p_level    => C_LEVEL_ERROR
72572                       ,p_module   => l_log_module);
72573         END IF;
72574       END IF;
72575    END IF;
72576    --
72577    --
72578    ------------------------------------------------------------------------------------------------
72579    -- 4219869 Business Flow
72580    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
72581    -- Prior Entry.  Currently, the following code is always generated.
72582    ------------------------------------------------------------------------------------------------
72583    XLA_AE_LINES_PKG.ValidateCurrentLine;
72584 
72585    ------------------------------------------------------------------------------------
72586    -- 4219869 Business Flow
72587    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
72588    ------------------------------------------------------------------------------------
72589    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72590 
72591    ----------------------------------------------------------------------------------
72592    -- 4219869 Business Flow
72593    -- Update journal entry status -- Need to generate this within IF <condition>
72594    ----------------------------------------------------------------------------------
72595    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72596          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
72597          ,p_balance_type_code => l_balance_type_code
72598          );
72599 
72600    -------------------------------------------------------------------------------------------
72601    -- 4262811 - Generate the Accrual Reversal lines
72602    -------------------------------------------------------------------------------------------
72603    BEGIN
72604       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
72605                               (g_array_event(p_event_id).array_value_num('header_index'));
72606       IF l_acc_rev_flag IS NULL THEN
72607          l_acc_rev_flag := 'N';
72608       END IF;
72609    EXCEPTION
72610       WHEN OTHERS THEN
72611          l_acc_rev_flag := 'N';
72612    END;
72613    --
72614    IF (l_acc_rev_flag = 'Y') THEN
72615 
72616        -- 4645092  ------------------------------------------------------------------------------
72617        -- To allow MPA report to determine if it should generate report process
72618        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
72619        ------------------------------------------------------------------------------------------
72620 
72621        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
72622        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
72623    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
72624    -- call ADRs
72625    -- Bug 4922099
72626    --
72627    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72628         (NVL(l_actual_upg_option, 'N') = 'O') OR
72629         (NVL(l_enc_upg_option, 'N') = 'O')
72630       )
72631    THEN
72632    NULL;
72633    --
72634    --
72635    
72636   l_ccid := AcctDerRule_17(
72637            p_application_id           => p_application_id
72638          , p_ae_header_id             => l_ae_header_id 
72639 , p_source_1 => p_source_1
72640 , p_source_2 => p_source_2
72641          , x_transaction_coa_id       => l_adr_transaction_coa_id
72642          , x_accounting_coa_id        => l_adr_accounting_coa_id
72643          , x_value_type_code          => l_adr_value_type_code
72644          , p_side                     => 'NA'
72645    );
72646 
72647    xla_ae_lines_pkg.set_ccid(
72648     p_code_combination_id          => l_ccid
72649   , p_value_type_code              => l_adr_value_type_code
72650   , p_transaction_coa_id           => l_adr_transaction_coa_id
72651   , p_accounting_coa_id            => l_adr_accounting_coa_id
72652   , p_adr_code                     => 'INV'
72653   , p_adr_type_code                => 'S'
72654   , p_component_type               => l_component_type
72655   , p_component_code               => l_component_code
72656   , p_component_type_code          => l_component_type_code
72657   , p_component_appl_id            => l_component_appl_id
72658   , p_amb_context_code             => l_amb_context_code
72659   , p_side                         => 'NA'
72660   );
72661 
72662 
72663    --
72664    --
72665    END IF;
72666 
72667        --
72668        -- Update the line information that should be overwritten
72669        --
72673 
72670        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
72671                                          p_header_num   => 1);
72672        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
72674        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
72675 
72676        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
72677           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
72678        END IF;
72679 
72680       --
72681       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
72682       --
72683       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
72684           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
72685       ELSE
72686           ---------------------------------------------------------------------------------------------------
72687           -- 4262811a Switch Sign
72688           ---------------------------------------------------------------------------------------------------
72689           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
72690           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72691                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72692           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72693                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72694           -- 5132302
72695           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
72696                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72697 
72698       END IF;
72699 
72700       -- 4955764
72701       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72702       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
72703 
72704 
72705       XLA_AE_LINES_PKG.ValidateCurrentLine;
72706       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72707 
72708       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72709                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
72710                ,p_balance_type_code => l_balance_type_code);
72711 
72712    END IF;
72713 
72714    -----------------------------------------------------------------------------------------
72715    -- 4262811 Multiperiod Accounting
72716    -----------------------------------------------------------------------------------------
72717      -- No MPA option is assigned.
72718 
72719 
72720 END IF;
72721 END IF;
72722 --
72723 
72724 --
72725 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72726    trace
72727       (p_msg      => 'END of AcctLineType_163'
72728       ,p_level    => C_LEVEL_PROCEDURE
72729       ,p_module   => l_log_module);
72730 END IF;
72731 --
72732 EXCEPTION
72733   WHEN xla_exceptions_pkg.application_exception THEN
72734       RAISE;
72735   WHEN OTHERS THEN
72736        xla_exceptions_pkg.raise_message
72737            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_163');
72738 END AcctLineType_163;
72739 --
72740 
72741 ---------------------------------------
72742 --
72743 -- PRIVATE FUNCTION
72744 --         AcctLineType_164
72745 --
72746 ---------------------------------------
72747 PROCEDURE AcctLineType_164 (
72748   p_application_id        IN NUMBER
72749  ,p_event_id              IN NUMBER
72750  ,p_calculate_acctd_flag  IN VARCHAR2
72751  ,p_calculate_g_l_flag    IN VARCHAR2
72752  ,p_actual_flag           IN OUT VARCHAR2
72753  ,p_balance_type_code     OUT VARCHAR2
72754  ,p_gain_or_loss_ref      OUT VARCHAR2
72755  
72756 --Transaction Account
72757  , p_source_1            IN NUMBER
72758 --Journal Line Type
72759  , p_source_2            IN VARCHAR2
72760 --Entered Amount
72761  , p_source_3            IN NUMBER
72762 --First Distribution Identifier
72763  , p_source_5            IN NUMBER
72764 --Distribution Type
72765  , p_source_6            IN VARCHAR2
72766 --Currency Code
72767  , p_source_7            IN VARCHAR2
72768 --Currency Conversion Date
72769  , p_source_8            IN DATE
72770 --Currency Conversion Rate
72771  , p_source_9            IN NUMBER
72772 --Currency Conversion Type
72773  , p_source_10            IN VARCHAR2
72774 --Accounted Amount
72775  , p_source_11            IN NUMBER
72776 )
72777 IS
72778 
72779 l_component_type              VARCHAR2(80);
72780 l_component_code              VARCHAR2(30);
72781 l_component_type_code         VARCHAR2(1);
72782 l_component_appl_id           INTEGER;
72783 l_amb_context_code            VARCHAR2(30);
72784 l_entity_code                 VARCHAR2(30);
72785 l_event_class_code            VARCHAR2(30);
72786 l_ae_header_id                NUMBER;
72787 l_event_type_code             VARCHAR2(30);
72788 l_line_definition_code        VARCHAR2(30);
72789 l_line_definition_owner_code  VARCHAR2(1);
72790 --
72791 -- adr variables
72792 l_segment                     VARCHAR2(30);
72793 l_ccid                        NUMBER;
72797 l_adr_flex_value_set_id       NUMBER;
72794 l_adr_transaction_coa_id      NUMBER;
72795 l_adr_accounting_coa_id       NUMBER;
72796 l_adr_flexfield_segment_code  VARCHAR2(30);
72798 l_adr_value_type_code         VARCHAR2(30);
72799 l_adr_value_combination_id    NUMBER;
72800 l_adr_value_segment_code      VARCHAR2(30);
72801 
72802 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
72803 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
72804 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
72805 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
72806 
72807 -- 4262811 Variables ------------------------------------------------------------------------------------------
72808 l_entered_amt_idx             NUMBER;
72809 l_accted_amt_idx              NUMBER;
72810 l_acc_rev_flag                VARCHAR2(1);
72811 l_accrual_line_num            NUMBER;
72812 l_tmp_amt                     NUMBER;
72813 l_acc_rev_natural_side_code   VARCHAR2(1);
72814 
72815 l_num_entries                 NUMBER;
72816 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
72817 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
72818 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
72819 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
72820 l_recog_line_1                NUMBER;
72821 l_recog_line_2                NUMBER;
72822 
72823 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
72824 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
72825 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
72826 
72827 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
72828 
72829 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
72830 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
72831 
72832 ---------------------------------------------------------------------------------------------------------------
72833 
72834 
72835 --
72836 -- bulk performance
72837 --
72838 l_balance_type_code           VARCHAR2(1);
72839 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
72840 l_log_module                  VARCHAR2(240);
72841 
72842 --
72843 -- Upgrade strategy
72844 --
72845 l_actual_upg_option           VARCHAR2(1);
72846 l_enc_upg_option           VARCHAR2(1);
72847 
72848 --
72849 BEGIN
72850 --
72851 IF g_log_enabled THEN
72852       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_164';
72853 END IF;
72854 --
72855 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72856 
72857       trace
72858          (p_msg      => 'BEGIN of AcctLineType_164'
72859          ,p_level    => C_LEVEL_PROCEDURE
72860          ,p_module   => l_log_module);
72861 
72862 END IF;
72863 --
72864 l_component_type             := 'AMB_JLT';
72865 l_component_code             := 'INV';
72866 l_component_type_code        := 'S';
72867 l_component_appl_id          :=  555;
72868 l_amb_context_code           := 'DEFAULT';
72869 l_entity_code                := 'INVENTORY';
72870 l_event_class_code           := 'DIR_INTERORG_SHIP';
72871 l_event_type_code            := 'DIR_INTERORG_SHIP';
72872 l_line_definition_owner_code := 'S';
72873 l_line_definition_code       := 'DIRECT_XFER_SHIP';
72874 --
72875 l_balance_type_code          := 'A';
72876 l_segment                     := NULL;
72877 l_ccid                        := NULL;
72878 l_adr_transaction_coa_id      := NULL;
72879 l_adr_accounting_coa_id       := NULL;
72880 l_adr_flexfield_segment_code  := NULL;
72881 l_adr_flex_value_set_id       := NULL;
72882 l_adr_value_type_code         := NULL;
72883 l_adr_value_combination_id    := NULL;
72884 l_adr_value_segment_code      := NULL;
72885 
72886 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
72887 l_bflow_class_code           := '';    -- 4219869 Business Flow
72888 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
72889 l_budgetary_control_flag     := 'N';
72890 
72891 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
72892 l_bflow_applied_to_amt       := NULL; -- 5132302
72893 l_entered_amt_idx            := NULL;          -- 4262811
72894 l_accted_amt_idx             := NULL;          -- 4262811
72895 l_acc_rev_flag               := NULL;          -- 4262811
72896 l_accrual_line_num           := NULL;          -- 4262811
72897 l_tmp_amt                    := NULL;          -- 4262811
72898 --
72899  
72900 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
72901     l_balance_type_code <> 'B' THEN
72902 IF NVL(p_source_2,'
72903 ') =  'INV'
72904  THEN 
72905 
72906    --
72907    XLA_AE_LINES_PKG.SetNewLine;
72908 
72909    p_balance_type_code          := l_balance_type_code;
72910    -- set the flag so later we will know whether the gain loss line needs to be created
72911    
72912    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
72913      p_actual_flag :='A';
72914    END IF;
72915 
72916    --
72917    -- bulk performance
72918    --
72919    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
72920                                       p_header_num   => 0); -- 4262811
72921    --
72922    -- set accounting line options
72923    --
72924    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
72925            p_natural_side_code          => 'D'
72929          , p_switch_side_flag           => 'Y'
72926          , p_gain_or_loss_flag          => 'N'
72927          , p_gl_transfer_mode_code      => 'D'
72928          , p_acct_entry_type_code       => 'A'
72930          , p_merge_duplicate_code       => 'W'
72931          );
72932    --
72933    l_acc_rev_natural_side_code := 'C';  -- 4262811
72934    -- 
72935    --
72936    -- set accounting line type info
72937    --
72938    xla_ae_lines_pkg.SetAcctLineType
72939       (p_component_type             => l_component_type
72940       ,p_event_type_code            => l_event_type_code
72941       ,p_line_definition_owner_code => l_line_definition_owner_code
72942       ,p_line_definition_code       => l_line_definition_code
72943       ,p_accounting_line_code       => l_component_code
72944       ,p_accounting_line_type_code  => l_component_type_code
72945       ,p_accounting_line_appl_id    => l_component_appl_id
72946       ,p_amb_context_code           => l_amb_context_code
72947       ,p_entity_code                => l_entity_code
72948       ,p_event_class_code           => l_event_class_code);
72949    --
72950    -- set accounting class
72951    --
72952    xla_ae_lines_pkg.SetAcctClass(
72953            p_accounting_class_code  => 'INVENTORY_VALUATION'
72954          , p_ae_header_id           => l_ae_header_id
72955          );
72956 
72957    --
72958    -- set rounding class
72959    --
72960    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
72961                       'INVENTORY_VALUATION';
72962 
72963    --
72964    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
72965    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
72966    --
72967    -- bulk performance
72968    --
72969    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
72970 
72971    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
72972       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
72973 
72974    -- 4955764
72975    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72976       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
72977 
72978    -- 4458381 Public Sector Enh
72979    
72980    --
72981    -- set accounting attributes for the line type
72982    --
72983    l_entered_amt_idx := 3;
72984    l_accted_amt_idx  := 8;
72985    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
72986    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
72987    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
72988    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
72989    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
72990    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
72991    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
72992    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
72993    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
72994    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
72995    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
72996    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
72997    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
72998    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
72999    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
73000    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
73001    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
73002 
73003    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
73004    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
73005 
73006    ---------------------------------------------------------------------------------------------------------------
73007    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
73008    ---------------------------------------------------------------------------------------------------------------
73009    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
73010 
73011    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73012    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73013 
73014    IF xla_accounting_cache_pkg.GetValueChar
73015          (p_source_code         => 'LEDGER_CATEGORY_CODE'
73016          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
73017    AND l_bflow_method_code = 'PRIOR_ENTRY'
73018 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
73019    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
73020          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
73021        )
73022    THEN
73023          xla_ae_lines_pkg.BflowUpgEntry
73024            (p_business_method_code    => l_bflow_method_code
73025            ,p_business_class_code     => l_bflow_class_code
73026            ,p_balance_type            => l_balance_type_code);
73027    ELSE
73028       NULL;
73029 -- No business flow processing for business flow method of NONE.
73030    END IF;
73031 
73032    --
73033    -- call analytical criteria
73034    --
73035    
73036    --
73037    -- call description
73041    -- call ADRs
73038    --
73039    -- No description or it is inherited.
73040    --
73042    -- Bug 4922099
73043    --
73044    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73045         (NVL(l_actual_upg_option, 'N') = 'O') OR
73046         (NVL(l_enc_upg_option, 'N') = 'O')
73047       )
73048    THEN
73049    NULL;
73050    --
73051    --
73052    
73053   l_ccid := AcctDerRule_17(
73054            p_application_id           => p_application_id
73055          , p_ae_header_id             => l_ae_header_id 
73056 , p_source_1 => p_source_1
73057 , p_source_2 => p_source_2
73058          , x_transaction_coa_id       => l_adr_transaction_coa_id
73059          , x_accounting_coa_id        => l_adr_accounting_coa_id
73060          , x_value_type_code          => l_adr_value_type_code
73061          , p_side                     => 'NA'
73062    );
73063 
73064    xla_ae_lines_pkg.set_ccid(
73065     p_code_combination_id          => l_ccid
73066   , p_value_type_code              => l_adr_value_type_code
73067   , p_transaction_coa_id           => l_adr_transaction_coa_id
73068   , p_accounting_coa_id            => l_adr_accounting_coa_id
73069   , p_adr_code                     => 'INV'
73070   , p_adr_type_code                => 'S'
73071   , p_component_type               => l_component_type
73072   , p_component_code               => l_component_code
73073   , p_component_type_code          => l_component_type_code
73074   , p_component_appl_id            => l_component_appl_id
73075   , p_amb_context_code             => l_amb_context_code
73076   , p_side                         => 'NA'
73077   );
73078 
73079 
73080    --
73081    --
73082    END IF;
73083    --
73084    -- Bug 4922099
73085    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
73086           (NVL(l_enc_upg_option, 'N') = 'O')
73087         ) AND
73088         (l_bflow_method_code = 'PRIOR_ENTRY')
73089       )
73090    THEN
73091       IF
73092       --
73093       1 = 2
73094       --
73095       THEN
73096       xla_accounting_err_pkg.build_message
73097                                     (p_appli_s_name            => 'XLA'
73098                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73099                                     ,p_token_1                 => 'LINE_NUMBER'
73100                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
73101                                     ,p_token_2                 => 'LINE_TYPE_NAME'
73102                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
73103                                                                              l_component_type
73104                                                                             ,l_component_code
73105                                                                             ,l_component_type_code
73106                                                                             ,l_component_appl_id
73107                                                                             ,l_amb_context_code
73108                                                                             ,l_entity_code
73109                                                                             ,l_event_class_code
73110                                                                            )
73111                                     ,p_token_3                 => 'OWNER'
73112                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
73113                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
73114                                                                           ,p_lookup_code    => l_component_type_code
73115                                                                          )
73116                                     ,p_token_4                 => 'PRODUCT_NAME'
73117                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
73118                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
73119                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
73120                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
73121                                     ,p_ae_header_id            =>  NULL
73122                                        );
73123 
73124         IF (C_LEVEL_ERROR>= g_log_level) THEN
73125                  trace
73126                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73127                       ,p_level    => C_LEVEL_ERROR
73128                       ,p_module   => l_log_module);
73129         END IF;
73130       END IF;
73131    END IF;
73132    --
73133    --
73134    ------------------------------------------------------------------------------------------------
73135    -- 4219869 Business Flow
73136    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
73137    -- Prior Entry.  Currently, the following code is always generated.
73138    ------------------------------------------------------------------------------------------------
73139    XLA_AE_LINES_PKG.ValidateCurrentLine;
73140 
73141    ------------------------------------------------------------------------------------
73142    -- 4219869 Business Flow
73146 
73143    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
73144    ------------------------------------------------------------------------------------
73145    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73147    ----------------------------------------------------------------------------------
73148    -- 4219869 Business Flow
73149    -- Update journal entry status -- Need to generate this within IF <condition>
73150    ----------------------------------------------------------------------------------
73151    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73152          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
73153          ,p_balance_type_code => l_balance_type_code
73154          );
73155 
73156    -------------------------------------------------------------------------------------------
73157    -- 4262811 - Generate the Accrual Reversal lines
73158    -------------------------------------------------------------------------------------------
73159    BEGIN
73160       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
73161                               (g_array_event(p_event_id).array_value_num('header_index'));
73162       IF l_acc_rev_flag IS NULL THEN
73163          l_acc_rev_flag := 'N';
73164       END IF;
73165    EXCEPTION
73166       WHEN OTHERS THEN
73167          l_acc_rev_flag := 'N';
73168    END;
73169    --
73170    IF (l_acc_rev_flag = 'Y') THEN
73171 
73172        -- 4645092  ------------------------------------------------------------------------------
73173        -- To allow MPA report to determine if it should generate report process
73174        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
73175        ------------------------------------------------------------------------------------------
73176 
73177        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
73178        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
73179    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
73180    -- call ADRs
73181    -- Bug 4922099
73182    --
73183    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73184         (NVL(l_actual_upg_option, 'N') = 'O') OR
73185         (NVL(l_enc_upg_option, 'N') = 'O')
73186       )
73187    THEN
73188    NULL;
73189    --
73190    --
73191    
73192   l_ccid := AcctDerRule_17(
73193            p_application_id           => p_application_id
73194          , p_ae_header_id             => l_ae_header_id 
73195 , p_source_1 => p_source_1
73196 , p_source_2 => p_source_2
73197          , x_transaction_coa_id       => l_adr_transaction_coa_id
73198          , x_accounting_coa_id        => l_adr_accounting_coa_id
73199          , x_value_type_code          => l_adr_value_type_code
73200          , p_side                     => 'NA'
73201    );
73202 
73203    xla_ae_lines_pkg.set_ccid(
73204     p_code_combination_id          => l_ccid
73205   , p_value_type_code              => l_adr_value_type_code
73206   , p_transaction_coa_id           => l_adr_transaction_coa_id
73207   , p_accounting_coa_id            => l_adr_accounting_coa_id
73208   , p_adr_code                     => 'INV'
73209   , p_adr_type_code                => 'S'
73210   , p_component_type               => l_component_type
73211   , p_component_code               => l_component_code
73212   , p_component_type_code          => l_component_type_code
73213   , p_component_appl_id            => l_component_appl_id
73214   , p_amb_context_code             => l_amb_context_code
73215   , p_side                         => 'NA'
73216   );
73217 
73218 
73219    --
73220    --
73221    END IF;
73222 
73223        --
73224        -- Update the line information that should be overwritten
73225        --
73226        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
73227                                          p_header_num   => 1);
73228        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
73229 
73230        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
73231 
73232        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
73233           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
73234        END IF;
73235 
73236       --
73237       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
73238       --
73239       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
73240           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
73241       ELSE
73242           ---------------------------------------------------------------------------------------------------
73243           -- 4262811a Switch Sign
73244           ---------------------------------------------------------------------------------------------------
73245           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
73246           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73247                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73248           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73249                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73253 
73250           -- 5132302
73251           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
73252                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73254       END IF;
73255 
73256       -- 4955764
73257       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73258       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
73259 
73260 
73261       XLA_AE_LINES_PKG.ValidateCurrentLine;
73262       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73263 
73264       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73265                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
73266                ,p_balance_type_code => l_balance_type_code);
73267 
73268    END IF;
73269 
73270    -----------------------------------------------------------------------------------------
73271    -- 4262811 Multiperiod Accounting
73272    -----------------------------------------------------------------------------------------
73273      -- No MPA option is assigned.
73274 
73275 
73276 END IF;
73277 END IF;
73278 --
73279 
73280 --
73281 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73282    trace
73283       (p_msg      => 'END of AcctLineType_164'
73284       ,p_level    => C_LEVEL_PROCEDURE
73285       ,p_module   => l_log_module);
73286 END IF;
73287 --
73288 EXCEPTION
73289   WHEN xla_exceptions_pkg.application_exception THEN
73290       RAISE;
73291   WHEN OTHERS THEN
73292        xla_exceptions_pkg.raise_message
73293            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_164');
73294 END AcctLineType_164;
73295 --
73296 
73297 ---------------------------------------
73298 --
73299 -- PRIVATE FUNCTION
73300 --         AcctLineType_165
73301 --
73302 ---------------------------------------
73303 PROCEDURE AcctLineType_165 (
73304   p_application_id        IN NUMBER
73305  ,p_event_id              IN NUMBER
73306  ,p_calculate_acctd_flag  IN VARCHAR2
73307  ,p_calculate_g_l_flag    IN VARCHAR2
73308  ,p_actual_flag           IN OUT VARCHAR2
73309  ,p_balance_type_code     OUT VARCHAR2
73310  ,p_gain_or_loss_ref      OUT VARCHAR2
73311  
73312 --Transaction Account
73313  , p_source_1            IN NUMBER
73314 --Journal Line Type
73315  , p_source_2            IN VARCHAR2
73316 --Entered Amount
73317  , p_source_3            IN NUMBER
73318 --First Distribution Identifier
73319  , p_source_5            IN NUMBER
73320 --Distribution Type
73321  , p_source_6            IN VARCHAR2
73322 --Currency Code
73323  , p_source_7            IN VARCHAR2
73324 --Currency Conversion Date
73325  , p_source_8            IN DATE
73326 --Currency Conversion Rate
73327  , p_source_9            IN NUMBER
73328 --Currency Conversion Type
73329  , p_source_10            IN VARCHAR2
73330 --Accounted Amount
73331  , p_source_11            IN NUMBER
73332 )
73333 IS
73334 
73335 l_component_type              VARCHAR2(80);
73336 l_component_code              VARCHAR2(30);
73337 l_component_type_code         VARCHAR2(1);
73338 l_component_appl_id           INTEGER;
73339 l_amb_context_code            VARCHAR2(30);
73340 l_entity_code                 VARCHAR2(30);
73341 l_event_class_code            VARCHAR2(30);
73342 l_ae_header_id                NUMBER;
73343 l_event_type_code             VARCHAR2(30);
73344 l_line_definition_code        VARCHAR2(30);
73345 l_line_definition_owner_code  VARCHAR2(1);
73346 --
73347 -- adr variables
73348 l_segment                     VARCHAR2(30);
73349 l_ccid                        NUMBER;
73350 l_adr_transaction_coa_id      NUMBER;
73351 l_adr_accounting_coa_id       NUMBER;
73352 l_adr_flexfield_segment_code  VARCHAR2(30);
73353 l_adr_flex_value_set_id       NUMBER;
73354 l_adr_value_type_code         VARCHAR2(30);
73355 l_adr_value_combination_id    NUMBER;
73356 l_adr_value_segment_code      VARCHAR2(30);
73357 
73358 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
73359 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
73360 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
73361 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
73362 
73363 -- 4262811 Variables ------------------------------------------------------------------------------------------
73364 l_entered_amt_idx             NUMBER;
73365 l_accted_amt_idx              NUMBER;
73366 l_acc_rev_flag                VARCHAR2(1);
73367 l_accrual_line_num            NUMBER;
73368 l_tmp_amt                     NUMBER;
73369 l_acc_rev_natural_side_code   VARCHAR2(1);
73370 
73371 l_num_entries                 NUMBER;
73372 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
73373 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
73374 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
73375 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
73376 l_recog_line_1                NUMBER;
73377 l_recog_line_2                NUMBER;
73378 
73379 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
73380 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
73381 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
73382 
73386 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
73383 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
73384 
73385 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
73387 
73388 ---------------------------------------------------------------------------------------------------------------
73389 
73390 
73391 --
73392 -- bulk performance
73393 --
73394 l_balance_type_code           VARCHAR2(1);
73395 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
73396 l_log_module                  VARCHAR2(240);
73397 
73398 --
73399 -- Upgrade strategy
73400 --
73401 l_actual_upg_option           VARCHAR2(1);
73402 l_enc_upg_option           VARCHAR2(1);
73403 
73404 --
73405 BEGIN
73406 --
73407 IF g_log_enabled THEN
73408       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_165';
73409 END IF;
73410 --
73411 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73412 
73413       trace
73414          (p_msg      => 'BEGIN of AcctLineType_165'
73415          ,p_level    => C_LEVEL_PROCEDURE
73416          ,p_module   => l_log_module);
73417 
73418 END IF;
73419 --
73420 l_component_type             := 'AMB_JLT';
73421 l_component_code             := 'INV';
73422 l_component_type_code        := 'S';
73423 l_component_appl_id          :=  555;
73424 l_amb_context_code           := 'DEFAULT';
73425 l_entity_code                := 'INVENTORY';
73426 l_event_class_code           := 'LOG_INTERCOMPANY';
73427 l_event_type_code            := 'LOG_IC_RCPT_RETURN';
73428 l_line_definition_owner_code := 'S';
73429 l_line_definition_code       := 'LOG_IC_RCPT_RETURN';
73430 --
73431 l_balance_type_code          := 'A';
73432 l_segment                     := NULL;
73433 l_ccid                        := NULL;
73434 l_adr_transaction_coa_id      := NULL;
73435 l_adr_accounting_coa_id       := NULL;
73436 l_adr_flexfield_segment_code  := NULL;
73437 l_adr_flex_value_set_id       := NULL;
73438 l_adr_value_type_code         := NULL;
73439 l_adr_value_combination_id    := NULL;
73440 l_adr_value_segment_code      := NULL;
73441 
73442 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
73443 l_bflow_class_code           := '';    -- 4219869 Business Flow
73444 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
73445 l_budgetary_control_flag     := 'N';
73446 
73447 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
73448 l_bflow_applied_to_amt       := NULL; -- 5132302
73449 l_entered_amt_idx            := NULL;          -- 4262811
73450 l_accted_amt_idx             := NULL;          -- 4262811
73451 l_acc_rev_flag               := NULL;          -- 4262811
73452 l_accrual_line_num           := NULL;          -- 4262811
73453 l_tmp_amt                    := NULL;          -- 4262811
73454 --
73455  
73456 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
73457     l_balance_type_code <> 'B' THEN
73458 IF NVL(p_source_2,'
73459 ') =  'INV'
73460  THEN 
73461 
73462    --
73463    XLA_AE_LINES_PKG.SetNewLine;
73464 
73465    p_balance_type_code          := l_balance_type_code;
73466    -- set the flag so later we will know whether the gain loss line needs to be created
73467    
73468    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
73469      p_actual_flag :='A';
73470    END IF;
73471 
73472    --
73473    -- bulk performance
73474    --
73475    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
73476                                       p_header_num   => 0); -- 4262811
73477    --
73478    -- set accounting line options
73479    --
73480    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
73481            p_natural_side_code          => 'D'
73482          , p_gain_or_loss_flag          => 'N'
73483          , p_gl_transfer_mode_code      => 'D'
73484          , p_acct_entry_type_code       => 'A'
73485          , p_switch_side_flag           => 'Y'
73486          , p_merge_duplicate_code       => 'W'
73487          );
73488    --
73489    l_acc_rev_natural_side_code := 'C';  -- 4262811
73490    -- 
73491    --
73492    -- set accounting line type info
73493    --
73494    xla_ae_lines_pkg.SetAcctLineType
73495       (p_component_type             => l_component_type
73496       ,p_event_type_code            => l_event_type_code
73497       ,p_line_definition_owner_code => l_line_definition_owner_code
73498       ,p_line_definition_code       => l_line_definition_code
73499       ,p_accounting_line_code       => l_component_code
73500       ,p_accounting_line_type_code  => l_component_type_code
73501       ,p_accounting_line_appl_id    => l_component_appl_id
73502       ,p_amb_context_code           => l_amb_context_code
73503       ,p_entity_code                => l_entity_code
73504       ,p_event_class_code           => l_event_class_code);
73505    --
73506    -- set accounting class
73507    --
73508    xla_ae_lines_pkg.SetAcctClass(
73509            p_accounting_class_code  => 'INVENTORY_VALUATION'
73510          , p_ae_header_id           => l_ae_header_id
73511          );
73512 
73513    --
73514    -- set rounding class
73515    --
73516    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
73517                       'INVENTORY_VALUATION';
73518 
73519    --
73523    -- bulk performance
73520    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
73521    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
73522    --
73524    --
73525    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
73526 
73527    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
73528       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
73529 
73530    -- 4955764
73531    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73532       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
73533 
73534    -- 4458381 Public Sector Enh
73535    
73536    --
73537    -- set accounting attributes for the line type
73538    --
73539    l_entered_amt_idx := 3;
73540    l_accted_amt_idx  := 8;
73541    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
73542    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
73543    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
73544    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
73545    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
73546    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
73547    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
73548    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
73549    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
73550    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
73551    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
73552    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
73553    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
73554    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
73555    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
73556    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
73557    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
73558 
73559    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
73560    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
73561 
73562    ---------------------------------------------------------------------------------------------------------------
73563    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
73564    ---------------------------------------------------------------------------------------------------------------
73565    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
73566 
73567    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73568    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73569 
73570    IF xla_accounting_cache_pkg.GetValueChar
73571          (p_source_code         => 'LEDGER_CATEGORY_CODE'
73572          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
73573    AND l_bflow_method_code = 'PRIOR_ENTRY'
73574 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
73575    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
73576          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
73577        )
73578    THEN
73579          xla_ae_lines_pkg.BflowUpgEntry
73580            (p_business_method_code    => l_bflow_method_code
73581            ,p_business_class_code     => l_bflow_class_code
73582            ,p_balance_type            => l_balance_type_code);
73583    ELSE
73584       NULL;
73585 -- No business flow processing for business flow method of NONE.
73586    END IF;
73587 
73588    --
73589    -- call analytical criteria
73590    --
73591    
73592    --
73593    -- call description
73594    --
73595    -- No description or it is inherited.
73596    --
73597    -- call ADRs
73598    -- Bug 4922099
73599    --
73600    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73601         (NVL(l_actual_upg_option, 'N') = 'O') OR
73602         (NVL(l_enc_upg_option, 'N') = 'O')
73603       )
73604    THEN
73605    NULL;
73606    --
73607    --
73608    
73609   l_ccid := AcctDerRule_17(
73610            p_application_id           => p_application_id
73611          , p_ae_header_id             => l_ae_header_id 
73612 , p_source_1 => p_source_1
73613 , p_source_2 => p_source_2
73614          , x_transaction_coa_id       => l_adr_transaction_coa_id
73615          , x_accounting_coa_id        => l_adr_accounting_coa_id
73616          , x_value_type_code          => l_adr_value_type_code
73617          , p_side                     => 'NA'
73618    );
73619 
73620    xla_ae_lines_pkg.set_ccid(
73621     p_code_combination_id          => l_ccid
73622   , p_value_type_code              => l_adr_value_type_code
73623   , p_transaction_coa_id           => l_adr_transaction_coa_id
73624   , p_accounting_coa_id            => l_adr_accounting_coa_id
73625   , p_adr_code                     => 'INV'
73626   , p_adr_type_code                => 'S'
73627   , p_component_type               => l_component_type
73628   , p_component_code               => l_component_code
73629   , p_component_type_code          => l_component_type_code
73630   , p_component_appl_id            => l_component_appl_id
73631   , p_amb_context_code             => l_amb_context_code
73635 
73632   , p_side                         => 'NA'
73633   );
73634 
73636    --
73637    --
73638    END IF;
73639    --
73640    -- Bug 4922099
73641    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
73642           (NVL(l_enc_upg_option, 'N') = 'O')
73643         ) AND
73644         (l_bflow_method_code = 'PRIOR_ENTRY')
73645       )
73646    THEN
73647       IF
73648       --
73649       1 = 2
73650       --
73651       THEN
73652       xla_accounting_err_pkg.build_message
73653                                     (p_appli_s_name            => 'XLA'
73654                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73655                                     ,p_token_1                 => 'LINE_NUMBER'
73656                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
73657                                     ,p_token_2                 => 'LINE_TYPE_NAME'
73658                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
73659                                                                              l_component_type
73660                                                                             ,l_component_code
73661                                                                             ,l_component_type_code
73662                                                                             ,l_component_appl_id
73663                                                                             ,l_amb_context_code
73664                                                                             ,l_entity_code
73665                                                                             ,l_event_class_code
73666                                                                            )
73667                                     ,p_token_3                 => 'OWNER'
73668                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
73669                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
73670                                                                           ,p_lookup_code    => l_component_type_code
73671                                                                          )
73672                                     ,p_token_4                 => 'PRODUCT_NAME'
73673                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
73674                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
73675                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
73676                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
73677                                     ,p_ae_header_id            =>  NULL
73678                                        );
73679 
73680         IF (C_LEVEL_ERROR>= g_log_level) THEN
73681                  trace
73682                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73683                       ,p_level    => C_LEVEL_ERROR
73684                       ,p_module   => l_log_module);
73685         END IF;
73686       END IF;
73687    END IF;
73688    --
73689    --
73690    ------------------------------------------------------------------------------------------------
73691    -- 4219869 Business Flow
73692    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
73693    -- Prior Entry.  Currently, the following code is always generated.
73694    ------------------------------------------------------------------------------------------------
73695    XLA_AE_LINES_PKG.ValidateCurrentLine;
73696 
73697    ------------------------------------------------------------------------------------
73698    -- 4219869 Business Flow
73699    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
73700    ------------------------------------------------------------------------------------
73701    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73702 
73703    ----------------------------------------------------------------------------------
73704    -- 4219869 Business Flow
73705    -- Update journal entry status -- Need to generate this within IF <condition>
73706    ----------------------------------------------------------------------------------
73707    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73708          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
73709          ,p_balance_type_code => l_balance_type_code
73710          );
73711 
73712    -------------------------------------------------------------------------------------------
73713    -- 4262811 - Generate the Accrual Reversal lines
73714    -------------------------------------------------------------------------------------------
73715    BEGIN
73716       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
73717                               (g_array_event(p_event_id).array_value_num('header_index'));
73718       IF l_acc_rev_flag IS NULL THEN
73719          l_acc_rev_flag := 'N';
73720       END IF;
73721    EXCEPTION
73722       WHEN OTHERS THEN
73723          l_acc_rev_flag := 'N';
73724    END;
73725    --
73726    IF (l_acc_rev_flag = 'Y') THEN
73727 
73728        -- 4645092  ------------------------------------------------------------------------------
73729        -- To allow MPA report to determine if it should generate report process
73733        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
73730        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
73731        ------------------------------------------------------------------------------------------
73732 
73734        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
73735    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
73736    -- call ADRs
73737    -- Bug 4922099
73738    --
73739    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73740         (NVL(l_actual_upg_option, 'N') = 'O') OR
73741         (NVL(l_enc_upg_option, 'N') = 'O')
73742       )
73743    THEN
73744    NULL;
73745    --
73746    --
73747    
73748   l_ccid := AcctDerRule_17(
73749            p_application_id           => p_application_id
73750          , p_ae_header_id             => l_ae_header_id 
73751 , p_source_1 => p_source_1
73752 , p_source_2 => p_source_2
73753          , x_transaction_coa_id       => l_adr_transaction_coa_id
73754          , x_accounting_coa_id        => l_adr_accounting_coa_id
73755          , x_value_type_code          => l_adr_value_type_code
73756          , p_side                     => 'NA'
73757    );
73758 
73759    xla_ae_lines_pkg.set_ccid(
73760     p_code_combination_id          => l_ccid
73761   , p_value_type_code              => l_adr_value_type_code
73762   , p_transaction_coa_id           => l_adr_transaction_coa_id
73763   , p_accounting_coa_id            => l_adr_accounting_coa_id
73764   , p_adr_code                     => 'INV'
73765   , p_adr_type_code                => 'S'
73766   , p_component_type               => l_component_type
73767   , p_component_code               => l_component_code
73768   , p_component_type_code          => l_component_type_code
73769   , p_component_appl_id            => l_component_appl_id
73770   , p_amb_context_code             => l_amb_context_code
73771   , p_side                         => 'NA'
73772   );
73773 
73774 
73775    --
73776    --
73777    END IF;
73778 
73779        --
73780        -- Update the line information that should be overwritten
73781        --
73782        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
73783                                          p_header_num   => 1);
73784        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
73785 
73786        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
73787 
73788        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
73789           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
73790        END IF;
73791 
73792       --
73793       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
73794       --
73795       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
73796           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
73797       ELSE
73798           ---------------------------------------------------------------------------------------------------
73799           -- 4262811a Switch Sign
73800           ---------------------------------------------------------------------------------------------------
73801           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
73802           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73803                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73804           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73805                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73806           -- 5132302
73807           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
73808                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73809 
73810       END IF;
73811 
73812       -- 4955764
73813       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73814       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
73815 
73816 
73817       XLA_AE_LINES_PKG.ValidateCurrentLine;
73818       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73819 
73820       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73821                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
73822                ,p_balance_type_code => l_balance_type_code);
73823 
73824    END IF;
73825 
73826    -----------------------------------------------------------------------------------------
73827    -- 4262811 Multiperiod Accounting
73828    -----------------------------------------------------------------------------------------
73829      -- No MPA option is assigned.
73830 
73831 
73832 END IF;
73833 END IF;
73834 --
73835 
73836 --
73837 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73838    trace
73839       (p_msg      => 'END of AcctLineType_165'
73840       ,p_level    => C_LEVEL_PROCEDURE
73841       ,p_module   => l_log_module);
73842 END IF;
73843 --
73844 EXCEPTION
73845   WHEN xla_exceptions_pkg.application_exception THEN
73846       RAISE;
73847   WHEN OTHERS THEN
73851 --
73848        xla_exceptions_pkg.raise_message
73849            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_165');
73850 END AcctLineType_165;
73852 
73853 ---------------------------------------
73854 --
73855 -- PRIVATE FUNCTION
73856 --         AcctLineType_166
73857 --
73858 ---------------------------------------
73859 PROCEDURE AcctLineType_166 (
73860   p_application_id        IN NUMBER
73861  ,p_event_id              IN NUMBER
73862  ,p_calculate_acctd_flag  IN VARCHAR2
73863  ,p_calculate_g_l_flag    IN VARCHAR2
73864  ,p_actual_flag           IN OUT VARCHAR2
73865  ,p_balance_type_code     OUT VARCHAR2
73866  ,p_gain_or_loss_ref      OUT VARCHAR2
73867  
73868 --Transaction Account
73869  , p_source_1            IN NUMBER
73870 --Journal Line Type
73871  , p_source_2            IN VARCHAR2
73872 --Entered Amount
73873  , p_source_3            IN NUMBER
73874 --First Distribution Identifier
73875  , p_source_5            IN NUMBER
73876 --Distribution Type
73877  , p_source_6            IN VARCHAR2
73878 --Currency Code
73879  , p_source_7            IN VARCHAR2
73880 --Currency Conversion Date
73881  , p_source_8            IN DATE
73882 --Currency Conversion Rate
73883  , p_source_9            IN NUMBER
73884 --Currency Conversion Type
73885  , p_source_10            IN VARCHAR2
73886 --Accounted Amount
73887  , p_source_11            IN NUMBER
73888 )
73889 IS
73890 
73891 l_component_type              VARCHAR2(80);
73892 l_component_code              VARCHAR2(30);
73893 l_component_type_code         VARCHAR2(1);
73894 l_component_appl_id           INTEGER;
73895 l_amb_context_code            VARCHAR2(30);
73896 l_entity_code                 VARCHAR2(30);
73897 l_event_class_code            VARCHAR2(30);
73898 l_ae_header_id                NUMBER;
73899 l_event_type_code             VARCHAR2(30);
73900 l_line_definition_code        VARCHAR2(30);
73901 l_line_definition_owner_code  VARCHAR2(1);
73902 --
73903 -- adr variables
73904 l_segment                     VARCHAR2(30);
73905 l_ccid                        NUMBER;
73906 l_adr_transaction_coa_id      NUMBER;
73907 l_adr_accounting_coa_id       NUMBER;
73908 l_adr_flexfield_segment_code  VARCHAR2(30);
73909 l_adr_flex_value_set_id       NUMBER;
73910 l_adr_value_type_code         VARCHAR2(30);
73911 l_adr_value_combination_id    NUMBER;
73912 l_adr_value_segment_code      VARCHAR2(30);
73913 
73914 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
73915 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
73916 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
73917 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
73918 
73919 -- 4262811 Variables ------------------------------------------------------------------------------------------
73920 l_entered_amt_idx             NUMBER;
73921 l_accted_amt_idx              NUMBER;
73922 l_acc_rev_flag                VARCHAR2(1);
73923 l_accrual_line_num            NUMBER;
73924 l_tmp_amt                     NUMBER;
73925 l_acc_rev_natural_side_code   VARCHAR2(1);
73926 
73927 l_num_entries                 NUMBER;
73928 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
73929 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
73930 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
73931 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
73932 l_recog_line_1                NUMBER;
73933 l_recog_line_2                NUMBER;
73934 
73935 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
73936 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
73937 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
73938 
73939 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
73940 
73941 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
73942 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
73943 
73944 ---------------------------------------------------------------------------------------------------------------
73945 
73946 
73947 --
73948 -- bulk performance
73949 --
73950 l_balance_type_code           VARCHAR2(1);
73951 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
73952 l_log_module                  VARCHAR2(240);
73953 
73954 --
73955 -- Upgrade strategy
73956 --
73957 l_actual_upg_option           VARCHAR2(1);
73958 l_enc_upg_option           VARCHAR2(1);
73959 
73960 --
73961 BEGIN
73962 --
73963 IF g_log_enabled THEN
73964       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_166';
73965 END IF;
73966 --
73967 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73968 
73969       trace
73970          (p_msg      => 'BEGIN of AcctLineType_166'
73971          ,p_level    => C_LEVEL_PROCEDURE
73972          ,p_module   => l_log_module);
73973 
73974 END IF;
73975 --
73976 l_component_type             := 'AMB_JLT';
73977 l_component_code             := 'INV';
73978 l_component_type_code        := 'S';
73979 l_component_appl_id          :=  555;
73980 l_amb_context_code           := 'DEFAULT';
73981 l_entity_code                := 'ORDERMANAGEMENT';
73982 l_event_class_code           := 'RMA';
73983 l_event_type_code            := 'RMA_ALL';
73984 l_line_definition_owner_code := 'S';
73985 l_line_definition_code       := 'RMA';
73986 --
73990 l_adr_transaction_coa_id      := NULL;
73987 l_balance_type_code          := 'A';
73988 l_segment                     := NULL;
73989 l_ccid                        := NULL;
73991 l_adr_accounting_coa_id       := NULL;
73992 l_adr_flexfield_segment_code  := NULL;
73993 l_adr_flex_value_set_id       := NULL;
73994 l_adr_value_type_code         := NULL;
73995 l_adr_value_combination_id    := NULL;
73996 l_adr_value_segment_code      := NULL;
73997 
73998 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
73999 l_bflow_class_code           := '';    -- 4219869 Business Flow
74000 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
74001 l_budgetary_control_flag     := 'N';
74002 
74003 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
74004 l_bflow_applied_to_amt       := NULL; -- 5132302
74005 l_entered_amt_idx            := NULL;          -- 4262811
74006 l_accted_amt_idx             := NULL;          -- 4262811
74007 l_acc_rev_flag               := NULL;          -- 4262811
74008 l_accrual_line_num           := NULL;          -- 4262811
74009 l_tmp_amt                    := NULL;          -- 4262811
74010 --
74011  
74012 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
74013     l_balance_type_code <> 'B' THEN
74014 IF NVL(p_source_2,'
74015 ') =  'INV'
74016  THEN 
74017 
74018    --
74019    XLA_AE_LINES_PKG.SetNewLine;
74020 
74021    p_balance_type_code          := l_balance_type_code;
74022    -- set the flag so later we will know whether the gain loss line needs to be created
74023    
74024    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
74025      p_actual_flag :='A';
74026    END IF;
74027 
74028    --
74029    -- bulk performance
74030    --
74031    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
74032                                       p_header_num   => 0); -- 4262811
74033    --
74034    -- set accounting line options
74035    --
74036    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
74037            p_natural_side_code          => 'D'
74038          , p_gain_or_loss_flag          => 'N'
74039          , p_gl_transfer_mode_code      => 'D'
74040          , p_acct_entry_type_code       => 'A'
74041          , p_switch_side_flag           => 'Y'
74042          , p_merge_duplicate_code       => 'W'
74043          );
74044    --
74045    l_acc_rev_natural_side_code := 'C';  -- 4262811
74046    -- 
74047    --
74048    -- set accounting line type info
74049    --
74050    xla_ae_lines_pkg.SetAcctLineType
74051       (p_component_type             => l_component_type
74052       ,p_event_type_code            => l_event_type_code
74053       ,p_line_definition_owner_code => l_line_definition_owner_code
74054       ,p_line_definition_code       => l_line_definition_code
74055       ,p_accounting_line_code       => l_component_code
74056       ,p_accounting_line_type_code  => l_component_type_code
74057       ,p_accounting_line_appl_id    => l_component_appl_id
74058       ,p_amb_context_code           => l_amb_context_code
74059       ,p_entity_code                => l_entity_code
74060       ,p_event_class_code           => l_event_class_code);
74061    --
74062    -- set accounting class
74063    --
74064    xla_ae_lines_pkg.SetAcctClass(
74065            p_accounting_class_code  => 'INVENTORY_VALUATION'
74066          , p_ae_header_id           => l_ae_header_id
74067          );
74068 
74069    --
74070    -- set rounding class
74071    --
74072    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
74073                       'INVENTORY_VALUATION';
74074 
74075    --
74076    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
74077    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
74078    --
74079    -- bulk performance
74080    --
74081    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
74082 
74083    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
74084       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
74085 
74086    -- 4955764
74087    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74088       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
74089 
74090    -- 4458381 Public Sector Enh
74091    
74092    --
74093    -- set accounting attributes for the line type
74094    --
74095    l_entered_amt_idx := 3;
74096    l_accted_amt_idx  := 8;
74097    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
74098    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
74099    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
74100    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
74101    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
74102    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
74103    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
74104    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
74105    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
74106    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
74107    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
74111    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
74108    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
74109    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
74110    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
74112    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
74113    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
74114 
74115    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
74116    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
74117 
74118    ---------------------------------------------------------------------------------------------------------------
74119    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
74120    ---------------------------------------------------------------------------------------------------------------
74121    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
74122 
74123    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74124    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74125 
74126    IF xla_accounting_cache_pkg.GetValueChar
74127          (p_source_code         => 'LEDGER_CATEGORY_CODE'
74128          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
74129    AND l_bflow_method_code = 'PRIOR_ENTRY'
74130 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
74131    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
74132          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
74133        )
74134    THEN
74135          xla_ae_lines_pkg.BflowUpgEntry
74136            (p_business_method_code    => l_bflow_method_code
74137            ,p_business_class_code     => l_bflow_class_code
74138            ,p_balance_type            => l_balance_type_code);
74139    ELSE
74140       NULL;
74141 -- No business flow processing for business flow method of NONE.
74142    END IF;
74143 
74144    --
74145    -- call analytical criteria
74146    --
74147    
74148    --
74149    -- call description
74150    --
74151    -- No description or it is inherited.
74152    --
74153    -- call ADRs
74154    -- Bug 4922099
74155    --
74156    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74157         (NVL(l_actual_upg_option, 'N') = 'O') OR
74158         (NVL(l_enc_upg_option, 'N') = 'O')
74159       )
74160    THEN
74161    NULL;
74162    --
74163    --
74164    
74165   l_ccid := AcctDerRule_17(
74166            p_application_id           => p_application_id
74167          , p_ae_header_id             => l_ae_header_id 
74168 , p_source_1 => p_source_1
74169 , p_source_2 => p_source_2
74170          , x_transaction_coa_id       => l_adr_transaction_coa_id
74171          , x_accounting_coa_id        => l_adr_accounting_coa_id
74172          , x_value_type_code          => l_adr_value_type_code
74173          , p_side                     => 'NA'
74174    );
74175 
74176    xla_ae_lines_pkg.set_ccid(
74177     p_code_combination_id          => l_ccid
74178   , p_value_type_code              => l_adr_value_type_code
74179   , p_transaction_coa_id           => l_adr_transaction_coa_id
74180   , p_accounting_coa_id            => l_adr_accounting_coa_id
74181   , p_adr_code                     => 'INV'
74182   , p_adr_type_code                => 'S'
74183   , p_component_type               => l_component_type
74184   , p_component_code               => l_component_code
74185   , p_component_type_code          => l_component_type_code
74186   , p_component_appl_id            => l_component_appl_id
74187   , p_amb_context_code             => l_amb_context_code
74188   , p_side                         => 'NA'
74189   );
74190 
74191 
74192    --
74193    --
74194    END IF;
74195    --
74196    -- Bug 4922099
74197    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
74198           (NVL(l_enc_upg_option, 'N') = 'O')
74199         ) AND
74200         (l_bflow_method_code = 'PRIOR_ENTRY')
74201       )
74202    THEN
74203       IF
74204       --
74205       1 = 2
74206       --
74207       THEN
74208       xla_accounting_err_pkg.build_message
74209                                     (p_appli_s_name            => 'XLA'
74210                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74211                                     ,p_token_1                 => 'LINE_NUMBER'
74212                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
74213                                     ,p_token_2                 => 'LINE_TYPE_NAME'
74214                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
74215                                                                              l_component_type
74216                                                                             ,l_component_code
74217                                                                             ,l_component_type_code
74218                                                                             ,l_component_appl_id
74219                                                                             ,l_amb_context_code
74220                                                                             ,l_entity_code
74224                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
74221                                                                             ,l_event_class_code
74222                                                                            )
74223                                     ,p_token_3                 => 'OWNER'
74225                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
74226                                                                           ,p_lookup_code    => l_component_type_code
74227                                                                          )
74228                                     ,p_token_4                 => 'PRODUCT_NAME'
74229                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
74230                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
74231                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
74232                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
74233                                     ,p_ae_header_id            =>  NULL
74234                                        );
74235 
74236         IF (C_LEVEL_ERROR>= g_log_level) THEN
74237                  trace
74238                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74239                       ,p_level    => C_LEVEL_ERROR
74240                       ,p_module   => l_log_module);
74241         END IF;
74242       END IF;
74243    END IF;
74244    --
74245    --
74246    ------------------------------------------------------------------------------------------------
74247    -- 4219869 Business Flow
74248    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
74249    -- Prior Entry.  Currently, the following code is always generated.
74250    ------------------------------------------------------------------------------------------------
74251    XLA_AE_LINES_PKG.ValidateCurrentLine;
74252 
74253    ------------------------------------------------------------------------------------
74254    -- 4219869 Business Flow
74255    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
74256    ------------------------------------------------------------------------------------
74257    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74258 
74259    ----------------------------------------------------------------------------------
74260    -- 4219869 Business Flow
74261    -- Update journal entry status -- Need to generate this within IF <condition>
74262    ----------------------------------------------------------------------------------
74263    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74264          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
74265          ,p_balance_type_code => l_balance_type_code
74266          );
74267 
74268    -------------------------------------------------------------------------------------------
74269    -- 4262811 - Generate the Accrual Reversal lines
74270    -------------------------------------------------------------------------------------------
74271    BEGIN
74272       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
74273                               (g_array_event(p_event_id).array_value_num('header_index'));
74274       IF l_acc_rev_flag IS NULL THEN
74275          l_acc_rev_flag := 'N';
74276       END IF;
74277    EXCEPTION
74278       WHEN OTHERS THEN
74279          l_acc_rev_flag := 'N';
74280    END;
74281    --
74282    IF (l_acc_rev_flag = 'Y') THEN
74283 
74284        -- 4645092  ------------------------------------------------------------------------------
74285        -- To allow MPA report to determine if it should generate report process
74286        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
74287        ------------------------------------------------------------------------------------------
74288 
74289        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
74290        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
74291    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
74292    -- call ADRs
74293    -- Bug 4922099
74294    --
74295    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74296         (NVL(l_actual_upg_option, 'N') = 'O') OR
74297         (NVL(l_enc_upg_option, 'N') = 'O')
74298       )
74299    THEN
74300    NULL;
74301    --
74302    --
74303    
74304   l_ccid := AcctDerRule_17(
74305            p_application_id           => p_application_id
74306          , p_ae_header_id             => l_ae_header_id 
74307 , p_source_1 => p_source_1
74308 , p_source_2 => p_source_2
74309          , x_transaction_coa_id       => l_adr_transaction_coa_id
74310          , x_accounting_coa_id        => l_adr_accounting_coa_id
74311          , x_value_type_code          => l_adr_value_type_code
74312          , p_side                     => 'NA'
74313    );
74314 
74315    xla_ae_lines_pkg.set_ccid(
74316     p_code_combination_id          => l_ccid
74317   , p_value_type_code              => l_adr_value_type_code
74318   , p_transaction_coa_id           => l_adr_transaction_coa_id
74319   , p_accounting_coa_id            => l_adr_accounting_coa_id
74320   , p_adr_code                     => 'INV'
74321   , p_adr_type_code                => 'S'
74325   , p_component_appl_id            => l_component_appl_id
74322   , p_component_type               => l_component_type
74323   , p_component_code               => l_component_code
74324   , p_component_type_code          => l_component_type_code
74326   , p_amb_context_code             => l_amb_context_code
74327   , p_side                         => 'NA'
74328   );
74329 
74330 
74331    --
74332    --
74333    END IF;
74334 
74335        --
74336        -- Update the line information that should be overwritten
74337        --
74338        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
74339                                          p_header_num   => 1);
74340        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
74341 
74342        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
74343 
74344        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
74345           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
74346        END IF;
74347 
74348       --
74349       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
74350       --
74351       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
74352           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
74353       ELSE
74354           ---------------------------------------------------------------------------------------------------
74355           -- 4262811a Switch Sign
74356           ---------------------------------------------------------------------------------------------------
74357           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
74358           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74359                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74360           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74361                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74362           -- 5132302
74363           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
74364                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74365 
74366       END IF;
74367 
74368       -- 4955764
74369       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74370       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
74371 
74372 
74373       XLA_AE_LINES_PKG.ValidateCurrentLine;
74374       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74375 
74376       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74377                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
74378                ,p_balance_type_code => l_balance_type_code);
74379 
74380    END IF;
74381 
74382    -----------------------------------------------------------------------------------------
74383    -- 4262811 Multiperiod Accounting
74384    -----------------------------------------------------------------------------------------
74385      -- No MPA option is assigned.
74386 
74387 
74388 END IF;
74389 END IF;
74390 --
74391 
74392 --
74393 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74394    trace
74395       (p_msg      => 'END of AcctLineType_166'
74396       ,p_level    => C_LEVEL_PROCEDURE
74397       ,p_module   => l_log_module);
74398 END IF;
74399 --
74400 EXCEPTION
74401   WHEN xla_exceptions_pkg.application_exception THEN
74402       RAISE;
74403   WHEN OTHERS THEN
74404        xla_exceptions_pkg.raise_message
74405            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_166');
74406 END AcctLineType_166;
74407 --
74408 
74409 ---------------------------------------
74410 --
74411 -- PRIVATE FUNCTION
74412 --         AcctLineType_167
74413 --
74414 ---------------------------------------
74415 PROCEDURE AcctLineType_167 (
74416   p_application_id        IN NUMBER
74417  ,p_event_id              IN NUMBER
74418  ,p_calculate_acctd_flag  IN VARCHAR2
74419  ,p_calculate_g_l_flag    IN VARCHAR2
74420  ,p_actual_flag           IN OUT VARCHAR2
74421  ,p_balance_type_code     OUT VARCHAR2
74422  ,p_gain_or_loss_ref      OUT VARCHAR2
74423  
74424 --Transaction Account
74425  , p_source_1            IN NUMBER
74426 --Journal Line Type
74427  , p_source_2            IN VARCHAR2
74428 --Entered Amount
74429  , p_source_3            IN NUMBER
74430 --First Distribution Identifier
74431  , p_source_5            IN NUMBER
74432 --Distribution Type
74433  , p_source_6            IN VARCHAR2
74434 --Currency Code
74435  , p_source_7            IN VARCHAR2
74436 --Currency Conversion Date
74437  , p_source_8            IN DATE
74438 --Currency Conversion Rate
74439  , p_source_9            IN NUMBER
74440 --Currency Conversion Type
74441  , p_source_10            IN VARCHAR2
74442 --Accounted Amount
74443  , p_source_11            IN NUMBER
74444 )
74445 IS
74446 
74447 l_component_type              VARCHAR2(80);
74448 l_component_code              VARCHAR2(30);
74449 l_component_type_code         VARCHAR2(1);
74450 l_component_appl_id           INTEGER;
74454 l_ae_header_id                NUMBER;
74451 l_amb_context_code            VARCHAR2(30);
74452 l_entity_code                 VARCHAR2(30);
74453 l_event_class_code            VARCHAR2(30);
74455 l_event_type_code             VARCHAR2(30);
74456 l_line_definition_code        VARCHAR2(30);
74457 l_line_definition_owner_code  VARCHAR2(1);
74458 --
74459 -- adr variables
74460 l_segment                     VARCHAR2(30);
74461 l_ccid                        NUMBER;
74462 l_adr_transaction_coa_id      NUMBER;
74463 l_adr_accounting_coa_id       NUMBER;
74464 l_adr_flexfield_segment_code  VARCHAR2(30);
74465 l_adr_flex_value_set_id       NUMBER;
74466 l_adr_value_type_code         VARCHAR2(30);
74467 l_adr_value_combination_id    NUMBER;
74468 l_adr_value_segment_code      VARCHAR2(30);
74469 
74470 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
74471 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
74472 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
74473 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
74474 
74475 -- 4262811 Variables ------------------------------------------------------------------------------------------
74476 l_entered_amt_idx             NUMBER;
74477 l_accted_amt_idx              NUMBER;
74478 l_acc_rev_flag                VARCHAR2(1);
74479 l_accrual_line_num            NUMBER;
74480 l_tmp_amt                     NUMBER;
74481 l_acc_rev_natural_side_code   VARCHAR2(1);
74482 
74483 l_num_entries                 NUMBER;
74484 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
74485 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
74486 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
74487 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
74488 l_recog_line_1                NUMBER;
74489 l_recog_line_2                NUMBER;
74490 
74491 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
74492 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
74493 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
74494 
74495 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
74496 
74497 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
74498 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
74499 
74500 ---------------------------------------------------------------------------------------------------------------
74501 
74502 
74503 --
74504 -- bulk performance
74505 --
74506 l_balance_type_code           VARCHAR2(1);
74507 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
74508 l_log_module                  VARCHAR2(240);
74509 
74510 --
74511 -- Upgrade strategy
74512 --
74513 l_actual_upg_option           VARCHAR2(1);
74514 l_enc_upg_option           VARCHAR2(1);
74515 
74516 --
74517 BEGIN
74518 --
74519 IF g_log_enabled THEN
74520       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_167';
74521 END IF;
74522 --
74523 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74524 
74525       trace
74526          (p_msg      => 'BEGIN of AcctLineType_167'
74527          ,p_level    => C_LEVEL_PROCEDURE
74528          ,p_module   => l_log_module);
74529 
74530 END IF;
74531 --
74532 l_component_type             := 'AMB_JLT';
74533 l_component_code             := 'INV';
74534 l_component_type_code        := 'S';
74535 l_component_appl_id          :=  555;
74536 l_amb_context_code           := 'DEFAULT';
74537 l_entity_code                := 'INVENTORY';
74538 l_event_class_code           := 'INT_ORDER_TO_EXP';
74539 l_event_type_code            := 'INT_ORDER_ISSUE';
74540 l_line_definition_owner_code := 'S';
74541 l_line_definition_code       := 'INT_ORDER_ISSUE';
74542 --
74543 l_balance_type_code          := 'A';
74544 l_segment                     := NULL;
74545 l_ccid                        := NULL;
74546 l_adr_transaction_coa_id      := NULL;
74547 l_adr_accounting_coa_id       := NULL;
74548 l_adr_flexfield_segment_code  := NULL;
74549 l_adr_flex_value_set_id       := NULL;
74550 l_adr_value_type_code         := NULL;
74551 l_adr_value_combination_id    := NULL;
74552 l_adr_value_segment_code      := NULL;
74553 
74554 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
74555 l_bflow_class_code           := '';    -- 4219869 Business Flow
74556 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
74557 l_budgetary_control_flag     := 'N';
74558 
74559 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
74560 l_bflow_applied_to_amt       := NULL; -- 5132302
74561 l_entered_amt_idx            := NULL;          -- 4262811
74562 l_accted_amt_idx             := NULL;          -- 4262811
74563 l_acc_rev_flag               := NULL;          -- 4262811
74564 l_accrual_line_num           := NULL;          -- 4262811
74565 l_tmp_amt                    := NULL;          -- 4262811
74566 --
74567  
74568 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
74569     l_balance_type_code <> 'B' THEN
74570 IF NVL(p_source_2,'
74571 ') =  'INV'
74572  THEN 
74573 
74574    --
74575    XLA_AE_LINES_PKG.SetNewLine;
74576 
74577    p_balance_type_code          := l_balance_type_code;
74578    -- set the flag so later we will know whether the gain loss line needs to be created
74582    END IF;
74579    
74580    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
74581      p_actual_flag :='A';
74583 
74584    --
74585    -- bulk performance
74586    --
74587    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
74588                                       p_header_num   => 0); -- 4262811
74589    --
74590    -- set accounting line options
74591    --
74592    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
74593            p_natural_side_code          => 'D'
74594          , p_gain_or_loss_flag          => 'N'
74595          , p_gl_transfer_mode_code      => 'D'
74596          , p_acct_entry_type_code       => 'A'
74597          , p_switch_side_flag           => 'Y'
74598          , p_merge_duplicate_code       => 'W'
74599          );
74600    --
74601    l_acc_rev_natural_side_code := 'C';  -- 4262811
74602    -- 
74603    --
74604    -- set accounting line type info
74605    --
74606    xla_ae_lines_pkg.SetAcctLineType
74607       (p_component_type             => l_component_type
74608       ,p_event_type_code            => l_event_type_code
74609       ,p_line_definition_owner_code => l_line_definition_owner_code
74610       ,p_line_definition_code       => l_line_definition_code
74611       ,p_accounting_line_code       => l_component_code
74612       ,p_accounting_line_type_code  => l_component_type_code
74613       ,p_accounting_line_appl_id    => l_component_appl_id
74614       ,p_amb_context_code           => l_amb_context_code
74615       ,p_entity_code                => l_entity_code
74616       ,p_event_class_code           => l_event_class_code);
74617    --
74618    -- set accounting class
74619    --
74620    xla_ae_lines_pkg.SetAcctClass(
74621            p_accounting_class_code  => 'INVENTORY_VALUATION'
74622          , p_ae_header_id           => l_ae_header_id
74623          );
74624 
74625    --
74626    -- set rounding class
74627    --
74628    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
74629                       'INVENTORY_VALUATION';
74630 
74631    --
74632    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
74633    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
74634    --
74635    -- bulk performance
74636    --
74637    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
74638 
74639    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
74640       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
74641 
74642    -- 4955764
74643    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74644       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
74645 
74646    -- 4458381 Public Sector Enh
74647    
74648    --
74649    -- set accounting attributes for the line type
74650    --
74651    l_entered_amt_idx := 3;
74652    l_accted_amt_idx  := 8;
74653    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
74654    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
74655    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
74656    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
74657    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
74658    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
74659    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
74660    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
74661    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
74662    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
74663    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
74664    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
74665    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
74666    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
74667    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
74668    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
74669    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
74670 
74671    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
74672    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
74673 
74674    ---------------------------------------------------------------------------------------------------------------
74675    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
74676    ---------------------------------------------------------------------------------------------------------------
74677    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
74678 
74679    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74680    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74681 
74682    IF xla_accounting_cache_pkg.GetValueChar
74683          (p_source_code         => 'LEDGER_CATEGORY_CODE'
74684          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
74685    AND l_bflow_method_code = 'PRIOR_ENTRY'
74686 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
74687    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
74688          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
74689        )
74693            ,p_business_class_code     => l_bflow_class_code
74690    THEN
74691          xla_ae_lines_pkg.BflowUpgEntry
74692            (p_business_method_code    => l_bflow_method_code
74694            ,p_balance_type            => l_balance_type_code);
74695    ELSE
74696       NULL;
74697 -- No business flow processing for business flow method of NONE.
74698    END IF;
74699 
74700    --
74701    -- call analytical criteria
74702    --
74703    
74704    --
74705    -- call description
74706    --
74707    -- No description or it is inherited.
74708    --
74709    -- call ADRs
74710    -- Bug 4922099
74711    --
74712    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74713         (NVL(l_actual_upg_option, 'N') = 'O') OR
74714         (NVL(l_enc_upg_option, 'N') = 'O')
74715       )
74716    THEN
74717    NULL;
74718    --
74719    --
74720    
74721   l_ccid := AcctDerRule_17(
74722            p_application_id           => p_application_id
74723          , p_ae_header_id             => l_ae_header_id 
74724 , p_source_1 => p_source_1
74725 , p_source_2 => p_source_2
74726          , x_transaction_coa_id       => l_adr_transaction_coa_id
74727          , x_accounting_coa_id        => l_adr_accounting_coa_id
74728          , x_value_type_code          => l_adr_value_type_code
74729          , p_side                     => 'NA'
74730    );
74731 
74732    xla_ae_lines_pkg.set_ccid(
74733     p_code_combination_id          => l_ccid
74734   , p_value_type_code              => l_adr_value_type_code
74735   , p_transaction_coa_id           => l_adr_transaction_coa_id
74736   , p_accounting_coa_id            => l_adr_accounting_coa_id
74737   , p_adr_code                     => 'INV'
74738   , p_adr_type_code                => 'S'
74739   , p_component_type               => l_component_type
74740   , p_component_code               => l_component_code
74741   , p_component_type_code          => l_component_type_code
74742   , p_component_appl_id            => l_component_appl_id
74743   , p_amb_context_code             => l_amb_context_code
74744   , p_side                         => 'NA'
74745   );
74746 
74747 
74748    --
74749    --
74750    END IF;
74751    --
74752    -- Bug 4922099
74753    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
74754           (NVL(l_enc_upg_option, 'N') = 'O')
74755         ) AND
74756         (l_bflow_method_code = 'PRIOR_ENTRY')
74757       )
74758    THEN
74759       IF
74760       --
74761       1 = 2
74762       --
74763       THEN
74764       xla_accounting_err_pkg.build_message
74765                                     (p_appli_s_name            => 'XLA'
74766                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74767                                     ,p_token_1                 => 'LINE_NUMBER'
74768                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
74769                                     ,p_token_2                 => 'LINE_TYPE_NAME'
74770                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
74771                                                                              l_component_type
74772                                                                             ,l_component_code
74773                                                                             ,l_component_type_code
74774                                                                             ,l_component_appl_id
74775                                                                             ,l_amb_context_code
74776                                                                             ,l_entity_code
74777                                                                             ,l_event_class_code
74778                                                                            )
74779                                     ,p_token_3                 => 'OWNER'
74780                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
74781                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
74782                                                                           ,p_lookup_code    => l_component_type_code
74783                                                                          )
74784                                     ,p_token_4                 => 'PRODUCT_NAME'
74785                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
74786                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
74787                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
74788                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
74789                                     ,p_ae_header_id            =>  NULL
74790                                        );
74791 
74792         IF (C_LEVEL_ERROR>= g_log_level) THEN
74793                  trace
74794                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74795                       ,p_level    => C_LEVEL_ERROR
74796                       ,p_module   => l_log_module);
74797         END IF;
74798       END IF;
74799    END IF;
74800    --
74801    --
74802    ------------------------------------------------------------------------------------------------
74806    ------------------------------------------------------------------------------------------------
74803    -- 4219869 Business Flow
74804    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
74805    -- Prior Entry.  Currently, the following code is always generated.
74807    XLA_AE_LINES_PKG.ValidateCurrentLine;
74808 
74809    ------------------------------------------------------------------------------------
74810    -- 4219869 Business Flow
74811    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
74812    ------------------------------------------------------------------------------------
74813    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74814 
74815    ----------------------------------------------------------------------------------
74816    -- 4219869 Business Flow
74817    -- Update journal entry status -- Need to generate this within IF <condition>
74818    ----------------------------------------------------------------------------------
74819    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74820          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
74821          ,p_balance_type_code => l_balance_type_code
74822          );
74823 
74824    -------------------------------------------------------------------------------------------
74825    -- 4262811 - Generate the Accrual Reversal lines
74826    -------------------------------------------------------------------------------------------
74827    BEGIN
74828       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
74829                               (g_array_event(p_event_id).array_value_num('header_index'));
74830       IF l_acc_rev_flag IS NULL THEN
74831          l_acc_rev_flag := 'N';
74832       END IF;
74833    EXCEPTION
74834       WHEN OTHERS THEN
74835          l_acc_rev_flag := 'N';
74836    END;
74837    --
74838    IF (l_acc_rev_flag = 'Y') THEN
74839 
74840        -- 4645092  ------------------------------------------------------------------------------
74841        -- To allow MPA report to determine if it should generate report process
74842        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
74843        ------------------------------------------------------------------------------------------
74844 
74845        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
74846        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
74847    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
74848    -- call ADRs
74849    -- Bug 4922099
74850    --
74851    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74852         (NVL(l_actual_upg_option, 'N') = 'O') OR
74853         (NVL(l_enc_upg_option, 'N') = 'O')
74854       )
74855    THEN
74856    NULL;
74857    --
74858    --
74859    
74860   l_ccid := AcctDerRule_17(
74861            p_application_id           => p_application_id
74862          , p_ae_header_id             => l_ae_header_id 
74863 , p_source_1 => p_source_1
74864 , p_source_2 => p_source_2
74865          , x_transaction_coa_id       => l_adr_transaction_coa_id
74866          , x_accounting_coa_id        => l_adr_accounting_coa_id
74867          , x_value_type_code          => l_adr_value_type_code
74868          , p_side                     => 'NA'
74869    );
74870 
74871    xla_ae_lines_pkg.set_ccid(
74872     p_code_combination_id          => l_ccid
74873   , p_value_type_code              => l_adr_value_type_code
74874   , p_transaction_coa_id           => l_adr_transaction_coa_id
74875   , p_accounting_coa_id            => l_adr_accounting_coa_id
74876   , p_adr_code                     => 'INV'
74877   , p_adr_type_code                => 'S'
74878   , p_component_type               => l_component_type
74879   , p_component_code               => l_component_code
74880   , p_component_type_code          => l_component_type_code
74881   , p_component_appl_id            => l_component_appl_id
74882   , p_amb_context_code             => l_amb_context_code
74883   , p_side                         => 'NA'
74884   );
74885 
74886 
74887    --
74888    --
74889    END IF;
74890 
74891        --
74892        -- Update the line information that should be overwritten
74893        --
74894        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
74895                                          p_header_num   => 1);
74896        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
74897 
74898        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
74899 
74900        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
74901           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
74902        END IF;
74903 
74904       --
74905       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
74906       --
74907       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
74908           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
74909       ELSE
74910           ---------------------------------------------------------------------------------------------------
74911           -- 4262811a Switch Sign
74912           ---------------------------------------------------------------------------------------------------
74916           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74913           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
74914           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74915                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74917                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74918           -- 5132302
74919           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
74920                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74921 
74922       END IF;
74923 
74924       -- 4955764
74925       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74926       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
74927 
74928 
74929       XLA_AE_LINES_PKG.ValidateCurrentLine;
74930       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74931 
74932       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74933                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
74934                ,p_balance_type_code => l_balance_type_code);
74935 
74936    END IF;
74937 
74938    -----------------------------------------------------------------------------------------
74939    -- 4262811 Multiperiod Accounting
74940    -----------------------------------------------------------------------------------------
74941      -- No MPA option is assigned.
74942 
74943 
74944 END IF;
74945 END IF;
74946 --
74947 
74948 --
74949 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74950    trace
74951       (p_msg      => 'END of AcctLineType_167'
74952       ,p_level    => C_LEVEL_PROCEDURE
74953       ,p_module   => l_log_module);
74954 END IF;
74955 --
74956 EXCEPTION
74957   WHEN xla_exceptions_pkg.application_exception THEN
74958       RAISE;
74959   WHEN OTHERS THEN
74960        xla_exceptions_pkg.raise_message
74961            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_167');
74962 END AcctLineType_167;
74963 --
74964 
74965 ---------------------------------------
74966 --
74967 -- PRIVATE FUNCTION
74968 --         AcctLineType_168
74969 --
74970 ---------------------------------------
74971 PROCEDURE AcctLineType_168 (
74972   p_application_id        IN NUMBER
74973  ,p_event_id              IN NUMBER
74974  ,p_calculate_acctd_flag  IN VARCHAR2
74975  ,p_calculate_g_l_flag    IN VARCHAR2
74976  ,p_actual_flag           IN OUT VARCHAR2
74977  ,p_balance_type_code     OUT VARCHAR2
74978  ,p_gain_or_loss_ref      OUT VARCHAR2
74979  
74980 --Transaction Account
74981  , p_source_1            IN NUMBER
74982 --Journal Line Type
74983  , p_source_2            IN VARCHAR2
74984 --Entered Amount
74985  , p_source_3            IN NUMBER
74986 --First Distribution Identifier
74987  , p_source_5            IN NUMBER
74988 --Distribution Type
74989  , p_source_6            IN VARCHAR2
74990 --Currency Code
74991  , p_source_7            IN VARCHAR2
74992 --Currency Conversion Date
74993  , p_source_8            IN DATE
74994 --Currency Conversion Rate
74995  , p_source_9            IN NUMBER
74996 --Currency Conversion Type
74997  , p_source_10            IN VARCHAR2
74998 --Accounted Amount
74999  , p_source_11            IN NUMBER
75000 )
75001 IS
75002 
75003 l_component_type              VARCHAR2(80);
75004 l_component_code              VARCHAR2(30);
75005 l_component_type_code         VARCHAR2(1);
75006 l_component_appl_id           INTEGER;
75007 l_amb_context_code            VARCHAR2(30);
75008 l_entity_code                 VARCHAR2(30);
75009 l_event_class_code            VARCHAR2(30);
75010 l_ae_header_id                NUMBER;
75011 l_event_type_code             VARCHAR2(30);
75012 l_line_definition_code        VARCHAR2(30);
75013 l_line_definition_owner_code  VARCHAR2(1);
75014 --
75015 -- adr variables
75016 l_segment                     VARCHAR2(30);
75017 l_ccid                        NUMBER;
75018 l_adr_transaction_coa_id      NUMBER;
75019 l_adr_accounting_coa_id       NUMBER;
75020 l_adr_flexfield_segment_code  VARCHAR2(30);
75021 l_adr_flex_value_set_id       NUMBER;
75022 l_adr_value_type_code         VARCHAR2(30);
75023 l_adr_value_combination_id    NUMBER;
75024 l_adr_value_segment_code      VARCHAR2(30);
75025 
75026 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
75027 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
75028 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
75029 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
75030 
75031 -- 4262811 Variables ------------------------------------------------------------------------------------------
75032 l_entered_amt_idx             NUMBER;
75033 l_accted_amt_idx              NUMBER;
75034 l_acc_rev_flag                VARCHAR2(1);
75035 l_accrual_line_num            NUMBER;
75036 l_tmp_amt                     NUMBER;
75037 l_acc_rev_natural_side_code   VARCHAR2(1);
75038 
75039 l_num_entries                 NUMBER;
75040 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
75041 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
75042 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
75046 
75043 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
75044 l_recog_line_1                NUMBER;
75045 l_recog_line_2                NUMBER;
75047 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
75048 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
75049 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
75050 
75051 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
75052 
75053 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
75054 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
75055 
75056 ---------------------------------------------------------------------------------------------------------------
75057 
75058 
75059 --
75060 -- bulk performance
75061 --
75062 l_balance_type_code           VARCHAR2(1);
75063 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
75064 l_log_module                  VARCHAR2(240);
75065 
75066 --
75067 -- Upgrade strategy
75068 --
75069 l_actual_upg_option           VARCHAR2(1);
75070 l_enc_upg_option           VARCHAR2(1);
75071 
75072 --
75073 BEGIN
75074 --
75075 IF g_log_enabled THEN
75076       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_168';
75077 END IF;
75078 --
75079 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75080 
75081       trace
75082          (p_msg      => 'BEGIN of AcctLineType_168'
75083          ,p_level    => C_LEVEL_PROCEDURE
75084          ,p_module   => l_log_module);
75085 
75086 END IF;
75087 --
75088 l_component_type             := 'AMB_JLT';
75089 l_component_code             := 'INV';
75090 l_component_type_code        := 'S';
75091 l_component_appl_id          :=  555;
75092 l_amb_context_code           := 'DEFAULT';
75093 l_entity_code                := 'PURCHASING';
75094 l_event_class_code           := 'PAYABLES_INVOICE';
75095 l_event_type_code            := 'INVOICE_ERV_ADJ';
75096 l_line_definition_owner_code := 'S';
75097 l_line_definition_code       := 'INVOICE_ERV_ADJ';
75098 --
75099 l_balance_type_code          := 'A';
75100 l_segment                     := NULL;
75101 l_ccid                        := NULL;
75102 l_adr_transaction_coa_id      := NULL;
75103 l_adr_accounting_coa_id       := NULL;
75104 l_adr_flexfield_segment_code  := NULL;
75105 l_adr_flex_value_set_id       := NULL;
75106 l_adr_value_type_code         := NULL;
75107 l_adr_value_combination_id    := NULL;
75108 l_adr_value_segment_code      := NULL;
75109 
75110 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
75111 l_bflow_class_code           := '';    -- 4219869 Business Flow
75112 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
75113 l_budgetary_control_flag     := 'N';
75114 
75115 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
75116 l_bflow_applied_to_amt       := NULL; -- 5132302
75117 l_entered_amt_idx            := NULL;          -- 4262811
75118 l_accted_amt_idx             := NULL;          -- 4262811
75119 l_acc_rev_flag               := NULL;          -- 4262811
75120 l_accrual_line_num           := NULL;          -- 4262811
75121 l_tmp_amt                    := NULL;          -- 4262811
75122 --
75123  
75124 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
75125     l_balance_type_code <> 'B' THEN
75126 IF NVL(p_source_2,'
75127 ') =  'INV'
75128  THEN 
75129 
75130    --
75131    XLA_AE_LINES_PKG.SetNewLine;
75132 
75133    p_balance_type_code          := l_balance_type_code;
75134    -- set the flag so later we will know whether the gain loss line needs to be created
75135    
75136    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
75137      p_actual_flag :='A';
75138    END IF;
75139 
75140    --
75141    -- bulk performance
75142    --
75143    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
75144                                       p_header_num   => 0); -- 4262811
75145    --
75146    -- set accounting line options
75147    --
75148    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
75149            p_natural_side_code          => 'D'
75150          , p_gain_or_loss_flag          => 'N'
75151          , p_gl_transfer_mode_code      => 'D'
75152          , p_acct_entry_type_code       => 'A'
75153          , p_switch_side_flag           => 'Y'
75154          , p_merge_duplicate_code       => 'W'
75155          );
75156    --
75157    l_acc_rev_natural_side_code := 'C';  -- 4262811
75158    -- 
75159    --
75160    -- set accounting line type info
75161    --
75162    xla_ae_lines_pkg.SetAcctLineType
75163       (p_component_type             => l_component_type
75164       ,p_event_type_code            => l_event_type_code
75165       ,p_line_definition_owner_code => l_line_definition_owner_code
75166       ,p_line_definition_code       => l_line_definition_code
75167       ,p_accounting_line_code       => l_component_code
75168       ,p_accounting_line_type_code  => l_component_type_code
75169       ,p_accounting_line_appl_id    => l_component_appl_id
75170       ,p_amb_context_code           => l_amb_context_code
75171       ,p_entity_code                => l_entity_code
75172       ,p_event_class_code           => l_event_class_code);
75173    --
75174    -- set accounting class
75175    --
75179          );
75176    xla_ae_lines_pkg.SetAcctClass(
75177            p_accounting_class_code  => 'INVENTORY_VALUATION'
75178          , p_ae_header_id           => l_ae_header_id
75180 
75181    --
75182    -- set rounding class
75183    --
75184    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
75185                       'INVENTORY_VALUATION';
75186 
75187    --
75188    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
75189    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
75190    --
75191    -- bulk performance
75192    --
75193    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
75194 
75195    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
75196       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
75197 
75198    -- 4955764
75199    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75200       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
75201 
75202    -- 4458381 Public Sector Enh
75203    
75204    --
75205    -- set accounting attributes for the line type
75206    --
75207    l_entered_amt_idx := 3;
75208    l_accted_amt_idx  := 8;
75209    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
75210    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
75211    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
75212    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
75213    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
75214    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
75215    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
75216    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
75217    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
75218    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
75219    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
75220    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
75221    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
75222    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
75223    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
75224    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
75225    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
75226 
75227    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
75228    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
75229 
75230    ---------------------------------------------------------------------------------------------------------------
75231    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
75232    ---------------------------------------------------------------------------------------------------------------
75233    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
75234 
75235    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75236    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75237 
75238    IF xla_accounting_cache_pkg.GetValueChar
75239          (p_source_code         => 'LEDGER_CATEGORY_CODE'
75240          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
75241    AND l_bflow_method_code = 'PRIOR_ENTRY'
75242 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
75243    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
75244          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
75245        )
75246    THEN
75247          xla_ae_lines_pkg.BflowUpgEntry
75248            (p_business_method_code    => l_bflow_method_code
75249            ,p_business_class_code     => l_bflow_class_code
75250            ,p_balance_type            => l_balance_type_code);
75251    ELSE
75252       NULL;
75253 -- No business flow processing for business flow method of NONE.
75254    END IF;
75255 
75256    --
75257    -- call analytical criteria
75258    --
75259    
75260    --
75261    -- call description
75262    --
75263    -- No description or it is inherited.
75264    --
75265    -- call ADRs
75266    -- Bug 4922099
75267    --
75268    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75269         (NVL(l_actual_upg_option, 'N') = 'O') OR
75270         (NVL(l_enc_upg_option, 'N') = 'O')
75271       )
75272    THEN
75273    NULL;
75274    --
75275    --
75276    
75277   l_ccid := AcctDerRule_17(
75278            p_application_id           => p_application_id
75279          , p_ae_header_id             => l_ae_header_id 
75280 , p_source_1 => p_source_1
75281 , p_source_2 => p_source_2
75282          , x_transaction_coa_id       => l_adr_transaction_coa_id
75283          , x_accounting_coa_id        => l_adr_accounting_coa_id
75284          , x_value_type_code          => l_adr_value_type_code
75285          , p_side                     => 'NA'
75286    );
75287 
75288    xla_ae_lines_pkg.set_ccid(
75289     p_code_combination_id          => l_ccid
75290   , p_value_type_code              => l_adr_value_type_code
75291   , p_transaction_coa_id           => l_adr_transaction_coa_id
75295   , p_component_type               => l_component_type
75292   , p_accounting_coa_id            => l_adr_accounting_coa_id
75293   , p_adr_code                     => 'INV'
75294   , p_adr_type_code                => 'S'
75296   , p_component_code               => l_component_code
75297   , p_component_type_code          => l_component_type_code
75298   , p_component_appl_id            => l_component_appl_id
75299   , p_amb_context_code             => l_amb_context_code
75300   , p_side                         => 'NA'
75301   );
75302 
75303 
75304    --
75305    --
75306    END IF;
75307    --
75308    -- Bug 4922099
75309    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
75310           (NVL(l_enc_upg_option, 'N') = 'O')
75311         ) AND
75312         (l_bflow_method_code = 'PRIOR_ENTRY')
75313       )
75314    THEN
75315       IF
75316       --
75317       1 = 2
75318       --
75319       THEN
75320       xla_accounting_err_pkg.build_message
75321                                     (p_appli_s_name            => 'XLA'
75322                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75323                                     ,p_token_1                 => 'LINE_NUMBER'
75324                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
75325                                     ,p_token_2                 => 'LINE_TYPE_NAME'
75326                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
75327                                                                              l_component_type
75328                                                                             ,l_component_code
75329                                                                             ,l_component_type_code
75330                                                                             ,l_component_appl_id
75331                                                                             ,l_amb_context_code
75332                                                                             ,l_entity_code
75333                                                                             ,l_event_class_code
75334                                                                            )
75335                                     ,p_token_3                 => 'OWNER'
75336                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
75337                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
75338                                                                           ,p_lookup_code    => l_component_type_code
75339                                                                          )
75340                                     ,p_token_4                 => 'PRODUCT_NAME'
75341                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
75342                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
75343                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
75344                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
75345                                     ,p_ae_header_id            =>  NULL
75346                                        );
75347 
75348         IF (C_LEVEL_ERROR>= g_log_level) THEN
75349                  trace
75350                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75351                       ,p_level    => C_LEVEL_ERROR
75352                       ,p_module   => l_log_module);
75353         END IF;
75354       END IF;
75355    END IF;
75356    --
75357    --
75358    ------------------------------------------------------------------------------------------------
75359    -- 4219869 Business Flow
75360    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
75361    -- Prior Entry.  Currently, the following code is always generated.
75362    ------------------------------------------------------------------------------------------------
75363    XLA_AE_LINES_PKG.ValidateCurrentLine;
75364 
75365    ------------------------------------------------------------------------------------
75366    -- 4219869 Business Flow
75367    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
75368    ------------------------------------------------------------------------------------
75369    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75370 
75371    ----------------------------------------------------------------------------------
75372    -- 4219869 Business Flow
75373    -- Update journal entry status -- Need to generate this within IF <condition>
75374    ----------------------------------------------------------------------------------
75375    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75376          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
75377          ,p_balance_type_code => l_balance_type_code
75378          );
75379 
75380    -------------------------------------------------------------------------------------------
75381    -- 4262811 - Generate the Accrual Reversal lines
75382    -------------------------------------------------------------------------------------------
75383    BEGIN
75384       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
75385                               (g_array_event(p_event_id).array_value_num('header_index'));
75389    EXCEPTION
75386       IF l_acc_rev_flag IS NULL THEN
75387          l_acc_rev_flag := 'N';
75388       END IF;
75390       WHEN OTHERS THEN
75391          l_acc_rev_flag := 'N';
75392    END;
75393    --
75394    IF (l_acc_rev_flag = 'Y') THEN
75395 
75396        -- 4645092  ------------------------------------------------------------------------------
75397        -- To allow MPA report to determine if it should generate report process
75398        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
75399        ------------------------------------------------------------------------------------------
75400 
75401        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
75402        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
75403    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
75404    -- call ADRs
75405    -- Bug 4922099
75406    --
75407    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75408         (NVL(l_actual_upg_option, 'N') = 'O') OR
75409         (NVL(l_enc_upg_option, 'N') = 'O')
75410       )
75411    THEN
75412    NULL;
75413    --
75414    --
75415    
75416   l_ccid := AcctDerRule_17(
75417            p_application_id           => p_application_id
75418          , p_ae_header_id             => l_ae_header_id 
75419 , p_source_1 => p_source_1
75420 , p_source_2 => p_source_2
75421          , x_transaction_coa_id       => l_adr_transaction_coa_id
75422          , x_accounting_coa_id        => l_adr_accounting_coa_id
75423          , x_value_type_code          => l_adr_value_type_code
75424          , p_side                     => 'NA'
75425    );
75426 
75427    xla_ae_lines_pkg.set_ccid(
75428     p_code_combination_id          => l_ccid
75429   , p_value_type_code              => l_adr_value_type_code
75430   , p_transaction_coa_id           => l_adr_transaction_coa_id
75431   , p_accounting_coa_id            => l_adr_accounting_coa_id
75432   , p_adr_code                     => 'INV'
75433   , p_adr_type_code                => 'S'
75434   , p_component_type               => l_component_type
75435   , p_component_code               => l_component_code
75436   , p_component_type_code          => l_component_type_code
75437   , p_component_appl_id            => l_component_appl_id
75438   , p_amb_context_code             => l_amb_context_code
75439   , p_side                         => 'NA'
75440   );
75441 
75442 
75443    --
75444    --
75445    END IF;
75446 
75447        --
75448        -- Update the line information that should be overwritten
75449        --
75450        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
75451                                          p_header_num   => 1);
75452        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
75453 
75454        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
75455 
75456        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
75457           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
75458        END IF;
75459 
75460       --
75461       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
75462       --
75463       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
75464           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
75465       ELSE
75466           ---------------------------------------------------------------------------------------------------
75467           -- 4262811a Switch Sign
75468           ---------------------------------------------------------------------------------------------------
75469           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
75470           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75471                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75472           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75473                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75474           -- 5132302
75475           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
75476                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75477 
75478       END IF;
75479 
75480       -- 4955764
75481       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75482       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
75483 
75484 
75485       XLA_AE_LINES_PKG.ValidateCurrentLine;
75486       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75487 
75488       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75489                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
75490                ,p_balance_type_code => l_balance_type_code);
75491 
75492    END IF;
75493 
75494    -----------------------------------------------------------------------------------------
75495    -- 4262811 Multiperiod Accounting
75496    -----------------------------------------------------------------------------------------
75497      -- No MPA option is assigned.
75498 
75499 
75500 END IF;
75501 END IF;
75502 --
75503 
75507       (p_msg      => 'END of AcctLineType_168'
75504 --
75505 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75506    trace
75508       ,p_level    => C_LEVEL_PROCEDURE
75509       ,p_module   => l_log_module);
75510 END IF;
75511 --
75512 EXCEPTION
75513   WHEN xla_exceptions_pkg.application_exception THEN
75514       RAISE;
75515   WHEN OTHERS THEN
75516        xla_exceptions_pkg.raise_message
75517            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_168');
75518 END AcctLineType_168;
75519 --
75520 
75521 ---------------------------------------
75522 --
75523 -- PRIVATE FUNCTION
75524 --         AcctLineType_169
75525 --
75526 ---------------------------------------
75527 PROCEDURE AcctLineType_169 (
75528   p_application_id        IN NUMBER
75529  ,p_event_id              IN NUMBER
75530  ,p_calculate_acctd_flag  IN VARCHAR2
75531  ,p_calculate_g_l_flag    IN VARCHAR2
75532  ,p_actual_flag           IN OUT VARCHAR2
75533  ,p_balance_type_code     OUT VARCHAR2
75534  ,p_gain_or_loss_ref      OUT VARCHAR2
75535  
75536 --Transaction Account
75537  , p_source_1            IN NUMBER
75538 --Journal Line Type
75539  , p_source_2            IN VARCHAR2
75540 --Entered Amount
75541  , p_source_3            IN NUMBER
75542 --Line Number
75543  , p_source_4            IN NUMBER
75544 --First Distribution Identifier
75545  , p_source_5            IN NUMBER
75546 --Distribution Type
75547  , p_source_6            IN VARCHAR2
75548 --Currency Code
75549  , p_source_7            IN VARCHAR2
75550 --Currency Conversion Date
75551  , p_source_8            IN DATE
75552 --Currency Conversion Rate
75553  , p_source_9            IN NUMBER
75554 --Currency Conversion Type
75555  , p_source_10            IN VARCHAR2
75556 --Accounted Amount
75557  , p_source_11            IN NUMBER
75558 )
75559 IS
75560 
75561 l_component_type              VARCHAR2(80);
75562 l_component_code              VARCHAR2(30);
75563 l_component_type_code         VARCHAR2(1);
75564 l_component_appl_id           INTEGER;
75565 l_amb_context_code            VARCHAR2(30);
75566 l_entity_code                 VARCHAR2(30);
75567 l_event_class_code            VARCHAR2(30);
75568 l_ae_header_id                NUMBER;
75569 l_event_type_code             VARCHAR2(30);
75570 l_line_definition_code        VARCHAR2(30);
75571 l_line_definition_owner_code  VARCHAR2(1);
75572 --
75573 -- adr variables
75574 l_segment                     VARCHAR2(30);
75575 l_ccid                        NUMBER;
75576 l_adr_transaction_coa_id      NUMBER;
75577 l_adr_accounting_coa_id       NUMBER;
75578 l_adr_flexfield_segment_code  VARCHAR2(30);
75579 l_adr_flex_value_set_id       NUMBER;
75580 l_adr_value_type_code         VARCHAR2(30);
75581 l_adr_value_combination_id    NUMBER;
75582 l_adr_value_segment_code      VARCHAR2(30);
75583 
75584 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
75585 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
75586 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
75587 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
75588 
75589 -- 4262811 Variables ------------------------------------------------------------------------------------------
75590 l_entered_amt_idx             NUMBER;
75591 l_accted_amt_idx              NUMBER;
75592 l_acc_rev_flag                VARCHAR2(1);
75593 l_accrual_line_num            NUMBER;
75594 l_tmp_amt                     NUMBER;
75595 l_acc_rev_natural_side_code   VARCHAR2(1);
75596 
75597 l_num_entries                 NUMBER;
75598 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
75599 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
75600 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
75601 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
75602 l_recog_line_1                NUMBER;
75603 l_recog_line_2                NUMBER;
75604 
75605 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
75606 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
75607 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
75608 
75609 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
75610 
75611 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
75612 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
75613 
75614 ---------------------------------------------------------------------------------------------------------------
75615 
75616 
75617 --
75618 -- bulk performance
75619 --
75620 l_balance_type_code           VARCHAR2(1);
75621 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
75622 l_log_module                  VARCHAR2(240);
75623 
75624 --
75625 -- Upgrade strategy
75626 --
75627 l_actual_upg_option           VARCHAR2(1);
75628 l_enc_upg_option           VARCHAR2(1);
75629 
75630 --
75631 BEGIN
75632 --
75633 IF g_log_enabled THEN
75634       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_169';
75635 END IF;
75636 --
75637 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75638 
75639       trace
75640          (p_msg      => 'BEGIN of AcctLineType_169'
75641          ,p_level    => C_LEVEL_PROCEDURE
75642          ,p_module   => l_log_module);
75646 l_component_type             := 'AMB_JLT';
75643 
75644 END IF;
75645 --
75647 l_component_code             := 'INV_SUB_FROM';
75648 l_component_type_code        := 'S';
75649 l_component_appl_id          :=  555;
75650 l_amb_context_code           := 'DEFAULT';
75651 l_entity_code                := 'INVENTORY';
75652 l_event_class_code           := 'SUBINV_XFER';
75653 l_event_type_code            := 'SUBINV_XFER_ALL';
75654 l_line_definition_owner_code := 'S';
75655 l_line_definition_code       := 'SUBINV_XFER';
75656 --
75657 l_balance_type_code          := 'A';
75658 l_segment                     := NULL;
75659 l_ccid                        := NULL;
75660 l_adr_transaction_coa_id      := NULL;
75661 l_adr_accounting_coa_id       := NULL;
75662 l_adr_flexfield_segment_code  := NULL;
75663 l_adr_flex_value_set_id       := NULL;
75664 l_adr_value_type_code         := NULL;
75665 l_adr_value_combination_id    := NULL;
75666 l_adr_value_segment_code      := NULL;
75667 
75668 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
75669 l_bflow_class_code           := '';    -- 4219869 Business Flow
75670 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
75671 l_budgetary_control_flag     := 'N';
75672 
75673 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
75674 l_bflow_applied_to_amt       := NULL; -- 5132302
75675 l_entered_amt_idx            := NULL;          -- 4262811
75676 l_accted_amt_idx             := NULL;          -- 4262811
75677 l_acc_rev_flag               := NULL;          -- 4262811
75678 l_accrual_line_num           := NULL;          -- 4262811
75679 l_tmp_amt                    := NULL;          -- 4262811
75680 --
75681  
75682 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
75683     l_balance_type_code <> 'B' THEN
75684 IF (NVL(p_source_2,'
75685 ') =  'INV' AND 
75686 p_source_3 <  0) OR 
75687 (NVL(p_source_2,'
75688 ') =  'INV' AND 
75689 NVL(p_source_3,9E125) =  0 AND 
75690 NVL(p_source_4,9E125) =  1)
75691  THEN 
75692 
75693    --
75694    XLA_AE_LINES_PKG.SetNewLine;
75695 
75696    p_balance_type_code          := l_balance_type_code;
75697    -- set the flag so later we will know whether the gain loss line needs to be created
75698    
75699    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
75700      p_actual_flag :='A';
75701    END IF;
75702 
75703    --
75704    -- bulk performance
75705    --
75706    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
75707                                       p_header_num   => 0); -- 4262811
75708    --
75709    -- set accounting line options
75710    --
75711    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
75712            p_natural_side_code          => 'D'
75713          , p_gain_or_loss_flag          => 'N'
75714          , p_gl_transfer_mode_code      => 'D'
75715          , p_acct_entry_type_code       => 'A'
75716          , p_switch_side_flag           => 'Y'
75717          , p_merge_duplicate_code       => 'W'
75718          );
75719    --
75720    l_acc_rev_natural_side_code := 'C';  -- 4262811
75721    -- 
75722    --
75723    -- set accounting line type info
75724    --
75725    xla_ae_lines_pkg.SetAcctLineType
75726       (p_component_type             => l_component_type
75727       ,p_event_type_code            => l_event_type_code
75728       ,p_line_definition_owner_code => l_line_definition_owner_code
75729       ,p_line_definition_code       => l_line_definition_code
75730       ,p_accounting_line_code       => l_component_code
75731       ,p_accounting_line_type_code  => l_component_type_code
75732       ,p_accounting_line_appl_id    => l_component_appl_id
75733       ,p_amb_context_code           => l_amb_context_code
75734       ,p_entity_code                => l_entity_code
75735       ,p_event_class_code           => l_event_class_code);
75736    --
75737    -- set accounting class
75738    --
75739    xla_ae_lines_pkg.SetAcctClass(
75740            p_accounting_class_code  => 'XFR'
75741          , p_ae_header_id           => l_ae_header_id
75742          );
75743 
75744    --
75745    -- set rounding class
75746    --
75747    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
75748                       'XFR';
75749 
75750    --
75751    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
75752    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
75753    --
75754    -- bulk performance
75755    --
75756    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
75757 
75758    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
75759       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
75760 
75761    -- 4955764
75762    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75763       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
75764 
75765    -- 4458381 Public Sector Enh
75766    
75767    --
75768    -- set accounting attributes for the line type
75769    --
75770    l_entered_amt_idx := 3;
75771    l_accted_amt_idx  := 8;
75772    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
75776    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
75773    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
75774    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
75775    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
75777    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
75778    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
75779    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
75780    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
75781    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
75782    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
75783    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
75784    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
75785    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
75786    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
75787    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
75788    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
75789 
75790    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
75791    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
75792 
75793    ---------------------------------------------------------------------------------------------------------------
75794    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
75795    ---------------------------------------------------------------------------------------------------------------
75796    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
75797 
75798    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75799    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75800 
75801    IF xla_accounting_cache_pkg.GetValueChar
75802          (p_source_code         => 'LEDGER_CATEGORY_CODE'
75803          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
75804    AND l_bflow_method_code = 'PRIOR_ENTRY'
75805 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
75806    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
75807          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
75808        )
75809    THEN
75810          xla_ae_lines_pkg.BflowUpgEntry
75811            (p_business_method_code    => l_bflow_method_code
75812            ,p_business_class_code     => l_bflow_class_code
75813            ,p_balance_type            => l_balance_type_code);
75814    ELSE
75815       NULL;
75816 -- No business flow processing for business flow method of NONE.
75817    END IF;
75818 
75819    --
75820    -- call analytical criteria
75821    --
75822    
75823    --
75824    -- call description
75825    --
75826    -- No description or it is inherited.
75827    --
75828    -- call ADRs
75829    -- Bug 4922099
75830    --
75831    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75832         (NVL(l_actual_upg_option, 'N') = 'O') OR
75833         (NVL(l_enc_upg_option, 'N') = 'O')
75834       )
75835    THEN
75836    NULL;
75837    --
75838    --
75839    
75840   l_ccid := AcctDerRule_18(
75841            p_application_id           => p_application_id
75842          , p_ae_header_id             => l_ae_header_id 
75843 , p_source_1 => p_source_1
75844 , p_source_2 => p_source_2
75845 , p_source_3 => p_source_3
75846 , p_source_4 => p_source_4
75847          , x_transaction_coa_id       => l_adr_transaction_coa_id
75848          , x_accounting_coa_id        => l_adr_accounting_coa_id
75849          , x_value_type_code          => l_adr_value_type_code
75850          , p_side                     => 'NA'
75851    );
75852 
75853    xla_ae_lines_pkg.set_ccid(
75854     p_code_combination_id          => l_ccid
75855   , p_value_type_code              => l_adr_value_type_code
75856   , p_transaction_coa_id           => l_adr_transaction_coa_id
75857   , p_accounting_coa_id            => l_adr_accounting_coa_id
75858   , p_adr_code                     => 'INV_SUB_FROM'
75859   , p_adr_type_code                => 'S'
75860   , p_component_type               => l_component_type
75861   , p_component_code               => l_component_code
75862   , p_component_type_code          => l_component_type_code
75863   , p_component_appl_id            => l_component_appl_id
75864   , p_amb_context_code             => l_amb_context_code
75865   , p_side                         => 'NA'
75866   );
75867 
75868 
75869    --
75870    --
75871    END IF;
75872    --
75873    -- Bug 4922099
75874    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
75875           (NVL(l_enc_upg_option, 'N') = 'O')
75876         ) AND
75877         (l_bflow_method_code = 'PRIOR_ENTRY')
75878       )
75879    THEN
75880       IF
75881       --
75882       1 = 2
75883       --
75884       THEN
75885       xla_accounting_err_pkg.build_message
75886                                     (p_appli_s_name            => 'XLA'
75887                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75888                                     ,p_token_1                 => 'LINE_NUMBER'
75889                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
75893                                                                             ,l_component_code
75890                                     ,p_token_2                 => 'LINE_TYPE_NAME'
75891                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
75892                                                                              l_component_type
75894                                                                             ,l_component_type_code
75895                                                                             ,l_component_appl_id
75896                                                                             ,l_amb_context_code
75897                                                                             ,l_entity_code
75898                                                                             ,l_event_class_code
75899                                                                            )
75900                                     ,p_token_3                 => 'OWNER'
75901                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
75902                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
75903                                                                           ,p_lookup_code    => l_component_type_code
75904                                                                          )
75905                                     ,p_token_4                 => 'PRODUCT_NAME'
75906                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
75907                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
75908                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
75909                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
75910                                     ,p_ae_header_id            =>  NULL
75911                                        );
75912 
75913         IF (C_LEVEL_ERROR>= g_log_level) THEN
75914                  trace
75915                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75916                       ,p_level    => C_LEVEL_ERROR
75917                       ,p_module   => l_log_module);
75918         END IF;
75919       END IF;
75920    END IF;
75921    --
75922    --
75923    ------------------------------------------------------------------------------------------------
75924    -- 4219869 Business Flow
75925    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
75926    -- Prior Entry.  Currently, the following code is always generated.
75927    ------------------------------------------------------------------------------------------------
75928    XLA_AE_LINES_PKG.ValidateCurrentLine;
75929 
75930    ------------------------------------------------------------------------------------
75931    -- 4219869 Business Flow
75932    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
75933    ------------------------------------------------------------------------------------
75934    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75935 
75936    ----------------------------------------------------------------------------------
75937    -- 4219869 Business Flow
75938    -- Update journal entry status -- Need to generate this within IF <condition>
75939    ----------------------------------------------------------------------------------
75940    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75941          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
75942          ,p_balance_type_code => l_balance_type_code
75943          );
75944 
75945    -------------------------------------------------------------------------------------------
75946    -- 4262811 - Generate the Accrual Reversal lines
75947    -------------------------------------------------------------------------------------------
75948    BEGIN
75949       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
75950                               (g_array_event(p_event_id).array_value_num('header_index'));
75951       IF l_acc_rev_flag IS NULL THEN
75952          l_acc_rev_flag := 'N';
75953       END IF;
75954    EXCEPTION
75955       WHEN OTHERS THEN
75956          l_acc_rev_flag := 'N';
75957    END;
75958    --
75959    IF (l_acc_rev_flag = 'Y') THEN
75960 
75961        -- 4645092  ------------------------------------------------------------------------------
75962        -- To allow MPA report to determine if it should generate report process
75963        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
75964        ------------------------------------------------------------------------------------------
75965 
75966        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
75967        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
75968    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
75969    -- call ADRs
75970    -- Bug 4922099
75971    --
75972    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75973         (NVL(l_actual_upg_option, 'N') = 'O') OR
75974         (NVL(l_enc_upg_option, 'N') = 'O')
75975       )
75976    THEN
75977    NULL;
75978    --
75979    --
75980    
75981   l_ccid := AcctDerRule_18(
75982            p_application_id           => p_application_id
75983          , p_ae_header_id             => l_ae_header_id 
75984 , p_source_1 => p_source_1
75988          , x_transaction_coa_id       => l_adr_transaction_coa_id
75985 , p_source_2 => p_source_2
75986 , p_source_3 => p_source_3
75987 , p_source_4 => p_source_4
75989          , x_accounting_coa_id        => l_adr_accounting_coa_id
75990          , x_value_type_code          => l_adr_value_type_code
75991          , p_side                     => 'NA'
75992    );
75993 
75994    xla_ae_lines_pkg.set_ccid(
75995     p_code_combination_id          => l_ccid
75996   , p_value_type_code              => l_adr_value_type_code
75997   , p_transaction_coa_id           => l_adr_transaction_coa_id
75998   , p_accounting_coa_id            => l_adr_accounting_coa_id
75999   , p_adr_code                     => 'INV_SUB_FROM'
76000   , p_adr_type_code                => 'S'
76001   , p_component_type               => l_component_type
76002   , p_component_code               => l_component_code
76003   , p_component_type_code          => l_component_type_code
76004   , p_component_appl_id            => l_component_appl_id
76005   , p_amb_context_code             => l_amb_context_code
76006   , p_side                         => 'NA'
76007   );
76008 
76009 
76010    --
76011    --
76012    END IF;
76013 
76014        --
76015        -- Update the line information that should be overwritten
76016        --
76017        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
76018                                          p_header_num   => 1);
76019        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
76020 
76021        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
76022 
76023        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
76024           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
76025        END IF;
76026 
76027       --
76028       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
76029       --
76030       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
76031           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
76032       ELSE
76033           ---------------------------------------------------------------------------------------------------
76034           -- 4262811a Switch Sign
76035           ---------------------------------------------------------------------------------------------------
76036           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
76037           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76038                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76039           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76040                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76041           -- 5132302
76042           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
76043                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76044 
76045       END IF;
76046 
76047       -- 4955764
76048       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76049       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
76050 
76051 
76052       XLA_AE_LINES_PKG.ValidateCurrentLine;
76053       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76054 
76055       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76056                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
76057                ,p_balance_type_code => l_balance_type_code);
76058 
76059    END IF;
76060 
76061    -----------------------------------------------------------------------------------------
76062    -- 4262811 Multiperiod Accounting
76063    -----------------------------------------------------------------------------------------
76064      -- No MPA option is assigned.
76065 
76066 
76067 END IF;
76068 END IF;
76069 --
76070 
76071 --
76072 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76073    trace
76074       (p_msg      => 'END of AcctLineType_169'
76075       ,p_level    => C_LEVEL_PROCEDURE
76076       ,p_module   => l_log_module);
76077 END IF;
76078 --
76079 EXCEPTION
76080   WHEN xla_exceptions_pkg.application_exception THEN
76081       RAISE;
76082   WHEN OTHERS THEN
76083        xla_exceptions_pkg.raise_message
76084            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_169');
76085 END AcctLineType_169;
76086 --
76087 
76088 ---------------------------------------
76089 --
76090 -- PRIVATE FUNCTION
76091 --         AcctLineType_170
76092 --
76093 ---------------------------------------
76094 PROCEDURE AcctLineType_170 (
76095   p_application_id        IN NUMBER
76096  ,p_event_id              IN NUMBER
76097  ,p_calculate_acctd_flag  IN VARCHAR2
76098  ,p_calculate_g_l_flag    IN VARCHAR2
76099  ,p_actual_flag           IN OUT VARCHAR2
76100  ,p_balance_type_code     OUT VARCHAR2
76101  ,p_gain_or_loss_ref      OUT VARCHAR2
76102  
76103 --Transaction Account
76104  , p_source_1            IN NUMBER
76105 --Journal Line Type
76106  , p_source_2            IN VARCHAR2
76110  , p_source_4            IN NUMBER
76107 --Entered Amount
76108  , p_source_3            IN NUMBER
76109 --Line Number
76111 --First Distribution Identifier
76112  , p_source_5            IN NUMBER
76113 --Distribution Type
76114  , p_source_6            IN VARCHAR2
76115 --Currency Code
76116  , p_source_7            IN VARCHAR2
76117 --Currency Conversion Date
76118  , p_source_8            IN DATE
76119 --Currency Conversion Rate
76120  , p_source_9            IN NUMBER
76121 --Currency Conversion Type
76122  , p_source_10            IN VARCHAR2
76123 --Accounted Amount
76124  , p_source_11            IN NUMBER
76125 )
76126 IS
76127 
76128 l_component_type              VARCHAR2(80);
76129 l_component_code              VARCHAR2(30);
76130 l_component_type_code         VARCHAR2(1);
76131 l_component_appl_id           INTEGER;
76132 l_amb_context_code            VARCHAR2(30);
76133 l_entity_code                 VARCHAR2(30);
76134 l_event_class_code            VARCHAR2(30);
76135 l_ae_header_id                NUMBER;
76136 l_event_type_code             VARCHAR2(30);
76137 l_line_definition_code        VARCHAR2(30);
76138 l_line_definition_owner_code  VARCHAR2(1);
76139 --
76140 -- adr variables
76141 l_segment                     VARCHAR2(30);
76142 l_ccid                        NUMBER;
76143 l_adr_transaction_coa_id      NUMBER;
76144 l_adr_accounting_coa_id       NUMBER;
76145 l_adr_flexfield_segment_code  VARCHAR2(30);
76146 l_adr_flex_value_set_id       NUMBER;
76147 l_adr_value_type_code         VARCHAR2(30);
76148 l_adr_value_combination_id    NUMBER;
76149 l_adr_value_segment_code      VARCHAR2(30);
76150 
76151 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
76152 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
76153 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
76154 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
76155 
76156 -- 4262811 Variables ------------------------------------------------------------------------------------------
76157 l_entered_amt_idx             NUMBER;
76158 l_accted_amt_idx              NUMBER;
76159 l_acc_rev_flag                VARCHAR2(1);
76160 l_accrual_line_num            NUMBER;
76161 l_tmp_amt                     NUMBER;
76162 l_acc_rev_natural_side_code   VARCHAR2(1);
76163 
76164 l_num_entries                 NUMBER;
76165 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
76166 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
76167 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
76168 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
76169 l_recog_line_1                NUMBER;
76170 l_recog_line_2                NUMBER;
76171 
76172 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
76173 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
76174 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
76175 
76176 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
76177 
76178 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
76179 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
76180 
76181 ---------------------------------------------------------------------------------------------------------------
76182 
76183 
76184 --
76185 -- bulk performance
76186 --
76187 l_balance_type_code           VARCHAR2(1);
76188 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
76189 l_log_module                  VARCHAR2(240);
76190 
76191 --
76192 -- Upgrade strategy
76193 --
76194 l_actual_upg_option           VARCHAR2(1);
76195 l_enc_upg_option           VARCHAR2(1);
76196 
76197 --
76198 BEGIN
76199 --
76200 IF g_log_enabled THEN
76201       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_170';
76202 END IF;
76203 --
76204 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76205 
76206       trace
76207          (p_msg      => 'BEGIN of AcctLineType_170'
76208          ,p_level    => C_LEVEL_PROCEDURE
76209          ,p_module   => l_log_module);
76210 
76211 END IF;
76212 --
76213 l_component_type             := 'AMB_JLT';
76214 l_component_code             := 'INV_SUB_TO';
76215 l_component_type_code        := 'S';
76216 l_component_appl_id          :=  555;
76217 l_amb_context_code           := 'DEFAULT';
76218 l_entity_code                := 'INVENTORY';
76219 l_event_class_code           := 'SUBINV_XFER';
76220 l_event_type_code            := 'SUBINV_XFER_ALL';
76221 l_line_definition_owner_code := 'S';
76222 l_line_definition_code       := 'SUBINV_XFER';
76223 --
76224 l_balance_type_code          := 'A';
76225 l_segment                     := NULL;
76226 l_ccid                        := NULL;
76227 l_adr_transaction_coa_id      := NULL;
76228 l_adr_accounting_coa_id       := NULL;
76229 l_adr_flexfield_segment_code  := NULL;
76230 l_adr_flex_value_set_id       := NULL;
76231 l_adr_value_type_code         := NULL;
76232 l_adr_value_combination_id    := NULL;
76233 l_adr_value_segment_code      := NULL;
76234 
76235 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
76236 l_bflow_class_code           := '';    -- 4219869 Business Flow
76237 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
76238 l_budgetary_control_flag     := 'N';
76239 
76243 l_accted_amt_idx             := NULL;          -- 4262811
76240 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
76241 l_bflow_applied_to_amt       := NULL; -- 5132302
76242 l_entered_amt_idx            := NULL;          -- 4262811
76244 l_acc_rev_flag               := NULL;          -- 4262811
76245 l_accrual_line_num           := NULL;          -- 4262811
76246 l_tmp_amt                    := NULL;          -- 4262811
76247 --
76248  
76249 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
76250     l_balance_type_code <> 'B' THEN
76251 IF (NVL(p_source_2,'
76252 ') =  'INV' AND 
76253 p_source_3 >  0) OR 
76254 (NVL(p_source_2,'
76255 ') =  'INV' AND 
76256 NVL(p_source_3,9E125) =  0 AND 
76257 NVL(p_source_4,9E125) =  2)
76258  THEN 
76259 
76260    --
76261    XLA_AE_LINES_PKG.SetNewLine;
76262 
76263    p_balance_type_code          := l_balance_type_code;
76264    -- set the flag so later we will know whether the gain loss line needs to be created
76265    
76266    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
76267      p_actual_flag :='A';
76268    END IF;
76269 
76270    --
76271    -- bulk performance
76272    --
76273    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
76274                                       p_header_num   => 0); -- 4262811
76275    --
76276    -- set accounting line options
76277    --
76278    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
76279            p_natural_side_code          => 'D'
76280          , p_gain_or_loss_flag          => 'N'
76281          , p_gl_transfer_mode_code      => 'D'
76282          , p_acct_entry_type_code       => 'A'
76283          , p_switch_side_flag           => 'Y'
76284          , p_merge_duplicate_code       => 'W'
76285          );
76286    --
76287    l_acc_rev_natural_side_code := 'C';  -- 4262811
76288    -- 
76289    --
76290    -- set accounting line type info
76291    --
76292    xla_ae_lines_pkg.SetAcctLineType
76293       (p_component_type             => l_component_type
76294       ,p_event_type_code            => l_event_type_code
76295       ,p_line_definition_owner_code => l_line_definition_owner_code
76296       ,p_line_definition_code       => l_line_definition_code
76297       ,p_accounting_line_code       => l_component_code
76298       ,p_accounting_line_type_code  => l_component_type_code
76299       ,p_accounting_line_appl_id    => l_component_appl_id
76300       ,p_amb_context_code           => l_amb_context_code
76301       ,p_entity_code                => l_entity_code
76302       ,p_event_class_code           => l_event_class_code);
76303    --
76304    -- set accounting class
76305    --
76306    xla_ae_lines_pkg.SetAcctClass(
76307            p_accounting_class_code  => 'XFR'
76308          , p_ae_header_id           => l_ae_header_id
76309          );
76310 
76311    --
76312    -- set rounding class
76313    --
76314    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
76315                       'XFR';
76316 
76317    --
76318    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
76319    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
76320    --
76321    -- bulk performance
76322    --
76323    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
76324 
76325    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
76326       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
76327 
76328    -- 4955764
76329    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76330       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
76331 
76332    -- 4458381 Public Sector Enh
76333    
76334    --
76335    -- set accounting attributes for the line type
76336    --
76337    l_entered_amt_idx := 3;
76338    l_accted_amt_idx  := 8;
76339    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
76340    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
76341    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
76342    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
76343    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
76344    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
76345    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
76346    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
76347    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
76348    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
76349    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
76350    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
76351    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
76352    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
76353    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
76354    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
76355    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
76356 
76357    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
76358    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
76359 
76363    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
76360    ---------------------------------------------------------------------------------------------------------------
76361    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
76362    ---------------------------------------------------------------------------------------------------------------
76364 
76365    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
76366    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
76367 
76368    IF xla_accounting_cache_pkg.GetValueChar
76369          (p_source_code         => 'LEDGER_CATEGORY_CODE'
76370          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
76371    AND l_bflow_method_code = 'PRIOR_ENTRY'
76372 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
76373    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
76374          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
76375        )
76376    THEN
76377          xla_ae_lines_pkg.BflowUpgEntry
76378            (p_business_method_code    => l_bflow_method_code
76379            ,p_business_class_code     => l_bflow_class_code
76380            ,p_balance_type            => l_balance_type_code);
76381    ELSE
76382       NULL;
76383 -- No business flow processing for business flow method of NONE.
76384    END IF;
76385 
76386    --
76387    -- call analytical criteria
76388    --
76389    
76390    --
76391    -- call description
76392    --
76393    -- No description or it is inherited.
76394    --
76395    -- call ADRs
76396    -- Bug 4922099
76397    --
76398    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
76399         (NVL(l_actual_upg_option, 'N') = 'O') OR
76400         (NVL(l_enc_upg_option, 'N') = 'O')
76401       )
76402    THEN
76403    NULL;
76404    --
76405    --
76406    
76407   l_ccid := AcctDerRule_19(
76408            p_application_id           => p_application_id
76409          , p_ae_header_id             => l_ae_header_id 
76410 , p_source_1 => p_source_1
76411 , p_source_2 => p_source_2
76412 , p_source_3 => p_source_3
76413 , p_source_4 => p_source_4
76414          , x_transaction_coa_id       => l_adr_transaction_coa_id
76415          , x_accounting_coa_id        => l_adr_accounting_coa_id
76416          , x_value_type_code          => l_adr_value_type_code
76417          , p_side                     => 'NA'
76418    );
76419 
76420    xla_ae_lines_pkg.set_ccid(
76421     p_code_combination_id          => l_ccid
76422   , p_value_type_code              => l_adr_value_type_code
76423   , p_transaction_coa_id           => l_adr_transaction_coa_id
76424   , p_accounting_coa_id            => l_adr_accounting_coa_id
76425   , p_adr_code                     => 'INV_SUB_TO'
76426   , p_adr_type_code                => 'S'
76427   , p_component_type               => l_component_type
76428   , p_component_code               => l_component_code
76429   , p_component_type_code          => l_component_type_code
76430   , p_component_appl_id            => l_component_appl_id
76431   , p_amb_context_code             => l_amb_context_code
76432   , p_side                         => 'NA'
76433   );
76434 
76435 
76436    --
76437    --
76438    END IF;
76439    --
76440    -- Bug 4922099
76441    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
76442           (NVL(l_enc_upg_option, 'N') = 'O')
76443         ) AND
76444         (l_bflow_method_code = 'PRIOR_ENTRY')
76445       )
76446    THEN
76447       IF
76448       --
76449       1 = 2
76450       --
76451       THEN
76452       xla_accounting_err_pkg.build_message
76453                                     (p_appli_s_name            => 'XLA'
76454                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
76455                                     ,p_token_1                 => 'LINE_NUMBER'
76456                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
76457                                     ,p_token_2                 => 'LINE_TYPE_NAME'
76458                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
76459                                                                              l_component_type
76460                                                                             ,l_component_code
76461                                                                             ,l_component_type_code
76462                                                                             ,l_component_appl_id
76463                                                                             ,l_amb_context_code
76464                                                                             ,l_entity_code
76465                                                                             ,l_event_class_code
76466                                                                            )
76467                                     ,p_token_3                 => 'OWNER'
76468                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
76469                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
76473                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
76470                                                                           ,p_lookup_code    => l_component_type_code
76471                                                                          )
76472                                     ,p_token_4                 => 'PRODUCT_NAME'
76474                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
76475                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
76476                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
76477                                     ,p_ae_header_id            =>  NULL
76478                                        );
76479 
76480         IF (C_LEVEL_ERROR>= g_log_level) THEN
76481                  trace
76482                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
76483                       ,p_level    => C_LEVEL_ERROR
76484                       ,p_module   => l_log_module);
76485         END IF;
76486       END IF;
76487    END IF;
76488    --
76489    --
76490    ------------------------------------------------------------------------------------------------
76491    -- 4219869 Business Flow
76492    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
76493    -- Prior Entry.  Currently, the following code is always generated.
76494    ------------------------------------------------------------------------------------------------
76495    XLA_AE_LINES_PKG.ValidateCurrentLine;
76496 
76497    ------------------------------------------------------------------------------------
76498    -- 4219869 Business Flow
76499    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
76500    ------------------------------------------------------------------------------------
76501    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76502 
76503    ----------------------------------------------------------------------------------
76504    -- 4219869 Business Flow
76505    -- Update journal entry status -- Need to generate this within IF <condition>
76506    ----------------------------------------------------------------------------------
76507    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76508          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
76509          ,p_balance_type_code => l_balance_type_code
76510          );
76511 
76512    -------------------------------------------------------------------------------------------
76513    -- 4262811 - Generate the Accrual Reversal lines
76514    -------------------------------------------------------------------------------------------
76515    BEGIN
76516       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
76517                               (g_array_event(p_event_id).array_value_num('header_index'));
76518       IF l_acc_rev_flag IS NULL THEN
76519          l_acc_rev_flag := 'N';
76520       END IF;
76521    EXCEPTION
76522       WHEN OTHERS THEN
76523          l_acc_rev_flag := 'N';
76524    END;
76525    --
76526    IF (l_acc_rev_flag = 'Y') THEN
76527 
76528        -- 4645092  ------------------------------------------------------------------------------
76529        -- To allow MPA report to determine if it should generate report process
76530        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
76531        ------------------------------------------------------------------------------------------
76532 
76533        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
76534        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
76535    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
76536    -- call ADRs
76537    -- Bug 4922099
76538    --
76539    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
76540         (NVL(l_actual_upg_option, 'N') = 'O') OR
76541         (NVL(l_enc_upg_option, 'N') = 'O')
76542       )
76543    THEN
76544    NULL;
76545    --
76546    --
76547    
76548   l_ccid := AcctDerRule_19(
76549            p_application_id           => p_application_id
76550          , p_ae_header_id             => l_ae_header_id 
76551 , p_source_1 => p_source_1
76552 , p_source_2 => p_source_2
76553 , p_source_3 => p_source_3
76554 , p_source_4 => p_source_4
76555          , x_transaction_coa_id       => l_adr_transaction_coa_id
76556          , x_accounting_coa_id        => l_adr_accounting_coa_id
76557          , x_value_type_code          => l_adr_value_type_code
76558          , p_side                     => 'NA'
76559    );
76560 
76561    xla_ae_lines_pkg.set_ccid(
76562     p_code_combination_id          => l_ccid
76563   , p_value_type_code              => l_adr_value_type_code
76564   , p_transaction_coa_id           => l_adr_transaction_coa_id
76565   , p_accounting_coa_id            => l_adr_accounting_coa_id
76566   , p_adr_code                     => 'INV_SUB_TO'
76567   , p_adr_type_code                => 'S'
76568   , p_component_type               => l_component_type
76569   , p_component_code               => l_component_code
76570   , p_component_type_code          => l_component_type_code
76571   , p_component_appl_id            => l_component_appl_id
76572   , p_amb_context_code             => l_amb_context_code
76573   , p_side                         => 'NA'
76574   );
76575 
76576 
76577    --
76578    --
76579    END IF;
76580 
76581        --
76585                                          p_header_num   => 1);
76582        -- Update the line information that should be overwritten
76583        --
76584        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
76586        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
76587 
76588        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
76589 
76590        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
76591           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
76592        END IF;
76593 
76594       --
76595       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
76596       --
76597       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
76598           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
76599       ELSE
76600           ---------------------------------------------------------------------------------------------------
76601           -- 4262811a Switch Sign
76602           ---------------------------------------------------------------------------------------------------
76603           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
76604           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76605                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76606           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76607                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76608           -- 5132302
76609           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
76610                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76611 
76612       END IF;
76613 
76614       -- 4955764
76615       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76616       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
76617 
76618 
76619       XLA_AE_LINES_PKG.ValidateCurrentLine;
76620       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76621 
76622       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76623                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
76624                ,p_balance_type_code => l_balance_type_code);
76625 
76626    END IF;
76627 
76628    -----------------------------------------------------------------------------------------
76629    -- 4262811 Multiperiod Accounting
76630    -----------------------------------------------------------------------------------------
76631      -- No MPA option is assigned.
76632 
76633 
76634 END IF;
76635 END IF;
76636 --
76637 
76638 --
76639 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76640    trace
76641       (p_msg      => 'END of AcctLineType_170'
76642       ,p_level    => C_LEVEL_PROCEDURE
76643       ,p_module   => l_log_module);
76644 END IF;
76645 --
76646 EXCEPTION
76647   WHEN xla_exceptions_pkg.application_exception THEN
76648       RAISE;
76649   WHEN OTHERS THEN
76650        xla_exceptions_pkg.raise_message
76651            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_170');
76652 END AcctLineType_170;
76653 --
76654 
76655 ---------------------------------------
76656 --
76657 -- PRIVATE FUNCTION
76658 --         AcctLineType_171
76659 --
76660 ---------------------------------------
76661 PROCEDURE AcctLineType_171 (
76662   p_application_id        IN NUMBER
76663  ,p_event_id              IN NUMBER
76664  ,p_calculate_acctd_flag  IN VARCHAR2
76665  ,p_calculate_g_l_flag    IN VARCHAR2
76666  ,p_actual_flag           IN OUT VARCHAR2
76667  ,p_balance_type_code     OUT VARCHAR2
76668  ,p_gain_or_loss_ref      OUT VARCHAR2
76669  
76670 --Transaction Account
76671  , p_source_1            IN NUMBER
76672 --Journal Line Type
76673  , p_source_2            IN VARCHAR2
76674 --Entered Amount
76675  , p_source_3            IN NUMBER
76676 --First Distribution Identifier
76677  , p_source_5            IN NUMBER
76678 --Distribution Type
76679  , p_source_6            IN VARCHAR2
76680 --Currency Code
76681  , p_source_7            IN VARCHAR2
76682 --Currency Conversion Date
76683  , p_source_8            IN DATE
76684 --Currency Conversion Rate
76685  , p_source_9            IN NUMBER
76686 --Currency Conversion Type
76687  , p_source_10            IN VARCHAR2
76688 --Accounted Amount
76689  , p_source_11            IN NUMBER
76690 )
76691 IS
76692 
76693 l_component_type              VARCHAR2(80);
76694 l_component_code              VARCHAR2(30);
76695 l_component_type_code         VARCHAR2(1);
76696 l_component_appl_id           INTEGER;
76697 l_amb_context_code            VARCHAR2(30);
76698 l_entity_code                 VARCHAR2(30);
76699 l_event_class_code            VARCHAR2(30);
76700 l_ae_header_id                NUMBER;
76701 l_event_type_code             VARCHAR2(30);
76702 l_line_definition_code        VARCHAR2(30);
76703 l_line_definition_owner_code  VARCHAR2(1);
76704 --
76705 -- adr variables
76706 l_segment                     VARCHAR2(30);
76710 l_adr_flexfield_segment_code  VARCHAR2(30);
76707 l_ccid                        NUMBER;
76708 l_adr_transaction_coa_id      NUMBER;
76709 l_adr_accounting_coa_id       NUMBER;
76711 l_adr_flex_value_set_id       NUMBER;
76712 l_adr_value_type_code         VARCHAR2(30);
76713 l_adr_value_combination_id    NUMBER;
76714 l_adr_value_segment_code      VARCHAR2(30);
76715 
76716 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
76717 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
76718 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
76719 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
76720 
76721 -- 4262811 Variables ------------------------------------------------------------------------------------------
76722 l_entered_amt_idx             NUMBER;
76723 l_accted_amt_idx              NUMBER;
76724 l_acc_rev_flag                VARCHAR2(1);
76725 l_accrual_line_num            NUMBER;
76726 l_tmp_amt                     NUMBER;
76727 l_acc_rev_natural_side_code   VARCHAR2(1);
76728 
76729 l_num_entries                 NUMBER;
76730 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
76731 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
76732 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
76733 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
76734 l_recog_line_1                NUMBER;
76735 l_recog_line_2                NUMBER;
76736 
76737 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
76738 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
76739 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
76740 
76741 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
76742 
76743 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
76744 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
76745 
76746 ---------------------------------------------------------------------------------------------------------------
76747 
76748 
76749 --
76750 -- bulk performance
76751 --
76752 l_balance_type_code           VARCHAR2(1);
76753 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
76754 l_log_module                  VARCHAR2(240);
76755 
76756 --
76757 -- Upgrade strategy
76758 --
76759 l_actual_upg_option           VARCHAR2(1);
76760 l_enc_upg_option           VARCHAR2(1);
76761 
76762 --
76763 BEGIN
76764 --
76765 IF g_log_enabled THEN
76766       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_171';
76767 END IF;
76768 --
76769 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76770 
76771       trace
76772          (p_msg      => 'BEGIN of AcctLineType_171'
76773          ,p_level    => C_LEVEL_PROCEDURE
76774          ,p_module   => l_log_module);
76775 
76776 END IF;
76777 --
76778 l_component_type             := 'AMB_JLT';
76779 l_component_code             := 'IOP';
76780 l_component_type_code        := 'S';
76781 l_component_appl_id          :=  555;
76782 l_amb_context_code           := 'DEFAULT';
76783 l_entity_code                := 'INVENTORY';
76784 l_event_class_code           := 'DIR_INTERORG_RCPT';
76785 l_event_type_code            := 'DIR_INTERORG_RCPT_TP';
76786 l_line_definition_owner_code := 'S';
76787 l_line_definition_code       := 'DIRECT_XFER_RECV_TP';
76788 --
76789 l_balance_type_code          := 'A';
76790 l_segment                     := NULL;
76791 l_ccid                        := NULL;
76792 l_adr_transaction_coa_id      := NULL;
76793 l_adr_accounting_coa_id       := NULL;
76794 l_adr_flexfield_segment_code  := NULL;
76795 l_adr_flex_value_set_id       := NULL;
76796 l_adr_value_type_code         := NULL;
76797 l_adr_value_combination_id    := NULL;
76798 l_adr_value_segment_code      := NULL;
76799 
76800 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
76801 l_bflow_class_code           := '';    -- 4219869 Business Flow
76802 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
76803 l_budgetary_control_flag     := 'N';
76804 
76805 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
76806 l_bflow_applied_to_amt       := NULL; -- 5132302
76807 l_entered_amt_idx            := NULL;          -- 4262811
76808 l_accted_amt_idx             := NULL;          -- 4262811
76809 l_acc_rev_flag               := NULL;          -- 4262811
76810 l_accrual_line_num           := NULL;          -- 4262811
76811 l_tmp_amt                    := NULL;          -- 4262811
76812 --
76813  
76814 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
76815     l_balance_type_code <> 'B' THEN
76816 IF NVL(p_source_2,'
76817 ') =  'IOP'
76818  THEN 
76819 
76820    --
76821    XLA_AE_LINES_PKG.SetNewLine;
76822 
76823    p_balance_type_code          := l_balance_type_code;
76824    -- set the flag so later we will know whether the gain loss line needs to be created
76825    
76826    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
76827      p_actual_flag :='A';
76828    END IF;
76829 
76830    --
76831    -- bulk performance
76832    --
76833    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
76834                                       p_header_num   => 0); -- 4262811
76838    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
76835    --
76836    -- set accounting line options
76837    --
76839            p_natural_side_code          => 'D'
76840          , p_gain_or_loss_flag          => 'N'
76841          , p_gl_transfer_mode_code      => 'D'
76842          , p_acct_entry_type_code       => 'A'
76843          , p_switch_side_flag           => 'Y'
76844          , p_merge_duplicate_code       => 'W'
76845          );
76846    --
76847    l_acc_rev_natural_side_code := 'C';  -- 4262811
76848    -- 
76849    --
76850    -- set accounting line type info
76851    --
76852    xla_ae_lines_pkg.SetAcctLineType
76853       (p_component_type             => l_component_type
76854       ,p_event_type_code            => l_event_type_code
76855       ,p_line_definition_owner_code => l_line_definition_owner_code
76856       ,p_line_definition_code       => l_line_definition_code
76857       ,p_accounting_line_code       => l_component_code
76858       ,p_accounting_line_type_code  => l_component_type_code
76859       ,p_accounting_line_appl_id    => l_component_appl_id
76860       ,p_amb_context_code           => l_amb_context_code
76861       ,p_entity_code                => l_entity_code
76862       ,p_event_class_code           => l_event_class_code);
76863    --
76864    -- set accounting class
76865    --
76866    xla_ae_lines_pkg.SetAcctClass(
76867            p_accounting_class_code  => 'INTERORG_PAYABLES'
76868          , p_ae_header_id           => l_ae_header_id
76869          );
76870 
76871    --
76872    -- set rounding class
76873    --
76874    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
76875                       'INTERORG_PAYABLES';
76876 
76877    --
76878    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
76879    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
76880    --
76881    -- bulk performance
76882    --
76883    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
76884 
76885    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
76886       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
76887 
76888    -- 4955764
76889    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76890       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
76891 
76892    -- 4458381 Public Sector Enh
76893    
76894    --
76895    -- set accounting attributes for the line type
76896    --
76897    l_entered_amt_idx := 3;
76898    l_accted_amt_idx  := 8;
76899    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
76900    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
76901    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
76902    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
76903    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
76904    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
76905    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
76906    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
76907    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
76908    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
76909    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
76910    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
76911    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
76912    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
76913    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
76914    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
76915    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
76916 
76917    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
76918    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
76919 
76920    ---------------------------------------------------------------------------------------------------------------
76921    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
76922    ---------------------------------------------------------------------------------------------------------------
76923    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
76924 
76925    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
76926    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
76927 
76928    IF xla_accounting_cache_pkg.GetValueChar
76929          (p_source_code         => 'LEDGER_CATEGORY_CODE'
76930          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
76931    AND l_bflow_method_code = 'PRIOR_ENTRY'
76932 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
76933    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
76934          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
76935        )
76936    THEN
76937          xla_ae_lines_pkg.BflowUpgEntry
76938            (p_business_method_code    => l_bflow_method_code
76939            ,p_business_class_code     => l_bflow_class_code
76940            ,p_balance_type            => l_balance_type_code);
76941    ELSE
76945 
76942       NULL;
76943 -- No business flow processing for business flow method of NONE.
76944    END IF;
76946    --
76947    -- call analytical criteria
76948    --
76949    
76950    --
76951    -- call description
76952    --
76953    -- No description or it is inherited.
76954    --
76955    -- call ADRs
76956    -- Bug 4922099
76957    --
76958    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
76959         (NVL(l_actual_upg_option, 'N') = 'O') OR
76960         (NVL(l_enc_upg_option, 'N') = 'O')
76961       )
76962    THEN
76963    NULL;
76964    --
76965    --
76966    
76967   l_ccid := AcctDerRule_20(
76968            p_application_id           => p_application_id
76969          , p_ae_header_id             => l_ae_header_id 
76970 , p_source_1 => p_source_1
76971 , p_source_2 => p_source_2
76972          , x_transaction_coa_id       => l_adr_transaction_coa_id
76973          , x_accounting_coa_id        => l_adr_accounting_coa_id
76974          , x_value_type_code          => l_adr_value_type_code
76975          , p_side                     => 'NA'
76976    );
76977 
76978    xla_ae_lines_pkg.set_ccid(
76979     p_code_combination_id          => l_ccid
76980   , p_value_type_code              => l_adr_value_type_code
76981   , p_transaction_coa_id           => l_adr_transaction_coa_id
76982   , p_accounting_coa_id            => l_adr_accounting_coa_id
76983   , p_adr_code                     => 'IOP'
76984   , p_adr_type_code                => 'S'
76985   , p_component_type               => l_component_type
76986   , p_component_code               => l_component_code
76987   , p_component_type_code          => l_component_type_code
76988   , p_component_appl_id            => l_component_appl_id
76989   , p_amb_context_code             => l_amb_context_code
76990   , p_side                         => 'NA'
76991   );
76992 
76993 
76994    --
76995    --
76996    END IF;
76997    --
76998    -- Bug 4922099
76999    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
77000           (NVL(l_enc_upg_option, 'N') = 'O')
77001         ) AND
77002         (l_bflow_method_code = 'PRIOR_ENTRY')
77003       )
77004    THEN
77005       IF
77006       --
77007       1 = 2
77008       --
77009       THEN
77010       xla_accounting_err_pkg.build_message
77011                                     (p_appli_s_name            => 'XLA'
77012                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77013                                     ,p_token_1                 => 'LINE_NUMBER'
77014                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
77015                                     ,p_token_2                 => 'LINE_TYPE_NAME'
77016                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
77017                                                                              l_component_type
77018                                                                             ,l_component_code
77019                                                                             ,l_component_type_code
77020                                                                             ,l_component_appl_id
77021                                                                             ,l_amb_context_code
77022                                                                             ,l_entity_code
77023                                                                             ,l_event_class_code
77024                                                                            )
77025                                     ,p_token_3                 => 'OWNER'
77026                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
77027                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
77028                                                                           ,p_lookup_code    => l_component_type_code
77029                                                                          )
77030                                     ,p_token_4                 => 'PRODUCT_NAME'
77031                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
77032                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
77033                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
77034                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
77035                                     ,p_ae_header_id            =>  NULL
77036                                        );
77037 
77038         IF (C_LEVEL_ERROR>= g_log_level) THEN
77039                  trace
77040                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77041                       ,p_level    => C_LEVEL_ERROR
77042                       ,p_module   => l_log_module);
77043         END IF;
77044       END IF;
77045    END IF;
77046    --
77047    --
77048    ------------------------------------------------------------------------------------------------
77049    -- 4219869 Business Flow
77050    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
77051    -- Prior Entry.  Currently, the following code is always generated.
77052    ------------------------------------------------------------------------------------------------
77053    XLA_AE_LINES_PKG.ValidateCurrentLine;
77057    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
77054 
77055    ------------------------------------------------------------------------------------
77056    -- 4219869 Business Flow
77058    ------------------------------------------------------------------------------------
77059    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77060 
77061    ----------------------------------------------------------------------------------
77062    -- 4219869 Business Flow
77063    -- Update journal entry status -- Need to generate this within IF <condition>
77064    ----------------------------------------------------------------------------------
77065    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77066          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
77067          ,p_balance_type_code => l_balance_type_code
77068          );
77069 
77070    -------------------------------------------------------------------------------------------
77071    -- 4262811 - Generate the Accrual Reversal lines
77072    -------------------------------------------------------------------------------------------
77073    BEGIN
77074       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
77075                               (g_array_event(p_event_id).array_value_num('header_index'));
77076       IF l_acc_rev_flag IS NULL THEN
77077          l_acc_rev_flag := 'N';
77078       END IF;
77079    EXCEPTION
77080       WHEN OTHERS THEN
77081          l_acc_rev_flag := 'N';
77082    END;
77083    --
77084    IF (l_acc_rev_flag = 'Y') THEN
77085 
77086        -- 4645092  ------------------------------------------------------------------------------
77087        -- To allow MPA report to determine if it should generate report process
77088        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
77089        ------------------------------------------------------------------------------------------
77090 
77091        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
77092        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
77093    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
77094    -- call ADRs
77095    -- Bug 4922099
77096    --
77097    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77098         (NVL(l_actual_upg_option, 'N') = 'O') OR
77099         (NVL(l_enc_upg_option, 'N') = 'O')
77100       )
77101    THEN
77102    NULL;
77103    --
77104    --
77105    
77106   l_ccid := AcctDerRule_20(
77107            p_application_id           => p_application_id
77108          , p_ae_header_id             => l_ae_header_id 
77109 , p_source_1 => p_source_1
77110 , p_source_2 => p_source_2
77111          , x_transaction_coa_id       => l_adr_transaction_coa_id
77112          , x_accounting_coa_id        => l_adr_accounting_coa_id
77113          , x_value_type_code          => l_adr_value_type_code
77114          , p_side                     => 'NA'
77115    );
77116 
77117    xla_ae_lines_pkg.set_ccid(
77118     p_code_combination_id          => l_ccid
77119   , p_value_type_code              => l_adr_value_type_code
77120   , p_transaction_coa_id           => l_adr_transaction_coa_id
77121   , p_accounting_coa_id            => l_adr_accounting_coa_id
77122   , p_adr_code                     => 'IOP'
77123   , p_adr_type_code                => 'S'
77124   , p_component_type               => l_component_type
77125   , p_component_code               => l_component_code
77126   , p_component_type_code          => l_component_type_code
77127   , p_component_appl_id            => l_component_appl_id
77128   , p_amb_context_code             => l_amb_context_code
77129   , p_side                         => 'NA'
77130   );
77131 
77132 
77133    --
77134    --
77135    END IF;
77136 
77137        --
77138        -- Update the line information that should be overwritten
77139        --
77140        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
77141                                          p_header_num   => 1);
77142        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
77143 
77144        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
77145 
77146        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
77147           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
77148        END IF;
77149 
77150       --
77151       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
77152       --
77153       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
77154           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
77155       ELSE
77156           ---------------------------------------------------------------------------------------------------
77157           -- 4262811a Switch Sign
77158           ---------------------------------------------------------------------------------------------------
77159           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
77160           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77161                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77162           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77166                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77163                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77164           -- 5132302
77165           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
77167 
77168       END IF;
77169 
77170       -- 4955764
77171       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77172       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
77173 
77174 
77175       XLA_AE_LINES_PKG.ValidateCurrentLine;
77176       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77177 
77178       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77179                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
77180                ,p_balance_type_code => l_balance_type_code);
77181 
77182    END IF;
77183 
77184    -----------------------------------------------------------------------------------------
77185    -- 4262811 Multiperiod Accounting
77186    -----------------------------------------------------------------------------------------
77187      -- No MPA option is assigned.
77188 
77189 
77190 END IF;
77191 END IF;
77192 --
77193 
77194 --
77195 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77196    trace
77197       (p_msg      => 'END of AcctLineType_171'
77198       ,p_level    => C_LEVEL_PROCEDURE
77199       ,p_module   => l_log_module);
77200 END IF;
77201 --
77202 EXCEPTION
77203   WHEN xla_exceptions_pkg.application_exception THEN
77204       RAISE;
77205   WHEN OTHERS THEN
77206        xla_exceptions_pkg.raise_message
77207            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_171');
77208 END AcctLineType_171;
77209 --
77210 
77211 ---------------------------------------
77212 --
77213 -- PRIVATE FUNCTION
77214 --         AcctLineType_172
77215 --
77216 ---------------------------------------
77217 PROCEDURE AcctLineType_172 (
77218   p_application_id        IN NUMBER
77219  ,p_event_id              IN NUMBER
77220  ,p_calculate_acctd_flag  IN VARCHAR2
77221  ,p_calculate_g_l_flag    IN VARCHAR2
77222  ,p_actual_flag           IN OUT VARCHAR2
77223  ,p_balance_type_code     OUT VARCHAR2
77224  ,p_gain_or_loss_ref      OUT VARCHAR2
77225  
77226 --Transaction Account
77227  , p_source_1            IN NUMBER
77228 --Journal Line Type
77229  , p_source_2            IN VARCHAR2
77230 --Entered Amount
77231  , p_source_3            IN NUMBER
77232 --First Distribution Identifier
77233  , p_source_5            IN NUMBER
77234 --Distribution Type
77235  , p_source_6            IN VARCHAR2
77236 --Currency Code
77237  , p_source_7            IN VARCHAR2
77238 --Currency Conversion Date
77239  , p_source_8            IN DATE
77240 --Currency Conversion Rate
77241  , p_source_9            IN NUMBER
77242 --Currency Conversion Type
77243  , p_source_10            IN VARCHAR2
77244 --Accounted Amount
77245  , p_source_11            IN NUMBER
77246 )
77247 IS
77248 
77249 l_component_type              VARCHAR2(80);
77250 l_component_code              VARCHAR2(30);
77251 l_component_type_code         VARCHAR2(1);
77252 l_component_appl_id           INTEGER;
77253 l_amb_context_code            VARCHAR2(30);
77254 l_entity_code                 VARCHAR2(30);
77255 l_event_class_code            VARCHAR2(30);
77256 l_ae_header_id                NUMBER;
77257 l_event_type_code             VARCHAR2(30);
77258 l_line_definition_code        VARCHAR2(30);
77259 l_line_definition_owner_code  VARCHAR2(1);
77260 --
77261 -- adr variables
77262 l_segment                     VARCHAR2(30);
77263 l_ccid                        NUMBER;
77264 l_adr_transaction_coa_id      NUMBER;
77265 l_adr_accounting_coa_id       NUMBER;
77266 l_adr_flexfield_segment_code  VARCHAR2(30);
77267 l_adr_flex_value_set_id       NUMBER;
77268 l_adr_value_type_code         VARCHAR2(30);
77269 l_adr_value_combination_id    NUMBER;
77270 l_adr_value_segment_code      VARCHAR2(30);
77271 
77272 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
77273 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
77274 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
77275 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
77276 
77277 -- 4262811 Variables ------------------------------------------------------------------------------------------
77278 l_entered_amt_idx             NUMBER;
77279 l_accted_amt_idx              NUMBER;
77280 l_acc_rev_flag                VARCHAR2(1);
77281 l_accrual_line_num            NUMBER;
77282 l_tmp_amt                     NUMBER;
77283 l_acc_rev_natural_side_code   VARCHAR2(1);
77284 
77285 l_num_entries                 NUMBER;
77286 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
77287 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
77288 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
77289 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
77290 l_recog_line_1                NUMBER;
77291 l_recog_line_2                NUMBER;
77292 
77293 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
77294 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
77298 
77295 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
77296 
77297 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
77299 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
77300 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
77301 
77302 ---------------------------------------------------------------------------------------------------------------
77303 
77304 
77305 --
77306 -- bulk performance
77307 --
77308 l_balance_type_code           VARCHAR2(1);
77309 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
77310 l_log_module                  VARCHAR2(240);
77311 
77312 --
77313 -- Upgrade strategy
77314 --
77315 l_actual_upg_option           VARCHAR2(1);
77316 l_enc_upg_option           VARCHAR2(1);
77317 
77318 --
77319 BEGIN
77320 --
77321 IF g_log_enabled THEN
77322       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_172';
77323 END IF;
77324 --
77325 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77326 
77327       trace
77328          (p_msg      => 'BEGIN of AcctLineType_172'
77329          ,p_level    => C_LEVEL_PROCEDURE
77330          ,p_module   => l_log_module);
77331 
77332 END IF;
77333 --
77334 l_component_type             := 'AMB_JLT';
77335 l_component_code             := 'IOP';
77336 l_component_type_code        := 'S';
77337 l_component_appl_id          :=  555;
77338 l_amb_context_code           := 'DEFAULT';
77339 l_entity_code                := 'INVENTORY';
77340 l_event_class_code           := 'INT_ORDER_TO_EXP';
77341 l_event_type_code            := 'EXP_REQ_RCPT';
77342 l_line_definition_owner_code := 'S';
77343 l_line_definition_code       := 'EXP_REQ_RCPT';
77344 --
77345 l_balance_type_code          := 'A';
77346 l_segment                     := NULL;
77347 l_ccid                        := NULL;
77348 l_adr_transaction_coa_id      := NULL;
77349 l_adr_accounting_coa_id       := NULL;
77350 l_adr_flexfield_segment_code  := NULL;
77351 l_adr_flex_value_set_id       := NULL;
77352 l_adr_value_type_code         := NULL;
77353 l_adr_value_combination_id    := NULL;
77354 l_adr_value_segment_code      := NULL;
77355 
77356 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
77357 l_bflow_class_code           := '';    -- 4219869 Business Flow
77358 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
77359 l_budgetary_control_flag     := 'N';
77360 
77361 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
77362 l_bflow_applied_to_amt       := NULL; -- 5132302
77363 l_entered_amt_idx            := NULL;          -- 4262811
77364 l_accted_amt_idx             := NULL;          -- 4262811
77365 l_acc_rev_flag               := NULL;          -- 4262811
77366 l_accrual_line_num           := NULL;          -- 4262811
77367 l_tmp_amt                    := NULL;          -- 4262811
77368 --
77369  
77370 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
77371     l_balance_type_code <> 'B' THEN
77372 IF NVL(p_source_2,'
77373 ') =  'IOP'
77374  THEN 
77375 
77376    --
77377    XLA_AE_LINES_PKG.SetNewLine;
77378 
77379    p_balance_type_code          := l_balance_type_code;
77380    -- set the flag so later we will know whether the gain loss line needs to be created
77381    
77382    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
77383      p_actual_flag :='A';
77384    END IF;
77385 
77386    --
77387    -- bulk performance
77388    --
77389    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
77390                                       p_header_num   => 0); -- 4262811
77391    --
77392    -- set accounting line options
77393    --
77394    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
77395            p_natural_side_code          => 'D'
77396          , p_gain_or_loss_flag          => 'N'
77397          , p_gl_transfer_mode_code      => 'D'
77398          , p_acct_entry_type_code       => 'A'
77399          , p_switch_side_flag           => 'Y'
77400          , p_merge_duplicate_code       => 'W'
77401          );
77402    --
77403    l_acc_rev_natural_side_code := 'C';  -- 4262811
77404    -- 
77405    --
77406    -- set accounting line type info
77407    --
77408    xla_ae_lines_pkg.SetAcctLineType
77409       (p_component_type             => l_component_type
77410       ,p_event_type_code            => l_event_type_code
77411       ,p_line_definition_owner_code => l_line_definition_owner_code
77412       ,p_line_definition_code       => l_line_definition_code
77413       ,p_accounting_line_code       => l_component_code
77414       ,p_accounting_line_type_code  => l_component_type_code
77415       ,p_accounting_line_appl_id    => l_component_appl_id
77416       ,p_amb_context_code           => l_amb_context_code
77417       ,p_entity_code                => l_entity_code
77418       ,p_event_class_code           => l_event_class_code);
77419    --
77420    -- set accounting class
77421    --
77422    xla_ae_lines_pkg.SetAcctClass(
77423            p_accounting_class_code  => 'INTERORG_PAYABLES'
77424          , p_ae_header_id           => l_ae_header_id
77425          );
77426 
77427    --
77428    -- set rounding class
77429    --
77433    --
77430    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
77431                       'INTERORG_PAYABLES';
77432 
77434    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
77435    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
77436    --
77437    -- bulk performance
77438    --
77439    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
77440 
77441    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
77442       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
77443 
77444    -- 4955764
77445    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77446       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
77447 
77448    -- 4458381 Public Sector Enh
77449    
77450    --
77451    -- set accounting attributes for the line type
77452    --
77453    l_entered_amt_idx := 3;
77454    l_accted_amt_idx  := 8;
77455    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
77456    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
77457    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
77458    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
77459    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
77460    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
77461    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
77462    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
77463    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
77464    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
77465    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
77466    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
77467    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
77468    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
77469    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
77470    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
77471    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
77472 
77473    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
77474    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
77475 
77476    ---------------------------------------------------------------------------------------------------------------
77477    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
77478    ---------------------------------------------------------------------------------------------------------------
77479    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
77480 
77481    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77482    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77483 
77484    IF xla_accounting_cache_pkg.GetValueChar
77485          (p_source_code         => 'LEDGER_CATEGORY_CODE'
77486          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
77487    AND l_bflow_method_code = 'PRIOR_ENTRY'
77488 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
77489    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
77490          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
77491        )
77492    THEN
77493          xla_ae_lines_pkg.BflowUpgEntry
77494            (p_business_method_code    => l_bflow_method_code
77495            ,p_business_class_code     => l_bflow_class_code
77496            ,p_balance_type            => l_balance_type_code);
77497    ELSE
77498       NULL;
77499 -- No business flow processing for business flow method of NONE.
77500    END IF;
77501 
77502    --
77503    -- call analytical criteria
77504    --
77505    
77506    --
77507    -- call description
77508    --
77509    -- No description or it is inherited.
77510    --
77511    -- call ADRs
77512    -- Bug 4922099
77513    --
77514    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77515         (NVL(l_actual_upg_option, 'N') = 'O') OR
77516         (NVL(l_enc_upg_option, 'N') = 'O')
77517       )
77518    THEN
77519    NULL;
77520    --
77521    --
77522    
77523   l_ccid := AcctDerRule_20(
77524            p_application_id           => p_application_id
77525          , p_ae_header_id             => l_ae_header_id 
77526 , p_source_1 => p_source_1
77527 , p_source_2 => p_source_2
77528          , x_transaction_coa_id       => l_adr_transaction_coa_id
77529          , x_accounting_coa_id        => l_adr_accounting_coa_id
77530          , x_value_type_code          => l_adr_value_type_code
77531          , p_side                     => 'NA'
77532    );
77533 
77534    xla_ae_lines_pkg.set_ccid(
77535     p_code_combination_id          => l_ccid
77536   , p_value_type_code              => l_adr_value_type_code
77537   , p_transaction_coa_id           => l_adr_transaction_coa_id
77538   , p_accounting_coa_id            => l_adr_accounting_coa_id
77539   , p_adr_code                     => 'IOP'
77540   , p_adr_type_code                => 'S'
77541   , p_component_type               => l_component_type
77542   , p_component_code               => l_component_code
77546   , p_side                         => 'NA'
77543   , p_component_type_code          => l_component_type_code
77544   , p_component_appl_id            => l_component_appl_id
77545   , p_amb_context_code             => l_amb_context_code
77547   );
77548 
77549 
77550    --
77551    --
77552    END IF;
77553    --
77554    -- Bug 4922099
77555    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
77556           (NVL(l_enc_upg_option, 'N') = 'O')
77557         ) AND
77558         (l_bflow_method_code = 'PRIOR_ENTRY')
77559       )
77560    THEN
77561       IF
77562       --
77563       1 = 2
77564       --
77565       THEN
77566       xla_accounting_err_pkg.build_message
77567                                     (p_appli_s_name            => 'XLA'
77568                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77569                                     ,p_token_1                 => 'LINE_NUMBER'
77570                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
77571                                     ,p_token_2                 => 'LINE_TYPE_NAME'
77572                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
77573                                                                              l_component_type
77574                                                                             ,l_component_code
77575                                                                             ,l_component_type_code
77576                                                                             ,l_component_appl_id
77577                                                                             ,l_amb_context_code
77578                                                                             ,l_entity_code
77579                                                                             ,l_event_class_code
77580                                                                            )
77581                                     ,p_token_3                 => 'OWNER'
77582                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
77583                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
77584                                                                           ,p_lookup_code    => l_component_type_code
77585                                                                          )
77586                                     ,p_token_4                 => 'PRODUCT_NAME'
77587                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
77588                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
77589                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
77590                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
77591                                     ,p_ae_header_id            =>  NULL
77592                                        );
77593 
77594         IF (C_LEVEL_ERROR>= g_log_level) THEN
77595                  trace
77596                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77597                       ,p_level    => C_LEVEL_ERROR
77598                       ,p_module   => l_log_module);
77599         END IF;
77600       END IF;
77601    END IF;
77602    --
77603    --
77604    ------------------------------------------------------------------------------------------------
77605    -- 4219869 Business Flow
77606    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
77607    -- Prior Entry.  Currently, the following code is always generated.
77608    ------------------------------------------------------------------------------------------------
77609    XLA_AE_LINES_PKG.ValidateCurrentLine;
77610 
77611    ------------------------------------------------------------------------------------
77612    -- 4219869 Business Flow
77613    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
77614    ------------------------------------------------------------------------------------
77615    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77616 
77617    ----------------------------------------------------------------------------------
77618    -- 4219869 Business Flow
77619    -- Update journal entry status -- Need to generate this within IF <condition>
77620    ----------------------------------------------------------------------------------
77621    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77622          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
77623          ,p_balance_type_code => l_balance_type_code
77624          );
77625 
77626    -------------------------------------------------------------------------------------------
77627    -- 4262811 - Generate the Accrual Reversal lines
77628    -------------------------------------------------------------------------------------------
77629    BEGIN
77630       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
77631                               (g_array_event(p_event_id).array_value_num('header_index'));
77632       IF l_acc_rev_flag IS NULL THEN
77633          l_acc_rev_flag := 'N';
77634       END IF;
77635    EXCEPTION
77636       WHEN OTHERS THEN
77637          l_acc_rev_flag := 'N';
77638    END;
77639    --
77640    IF (l_acc_rev_flag = 'Y') THEN
77641 
77642        -- 4645092  ------------------------------------------------------------------------------
77646 
77643        -- To allow MPA report to determine if it should generate report process
77644        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
77645        ------------------------------------------------------------------------------------------
77647        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
77648        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
77649    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
77650    -- call ADRs
77651    -- Bug 4922099
77652    --
77653    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77654         (NVL(l_actual_upg_option, 'N') = 'O') OR
77655         (NVL(l_enc_upg_option, 'N') = 'O')
77656       )
77657    THEN
77658    NULL;
77659    --
77660    --
77661    
77662   l_ccid := AcctDerRule_20(
77663            p_application_id           => p_application_id
77664          , p_ae_header_id             => l_ae_header_id 
77665 , p_source_1 => p_source_1
77666 , p_source_2 => p_source_2
77667          , x_transaction_coa_id       => l_adr_transaction_coa_id
77668          , x_accounting_coa_id        => l_adr_accounting_coa_id
77669          , x_value_type_code          => l_adr_value_type_code
77670          , p_side                     => 'NA'
77671    );
77672 
77673    xla_ae_lines_pkg.set_ccid(
77674     p_code_combination_id          => l_ccid
77675   , p_value_type_code              => l_adr_value_type_code
77676   , p_transaction_coa_id           => l_adr_transaction_coa_id
77677   , p_accounting_coa_id            => l_adr_accounting_coa_id
77678   , p_adr_code                     => 'IOP'
77679   , p_adr_type_code                => 'S'
77680   , p_component_type               => l_component_type
77681   , p_component_code               => l_component_code
77682   , p_component_type_code          => l_component_type_code
77683   , p_component_appl_id            => l_component_appl_id
77684   , p_amb_context_code             => l_amb_context_code
77685   , p_side                         => 'NA'
77686   );
77687 
77688 
77689    --
77690    --
77691    END IF;
77692 
77693        --
77694        -- Update the line information that should be overwritten
77695        --
77696        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
77697                                          p_header_num   => 1);
77698        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
77699 
77700        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
77701 
77702        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
77703           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
77704        END IF;
77705 
77706       --
77707       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
77708       --
77709       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
77710           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
77711       ELSE
77712           ---------------------------------------------------------------------------------------------------
77713           -- 4262811a Switch Sign
77714           ---------------------------------------------------------------------------------------------------
77715           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
77716           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77717                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77718           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77719                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77720           -- 5132302
77721           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
77722                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77723 
77724       END IF;
77725 
77726       -- 4955764
77727       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77728       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
77729 
77730 
77731       XLA_AE_LINES_PKG.ValidateCurrentLine;
77732       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77733 
77734       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77735                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
77736                ,p_balance_type_code => l_balance_type_code);
77737 
77738    END IF;
77739 
77740    -----------------------------------------------------------------------------------------
77741    -- 4262811 Multiperiod Accounting
77742    -----------------------------------------------------------------------------------------
77743      -- No MPA option is assigned.
77744 
77745 
77746 END IF;
77747 END IF;
77748 --
77749 
77750 --
77751 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77752    trace
77753       (p_msg      => 'END of AcctLineType_172'
77754       ,p_level    => C_LEVEL_PROCEDURE
77755       ,p_module   => l_log_module);
77756 END IF;
77757 --
77758 EXCEPTION
77759   WHEN xla_exceptions_pkg.application_exception THEN
77760       RAISE;
77764 END AcctLineType_172;
77761   WHEN OTHERS THEN
77762        xla_exceptions_pkg.raise_message
77763            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_172');
77765 --
77766 
77767 ---------------------------------------
77768 --
77769 -- PRIVATE FUNCTION
77770 --         AcctLineType_173
77771 --
77772 ---------------------------------------
77773 PROCEDURE AcctLineType_173 (
77774   p_application_id        IN NUMBER
77775  ,p_event_id              IN NUMBER
77776  ,p_calculate_acctd_flag  IN VARCHAR2
77777  ,p_calculate_g_l_flag    IN VARCHAR2
77778  ,p_actual_flag           IN OUT VARCHAR2
77779  ,p_balance_type_code     OUT VARCHAR2
77780  ,p_gain_or_loss_ref      OUT VARCHAR2
77781  
77782 --Transaction Account
77783  , p_source_1            IN NUMBER
77784 --Journal Line Type
77785  , p_source_2            IN VARCHAR2
77786 --Entered Amount
77787  , p_source_3            IN NUMBER
77788 --First Distribution Identifier
77789  , p_source_5            IN NUMBER
77790 --Distribution Type
77791  , p_source_6            IN VARCHAR2
77792 --Currency Code
77793  , p_source_7            IN VARCHAR2
77794 --Currency Conversion Date
77795  , p_source_8            IN DATE
77796 --Currency Conversion Rate
77797  , p_source_9            IN NUMBER
77798 --Currency Conversion Type
77799  , p_source_10            IN VARCHAR2
77800 --Accounted Amount
77801  , p_source_11            IN NUMBER
77802 )
77803 IS
77804 
77805 l_component_type              VARCHAR2(80);
77806 l_component_code              VARCHAR2(30);
77807 l_component_type_code         VARCHAR2(1);
77808 l_component_appl_id           INTEGER;
77809 l_amb_context_code            VARCHAR2(30);
77810 l_entity_code                 VARCHAR2(30);
77811 l_event_class_code            VARCHAR2(30);
77812 l_ae_header_id                NUMBER;
77813 l_event_type_code             VARCHAR2(30);
77814 l_line_definition_code        VARCHAR2(30);
77815 l_line_definition_owner_code  VARCHAR2(1);
77816 --
77817 -- adr variables
77818 l_segment                     VARCHAR2(30);
77819 l_ccid                        NUMBER;
77820 l_adr_transaction_coa_id      NUMBER;
77821 l_adr_accounting_coa_id       NUMBER;
77822 l_adr_flexfield_segment_code  VARCHAR2(30);
77823 l_adr_flex_value_set_id       NUMBER;
77824 l_adr_value_type_code         VARCHAR2(30);
77825 l_adr_value_combination_id    NUMBER;
77826 l_adr_value_segment_code      VARCHAR2(30);
77827 
77828 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
77829 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
77830 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
77831 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
77832 
77833 -- 4262811 Variables ------------------------------------------------------------------------------------------
77834 l_entered_amt_idx             NUMBER;
77835 l_accted_amt_idx              NUMBER;
77836 l_acc_rev_flag                VARCHAR2(1);
77837 l_accrual_line_num            NUMBER;
77838 l_tmp_amt                     NUMBER;
77839 l_acc_rev_natural_side_code   VARCHAR2(1);
77840 
77841 l_num_entries                 NUMBER;
77842 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
77843 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
77844 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
77845 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
77846 l_recog_line_1                NUMBER;
77847 l_recog_line_2                NUMBER;
77848 
77849 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
77850 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
77851 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
77852 
77853 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
77854 
77855 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
77856 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
77857 
77858 ---------------------------------------------------------------------------------------------------------------
77859 
77860 
77861 --
77862 -- bulk performance
77863 --
77864 l_balance_type_code           VARCHAR2(1);
77865 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
77866 l_log_module                  VARCHAR2(240);
77867 
77868 --
77869 -- Upgrade strategy
77870 --
77871 l_actual_upg_option           VARCHAR2(1);
77872 l_enc_upg_option           VARCHAR2(1);
77873 
77874 --
77875 BEGIN
77876 --
77877 IF g_log_enabled THEN
77878       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_173';
77879 END IF;
77880 --
77881 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77882 
77883       trace
77884          (p_msg      => 'BEGIN of AcctLineType_173'
77885          ,p_level    => C_LEVEL_PROCEDURE
77886          ,p_module   => l_log_module);
77887 
77888 END IF;
77889 --
77890 l_component_type             := 'AMB_JLT';
77891 l_component_code             := 'IOP';
77892 l_component_type_code        := 'S';
77893 l_component_appl_id          :=  555;
77894 l_amb_context_code           := 'DEFAULT';
77895 l_entity_code                := 'INVENTORY';
77899 l_line_definition_code       := 'EXP_REQ_RCPT_TP';
77896 l_event_class_code           := 'INT_ORDER_TO_EXP';
77897 l_event_type_code            := 'EXP_REQ_RCPT_TP';
77898 l_line_definition_owner_code := 'S';
77900 --
77901 l_balance_type_code          := 'A';
77902 l_segment                     := NULL;
77903 l_ccid                        := NULL;
77904 l_adr_transaction_coa_id      := NULL;
77905 l_adr_accounting_coa_id       := NULL;
77906 l_adr_flexfield_segment_code  := NULL;
77907 l_adr_flex_value_set_id       := NULL;
77908 l_adr_value_type_code         := NULL;
77909 l_adr_value_combination_id    := NULL;
77910 l_adr_value_segment_code      := NULL;
77911 
77912 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
77913 l_bflow_class_code           := '';    -- 4219869 Business Flow
77914 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
77915 l_budgetary_control_flag     := 'N';
77916 
77917 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
77918 l_bflow_applied_to_amt       := NULL; -- 5132302
77919 l_entered_amt_idx            := NULL;          -- 4262811
77920 l_accted_amt_idx             := NULL;          -- 4262811
77921 l_acc_rev_flag               := NULL;          -- 4262811
77922 l_accrual_line_num           := NULL;          -- 4262811
77923 l_tmp_amt                    := NULL;          -- 4262811
77924 --
77925  
77926 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
77927     l_balance_type_code <> 'B' THEN
77928 IF NVL(p_source_2,'
77929 ') =  'IOP'
77930  THEN 
77931 
77932    --
77933    XLA_AE_LINES_PKG.SetNewLine;
77934 
77935    p_balance_type_code          := l_balance_type_code;
77936    -- set the flag so later we will know whether the gain loss line needs to be created
77937    
77938    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
77939      p_actual_flag :='A';
77940    END IF;
77941 
77942    --
77943    -- bulk performance
77944    --
77945    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
77946                                       p_header_num   => 0); -- 4262811
77947    --
77948    -- set accounting line options
77949    --
77950    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
77951            p_natural_side_code          => 'D'
77952          , p_gain_or_loss_flag          => 'N'
77953          , p_gl_transfer_mode_code      => 'D'
77954          , p_acct_entry_type_code       => 'A'
77955          , p_switch_side_flag           => 'Y'
77956          , p_merge_duplicate_code       => 'W'
77957          );
77958    --
77959    l_acc_rev_natural_side_code := 'C';  -- 4262811
77960    -- 
77961    --
77962    -- set accounting line type info
77963    --
77964    xla_ae_lines_pkg.SetAcctLineType
77965       (p_component_type             => l_component_type
77966       ,p_event_type_code            => l_event_type_code
77967       ,p_line_definition_owner_code => l_line_definition_owner_code
77968       ,p_line_definition_code       => l_line_definition_code
77969       ,p_accounting_line_code       => l_component_code
77970       ,p_accounting_line_type_code  => l_component_type_code
77971       ,p_accounting_line_appl_id    => l_component_appl_id
77972       ,p_amb_context_code           => l_amb_context_code
77973       ,p_entity_code                => l_entity_code
77974       ,p_event_class_code           => l_event_class_code);
77975    --
77976    -- set accounting class
77977    --
77978    xla_ae_lines_pkg.SetAcctClass(
77979            p_accounting_class_code  => 'INTERORG_PAYABLES'
77980          , p_ae_header_id           => l_ae_header_id
77981          );
77982 
77983    --
77984    -- set rounding class
77985    --
77986    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
77987                       'INTERORG_PAYABLES';
77988 
77989    --
77990    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
77991    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
77992    --
77993    -- bulk performance
77994    --
77995    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
77996 
77997    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
77998       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
77999 
78000    -- 4955764
78001    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78002       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
78003 
78004    -- 4458381 Public Sector Enh
78005    
78006    --
78007    -- set accounting attributes for the line type
78008    --
78009    l_entered_amt_idx := 3;
78010    l_accted_amt_idx  := 8;
78011    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
78012    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
78013    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
78014    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
78015    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
78016    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
78017    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
78018    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
78022    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
78019    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
78020    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
78021    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
78023    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
78024    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
78025    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
78026    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
78027    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
78028 
78029    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
78030    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
78031 
78032    ---------------------------------------------------------------------------------------------------------------
78033    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
78034    ---------------------------------------------------------------------------------------------------------------
78035    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
78036 
78037    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78038    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78039 
78040    IF xla_accounting_cache_pkg.GetValueChar
78041          (p_source_code         => 'LEDGER_CATEGORY_CODE'
78042          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
78043    AND l_bflow_method_code = 'PRIOR_ENTRY'
78044 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
78045    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
78046          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
78047        )
78048    THEN
78049          xla_ae_lines_pkg.BflowUpgEntry
78050            (p_business_method_code    => l_bflow_method_code
78051            ,p_business_class_code     => l_bflow_class_code
78052            ,p_balance_type            => l_balance_type_code);
78053    ELSE
78054       NULL;
78055 -- No business flow processing for business flow method of NONE.
78056    END IF;
78057 
78058    --
78059    -- call analytical criteria
78060    --
78061    
78062    --
78063    -- call description
78064    --
78065    -- No description or it is inherited.
78066    --
78067    -- call ADRs
78068    -- Bug 4922099
78069    --
78070    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78071         (NVL(l_actual_upg_option, 'N') = 'O') OR
78072         (NVL(l_enc_upg_option, 'N') = 'O')
78073       )
78074    THEN
78075    NULL;
78076    --
78077    --
78078    
78079   l_ccid := AcctDerRule_20(
78080            p_application_id           => p_application_id
78081          , p_ae_header_id             => l_ae_header_id 
78082 , p_source_1 => p_source_1
78083 , p_source_2 => p_source_2
78084          , x_transaction_coa_id       => l_adr_transaction_coa_id
78085          , x_accounting_coa_id        => l_adr_accounting_coa_id
78086          , x_value_type_code          => l_adr_value_type_code
78087          , p_side                     => 'NA'
78088    );
78089 
78090    xla_ae_lines_pkg.set_ccid(
78091     p_code_combination_id          => l_ccid
78092   , p_value_type_code              => l_adr_value_type_code
78093   , p_transaction_coa_id           => l_adr_transaction_coa_id
78094   , p_accounting_coa_id            => l_adr_accounting_coa_id
78095   , p_adr_code                     => 'IOP'
78096   , p_adr_type_code                => 'S'
78097   , p_component_type               => l_component_type
78098   , p_component_code               => l_component_code
78099   , p_component_type_code          => l_component_type_code
78100   , p_component_appl_id            => l_component_appl_id
78101   , p_amb_context_code             => l_amb_context_code
78102   , p_side                         => 'NA'
78103   );
78104 
78105 
78106    --
78107    --
78108    END IF;
78109    --
78110    -- Bug 4922099
78111    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
78112           (NVL(l_enc_upg_option, 'N') = 'O')
78113         ) AND
78114         (l_bflow_method_code = 'PRIOR_ENTRY')
78115       )
78116    THEN
78117       IF
78118       --
78119       1 = 2
78120       --
78121       THEN
78122       xla_accounting_err_pkg.build_message
78123                                     (p_appli_s_name            => 'XLA'
78124                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78125                                     ,p_token_1                 => 'LINE_NUMBER'
78126                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
78127                                     ,p_token_2                 => 'LINE_TYPE_NAME'
78128                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
78129                                                                              l_component_type
78130                                                                             ,l_component_code
78131                                                                             ,l_component_type_code
78132                                                                             ,l_component_appl_id
78133                                                                             ,l_amb_context_code
78137                                     ,p_token_3                 => 'OWNER'
78134                                                                             ,l_entity_code
78135                                                                             ,l_event_class_code
78136                                                                            )
78138                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
78139                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
78140                                                                           ,p_lookup_code    => l_component_type_code
78141                                                                          )
78142                                     ,p_token_4                 => 'PRODUCT_NAME'
78143                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
78144                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
78145                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
78146                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
78147                                     ,p_ae_header_id            =>  NULL
78148                                        );
78149 
78150         IF (C_LEVEL_ERROR>= g_log_level) THEN
78151                  trace
78152                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78153                       ,p_level    => C_LEVEL_ERROR
78154                       ,p_module   => l_log_module);
78155         END IF;
78156       END IF;
78157    END IF;
78158    --
78159    --
78160    ------------------------------------------------------------------------------------------------
78161    -- 4219869 Business Flow
78162    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
78163    -- Prior Entry.  Currently, the following code is always generated.
78164    ------------------------------------------------------------------------------------------------
78165    XLA_AE_LINES_PKG.ValidateCurrentLine;
78166 
78167    ------------------------------------------------------------------------------------
78168    -- 4219869 Business Flow
78169    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
78170    ------------------------------------------------------------------------------------
78171    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78172 
78173    ----------------------------------------------------------------------------------
78174    -- 4219869 Business Flow
78175    -- Update journal entry status -- Need to generate this within IF <condition>
78176    ----------------------------------------------------------------------------------
78177    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78178          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
78179          ,p_balance_type_code => l_balance_type_code
78180          );
78181 
78182    -------------------------------------------------------------------------------------------
78183    -- 4262811 - Generate the Accrual Reversal lines
78184    -------------------------------------------------------------------------------------------
78185    BEGIN
78186       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
78187                               (g_array_event(p_event_id).array_value_num('header_index'));
78188       IF l_acc_rev_flag IS NULL THEN
78189          l_acc_rev_flag := 'N';
78190       END IF;
78191    EXCEPTION
78192       WHEN OTHERS THEN
78193          l_acc_rev_flag := 'N';
78194    END;
78195    --
78196    IF (l_acc_rev_flag = 'Y') THEN
78197 
78198        -- 4645092  ------------------------------------------------------------------------------
78199        -- To allow MPA report to determine if it should generate report process
78200        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
78201        ------------------------------------------------------------------------------------------
78202 
78203        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
78204        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
78205    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
78206    -- call ADRs
78207    -- Bug 4922099
78208    --
78209    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78210         (NVL(l_actual_upg_option, 'N') = 'O') OR
78211         (NVL(l_enc_upg_option, 'N') = 'O')
78212       )
78213    THEN
78214    NULL;
78215    --
78216    --
78217    
78218   l_ccid := AcctDerRule_20(
78219            p_application_id           => p_application_id
78220          , p_ae_header_id             => l_ae_header_id 
78221 , p_source_1 => p_source_1
78222 , p_source_2 => p_source_2
78223          , x_transaction_coa_id       => l_adr_transaction_coa_id
78224          , x_accounting_coa_id        => l_adr_accounting_coa_id
78225          , x_value_type_code          => l_adr_value_type_code
78226          , p_side                     => 'NA'
78227    );
78228 
78229    xla_ae_lines_pkg.set_ccid(
78230     p_code_combination_id          => l_ccid
78231   , p_value_type_code              => l_adr_value_type_code
78232   , p_transaction_coa_id           => l_adr_transaction_coa_id
78233   , p_accounting_coa_id            => l_adr_accounting_coa_id
78234   , p_adr_code                     => 'IOP'
78235   , p_adr_type_code                => 'S'
78239   , p_component_appl_id            => l_component_appl_id
78236   , p_component_type               => l_component_type
78237   , p_component_code               => l_component_code
78238   , p_component_type_code          => l_component_type_code
78240   , p_amb_context_code             => l_amb_context_code
78241   , p_side                         => 'NA'
78242   );
78243 
78244 
78245    --
78246    --
78247    END IF;
78248 
78249        --
78250        -- Update the line information that should be overwritten
78251        --
78252        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
78253                                          p_header_num   => 1);
78254        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
78255 
78256        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
78257 
78258        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
78259           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
78260        END IF;
78261 
78262       --
78263       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
78264       --
78265       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
78266           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
78267       ELSE
78268           ---------------------------------------------------------------------------------------------------
78269           -- 4262811a Switch Sign
78270           ---------------------------------------------------------------------------------------------------
78271           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
78272           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78273                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78274           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78275                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78276           -- 5132302
78277           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
78278                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78279 
78280       END IF;
78281 
78282       -- 4955764
78283       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78284       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
78285 
78286 
78287       XLA_AE_LINES_PKG.ValidateCurrentLine;
78288       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78289 
78290       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78291                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
78292                ,p_balance_type_code => l_balance_type_code);
78293 
78294    END IF;
78295 
78296    -----------------------------------------------------------------------------------------
78297    -- 4262811 Multiperiod Accounting
78298    -----------------------------------------------------------------------------------------
78299      -- No MPA option is assigned.
78300 
78301 
78302 END IF;
78303 END IF;
78304 --
78305 
78306 --
78307 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78308    trace
78309       (p_msg      => 'END of AcctLineType_173'
78310       ,p_level    => C_LEVEL_PROCEDURE
78311       ,p_module   => l_log_module);
78312 END IF;
78313 --
78314 EXCEPTION
78315   WHEN xla_exceptions_pkg.application_exception THEN
78316       RAISE;
78317   WHEN OTHERS THEN
78318        xla_exceptions_pkg.raise_message
78319            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_173');
78320 END AcctLineType_173;
78321 --
78322 
78323 ---------------------------------------
78324 --
78325 -- PRIVATE FUNCTION
78326 --         AcctLineType_174
78327 --
78328 ---------------------------------------
78329 PROCEDURE AcctLineType_174 (
78330   p_application_id        IN NUMBER
78331  ,p_event_id              IN NUMBER
78332  ,p_calculate_acctd_flag  IN VARCHAR2
78333  ,p_calculate_g_l_flag    IN VARCHAR2
78334  ,p_actual_flag           IN OUT VARCHAR2
78335  ,p_balance_type_code     OUT VARCHAR2
78336  ,p_gain_or_loss_ref      OUT VARCHAR2
78337  
78338 --Transaction Account
78339  , p_source_1            IN NUMBER
78340 --Journal Line Type
78341  , p_source_2            IN VARCHAR2
78342 --Entered Amount
78343  , p_source_3            IN NUMBER
78344 --First Distribution Identifier
78345  , p_source_5            IN NUMBER
78346 --Distribution Type
78347  , p_source_6            IN VARCHAR2
78348 --Currency Code
78349  , p_source_7            IN VARCHAR2
78350 --Currency Conversion Date
78351  , p_source_8            IN DATE
78352 --Currency Conversion Rate
78353  , p_source_9            IN NUMBER
78354 --Currency Conversion Type
78355  , p_source_10            IN VARCHAR2
78356 --Accounted Amount
78357  , p_source_11            IN NUMBER
78358 )
78359 IS
78360 
78361 l_component_type              VARCHAR2(80);
78362 l_component_code              VARCHAR2(30);
78366 l_entity_code                 VARCHAR2(30);
78363 l_component_type_code         VARCHAR2(1);
78364 l_component_appl_id           INTEGER;
78365 l_amb_context_code            VARCHAR2(30);
78367 l_event_class_code            VARCHAR2(30);
78368 l_ae_header_id                NUMBER;
78369 l_event_type_code             VARCHAR2(30);
78370 l_line_definition_code        VARCHAR2(30);
78371 l_line_definition_owner_code  VARCHAR2(1);
78372 --
78373 -- adr variables
78374 l_segment                     VARCHAR2(30);
78375 l_ccid                        NUMBER;
78376 l_adr_transaction_coa_id      NUMBER;
78377 l_adr_accounting_coa_id       NUMBER;
78378 l_adr_flexfield_segment_code  VARCHAR2(30);
78379 l_adr_flex_value_set_id       NUMBER;
78380 l_adr_value_type_code         VARCHAR2(30);
78381 l_adr_value_combination_id    NUMBER;
78382 l_adr_value_segment_code      VARCHAR2(30);
78383 
78384 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
78385 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
78386 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
78387 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
78388 
78389 -- 4262811 Variables ------------------------------------------------------------------------------------------
78390 l_entered_amt_idx             NUMBER;
78391 l_accted_amt_idx              NUMBER;
78392 l_acc_rev_flag                VARCHAR2(1);
78393 l_accrual_line_num            NUMBER;
78394 l_tmp_amt                     NUMBER;
78395 l_acc_rev_natural_side_code   VARCHAR2(1);
78396 
78397 l_num_entries                 NUMBER;
78398 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
78399 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
78400 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
78401 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
78402 l_recog_line_1                NUMBER;
78403 l_recog_line_2                NUMBER;
78404 
78405 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
78406 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
78407 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
78408 
78409 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
78410 
78411 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
78412 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
78413 
78414 ---------------------------------------------------------------------------------------------------------------
78415 
78416 
78417 --
78418 -- bulk performance
78419 --
78420 l_balance_type_code           VARCHAR2(1);
78421 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
78422 l_log_module                  VARCHAR2(240);
78423 
78424 --
78425 -- Upgrade strategy
78426 --
78427 l_actual_upg_option           VARCHAR2(1);
78428 l_enc_upg_option           VARCHAR2(1);
78429 
78430 --
78431 BEGIN
78432 --
78433 IF g_log_enabled THEN
78434       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_174';
78435 END IF;
78436 --
78437 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78438 
78439       trace
78440          (p_msg      => 'BEGIN of AcctLineType_174'
78441          ,p_level    => C_LEVEL_PROCEDURE
78442          ,p_module   => l_log_module);
78443 
78444 END IF;
78445 --
78446 l_component_type             := 'AMB_JLT';
78447 l_component_code             := 'IOP';
78448 l_component_type_code        := 'S';
78449 l_component_appl_id          :=  555;
78450 l_amb_context_code           := 'DEFAULT';
78451 l_entity_code                := 'INVENTORY';
78452 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
78453 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
78454 l_line_definition_owner_code := 'S';
78455 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
78456 --
78457 l_balance_type_code          := 'A';
78458 l_segment                     := NULL;
78459 l_ccid                        := NULL;
78460 l_adr_transaction_coa_id      := NULL;
78461 l_adr_accounting_coa_id       := NULL;
78462 l_adr_flexfield_segment_code  := NULL;
78463 l_adr_flex_value_set_id       := NULL;
78464 l_adr_value_type_code         := NULL;
78465 l_adr_value_combination_id    := NULL;
78466 l_adr_value_segment_code      := NULL;
78467 
78468 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
78469 l_bflow_class_code           := '';    -- 4219869 Business Flow
78470 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
78471 l_budgetary_control_flag     := 'N';
78472 
78473 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
78474 l_bflow_applied_to_amt       := NULL; -- 5132302
78475 l_entered_amt_idx            := NULL;          -- 4262811
78476 l_accted_amt_idx             := NULL;          -- 4262811
78477 l_acc_rev_flag               := NULL;          -- 4262811
78478 l_accrual_line_num           := NULL;          -- 4262811
78479 l_tmp_amt                    := NULL;          -- 4262811
78480 --
78481  
78482 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
78483     l_balance_type_code <> 'B' THEN
78484 IF NVL(p_source_2,'
78485 ') =  'IOP'
78486  THEN 
78487 
78491    p_balance_type_code          := l_balance_type_code;
78488    --
78489    XLA_AE_LINES_PKG.SetNewLine;
78490 
78492    -- set the flag so later we will know whether the gain loss line needs to be created
78493    
78494    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
78495      p_actual_flag :='A';
78496    END IF;
78497 
78498    --
78499    -- bulk performance
78500    --
78501    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
78502                                       p_header_num   => 0); -- 4262811
78503    --
78504    -- set accounting line options
78505    --
78506    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
78507            p_natural_side_code          => 'D'
78508          , p_gain_or_loss_flag          => 'N'
78509          , p_gl_transfer_mode_code      => 'D'
78510          , p_acct_entry_type_code       => 'A'
78511          , p_switch_side_flag           => 'Y'
78512          , p_merge_duplicate_code       => 'W'
78513          );
78514    --
78515    l_acc_rev_natural_side_code := 'C';  -- 4262811
78516    -- 
78517    --
78518    -- set accounting line type info
78519    --
78520    xla_ae_lines_pkg.SetAcctLineType
78521       (p_component_type             => l_component_type
78522       ,p_event_type_code            => l_event_type_code
78523       ,p_line_definition_owner_code => l_line_definition_owner_code
78524       ,p_line_definition_code       => l_line_definition_code
78525       ,p_accounting_line_code       => l_component_code
78526       ,p_accounting_line_type_code  => l_component_type_code
78527       ,p_accounting_line_appl_id    => l_component_appl_id
78528       ,p_amb_context_code           => l_amb_context_code
78529       ,p_entity_code                => l_entity_code
78530       ,p_event_class_code           => l_event_class_code);
78531    --
78532    -- set accounting class
78533    --
78534    xla_ae_lines_pkg.SetAcctClass(
78535            p_accounting_class_code  => 'INTERORG_PAYABLES'
78536          , p_ae_header_id           => l_ae_header_id
78537          );
78538 
78539    --
78540    -- set rounding class
78541    --
78542    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
78543                       'INTERORG_PAYABLES';
78544 
78545    --
78546    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
78547    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
78548    --
78549    -- bulk performance
78550    --
78551    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
78552 
78553    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
78554       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
78555 
78556    -- 4955764
78557    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78558       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
78559 
78560    -- 4458381 Public Sector Enh
78561    
78562    --
78563    -- set accounting attributes for the line type
78564    --
78565    l_entered_amt_idx := 3;
78566    l_accted_amt_idx  := 8;
78567    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
78568    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
78569    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
78570    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
78571    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
78572    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
78573    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
78574    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
78575    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
78576    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
78577    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
78578    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
78579    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
78580    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
78581    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
78582    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
78583    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
78584 
78585    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
78586    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
78587 
78588    ---------------------------------------------------------------------------------------------------------------
78589    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
78590    ---------------------------------------------------------------------------------------------------------------
78591    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
78592 
78593    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78594    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78595 
78596    IF xla_accounting_cache_pkg.GetValueChar
78597          (p_source_code         => 'LEDGER_CATEGORY_CODE'
78598          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
78599    AND l_bflow_method_code = 'PRIOR_ENTRY'
78603        )
78600 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
78601    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
78602          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
78604    THEN
78605          xla_ae_lines_pkg.BflowUpgEntry
78606            (p_business_method_code    => l_bflow_method_code
78607            ,p_business_class_code     => l_bflow_class_code
78608            ,p_balance_type            => l_balance_type_code);
78609    ELSE
78610       NULL;
78611 -- No business flow processing for business flow method of NONE.
78612    END IF;
78613 
78614    --
78615    -- call analytical criteria
78616    --
78617    
78618    --
78619    -- call description
78620    --
78621    -- No description or it is inherited.
78622    --
78623    -- call ADRs
78624    -- Bug 4922099
78625    --
78626    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78627         (NVL(l_actual_upg_option, 'N') = 'O') OR
78628         (NVL(l_enc_upg_option, 'N') = 'O')
78629       )
78630    THEN
78631    NULL;
78632    --
78633    --
78634    
78635   l_ccid := AcctDerRule_20(
78636            p_application_id           => p_application_id
78637          , p_ae_header_id             => l_ae_header_id 
78638 , p_source_1 => p_source_1
78639 , p_source_2 => p_source_2
78640          , x_transaction_coa_id       => l_adr_transaction_coa_id
78641          , x_accounting_coa_id        => l_adr_accounting_coa_id
78642          , x_value_type_code          => l_adr_value_type_code
78643          , p_side                     => 'NA'
78644    );
78645 
78646    xla_ae_lines_pkg.set_ccid(
78647     p_code_combination_id          => l_ccid
78648   , p_value_type_code              => l_adr_value_type_code
78649   , p_transaction_coa_id           => l_adr_transaction_coa_id
78650   , p_accounting_coa_id            => l_adr_accounting_coa_id
78651   , p_adr_code                     => 'IOP'
78652   , p_adr_type_code                => 'S'
78653   , p_component_type               => l_component_type
78654   , p_component_code               => l_component_code
78655   , p_component_type_code          => l_component_type_code
78656   , p_component_appl_id            => l_component_appl_id
78657   , p_amb_context_code             => l_amb_context_code
78658   , p_side                         => 'NA'
78659   );
78660 
78661 
78662    --
78663    --
78664    END IF;
78665    --
78666    -- Bug 4922099
78667    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
78668           (NVL(l_enc_upg_option, 'N') = 'O')
78669         ) AND
78670         (l_bflow_method_code = 'PRIOR_ENTRY')
78671       )
78672    THEN
78673       IF
78674       --
78675       1 = 2
78676       --
78677       THEN
78678       xla_accounting_err_pkg.build_message
78679                                     (p_appli_s_name            => 'XLA'
78680                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78681                                     ,p_token_1                 => 'LINE_NUMBER'
78682                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
78683                                     ,p_token_2                 => 'LINE_TYPE_NAME'
78684                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
78685                                                                              l_component_type
78686                                                                             ,l_component_code
78687                                                                             ,l_component_type_code
78688                                                                             ,l_component_appl_id
78689                                                                             ,l_amb_context_code
78690                                                                             ,l_entity_code
78691                                                                             ,l_event_class_code
78692                                                                            )
78693                                     ,p_token_3                 => 'OWNER'
78694                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
78695                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
78696                                                                           ,p_lookup_code    => l_component_type_code
78697                                                                          )
78698                                     ,p_token_4                 => 'PRODUCT_NAME'
78699                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
78700                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
78701                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
78702                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
78703                                     ,p_ae_header_id            =>  NULL
78704                                        );
78705 
78706         IF (C_LEVEL_ERROR>= g_log_level) THEN
78707                  trace
78708                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78709                       ,p_level    => C_LEVEL_ERROR
78710                       ,p_module   => l_log_module);
78711         END IF;
78712       END IF;
78716    ------------------------------------------------------------------------------------------------
78713    END IF;
78714    --
78715    --
78717    -- 4219869 Business Flow
78718    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
78719    -- Prior Entry.  Currently, the following code is always generated.
78720    ------------------------------------------------------------------------------------------------
78721    XLA_AE_LINES_PKG.ValidateCurrentLine;
78722 
78723    ------------------------------------------------------------------------------------
78724    -- 4219869 Business Flow
78725    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
78726    ------------------------------------------------------------------------------------
78727    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78728 
78729    ----------------------------------------------------------------------------------
78730    -- 4219869 Business Flow
78731    -- Update journal entry status -- Need to generate this within IF <condition>
78732    ----------------------------------------------------------------------------------
78733    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78734          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
78735          ,p_balance_type_code => l_balance_type_code
78736          );
78737 
78738    -------------------------------------------------------------------------------------------
78739    -- 4262811 - Generate the Accrual Reversal lines
78740    -------------------------------------------------------------------------------------------
78741    BEGIN
78742       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
78743                               (g_array_event(p_event_id).array_value_num('header_index'));
78744       IF l_acc_rev_flag IS NULL THEN
78745          l_acc_rev_flag := 'N';
78746       END IF;
78747    EXCEPTION
78748       WHEN OTHERS THEN
78749          l_acc_rev_flag := 'N';
78750    END;
78751    --
78752    IF (l_acc_rev_flag = 'Y') THEN
78753 
78754        -- 4645092  ------------------------------------------------------------------------------
78755        -- To allow MPA report to determine if it should generate report process
78756        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
78757        ------------------------------------------------------------------------------------------
78758 
78759        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
78760        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
78761    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
78762    -- call ADRs
78763    -- Bug 4922099
78764    --
78765    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78766         (NVL(l_actual_upg_option, 'N') = 'O') OR
78767         (NVL(l_enc_upg_option, 'N') = 'O')
78768       )
78769    THEN
78770    NULL;
78771    --
78772    --
78773    
78774   l_ccid := AcctDerRule_20(
78775            p_application_id           => p_application_id
78776          , p_ae_header_id             => l_ae_header_id 
78777 , p_source_1 => p_source_1
78778 , p_source_2 => p_source_2
78779          , x_transaction_coa_id       => l_adr_transaction_coa_id
78780          , x_accounting_coa_id        => l_adr_accounting_coa_id
78781          , x_value_type_code          => l_adr_value_type_code
78782          , p_side                     => 'NA'
78783    );
78784 
78785    xla_ae_lines_pkg.set_ccid(
78786     p_code_combination_id          => l_ccid
78787   , p_value_type_code              => l_adr_value_type_code
78788   , p_transaction_coa_id           => l_adr_transaction_coa_id
78789   , p_accounting_coa_id            => l_adr_accounting_coa_id
78790   , p_adr_code                     => 'IOP'
78791   , p_adr_type_code                => 'S'
78792   , p_component_type               => l_component_type
78793   , p_component_code               => l_component_code
78794   , p_component_type_code          => l_component_type_code
78795   , p_component_appl_id            => l_component_appl_id
78796   , p_amb_context_code             => l_amb_context_code
78797   , p_side                         => 'NA'
78798   );
78799 
78800 
78801    --
78802    --
78803    END IF;
78804 
78805        --
78806        -- Update the line information that should be overwritten
78807        --
78808        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
78809                                          p_header_num   => 1);
78810        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
78811 
78812        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
78813 
78814        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
78815           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
78816        END IF;
78817 
78818       --
78819       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
78820       --
78821       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
78822           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
78823       ELSE
78824           ---------------------------------------------------------------------------------------------------
78825           -- 4262811a Switch Sign
78829                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78826           ---------------------------------------------------------------------------------------------------
78827           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
78828           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78830           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78831                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78832           -- 5132302
78833           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
78834                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78835 
78836       END IF;
78837 
78838       -- 4955764
78839       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78840       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
78841 
78842 
78843       XLA_AE_LINES_PKG.ValidateCurrentLine;
78844       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78845 
78846       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78847                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
78848                ,p_balance_type_code => l_balance_type_code);
78849 
78850    END IF;
78851 
78852    -----------------------------------------------------------------------------------------
78853    -- 4262811 Multiperiod Accounting
78854    -----------------------------------------------------------------------------------------
78855      -- No MPA option is assigned.
78856 
78857 
78858 END IF;
78859 END IF;
78860 --
78861 
78862 --
78863 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78864    trace
78865       (p_msg      => 'END of AcctLineType_174'
78866       ,p_level    => C_LEVEL_PROCEDURE
78867       ,p_module   => l_log_module);
78868 END IF;
78869 --
78870 EXCEPTION
78871   WHEN xla_exceptions_pkg.application_exception THEN
78872       RAISE;
78873   WHEN OTHERS THEN
78874        xla_exceptions_pkg.raise_message
78875            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_174');
78876 END AcctLineType_174;
78877 --
78878 
78879 ---------------------------------------
78880 --
78881 -- PRIVATE FUNCTION
78882 --         AcctLineType_175
78883 --
78884 ---------------------------------------
78885 PROCEDURE AcctLineType_175 (
78886   p_application_id        IN NUMBER
78887  ,p_event_id              IN NUMBER
78888  ,p_calculate_acctd_flag  IN VARCHAR2
78889  ,p_calculate_g_l_flag    IN VARCHAR2
78890  ,p_actual_flag           IN OUT VARCHAR2
78891  ,p_balance_type_code     OUT VARCHAR2
78892  ,p_gain_or_loss_ref      OUT VARCHAR2
78893  
78894 --Transaction Account
78895  , p_source_1            IN NUMBER
78896 --Journal Line Type
78897  , p_source_2            IN VARCHAR2
78898 --Entered Amount
78899  , p_source_3            IN NUMBER
78900 --First Distribution Identifier
78901  , p_source_5            IN NUMBER
78902 --Distribution Type
78903  , p_source_6            IN VARCHAR2
78904 --Currency Code
78905  , p_source_7            IN VARCHAR2
78906 --Currency Conversion Date
78907  , p_source_8            IN DATE
78908 --Currency Conversion Rate
78909  , p_source_9            IN NUMBER
78910 --Currency Conversion Type
78911  , p_source_10            IN VARCHAR2
78912 --Accounted Amount
78913  , p_source_11            IN NUMBER
78914 )
78915 IS
78916 
78917 l_component_type              VARCHAR2(80);
78918 l_component_code              VARCHAR2(30);
78919 l_component_type_code         VARCHAR2(1);
78920 l_component_appl_id           INTEGER;
78921 l_amb_context_code            VARCHAR2(30);
78922 l_entity_code                 VARCHAR2(30);
78923 l_event_class_code            VARCHAR2(30);
78924 l_ae_header_id                NUMBER;
78925 l_event_type_code             VARCHAR2(30);
78926 l_line_definition_code        VARCHAR2(30);
78927 l_line_definition_owner_code  VARCHAR2(1);
78928 --
78929 -- adr variables
78930 l_segment                     VARCHAR2(30);
78931 l_ccid                        NUMBER;
78932 l_adr_transaction_coa_id      NUMBER;
78933 l_adr_accounting_coa_id       NUMBER;
78934 l_adr_flexfield_segment_code  VARCHAR2(30);
78935 l_adr_flex_value_set_id       NUMBER;
78936 l_adr_value_type_code         VARCHAR2(30);
78937 l_adr_value_combination_id    NUMBER;
78938 l_adr_value_segment_code      VARCHAR2(30);
78939 
78940 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
78941 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
78942 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
78943 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
78944 
78945 -- 4262811 Variables ------------------------------------------------------------------------------------------
78946 l_entered_amt_idx             NUMBER;
78947 l_accted_amt_idx              NUMBER;
78948 l_acc_rev_flag                VARCHAR2(1);
78949 l_accrual_line_num            NUMBER;
78950 l_tmp_amt                     NUMBER;
78951 l_acc_rev_natural_side_code   VARCHAR2(1);
78952 
78953 l_num_entries                 NUMBER;
78957 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
78954 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
78955 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
78956 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
78958 l_recog_line_1                NUMBER;
78959 l_recog_line_2                NUMBER;
78960 
78961 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
78962 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
78963 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
78964 
78965 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
78966 
78967 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
78968 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
78969 
78970 ---------------------------------------------------------------------------------------------------------------
78971 
78972 
78973 --
78974 -- bulk performance
78975 --
78976 l_balance_type_code           VARCHAR2(1);
78977 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
78978 l_log_module                  VARCHAR2(240);
78979 
78980 --
78981 -- Upgrade strategy
78982 --
78983 l_actual_upg_option           VARCHAR2(1);
78984 l_enc_upg_option           VARCHAR2(1);
78985 
78986 --
78987 BEGIN
78988 --
78989 IF g_log_enabled THEN
78990       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_175';
78991 END IF;
78992 --
78993 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78994 
78995       trace
78996          (p_msg      => 'BEGIN of AcctLineType_175'
78997          ,p_level    => C_LEVEL_PROCEDURE
78998          ,p_module   => l_log_module);
78999 
79000 END IF;
79001 --
79002 l_component_type             := 'AMB_JLT';
79003 l_component_code             := 'IOP';
79004 l_component_type_code        := 'S';
79005 l_component_appl_id          :=  555;
79006 l_amb_context_code           := 'DEFAULT';
79007 l_entity_code                := 'INVENTORY';
79008 l_event_class_code           := 'DIR_INTERORG_RCPT';
79009 l_event_type_code            := 'DIR_INTERORG_RCPT';
79010 l_line_definition_owner_code := 'S';
79011 l_line_definition_code       := 'DIRECT_XFER_RECV';
79012 --
79013 l_balance_type_code          := 'A';
79014 l_segment                     := NULL;
79015 l_ccid                        := NULL;
79016 l_adr_transaction_coa_id      := NULL;
79017 l_adr_accounting_coa_id       := NULL;
79018 l_adr_flexfield_segment_code  := NULL;
79019 l_adr_flex_value_set_id       := NULL;
79020 l_adr_value_type_code         := NULL;
79021 l_adr_value_combination_id    := NULL;
79022 l_adr_value_segment_code      := NULL;
79023 
79024 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
79025 l_bflow_class_code           := '';    -- 4219869 Business Flow
79026 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
79027 l_budgetary_control_flag     := 'N';
79028 
79029 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
79030 l_bflow_applied_to_amt       := NULL; -- 5132302
79031 l_entered_amt_idx            := NULL;          -- 4262811
79032 l_accted_amt_idx             := NULL;          -- 4262811
79033 l_acc_rev_flag               := NULL;          -- 4262811
79034 l_accrual_line_num           := NULL;          -- 4262811
79035 l_tmp_amt                    := NULL;          -- 4262811
79036 --
79037  
79038 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
79039     l_balance_type_code <> 'B' THEN
79040 IF NVL(p_source_2,'
79041 ') =  'IOP'
79042  THEN 
79043 
79044    --
79045    XLA_AE_LINES_PKG.SetNewLine;
79046 
79047    p_balance_type_code          := l_balance_type_code;
79048    -- set the flag so later we will know whether the gain loss line needs to be created
79049    
79050    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
79051      p_actual_flag :='A';
79052    END IF;
79053 
79054    --
79055    -- bulk performance
79056    --
79057    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
79058                                       p_header_num   => 0); -- 4262811
79059    --
79060    -- set accounting line options
79061    --
79062    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
79063            p_natural_side_code          => 'D'
79064          , p_gain_or_loss_flag          => 'N'
79065          , p_gl_transfer_mode_code      => 'D'
79066          , p_acct_entry_type_code       => 'A'
79067          , p_switch_side_flag           => 'Y'
79068          , p_merge_duplicate_code       => 'W'
79069          );
79070    --
79071    l_acc_rev_natural_side_code := 'C';  -- 4262811
79072    -- 
79073    --
79074    -- set accounting line type info
79075    --
79076    xla_ae_lines_pkg.SetAcctLineType
79077       (p_component_type             => l_component_type
79078       ,p_event_type_code            => l_event_type_code
79079       ,p_line_definition_owner_code => l_line_definition_owner_code
79080       ,p_line_definition_code       => l_line_definition_code
79081       ,p_accounting_line_code       => l_component_code
79082       ,p_accounting_line_type_code  => l_component_type_code
79083       ,p_accounting_line_appl_id    => l_component_appl_id
79087    --
79084       ,p_amb_context_code           => l_amb_context_code
79085       ,p_entity_code                => l_entity_code
79086       ,p_event_class_code           => l_event_class_code);
79088    -- set accounting class
79089    --
79090    xla_ae_lines_pkg.SetAcctClass(
79091            p_accounting_class_code  => 'INTERORG_PAYABLES'
79092          , p_ae_header_id           => l_ae_header_id
79093          );
79094 
79095    --
79096    -- set rounding class
79097    --
79098    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
79099                       'INTERORG_PAYABLES';
79100 
79101    --
79102    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
79103    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
79104    --
79105    -- bulk performance
79106    --
79107    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
79108 
79109    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
79110       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
79111 
79112    -- 4955764
79113    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79114       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
79115 
79116    -- 4458381 Public Sector Enh
79117    
79118    --
79119    -- set accounting attributes for the line type
79120    --
79121    l_entered_amt_idx := 3;
79122    l_accted_amt_idx  := 8;
79123    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
79124    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
79125    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
79126    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
79127    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
79128    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
79129    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
79130    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
79131    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
79132    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
79133    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
79134    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
79135    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
79136    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
79137    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
79138    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
79139    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
79140 
79141    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
79142    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
79143 
79144    ---------------------------------------------------------------------------------------------------------------
79145    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
79146    ---------------------------------------------------------------------------------------------------------------
79147    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
79148 
79149    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79150    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79151 
79152    IF xla_accounting_cache_pkg.GetValueChar
79153          (p_source_code         => 'LEDGER_CATEGORY_CODE'
79154          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
79155    AND l_bflow_method_code = 'PRIOR_ENTRY'
79156 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
79157    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
79158          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
79159        )
79160    THEN
79161          xla_ae_lines_pkg.BflowUpgEntry
79162            (p_business_method_code    => l_bflow_method_code
79163            ,p_business_class_code     => l_bflow_class_code
79164            ,p_balance_type            => l_balance_type_code);
79165    ELSE
79166       NULL;
79167 -- No business flow processing for business flow method of NONE.
79168    END IF;
79169 
79170    --
79171    -- call analytical criteria
79172    --
79173    
79174    --
79175    -- call description
79176    --
79177    -- No description or it is inherited.
79178    --
79179    -- call ADRs
79180    -- Bug 4922099
79181    --
79182    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
79183         (NVL(l_actual_upg_option, 'N') = 'O') OR
79184         (NVL(l_enc_upg_option, 'N') = 'O')
79185       )
79186    THEN
79187    NULL;
79188    --
79189    --
79190    
79191   l_ccid := AcctDerRule_20(
79192            p_application_id           => p_application_id
79193          , p_ae_header_id             => l_ae_header_id 
79194 , p_source_1 => p_source_1
79195 , p_source_2 => p_source_2
79196          , x_transaction_coa_id       => l_adr_transaction_coa_id
79197          , x_accounting_coa_id        => l_adr_accounting_coa_id
79198          , x_value_type_code          => l_adr_value_type_code
79199          , p_side                     => 'NA'
79200    );
79201 
79202    xla_ae_lines_pkg.set_ccid(
79206   , p_accounting_coa_id            => l_adr_accounting_coa_id
79203     p_code_combination_id          => l_ccid
79204   , p_value_type_code              => l_adr_value_type_code
79205   , p_transaction_coa_id           => l_adr_transaction_coa_id
79207   , p_adr_code                     => 'IOP'
79208   , p_adr_type_code                => 'S'
79209   , p_component_type               => l_component_type
79210   , p_component_code               => l_component_code
79211   , p_component_type_code          => l_component_type_code
79212   , p_component_appl_id            => l_component_appl_id
79213   , p_amb_context_code             => l_amb_context_code
79214   , p_side                         => 'NA'
79215   );
79216 
79217 
79218    --
79219    --
79220    END IF;
79221    --
79222    -- Bug 4922099
79223    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
79224           (NVL(l_enc_upg_option, 'N') = 'O')
79225         ) AND
79226         (l_bflow_method_code = 'PRIOR_ENTRY')
79227       )
79228    THEN
79229       IF
79230       --
79231       1 = 2
79232       --
79233       THEN
79234       xla_accounting_err_pkg.build_message
79235                                     (p_appli_s_name            => 'XLA'
79236                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79237                                     ,p_token_1                 => 'LINE_NUMBER'
79238                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
79239                                     ,p_token_2                 => 'LINE_TYPE_NAME'
79240                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
79241                                                                              l_component_type
79242                                                                             ,l_component_code
79243                                                                             ,l_component_type_code
79244                                                                             ,l_component_appl_id
79245                                                                             ,l_amb_context_code
79246                                                                             ,l_entity_code
79247                                                                             ,l_event_class_code
79248                                                                            )
79249                                     ,p_token_3                 => 'OWNER'
79250                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
79251                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
79252                                                                           ,p_lookup_code    => l_component_type_code
79253                                                                          )
79254                                     ,p_token_4                 => 'PRODUCT_NAME'
79255                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
79256                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
79257                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
79258                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
79259                                     ,p_ae_header_id            =>  NULL
79260                                        );
79261 
79262         IF (C_LEVEL_ERROR>= g_log_level) THEN
79263                  trace
79264                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79265                       ,p_level    => C_LEVEL_ERROR
79266                       ,p_module   => l_log_module);
79267         END IF;
79268       END IF;
79269    END IF;
79270    --
79271    --
79272    ------------------------------------------------------------------------------------------------
79273    -- 4219869 Business Flow
79274    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
79275    -- Prior Entry.  Currently, the following code is always generated.
79276    ------------------------------------------------------------------------------------------------
79277    XLA_AE_LINES_PKG.ValidateCurrentLine;
79278 
79279    ------------------------------------------------------------------------------------
79280    -- 4219869 Business Flow
79281    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
79282    ------------------------------------------------------------------------------------
79283    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
79284 
79285    ----------------------------------------------------------------------------------
79286    -- 4219869 Business Flow
79287    -- Update journal entry status -- Need to generate this within IF <condition>
79288    ----------------------------------------------------------------------------------
79289    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
79290          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
79291          ,p_balance_type_code => l_balance_type_code
79292          );
79293 
79294    -------------------------------------------------------------------------------------------
79295    -- 4262811 - Generate the Accrual Reversal lines
79296    -------------------------------------------------------------------------------------------
79297    BEGIN
79301          l_acc_rev_flag := 'N';
79298       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
79299                               (g_array_event(p_event_id).array_value_num('header_index'));
79300       IF l_acc_rev_flag IS NULL THEN
79302       END IF;
79303    EXCEPTION
79304       WHEN OTHERS THEN
79305          l_acc_rev_flag := 'N';
79306    END;
79307    --
79308    IF (l_acc_rev_flag = 'Y') THEN
79309 
79310        -- 4645092  ------------------------------------------------------------------------------
79311        -- To allow MPA report to determine if it should generate report process
79312        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
79313        ------------------------------------------------------------------------------------------
79314 
79315        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
79316        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
79317    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
79318    -- call ADRs
79319    -- Bug 4922099
79320    --
79321    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
79322         (NVL(l_actual_upg_option, 'N') = 'O') OR
79323         (NVL(l_enc_upg_option, 'N') = 'O')
79324       )
79325    THEN
79326    NULL;
79327    --
79328    --
79329    
79330   l_ccid := AcctDerRule_20(
79331            p_application_id           => p_application_id
79332          , p_ae_header_id             => l_ae_header_id 
79333 , p_source_1 => p_source_1
79334 , p_source_2 => p_source_2
79335          , x_transaction_coa_id       => l_adr_transaction_coa_id
79336          , x_accounting_coa_id        => l_adr_accounting_coa_id
79337          , x_value_type_code          => l_adr_value_type_code
79338          , p_side                     => 'NA'
79339    );
79340 
79341    xla_ae_lines_pkg.set_ccid(
79342     p_code_combination_id          => l_ccid
79343   , p_value_type_code              => l_adr_value_type_code
79344   , p_transaction_coa_id           => l_adr_transaction_coa_id
79345   , p_accounting_coa_id            => l_adr_accounting_coa_id
79346   , p_adr_code                     => 'IOP'
79347   , p_adr_type_code                => 'S'
79348   , p_component_type               => l_component_type
79349   , p_component_code               => l_component_code
79350   , p_component_type_code          => l_component_type_code
79351   , p_component_appl_id            => l_component_appl_id
79352   , p_amb_context_code             => l_amb_context_code
79353   , p_side                         => 'NA'
79354   );
79355 
79356 
79357    --
79358    --
79359    END IF;
79360 
79361        --
79362        -- Update the line information that should be overwritten
79363        --
79364        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
79365                                          p_header_num   => 1);
79366        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
79367 
79368        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
79369 
79370        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
79371           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
79372        END IF;
79373 
79374       --
79375       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
79376       --
79377       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
79378           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
79379       ELSE
79380           ---------------------------------------------------------------------------------------------------
79381           -- 4262811a Switch Sign
79382           ---------------------------------------------------------------------------------------------------
79383           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
79384           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
79385                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79386           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
79387                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79388           -- 5132302
79389           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
79390                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79391 
79392       END IF;
79393 
79394       -- 4955764
79395       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79396       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
79397 
79398 
79399       XLA_AE_LINES_PKG.ValidateCurrentLine;
79400       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
79401 
79402       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
79403                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
79404                ,p_balance_type_code => l_balance_type_code);
79405 
79406    END IF;
79407 
79411      -- No MPA option is assigned.
79408    -----------------------------------------------------------------------------------------
79409    -- 4262811 Multiperiod Accounting
79410    -----------------------------------------------------------------------------------------
79412 
79413 
79414 END IF;
79415 END IF;
79416 --
79417 
79418 --
79419 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79420    trace
79421       (p_msg      => 'END of AcctLineType_175'
79422       ,p_level    => C_LEVEL_PROCEDURE
79423       ,p_module   => l_log_module);
79424 END IF;
79425 --
79426 EXCEPTION
79427   WHEN xla_exceptions_pkg.application_exception THEN
79428       RAISE;
79429   WHEN OTHERS THEN
79430        xla_exceptions_pkg.raise_message
79431            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_175');
79432 END AcctLineType_175;
79433 --
79434 
79435 ---------------------------------------
79436 --
79437 -- PRIVATE FUNCTION
79438 --         AcctLineType_176
79439 --
79440 ---------------------------------------
79441 PROCEDURE AcctLineType_176 (
79442   p_application_id        IN NUMBER
79443  ,p_event_id              IN NUMBER
79444  ,p_calculate_acctd_flag  IN VARCHAR2
79445  ,p_calculate_g_l_flag    IN VARCHAR2
79446  ,p_actual_flag           IN OUT VARCHAR2
79447  ,p_balance_type_code     OUT VARCHAR2
79448  ,p_gain_or_loss_ref      OUT VARCHAR2
79449  
79450 --Transaction Account
79451  , p_source_1            IN NUMBER
79452 --Journal Line Type
79453  , p_source_2            IN VARCHAR2
79454 --Entered Amount
79455  , p_source_3            IN NUMBER
79456 --First Distribution Identifier
79457  , p_source_5            IN NUMBER
79458 --Distribution Type
79459  , p_source_6            IN VARCHAR2
79460 --Currency Code
79461  , p_source_7            IN VARCHAR2
79462 --Currency Conversion Date
79463  , p_source_8            IN DATE
79464 --Currency Conversion Rate
79465  , p_source_9            IN NUMBER
79466 --Currency Conversion Type
79467  , p_source_10            IN VARCHAR2
79468 --Accounted Amount
79469  , p_source_11            IN NUMBER
79470 )
79471 IS
79472 
79473 l_component_type              VARCHAR2(80);
79474 l_component_code              VARCHAR2(30);
79475 l_component_type_code         VARCHAR2(1);
79476 l_component_appl_id           INTEGER;
79477 l_amb_context_code            VARCHAR2(30);
79478 l_entity_code                 VARCHAR2(30);
79479 l_event_class_code            VARCHAR2(30);
79480 l_ae_header_id                NUMBER;
79481 l_event_type_code             VARCHAR2(30);
79482 l_line_definition_code        VARCHAR2(30);
79483 l_line_definition_owner_code  VARCHAR2(1);
79484 --
79485 -- adr variables
79486 l_segment                     VARCHAR2(30);
79487 l_ccid                        NUMBER;
79488 l_adr_transaction_coa_id      NUMBER;
79489 l_adr_accounting_coa_id       NUMBER;
79490 l_adr_flexfield_segment_code  VARCHAR2(30);
79491 l_adr_flex_value_set_id       NUMBER;
79492 l_adr_value_type_code         VARCHAR2(30);
79493 l_adr_value_combination_id    NUMBER;
79494 l_adr_value_segment_code      VARCHAR2(30);
79495 
79496 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
79497 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
79498 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
79499 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
79500 
79501 -- 4262811 Variables ------------------------------------------------------------------------------------------
79502 l_entered_amt_idx             NUMBER;
79503 l_accted_amt_idx              NUMBER;
79504 l_acc_rev_flag                VARCHAR2(1);
79505 l_accrual_line_num            NUMBER;
79506 l_tmp_amt                     NUMBER;
79507 l_acc_rev_natural_side_code   VARCHAR2(1);
79508 
79509 l_num_entries                 NUMBER;
79510 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
79511 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
79512 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
79513 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
79514 l_recog_line_1                NUMBER;
79515 l_recog_line_2                NUMBER;
79516 
79517 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
79518 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
79519 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
79520 
79521 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
79522 
79523 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
79524 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
79525 
79526 ---------------------------------------------------------------------------------------------------------------
79527 
79528 
79529 --
79530 -- bulk performance
79531 --
79532 l_balance_type_code           VARCHAR2(1);
79533 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
79534 l_log_module                  VARCHAR2(240);
79535 
79536 --
79537 -- Upgrade strategy
79538 --
79539 l_actual_upg_option           VARCHAR2(1);
79540 l_enc_upg_option           VARCHAR2(1);
79541 
79542 --
79543 BEGIN
79544 --
79548 --
79545 IF g_log_enabled THEN
79546       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_176';
79547 END IF;
79549 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79550 
79551       trace
79552          (p_msg      => 'BEGIN of AcctLineType_176'
79553          ,p_level    => C_LEVEL_PROCEDURE
79554          ,p_module   => l_log_module);
79555 
79556 END IF;
79557 --
79558 l_component_type             := 'AMB_JLT';
79559 l_component_code             := 'IOP';
79560 l_component_type_code        := 'S';
79561 l_component_appl_id          :=  555;
79562 l_amb_context_code           := 'DEFAULT';
79563 l_entity_code                := 'INVENTORY';
79564 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
79565 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_TP';
79566 l_line_definition_owner_code := 'S';
79567 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT_TP';
79568 --
79569 l_balance_type_code          := 'A';
79570 l_segment                     := NULL;
79571 l_ccid                        := NULL;
79572 l_adr_transaction_coa_id      := NULL;
79573 l_adr_accounting_coa_id       := NULL;
79574 l_adr_flexfield_segment_code  := NULL;
79575 l_adr_flex_value_set_id       := NULL;
79576 l_adr_value_type_code         := NULL;
79577 l_adr_value_combination_id    := NULL;
79578 l_adr_value_segment_code      := NULL;
79579 
79580 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
79581 l_bflow_class_code           := '';    -- 4219869 Business Flow
79582 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
79583 l_budgetary_control_flag     := 'N';
79584 
79585 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
79586 l_bflow_applied_to_amt       := NULL; -- 5132302
79587 l_entered_amt_idx            := NULL;          -- 4262811
79588 l_accted_amt_idx             := NULL;          -- 4262811
79589 l_acc_rev_flag               := NULL;          -- 4262811
79590 l_accrual_line_num           := NULL;          -- 4262811
79591 l_tmp_amt                    := NULL;          -- 4262811
79592 --
79593  
79594 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
79595     l_balance_type_code <> 'B' THEN
79596 IF NVL(p_source_2,'
79597 ') =  'IOP'
79598  THEN 
79599 
79600    --
79601    XLA_AE_LINES_PKG.SetNewLine;
79602 
79603    p_balance_type_code          := l_balance_type_code;
79604    -- set the flag so later we will know whether the gain loss line needs to be created
79605    
79606    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
79607      p_actual_flag :='A';
79608    END IF;
79609 
79610    --
79611    -- bulk performance
79612    --
79613    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
79614                                       p_header_num   => 0); -- 4262811
79615    --
79616    -- set accounting line options
79617    --
79618    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
79619            p_natural_side_code          => 'D'
79620          , p_gain_or_loss_flag          => 'N'
79621          , p_gl_transfer_mode_code      => 'D'
79622          , p_acct_entry_type_code       => 'A'
79623          , p_switch_side_flag           => 'Y'
79624          , p_merge_duplicate_code       => 'W'
79625          );
79626    --
79627    l_acc_rev_natural_side_code := 'C';  -- 4262811
79628    -- 
79629    --
79630    -- set accounting line type info
79631    --
79632    xla_ae_lines_pkg.SetAcctLineType
79633       (p_component_type             => l_component_type
79634       ,p_event_type_code            => l_event_type_code
79635       ,p_line_definition_owner_code => l_line_definition_owner_code
79636       ,p_line_definition_code       => l_line_definition_code
79637       ,p_accounting_line_code       => l_component_code
79638       ,p_accounting_line_type_code  => l_component_type_code
79639       ,p_accounting_line_appl_id    => l_component_appl_id
79640       ,p_amb_context_code           => l_amb_context_code
79641       ,p_entity_code                => l_entity_code
79642       ,p_event_class_code           => l_event_class_code);
79643    --
79644    -- set accounting class
79645    --
79646    xla_ae_lines_pkg.SetAcctClass(
79647            p_accounting_class_code  => 'INTERORG_PAYABLES'
79648          , p_ae_header_id           => l_ae_header_id
79649          );
79650 
79651    --
79652    -- set rounding class
79653    --
79654    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
79655                       'INTERORG_PAYABLES';
79656 
79657    --
79658    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
79659    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
79660    --
79661    -- bulk performance
79662    --
79663    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
79664 
79665    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
79666       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
79667 
79668    -- 4955764
79669    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79670       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
79671 
79672    -- 4458381 Public Sector Enh
79673    
79674    --
79675    -- set accounting attributes for the line type
79676    --
79680    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
79677    l_entered_amt_idx := 3;
79678    l_accted_amt_idx  := 8;
79679    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
79681    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
79682    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
79683    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
79684    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
79685    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
79686    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
79687    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
79688    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
79689    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
79690    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
79691    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
79692    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
79693    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
79694    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
79695    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
79696 
79697    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
79698    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
79699 
79700    ---------------------------------------------------------------------------------------------------------------
79701    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
79702    ---------------------------------------------------------------------------------------------------------------
79703    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
79704 
79705    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79706    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79707 
79708    IF xla_accounting_cache_pkg.GetValueChar
79709          (p_source_code         => 'LEDGER_CATEGORY_CODE'
79710          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
79711    AND l_bflow_method_code = 'PRIOR_ENTRY'
79712 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
79713    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
79714          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
79715        )
79716    THEN
79717          xla_ae_lines_pkg.BflowUpgEntry
79718            (p_business_method_code    => l_bflow_method_code
79719            ,p_business_class_code     => l_bflow_class_code
79720            ,p_balance_type            => l_balance_type_code);
79721    ELSE
79722       NULL;
79723 -- No business flow processing for business flow method of NONE.
79724    END IF;
79725 
79726    --
79727    -- call analytical criteria
79728    --
79729    
79730    --
79731    -- call description
79732    --
79733    -- No description or it is inherited.
79734    --
79735    -- call ADRs
79736    -- Bug 4922099
79737    --
79738    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
79739         (NVL(l_actual_upg_option, 'N') = 'O') OR
79740         (NVL(l_enc_upg_option, 'N') = 'O')
79741       )
79742    THEN
79743    NULL;
79744    --
79745    --
79746    
79747   l_ccid := AcctDerRule_20(
79748            p_application_id           => p_application_id
79749          , p_ae_header_id             => l_ae_header_id 
79750 , p_source_1 => p_source_1
79751 , p_source_2 => p_source_2
79752          , x_transaction_coa_id       => l_adr_transaction_coa_id
79753          , x_accounting_coa_id        => l_adr_accounting_coa_id
79754          , x_value_type_code          => l_adr_value_type_code
79755          , p_side                     => 'NA'
79756    );
79757 
79758    xla_ae_lines_pkg.set_ccid(
79759     p_code_combination_id          => l_ccid
79760   , p_value_type_code              => l_adr_value_type_code
79761   , p_transaction_coa_id           => l_adr_transaction_coa_id
79762   , p_accounting_coa_id            => l_adr_accounting_coa_id
79763   , p_adr_code                     => 'IOP'
79764   , p_adr_type_code                => 'S'
79765   , p_component_type               => l_component_type
79766   , p_component_code               => l_component_code
79767   , p_component_type_code          => l_component_type_code
79768   , p_component_appl_id            => l_component_appl_id
79769   , p_amb_context_code             => l_amb_context_code
79770   , p_side                         => 'NA'
79771   );
79772 
79773 
79774    --
79775    --
79776    END IF;
79777    --
79778    -- Bug 4922099
79779    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
79780           (NVL(l_enc_upg_option, 'N') = 'O')
79781         ) AND
79782         (l_bflow_method_code = 'PRIOR_ENTRY')
79783       )
79784    THEN
79785       IF
79786       --
79787       1 = 2
79788       --
79789       THEN
79790       xla_accounting_err_pkg.build_message
79791                                     (p_appli_s_name            => 'XLA'
79792                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79793                                     ,p_token_1                 => 'LINE_NUMBER'
79794                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
79798                                                                             ,l_component_code
79795                                     ,p_token_2                 => 'LINE_TYPE_NAME'
79796                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
79797                                                                              l_component_type
79799                                                                             ,l_component_type_code
79800                                                                             ,l_component_appl_id
79801                                                                             ,l_amb_context_code
79802                                                                             ,l_entity_code
79803                                                                             ,l_event_class_code
79804                                                                            )
79805                                     ,p_token_3                 => 'OWNER'
79806                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
79807                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
79808                                                                           ,p_lookup_code    => l_component_type_code
79809                                                                          )
79810                                     ,p_token_4                 => 'PRODUCT_NAME'
79811                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
79812                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
79813                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
79814                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
79815                                     ,p_ae_header_id            =>  NULL
79816                                        );
79817 
79818         IF (C_LEVEL_ERROR>= g_log_level) THEN
79819                  trace
79820                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79821                       ,p_level    => C_LEVEL_ERROR
79822                       ,p_module   => l_log_module);
79823         END IF;
79824       END IF;
79825    END IF;
79826    --
79827    --
79828    ------------------------------------------------------------------------------------------------
79829    -- 4219869 Business Flow
79830    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
79831    -- Prior Entry.  Currently, the following code is always generated.
79832    ------------------------------------------------------------------------------------------------
79833    XLA_AE_LINES_PKG.ValidateCurrentLine;
79834 
79835    ------------------------------------------------------------------------------------
79836    -- 4219869 Business Flow
79837    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
79838    ------------------------------------------------------------------------------------
79839    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
79840 
79841    ----------------------------------------------------------------------------------
79842    -- 4219869 Business Flow
79843    -- Update journal entry status -- Need to generate this within IF <condition>
79844    ----------------------------------------------------------------------------------
79845    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
79846          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
79847          ,p_balance_type_code => l_balance_type_code
79848          );
79849 
79850    -------------------------------------------------------------------------------------------
79851    -- 4262811 - Generate the Accrual Reversal lines
79852    -------------------------------------------------------------------------------------------
79853    BEGIN
79854       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
79855                               (g_array_event(p_event_id).array_value_num('header_index'));
79856       IF l_acc_rev_flag IS NULL THEN
79857          l_acc_rev_flag := 'N';
79858       END IF;
79859    EXCEPTION
79860       WHEN OTHERS THEN
79861          l_acc_rev_flag := 'N';
79862    END;
79863    --
79864    IF (l_acc_rev_flag = 'Y') THEN
79865 
79866        -- 4645092  ------------------------------------------------------------------------------
79867        -- To allow MPA report to determine if it should generate report process
79868        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
79869        ------------------------------------------------------------------------------------------
79870 
79871        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
79872        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
79873    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
79874    -- call ADRs
79875    -- Bug 4922099
79876    --
79877    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
79878         (NVL(l_actual_upg_option, 'N') = 'O') OR
79879         (NVL(l_enc_upg_option, 'N') = 'O')
79880       )
79881    THEN
79882    NULL;
79883    --
79884    --
79885    
79886   l_ccid := AcctDerRule_20(
79887            p_application_id           => p_application_id
79888          , p_ae_header_id             => l_ae_header_id 
79889 , p_source_1 => p_source_1
79893          , x_value_type_code          => l_adr_value_type_code
79890 , p_source_2 => p_source_2
79891          , x_transaction_coa_id       => l_adr_transaction_coa_id
79892          , x_accounting_coa_id        => l_adr_accounting_coa_id
79894          , p_side                     => 'NA'
79895    );
79896 
79897    xla_ae_lines_pkg.set_ccid(
79898     p_code_combination_id          => l_ccid
79899   , p_value_type_code              => l_adr_value_type_code
79900   , p_transaction_coa_id           => l_adr_transaction_coa_id
79901   , p_accounting_coa_id            => l_adr_accounting_coa_id
79902   , p_adr_code                     => 'IOP'
79903   , p_adr_type_code                => 'S'
79904   , p_component_type               => l_component_type
79905   , p_component_code               => l_component_code
79906   , p_component_type_code          => l_component_type_code
79907   , p_component_appl_id            => l_component_appl_id
79908   , p_amb_context_code             => l_amb_context_code
79909   , p_side                         => 'NA'
79910   );
79911 
79912 
79913    --
79914    --
79915    END IF;
79916 
79917        --
79918        -- Update the line information that should be overwritten
79919        --
79920        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
79921                                          p_header_num   => 1);
79922        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
79923 
79924        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
79925 
79926        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
79927           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
79928        END IF;
79929 
79930       --
79931       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
79932       --
79933       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
79934           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
79935       ELSE
79936           ---------------------------------------------------------------------------------------------------
79937           -- 4262811a Switch Sign
79938           ---------------------------------------------------------------------------------------------------
79939           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
79940           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
79941                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79942           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
79943                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79944           -- 5132302
79945           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
79946                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79947 
79948       END IF;
79949 
79950       -- 4955764
79951       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79952       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
79953 
79954 
79955       XLA_AE_LINES_PKG.ValidateCurrentLine;
79956       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
79957 
79958       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
79959                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
79960                ,p_balance_type_code => l_balance_type_code);
79961 
79962    END IF;
79963 
79964    -----------------------------------------------------------------------------------------
79965    -- 4262811 Multiperiod Accounting
79966    -----------------------------------------------------------------------------------------
79967      -- No MPA option is assigned.
79968 
79969 
79970 END IF;
79971 END IF;
79972 --
79973 
79974 --
79975 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79976    trace
79977       (p_msg      => 'END of AcctLineType_176'
79978       ,p_level    => C_LEVEL_PROCEDURE
79979       ,p_module   => l_log_module);
79980 END IF;
79981 --
79982 EXCEPTION
79983   WHEN xla_exceptions_pkg.application_exception THEN
79984       RAISE;
79985   WHEN OTHERS THEN
79986        xla_exceptions_pkg.raise_message
79987            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_176');
79988 END AcctLineType_176;
79989 --
79990 
79991 ---------------------------------------
79992 --
79993 -- PRIVATE FUNCTION
79994 --         AcctLineType_177
79995 --
79996 ---------------------------------------
79997 PROCEDURE AcctLineType_177 (
79998   p_application_id        IN NUMBER
79999  ,p_event_id              IN NUMBER
80000  ,p_calculate_acctd_flag  IN VARCHAR2
80001  ,p_calculate_g_l_flag    IN VARCHAR2
80002  ,p_actual_flag           IN OUT VARCHAR2
80003  ,p_balance_type_code     OUT VARCHAR2
80004  ,p_gain_or_loss_ref      OUT VARCHAR2
80005  
80006 --Transaction Account
80007  , p_source_1            IN NUMBER
80008 --Journal Line Type
80009  , p_source_2            IN VARCHAR2
80010 --Entered Amount
80014 --Distribution Type
80011  , p_source_3            IN NUMBER
80012 --First Distribution Identifier
80013  , p_source_5            IN NUMBER
80015  , p_source_6            IN VARCHAR2
80016 --Currency Code
80017  , p_source_7            IN VARCHAR2
80018 --Currency Conversion Date
80019  , p_source_8            IN DATE
80020 --Currency Conversion Rate
80021  , p_source_9            IN NUMBER
80022 --Currency Conversion Type
80023  , p_source_10            IN VARCHAR2
80024 --Accounted Amount
80025  , p_source_11            IN NUMBER
80026 )
80027 IS
80028 
80029 l_component_type              VARCHAR2(80);
80030 l_component_code              VARCHAR2(30);
80031 l_component_type_code         VARCHAR2(1);
80032 l_component_appl_id           INTEGER;
80033 l_amb_context_code            VARCHAR2(30);
80034 l_entity_code                 VARCHAR2(30);
80035 l_event_class_code            VARCHAR2(30);
80036 l_ae_header_id                NUMBER;
80037 l_event_type_code             VARCHAR2(30);
80038 l_line_definition_code        VARCHAR2(30);
80039 l_line_definition_owner_code  VARCHAR2(1);
80040 --
80041 -- adr variables
80042 l_segment                     VARCHAR2(30);
80043 l_ccid                        NUMBER;
80044 l_adr_transaction_coa_id      NUMBER;
80045 l_adr_accounting_coa_id       NUMBER;
80046 l_adr_flexfield_segment_code  VARCHAR2(30);
80047 l_adr_flex_value_set_id       NUMBER;
80048 l_adr_value_type_code         VARCHAR2(30);
80049 l_adr_value_combination_id    NUMBER;
80050 l_adr_value_segment_code      VARCHAR2(30);
80051 
80052 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
80053 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
80054 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
80055 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
80056 
80057 -- 4262811 Variables ------------------------------------------------------------------------------------------
80058 l_entered_amt_idx             NUMBER;
80059 l_accted_amt_idx              NUMBER;
80060 l_acc_rev_flag                VARCHAR2(1);
80061 l_accrual_line_num            NUMBER;
80062 l_tmp_amt                     NUMBER;
80063 l_acc_rev_natural_side_code   VARCHAR2(1);
80064 
80065 l_num_entries                 NUMBER;
80066 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
80067 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
80068 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
80069 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
80070 l_recog_line_1                NUMBER;
80071 l_recog_line_2                NUMBER;
80072 
80073 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
80074 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
80075 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
80076 
80077 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
80078 
80079 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
80080 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
80081 
80082 ---------------------------------------------------------------------------------------------------------------
80083 
80084 
80085 --
80086 -- bulk performance
80087 --
80088 l_balance_type_code           VARCHAR2(1);
80089 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
80090 l_log_module                  VARCHAR2(240);
80091 
80092 --
80093 -- Upgrade strategy
80094 --
80095 l_actual_upg_option           VARCHAR2(1);
80096 l_enc_upg_option           VARCHAR2(1);
80097 
80098 --
80099 BEGIN
80100 --
80101 IF g_log_enabled THEN
80102       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_177';
80103 END IF;
80104 --
80105 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80106 
80107       trace
80108          (p_msg      => 'BEGIN of AcctLineType_177'
80109          ,p_level    => C_LEVEL_PROCEDURE
80110          ,p_module   => l_log_module);
80111 
80112 END IF;
80113 --
80114 l_component_type             := 'AMB_JLT';
80115 l_component_code             := 'IOP';
80116 l_component_type_code        := 'S';
80117 l_component_appl_id          :=  555;
80118 l_amb_context_code           := 'DEFAULT';
80119 l_entity_code                := 'INVENTORY';
80120 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
80121 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
80122 l_line_definition_owner_code := 'S';
80123 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
80124 --
80125 l_balance_type_code          := 'A';
80126 l_segment                     := NULL;
80127 l_ccid                        := NULL;
80128 l_adr_transaction_coa_id      := NULL;
80129 l_adr_accounting_coa_id       := NULL;
80130 l_adr_flexfield_segment_code  := NULL;
80131 l_adr_flex_value_set_id       := NULL;
80132 l_adr_value_type_code         := NULL;
80133 l_adr_value_combination_id    := NULL;
80134 l_adr_value_segment_code      := NULL;
80135 
80136 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
80137 l_bflow_class_code           := '';    -- 4219869 Business Flow
80138 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
80139 l_budgetary_control_flag     := 'N';
80140 
80141 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
80145 l_acc_rev_flag               := NULL;          -- 4262811
80142 l_bflow_applied_to_amt       := NULL; -- 5132302
80143 l_entered_amt_idx            := NULL;          -- 4262811
80144 l_accted_amt_idx             := NULL;          -- 4262811
80146 l_accrual_line_num           := NULL;          -- 4262811
80147 l_tmp_amt                    := NULL;          -- 4262811
80148 --
80149  
80150 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
80151     l_balance_type_code <> 'B' THEN
80152 IF NVL(p_source_2,'
80153 ') =  'IOP'
80154  THEN 
80155 
80156    --
80157    XLA_AE_LINES_PKG.SetNewLine;
80158 
80159    p_balance_type_code          := l_balance_type_code;
80160    -- set the flag so later we will know whether the gain loss line needs to be created
80161    
80162    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
80163      p_actual_flag :='A';
80164    END IF;
80165 
80166    --
80167    -- bulk performance
80168    --
80169    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
80170                                       p_header_num   => 0); -- 4262811
80171    --
80172    -- set accounting line options
80173    --
80174    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
80175            p_natural_side_code          => 'D'
80176          , p_gain_or_loss_flag          => 'N'
80177          , p_gl_transfer_mode_code      => 'D'
80178          , p_acct_entry_type_code       => 'A'
80179          , p_switch_side_flag           => 'Y'
80180          , p_merge_duplicate_code       => 'W'
80181          );
80182    --
80183    l_acc_rev_natural_side_code := 'C';  -- 4262811
80184    -- 
80185    --
80186    -- set accounting line type info
80187    --
80188    xla_ae_lines_pkg.SetAcctLineType
80189       (p_component_type             => l_component_type
80190       ,p_event_type_code            => l_event_type_code
80191       ,p_line_definition_owner_code => l_line_definition_owner_code
80192       ,p_line_definition_code       => l_line_definition_code
80193       ,p_accounting_line_code       => l_component_code
80194       ,p_accounting_line_type_code  => l_component_type_code
80195       ,p_accounting_line_appl_id    => l_component_appl_id
80196       ,p_amb_context_code           => l_amb_context_code
80197       ,p_entity_code                => l_entity_code
80198       ,p_event_class_code           => l_event_class_code);
80199    --
80200    -- set accounting class
80201    --
80202    xla_ae_lines_pkg.SetAcctClass(
80203            p_accounting_class_code  => 'INTERORG_PAYABLES'
80204          , p_ae_header_id           => l_ae_header_id
80205          );
80206 
80207    --
80208    -- set rounding class
80209    --
80210    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
80211                       'INTERORG_PAYABLES';
80212 
80213    --
80214    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
80215    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
80216    --
80217    -- bulk performance
80218    --
80219    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
80220 
80221    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
80222       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
80223 
80224    -- 4955764
80225    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80226       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
80227 
80228    -- 4458381 Public Sector Enh
80229    
80230    --
80231    -- set accounting attributes for the line type
80232    --
80233    l_entered_amt_idx := 3;
80234    l_accted_amt_idx  := 8;
80235    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
80236    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
80237    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
80238    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
80239    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
80240    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
80241    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
80242    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
80243    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
80244    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
80245    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
80246    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
80247    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
80248    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
80249    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
80250    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
80251    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
80252 
80253    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
80254    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
80255 
80256    ---------------------------------------------------------------------------------------------------------------
80257    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
80258    ---------------------------------------------------------------------------------------------------------------
80262    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80259    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
80260 
80261    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80263 
80264    IF xla_accounting_cache_pkg.GetValueChar
80265          (p_source_code         => 'LEDGER_CATEGORY_CODE'
80266          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
80267    AND l_bflow_method_code = 'PRIOR_ENTRY'
80268 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
80269    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
80270          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
80271        )
80272    THEN
80273          xla_ae_lines_pkg.BflowUpgEntry
80274            (p_business_method_code    => l_bflow_method_code
80275            ,p_business_class_code     => l_bflow_class_code
80276            ,p_balance_type            => l_balance_type_code);
80277    ELSE
80278       NULL;
80279 -- No business flow processing for business flow method of NONE.
80280    END IF;
80281 
80282    --
80283    -- call analytical criteria
80284    --
80285    
80286    --
80287    -- call description
80288    --
80289    -- No description or it is inherited.
80290    --
80291    -- call ADRs
80292    -- Bug 4922099
80293    --
80294    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80295         (NVL(l_actual_upg_option, 'N') = 'O') OR
80296         (NVL(l_enc_upg_option, 'N') = 'O')
80297       )
80298    THEN
80299    NULL;
80300    --
80301    --
80302    
80303   l_ccid := AcctDerRule_20(
80304            p_application_id           => p_application_id
80305          , p_ae_header_id             => l_ae_header_id 
80306 , p_source_1 => p_source_1
80307 , p_source_2 => p_source_2
80308          , x_transaction_coa_id       => l_adr_transaction_coa_id
80309          , x_accounting_coa_id        => l_adr_accounting_coa_id
80310          , x_value_type_code          => l_adr_value_type_code
80311          , p_side                     => 'NA'
80312    );
80313 
80314    xla_ae_lines_pkg.set_ccid(
80315     p_code_combination_id          => l_ccid
80316   , p_value_type_code              => l_adr_value_type_code
80317   , p_transaction_coa_id           => l_adr_transaction_coa_id
80318   , p_accounting_coa_id            => l_adr_accounting_coa_id
80319   , p_adr_code                     => 'IOP'
80320   , p_adr_type_code                => 'S'
80321   , p_component_type               => l_component_type
80322   , p_component_code               => l_component_code
80323   , p_component_type_code          => l_component_type_code
80324   , p_component_appl_id            => l_component_appl_id
80325   , p_amb_context_code             => l_amb_context_code
80326   , p_side                         => 'NA'
80327   );
80328 
80329 
80330    --
80331    --
80332    END IF;
80333    --
80334    -- Bug 4922099
80335    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
80336           (NVL(l_enc_upg_option, 'N') = 'O')
80337         ) AND
80338         (l_bflow_method_code = 'PRIOR_ENTRY')
80339       )
80340    THEN
80341       IF
80342       --
80343       1 = 2
80344       --
80345       THEN
80346       xla_accounting_err_pkg.build_message
80347                                     (p_appli_s_name            => 'XLA'
80348                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80349                                     ,p_token_1                 => 'LINE_NUMBER'
80350                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
80351                                     ,p_token_2                 => 'LINE_TYPE_NAME'
80352                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
80353                                                                              l_component_type
80354                                                                             ,l_component_code
80355                                                                             ,l_component_type_code
80356                                                                             ,l_component_appl_id
80357                                                                             ,l_amb_context_code
80358                                                                             ,l_entity_code
80359                                                                             ,l_event_class_code
80360                                                                            )
80361                                     ,p_token_3                 => 'OWNER'
80362                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
80363                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
80364                                                                           ,p_lookup_code    => l_component_type_code
80365                                                                          )
80366                                     ,p_token_4                 => 'PRODUCT_NAME'
80367                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
80368                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
80372                                        );
80369                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
80370                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
80371                                     ,p_ae_header_id            =>  NULL
80373 
80374         IF (C_LEVEL_ERROR>= g_log_level) THEN
80375                  trace
80376                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80377                       ,p_level    => C_LEVEL_ERROR
80378                       ,p_module   => l_log_module);
80379         END IF;
80380       END IF;
80381    END IF;
80382    --
80383    --
80384    ------------------------------------------------------------------------------------------------
80385    -- 4219869 Business Flow
80386    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
80387    -- Prior Entry.  Currently, the following code is always generated.
80388    ------------------------------------------------------------------------------------------------
80389    XLA_AE_LINES_PKG.ValidateCurrentLine;
80390 
80391    ------------------------------------------------------------------------------------
80392    -- 4219869 Business Flow
80393    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
80394    ------------------------------------------------------------------------------------
80395    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80396 
80397    ----------------------------------------------------------------------------------
80398    -- 4219869 Business Flow
80399    -- Update journal entry status -- Need to generate this within IF <condition>
80400    ----------------------------------------------------------------------------------
80401    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80402          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
80403          ,p_balance_type_code => l_balance_type_code
80404          );
80405 
80406    -------------------------------------------------------------------------------------------
80407    -- 4262811 - Generate the Accrual Reversal lines
80408    -------------------------------------------------------------------------------------------
80409    BEGIN
80410       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
80411                               (g_array_event(p_event_id).array_value_num('header_index'));
80412       IF l_acc_rev_flag IS NULL THEN
80413          l_acc_rev_flag := 'N';
80414       END IF;
80415    EXCEPTION
80416       WHEN OTHERS THEN
80417          l_acc_rev_flag := 'N';
80418    END;
80419    --
80420    IF (l_acc_rev_flag = 'Y') THEN
80421 
80422        -- 4645092  ------------------------------------------------------------------------------
80423        -- To allow MPA report to determine if it should generate report process
80424        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
80425        ------------------------------------------------------------------------------------------
80426 
80427        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
80428        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
80429    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
80430    -- call ADRs
80431    -- Bug 4922099
80432    --
80433    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80434         (NVL(l_actual_upg_option, 'N') = 'O') OR
80435         (NVL(l_enc_upg_option, 'N') = 'O')
80436       )
80437    THEN
80438    NULL;
80439    --
80440    --
80441    
80442   l_ccid := AcctDerRule_20(
80443            p_application_id           => p_application_id
80444          , p_ae_header_id             => l_ae_header_id 
80445 , p_source_1 => p_source_1
80446 , p_source_2 => p_source_2
80447          , x_transaction_coa_id       => l_adr_transaction_coa_id
80448          , x_accounting_coa_id        => l_adr_accounting_coa_id
80449          , x_value_type_code          => l_adr_value_type_code
80450          , p_side                     => 'NA'
80451    );
80452 
80453    xla_ae_lines_pkg.set_ccid(
80454     p_code_combination_id          => l_ccid
80455   , p_value_type_code              => l_adr_value_type_code
80456   , p_transaction_coa_id           => l_adr_transaction_coa_id
80457   , p_accounting_coa_id            => l_adr_accounting_coa_id
80458   , p_adr_code                     => 'IOP'
80459   , p_adr_type_code                => 'S'
80460   , p_component_type               => l_component_type
80461   , p_component_code               => l_component_code
80462   , p_component_type_code          => l_component_type_code
80463   , p_component_appl_id            => l_component_appl_id
80464   , p_amb_context_code             => l_amb_context_code
80465   , p_side                         => 'NA'
80466   );
80467 
80468 
80469    --
80470    --
80471    END IF;
80472 
80473        --
80474        -- Update the line information that should be overwritten
80475        --
80476        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
80477                                          p_header_num   => 1);
80478        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
80479 
80480        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
80481 
80485 
80482        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
80483           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
80484        END IF;
80486       --
80487       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
80488       --
80489       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
80490           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
80491       ELSE
80492           ---------------------------------------------------------------------------------------------------
80493           -- 4262811a Switch Sign
80494           ---------------------------------------------------------------------------------------------------
80495           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
80496           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
80497                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80498           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
80499                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80500           -- 5132302
80501           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
80502                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80503 
80504       END IF;
80505 
80506       -- 4955764
80507       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80508       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
80509 
80510 
80511       XLA_AE_LINES_PKG.ValidateCurrentLine;
80512       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80513 
80514       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80515                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
80516                ,p_balance_type_code => l_balance_type_code);
80517 
80518    END IF;
80519 
80520    -----------------------------------------------------------------------------------------
80521    -- 4262811 Multiperiod Accounting
80522    -----------------------------------------------------------------------------------------
80523      -- No MPA option is assigned.
80524 
80525 
80526 END IF;
80527 END IF;
80528 --
80529 
80530 --
80531 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80532    trace
80533       (p_msg      => 'END of AcctLineType_177'
80534       ,p_level    => C_LEVEL_PROCEDURE
80535       ,p_module   => l_log_module);
80536 END IF;
80537 --
80538 EXCEPTION
80539   WHEN xla_exceptions_pkg.application_exception THEN
80540       RAISE;
80541   WHEN OTHERS THEN
80542        xla_exceptions_pkg.raise_message
80543            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_177');
80544 END AcctLineType_177;
80545 --
80546 
80547 ---------------------------------------
80548 --
80549 -- PRIVATE FUNCTION
80550 --         AcctLineType_178
80551 --
80552 ---------------------------------------
80553 PROCEDURE AcctLineType_178 (
80554   p_application_id        IN NUMBER
80555  ,p_event_id              IN NUMBER
80556  ,p_calculate_acctd_flag  IN VARCHAR2
80557  ,p_calculate_g_l_flag    IN VARCHAR2
80558  ,p_actual_flag           IN OUT VARCHAR2
80559  ,p_balance_type_code     OUT VARCHAR2
80560  ,p_gain_or_loss_ref      OUT VARCHAR2
80561  
80562 --Transaction Account
80563  , p_source_1            IN NUMBER
80564 --Journal Line Type
80565  , p_source_2            IN VARCHAR2
80566 --Entered Amount
80567  , p_source_3            IN NUMBER
80568 --First Distribution Identifier
80569  , p_source_5            IN NUMBER
80570 --Distribution Type
80571  , p_source_6            IN VARCHAR2
80572 --Currency Code
80573  , p_source_7            IN VARCHAR2
80574 --Currency Conversion Date
80575  , p_source_8            IN DATE
80576 --Currency Conversion Rate
80577  , p_source_9            IN NUMBER
80578 --Currency Conversion Type
80579  , p_source_10            IN VARCHAR2
80580 --Accounted Amount
80581  , p_source_11            IN NUMBER
80582 )
80583 IS
80584 
80585 l_component_type              VARCHAR2(80);
80586 l_component_code              VARCHAR2(30);
80587 l_component_type_code         VARCHAR2(1);
80588 l_component_appl_id           INTEGER;
80589 l_amb_context_code            VARCHAR2(30);
80590 l_entity_code                 VARCHAR2(30);
80591 l_event_class_code            VARCHAR2(30);
80592 l_ae_header_id                NUMBER;
80593 l_event_type_code             VARCHAR2(30);
80594 l_line_definition_code        VARCHAR2(30);
80595 l_line_definition_owner_code  VARCHAR2(1);
80596 --
80597 -- adr variables
80598 l_segment                     VARCHAR2(30);
80599 l_ccid                        NUMBER;
80600 l_adr_transaction_coa_id      NUMBER;
80601 l_adr_accounting_coa_id       NUMBER;
80602 l_adr_flexfield_segment_code  VARCHAR2(30);
80603 l_adr_flex_value_set_id       NUMBER;
80604 l_adr_value_type_code         VARCHAR2(30);
80605 l_adr_value_combination_id    NUMBER;
80606 l_adr_value_segment_code      VARCHAR2(30);
80607 
80611 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
80608 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
80609 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
80610 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
80612 
80613 -- 4262811 Variables ------------------------------------------------------------------------------------------
80614 l_entered_amt_idx             NUMBER;
80615 l_accted_amt_idx              NUMBER;
80616 l_acc_rev_flag                VARCHAR2(1);
80617 l_accrual_line_num            NUMBER;
80618 l_tmp_amt                     NUMBER;
80619 l_acc_rev_natural_side_code   VARCHAR2(1);
80620 
80621 l_num_entries                 NUMBER;
80622 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
80623 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
80624 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
80625 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
80626 l_recog_line_1                NUMBER;
80627 l_recog_line_2                NUMBER;
80628 
80629 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
80630 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
80631 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
80632 
80633 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
80634 
80635 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
80636 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
80637 
80638 ---------------------------------------------------------------------------------------------------------------
80639 
80640 
80641 --
80642 -- bulk performance
80643 --
80644 l_balance_type_code           VARCHAR2(1);
80645 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
80646 l_log_module                  VARCHAR2(240);
80647 
80648 --
80649 -- Upgrade strategy
80650 --
80651 l_actual_upg_option           VARCHAR2(1);
80652 l_enc_upg_option           VARCHAR2(1);
80653 
80654 --
80655 BEGIN
80656 --
80657 IF g_log_enabled THEN
80658       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_178';
80659 END IF;
80660 --
80661 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80662 
80663       trace
80664          (p_msg      => 'BEGIN of AcctLineType_178'
80665          ,p_level    => C_LEVEL_PROCEDURE
80666          ,p_module   => l_log_module);
80667 
80668 END IF;
80669 --
80670 l_component_type             := 'AMB_JLT';
80671 l_component_code             := 'IOP';
80672 l_component_type_code        := 'S';
80673 l_component_appl_id          :=  555;
80674 l_amb_context_code           := 'DEFAULT';
80675 l_entity_code                := 'INVENTORY';
80676 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
80677 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_TP';
80678 l_line_definition_owner_code := 'S';
80679 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP_TP';
80680 --
80681 l_balance_type_code          := 'A';
80682 l_segment                     := NULL;
80683 l_ccid                        := NULL;
80684 l_adr_transaction_coa_id      := NULL;
80685 l_adr_accounting_coa_id       := NULL;
80686 l_adr_flexfield_segment_code  := NULL;
80687 l_adr_flex_value_set_id       := NULL;
80688 l_adr_value_type_code         := NULL;
80689 l_adr_value_combination_id    := NULL;
80690 l_adr_value_segment_code      := NULL;
80691 
80692 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
80693 l_bflow_class_code           := '';    -- 4219869 Business Flow
80694 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
80695 l_budgetary_control_flag     := 'N';
80696 
80697 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
80698 l_bflow_applied_to_amt       := NULL; -- 5132302
80699 l_entered_amt_idx            := NULL;          -- 4262811
80700 l_accted_amt_idx             := NULL;          -- 4262811
80701 l_acc_rev_flag               := NULL;          -- 4262811
80702 l_accrual_line_num           := NULL;          -- 4262811
80703 l_tmp_amt                    := NULL;          -- 4262811
80704 --
80705  
80706 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
80707     l_balance_type_code <> 'B' THEN
80708 IF NVL(p_source_2,'
80709 ') =  'IOP'
80710  THEN 
80711 
80712    --
80713    XLA_AE_LINES_PKG.SetNewLine;
80714 
80715    p_balance_type_code          := l_balance_type_code;
80716    -- set the flag so later we will know whether the gain loss line needs to be created
80717    
80718    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
80719      p_actual_flag :='A';
80720    END IF;
80721 
80722    --
80723    -- bulk performance
80724    --
80725    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
80726                                       p_header_num   => 0); -- 4262811
80727    --
80728    -- set accounting line options
80729    --
80730    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
80731            p_natural_side_code          => 'D'
80732          , p_gain_or_loss_flag          => 'N'
80733          , p_gl_transfer_mode_code      => 'D'
80734          , p_acct_entry_type_code       => 'A'
80735          , p_switch_side_flag           => 'Y'
80736          , p_merge_duplicate_code       => 'W'
80737          );
80738    --
80742    -- set accounting line type info
80739    l_acc_rev_natural_side_code := 'C';  -- 4262811
80740    -- 
80741    --
80743    --
80744    xla_ae_lines_pkg.SetAcctLineType
80745       (p_component_type             => l_component_type
80746       ,p_event_type_code            => l_event_type_code
80747       ,p_line_definition_owner_code => l_line_definition_owner_code
80748       ,p_line_definition_code       => l_line_definition_code
80749       ,p_accounting_line_code       => l_component_code
80750       ,p_accounting_line_type_code  => l_component_type_code
80751       ,p_accounting_line_appl_id    => l_component_appl_id
80752       ,p_amb_context_code           => l_amb_context_code
80753       ,p_entity_code                => l_entity_code
80754       ,p_event_class_code           => l_event_class_code);
80755    --
80756    -- set accounting class
80757    --
80758    xla_ae_lines_pkg.SetAcctClass(
80759            p_accounting_class_code  => 'INTERORG_PAYABLES'
80760          , p_ae_header_id           => l_ae_header_id
80761          );
80762 
80763    --
80764    -- set rounding class
80765    --
80766    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
80767                       'INTERORG_PAYABLES';
80768 
80769    --
80770    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
80771    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
80772    --
80773    -- bulk performance
80774    --
80775    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
80776 
80777    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
80778       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
80779 
80780    -- 4955764
80781    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80782       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
80783 
80784    -- 4458381 Public Sector Enh
80785    
80786    --
80787    -- set accounting attributes for the line type
80788    --
80789    l_entered_amt_idx := 3;
80790    l_accted_amt_idx  := 8;
80791    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
80792    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
80793    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
80794    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
80795    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
80796    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
80797    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
80798    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
80799    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
80800    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
80801    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
80802    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
80803    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
80804    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
80805    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
80806    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
80807    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
80808 
80809    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
80810    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
80811 
80812    ---------------------------------------------------------------------------------------------------------------
80813    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
80814    ---------------------------------------------------------------------------------------------------------------
80815    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
80816 
80817    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80818    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80819 
80820    IF xla_accounting_cache_pkg.GetValueChar
80821          (p_source_code         => 'LEDGER_CATEGORY_CODE'
80822          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
80823    AND l_bflow_method_code = 'PRIOR_ENTRY'
80824 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
80825    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
80826          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
80827        )
80828    THEN
80829          xla_ae_lines_pkg.BflowUpgEntry
80830            (p_business_method_code    => l_bflow_method_code
80831            ,p_business_class_code     => l_bflow_class_code
80832            ,p_balance_type            => l_balance_type_code);
80833    ELSE
80834       NULL;
80835 -- No business flow processing for business flow method of NONE.
80836    END IF;
80837 
80838    --
80839    -- call analytical criteria
80840    --
80841    
80842    --
80843    -- call description
80844    --
80845    -- No description or it is inherited.
80846    --
80847    -- call ADRs
80848    -- Bug 4922099
80849    --
80850    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80851         (NVL(l_actual_upg_option, 'N') = 'O') OR
80855    NULL;
80852         (NVL(l_enc_upg_option, 'N') = 'O')
80853       )
80854    THEN
80856    --
80857    --
80858    
80859   l_ccid := AcctDerRule_20(
80860            p_application_id           => p_application_id
80861          , p_ae_header_id             => l_ae_header_id 
80862 , p_source_1 => p_source_1
80863 , p_source_2 => p_source_2
80864          , x_transaction_coa_id       => l_adr_transaction_coa_id
80865          , x_accounting_coa_id        => l_adr_accounting_coa_id
80866          , x_value_type_code          => l_adr_value_type_code
80867          , p_side                     => 'NA'
80868    );
80869 
80870    xla_ae_lines_pkg.set_ccid(
80871     p_code_combination_id          => l_ccid
80872   , p_value_type_code              => l_adr_value_type_code
80873   , p_transaction_coa_id           => l_adr_transaction_coa_id
80874   , p_accounting_coa_id            => l_adr_accounting_coa_id
80875   , p_adr_code                     => 'IOP'
80876   , p_adr_type_code                => 'S'
80877   , p_component_type               => l_component_type
80878   , p_component_code               => l_component_code
80879   , p_component_type_code          => l_component_type_code
80880   , p_component_appl_id            => l_component_appl_id
80881   , p_amb_context_code             => l_amb_context_code
80882   , p_side                         => 'NA'
80883   );
80884 
80885 
80886    --
80887    --
80888    END IF;
80889    --
80890    -- Bug 4922099
80891    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
80892           (NVL(l_enc_upg_option, 'N') = 'O')
80893         ) AND
80894         (l_bflow_method_code = 'PRIOR_ENTRY')
80895       )
80896    THEN
80897       IF
80898       --
80899       1 = 2
80900       --
80901       THEN
80902       xla_accounting_err_pkg.build_message
80903                                     (p_appli_s_name            => 'XLA'
80904                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80905                                     ,p_token_1                 => 'LINE_NUMBER'
80906                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
80907                                     ,p_token_2                 => 'LINE_TYPE_NAME'
80908                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
80909                                                                              l_component_type
80910                                                                             ,l_component_code
80911                                                                             ,l_component_type_code
80912                                                                             ,l_component_appl_id
80913                                                                             ,l_amb_context_code
80914                                                                             ,l_entity_code
80915                                                                             ,l_event_class_code
80916                                                                            )
80917                                     ,p_token_3                 => 'OWNER'
80918                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
80919                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
80920                                                                           ,p_lookup_code    => l_component_type_code
80921                                                                          )
80922                                     ,p_token_4                 => 'PRODUCT_NAME'
80923                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
80924                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
80925                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
80926                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
80927                                     ,p_ae_header_id            =>  NULL
80928                                        );
80929 
80930         IF (C_LEVEL_ERROR>= g_log_level) THEN
80931                  trace
80932                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80933                       ,p_level    => C_LEVEL_ERROR
80934                       ,p_module   => l_log_module);
80935         END IF;
80936       END IF;
80937    END IF;
80938    --
80939    --
80940    ------------------------------------------------------------------------------------------------
80941    -- 4219869 Business Flow
80942    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
80943    -- Prior Entry.  Currently, the following code is always generated.
80944    ------------------------------------------------------------------------------------------------
80945    XLA_AE_LINES_PKG.ValidateCurrentLine;
80946 
80947    ------------------------------------------------------------------------------------
80948    -- 4219869 Business Flow
80949    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
80950    ------------------------------------------------------------------------------------
80951    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80952 
80956    ----------------------------------------------------------------------------------
80953    ----------------------------------------------------------------------------------
80954    -- 4219869 Business Flow
80955    -- Update journal entry status -- Need to generate this within IF <condition>
80957    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80958          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
80959          ,p_balance_type_code => l_balance_type_code
80960          );
80961 
80962    -------------------------------------------------------------------------------------------
80963    -- 4262811 - Generate the Accrual Reversal lines
80964    -------------------------------------------------------------------------------------------
80965    BEGIN
80966       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
80967                               (g_array_event(p_event_id).array_value_num('header_index'));
80968       IF l_acc_rev_flag IS NULL THEN
80969          l_acc_rev_flag := 'N';
80970       END IF;
80971    EXCEPTION
80972       WHEN OTHERS THEN
80973          l_acc_rev_flag := 'N';
80974    END;
80975    --
80976    IF (l_acc_rev_flag = 'Y') THEN
80977 
80978        -- 4645092  ------------------------------------------------------------------------------
80979        -- To allow MPA report to determine if it should generate report process
80980        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
80981        ------------------------------------------------------------------------------------------
80982 
80983        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
80984        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
80985    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
80986    -- call ADRs
80987    -- Bug 4922099
80988    --
80989    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80990         (NVL(l_actual_upg_option, 'N') = 'O') OR
80991         (NVL(l_enc_upg_option, 'N') = 'O')
80992       )
80993    THEN
80994    NULL;
80995    --
80996    --
80997    
80998   l_ccid := AcctDerRule_20(
80999            p_application_id           => p_application_id
81000          , p_ae_header_id             => l_ae_header_id 
81001 , p_source_1 => p_source_1
81002 , p_source_2 => p_source_2
81003          , x_transaction_coa_id       => l_adr_transaction_coa_id
81004          , x_accounting_coa_id        => l_adr_accounting_coa_id
81005          , x_value_type_code          => l_adr_value_type_code
81006          , p_side                     => 'NA'
81007    );
81008 
81009    xla_ae_lines_pkg.set_ccid(
81010     p_code_combination_id          => l_ccid
81011   , p_value_type_code              => l_adr_value_type_code
81012   , p_transaction_coa_id           => l_adr_transaction_coa_id
81013   , p_accounting_coa_id            => l_adr_accounting_coa_id
81014   , p_adr_code                     => 'IOP'
81015   , p_adr_type_code                => 'S'
81016   , p_component_type               => l_component_type
81017   , p_component_code               => l_component_code
81018   , p_component_type_code          => l_component_type_code
81019   , p_component_appl_id            => l_component_appl_id
81020   , p_amb_context_code             => l_amb_context_code
81021   , p_side                         => 'NA'
81022   );
81023 
81024 
81025    --
81026    --
81027    END IF;
81028 
81029        --
81030        -- Update the line information that should be overwritten
81031        --
81032        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
81033                                          p_header_num   => 1);
81034        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
81035 
81036        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
81037 
81038        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
81039           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
81040        END IF;
81041 
81042       --
81043       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
81044       --
81045       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
81046           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
81047       ELSE
81048           ---------------------------------------------------------------------------------------------------
81049           -- 4262811a Switch Sign
81050           ---------------------------------------------------------------------------------------------------
81051           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
81052           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81053                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81054           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81055                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81056           -- 5132302
81057           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
81058                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81062       -- 4955764
81059 
81060       END IF;
81061 
81063       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81064       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
81065 
81066 
81067       XLA_AE_LINES_PKG.ValidateCurrentLine;
81068       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81069 
81070       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81071                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
81072                ,p_balance_type_code => l_balance_type_code);
81073 
81074    END IF;
81075 
81076    -----------------------------------------------------------------------------------------
81077    -- 4262811 Multiperiod Accounting
81078    -----------------------------------------------------------------------------------------
81079      -- No MPA option is assigned.
81080 
81081 
81082 END IF;
81083 END IF;
81084 --
81085 
81086 --
81087 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81088    trace
81089       (p_msg      => 'END of AcctLineType_178'
81090       ,p_level    => C_LEVEL_PROCEDURE
81091       ,p_module   => l_log_module);
81092 END IF;
81093 --
81094 EXCEPTION
81095   WHEN xla_exceptions_pkg.application_exception THEN
81096       RAISE;
81097   WHEN OTHERS THEN
81098        xla_exceptions_pkg.raise_message
81099            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_178');
81100 END AcctLineType_178;
81101 --
81102 
81103 ---------------------------------------
81104 --
81105 -- PRIVATE FUNCTION
81106 --         AcctLineType_179
81107 --
81108 ---------------------------------------
81109 PROCEDURE AcctLineType_179 (
81110   p_application_id        IN NUMBER
81111  ,p_event_id              IN NUMBER
81112  ,p_calculate_acctd_flag  IN VARCHAR2
81113  ,p_calculate_g_l_flag    IN VARCHAR2
81114  ,p_actual_flag           IN OUT VARCHAR2
81115  ,p_balance_type_code     OUT VARCHAR2
81116  ,p_gain_or_loss_ref      OUT VARCHAR2
81117  
81118 --Transaction Account
81119  , p_source_1            IN NUMBER
81120 --Journal Line Type
81121  , p_source_2            IN VARCHAR2
81122 --Entered Amount
81123  , p_source_3            IN NUMBER
81124 --First Distribution Identifier
81125  , p_source_5            IN NUMBER
81126 --Distribution Type
81127  , p_source_6            IN VARCHAR2
81128 --Currency Code
81129  , p_source_7            IN VARCHAR2
81130 --Currency Conversion Date
81131  , p_source_8            IN DATE
81132 --Currency Conversion Rate
81133  , p_source_9            IN NUMBER
81134 --Currency Conversion Type
81135  , p_source_10            IN VARCHAR2
81136 --Accounted Amount
81137  , p_source_11            IN NUMBER
81138 )
81139 IS
81140 
81141 l_component_type              VARCHAR2(80);
81142 l_component_code              VARCHAR2(30);
81143 l_component_type_code         VARCHAR2(1);
81144 l_component_appl_id           INTEGER;
81145 l_amb_context_code            VARCHAR2(30);
81146 l_entity_code                 VARCHAR2(30);
81147 l_event_class_code            VARCHAR2(30);
81148 l_ae_header_id                NUMBER;
81149 l_event_type_code             VARCHAR2(30);
81150 l_line_definition_code        VARCHAR2(30);
81151 l_line_definition_owner_code  VARCHAR2(1);
81152 --
81153 -- adr variables
81154 l_segment                     VARCHAR2(30);
81155 l_ccid                        NUMBER;
81156 l_adr_transaction_coa_id      NUMBER;
81157 l_adr_accounting_coa_id       NUMBER;
81158 l_adr_flexfield_segment_code  VARCHAR2(30);
81159 l_adr_flex_value_set_id       NUMBER;
81160 l_adr_value_type_code         VARCHAR2(30);
81161 l_adr_value_combination_id    NUMBER;
81162 l_adr_value_segment_code      VARCHAR2(30);
81163 
81164 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
81165 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
81166 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
81167 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
81168 
81169 -- 4262811 Variables ------------------------------------------------------------------------------------------
81170 l_entered_amt_idx             NUMBER;
81171 l_accted_amt_idx              NUMBER;
81172 l_acc_rev_flag                VARCHAR2(1);
81173 l_accrual_line_num            NUMBER;
81174 l_tmp_amt                     NUMBER;
81175 l_acc_rev_natural_side_code   VARCHAR2(1);
81176 
81177 l_num_entries                 NUMBER;
81178 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
81179 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
81180 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
81181 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
81182 l_recog_line_1                NUMBER;
81183 l_recog_line_2                NUMBER;
81184 
81185 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
81186 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
81187 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
81188 
81189 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
81190 
81191 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
81192 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
81193 
81197 --
81194 ---------------------------------------------------------------------------------------------------------------
81195 
81196 
81198 -- bulk performance
81199 --
81200 l_balance_type_code           VARCHAR2(1);
81201 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
81202 l_log_module                  VARCHAR2(240);
81203 
81204 --
81205 -- Upgrade strategy
81206 --
81207 l_actual_upg_option           VARCHAR2(1);
81208 l_enc_upg_option           VARCHAR2(1);
81209 
81210 --
81211 BEGIN
81212 --
81213 IF g_log_enabled THEN
81214       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_179';
81215 END IF;
81216 --
81217 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81218 
81219       trace
81220          (p_msg      => 'BEGIN of AcctLineType_179'
81221          ,p_level    => C_LEVEL_PROCEDURE
81222          ,p_module   => l_log_module);
81223 
81224 END IF;
81225 --
81226 l_component_type             := 'AMB_JLT';
81227 l_component_code             := 'IOPR';
81228 l_component_type_code        := 'S';
81229 l_component_appl_id          :=  555;
81230 l_amb_context_code           := 'DEFAULT';
81231 l_entity_code                := 'INVENTORY';
81232 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
81233 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_TP';
81234 l_line_definition_owner_code := 'S';
81235 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP_TP';
81236 --
81237 l_balance_type_code          := 'A';
81238 l_segment                     := NULL;
81239 l_ccid                        := NULL;
81240 l_adr_transaction_coa_id      := NULL;
81241 l_adr_accounting_coa_id       := NULL;
81242 l_adr_flexfield_segment_code  := NULL;
81243 l_adr_flex_value_set_id       := NULL;
81244 l_adr_value_type_code         := NULL;
81245 l_adr_value_combination_id    := NULL;
81246 l_adr_value_segment_code      := NULL;
81247 
81248 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
81249 l_bflow_class_code           := '';    -- 4219869 Business Flow
81250 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
81251 l_budgetary_control_flag     := 'N';
81252 
81253 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
81254 l_bflow_applied_to_amt       := NULL; -- 5132302
81255 l_entered_amt_idx            := NULL;          -- 4262811
81256 l_accted_amt_idx             := NULL;          -- 4262811
81257 l_acc_rev_flag               := NULL;          -- 4262811
81258 l_accrual_line_num           := NULL;          -- 4262811
81259 l_tmp_amt                    := NULL;          -- 4262811
81260 --
81261  
81262 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
81263     l_balance_type_code <> 'B' THEN
81264 IF NVL(p_source_2,'
81265 ') =  'IOPR'
81266  THEN 
81267 
81268    --
81269    XLA_AE_LINES_PKG.SetNewLine;
81270 
81271    p_balance_type_code          := l_balance_type_code;
81272    -- set the flag so later we will know whether the gain loss line needs to be created
81273    
81274    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
81275      p_actual_flag :='A';
81276    END IF;
81277 
81278    --
81279    -- bulk performance
81280    --
81281    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
81282                                       p_header_num   => 0); -- 4262811
81283    --
81284    -- set accounting line options
81285    --
81286    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
81287            p_natural_side_code          => 'D'
81288          , p_gain_or_loss_flag          => 'N'
81289          , p_gl_transfer_mode_code      => 'D'
81290          , p_acct_entry_type_code       => 'A'
81291          , p_switch_side_flag           => 'Y'
81292          , p_merge_duplicate_code       => 'W'
81293          );
81294    --
81295    l_acc_rev_natural_side_code := 'C';  -- 4262811
81296    -- 
81297    --
81298    -- set accounting line type info
81299    --
81300    xla_ae_lines_pkg.SetAcctLineType
81301       (p_component_type             => l_component_type
81302       ,p_event_type_code            => l_event_type_code
81303       ,p_line_definition_owner_code => l_line_definition_owner_code
81304       ,p_line_definition_code       => l_line_definition_code
81305       ,p_accounting_line_code       => l_component_code
81306       ,p_accounting_line_type_code  => l_component_type_code
81307       ,p_accounting_line_appl_id    => l_component_appl_id
81308       ,p_amb_context_code           => l_amb_context_code
81309       ,p_entity_code                => l_entity_code
81310       ,p_event_class_code           => l_event_class_code);
81311    --
81312    -- set accounting class
81313    --
81314    xla_ae_lines_pkg.SetAcctClass(
81315            p_accounting_class_code  => 'INTERORG_PROFIT'
81316          , p_ae_header_id           => l_ae_header_id
81317          );
81318 
81319    --
81320    -- set rounding class
81321    --
81322    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
81323                       'INTERORG_PROFIT';
81324 
81325    --
81326    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
81327    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
81328    --
81329    -- bulk performance
81330    --
81334       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
81331    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
81332 
81333    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
81335 
81336    -- 4955764
81337    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81338       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
81339 
81340    -- 4458381 Public Sector Enh
81341    
81342    --
81343    -- set accounting attributes for the line type
81344    --
81345    l_entered_amt_idx := 3;
81346    l_accted_amt_idx  := 8;
81347    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
81348    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
81349    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
81350    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
81351    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
81352    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
81353    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
81354    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
81355    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
81356    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
81357    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
81358    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
81359    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
81360    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
81361    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
81362    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
81363    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
81364 
81365    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
81366    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
81367 
81368    ---------------------------------------------------------------------------------------------------------------
81369    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
81370    ---------------------------------------------------------------------------------------------------------------
81371    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
81372 
81373    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81374    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81375 
81376    IF xla_accounting_cache_pkg.GetValueChar
81377          (p_source_code         => 'LEDGER_CATEGORY_CODE'
81378          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
81379    AND l_bflow_method_code = 'PRIOR_ENTRY'
81380 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
81381    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
81382          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
81383        )
81384    THEN
81385          xla_ae_lines_pkg.BflowUpgEntry
81386            (p_business_method_code    => l_bflow_method_code
81387            ,p_business_class_code     => l_bflow_class_code
81388            ,p_balance_type            => l_balance_type_code);
81389    ELSE
81390       NULL;
81391 -- No business flow processing for business flow method of NONE.
81392    END IF;
81393 
81394    --
81395    -- call analytical criteria
81396    --
81397    
81398    --
81399    -- call description
81400    --
81401    -- No description or it is inherited.
81402    --
81403    -- call ADRs
81404    -- Bug 4922099
81405    --
81406    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81407         (NVL(l_actual_upg_option, 'N') = 'O') OR
81408         (NVL(l_enc_upg_option, 'N') = 'O')
81409       )
81410    THEN
81411    NULL;
81412    --
81413    --
81414    
81415   l_ccid := AcctDerRule_21(
81416            p_application_id           => p_application_id
81417          , p_ae_header_id             => l_ae_header_id 
81418 , p_source_1 => p_source_1
81419 , p_source_2 => p_source_2
81420          , x_transaction_coa_id       => l_adr_transaction_coa_id
81421          , x_accounting_coa_id        => l_adr_accounting_coa_id
81422          , x_value_type_code          => l_adr_value_type_code
81423          , p_side                     => 'NA'
81424    );
81425 
81426    xla_ae_lines_pkg.set_ccid(
81427     p_code_combination_id          => l_ccid
81428   , p_value_type_code              => l_adr_value_type_code
81429   , p_transaction_coa_id           => l_adr_transaction_coa_id
81430   , p_accounting_coa_id            => l_adr_accounting_coa_id
81431   , p_adr_code                     => 'IOPR'
81432   , p_adr_type_code                => 'S'
81433   , p_component_type               => l_component_type
81434   , p_component_code               => l_component_code
81435   , p_component_type_code          => l_component_type_code
81436   , p_component_appl_id            => l_component_appl_id
81437   , p_amb_context_code             => l_amb_context_code
81438   , p_side                         => 'NA'
81439   );
81440 
81441 
81442    --
81443    --
81444    END IF;
81445    --
81446    -- Bug 4922099
81447    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
81448           (NVL(l_enc_upg_option, 'N') = 'O')
81452    THEN
81449         ) AND
81450         (l_bflow_method_code = 'PRIOR_ENTRY')
81451       )
81453       IF
81454       --
81455       1 = 2
81456       --
81457       THEN
81458       xla_accounting_err_pkg.build_message
81459                                     (p_appli_s_name            => 'XLA'
81460                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81461                                     ,p_token_1                 => 'LINE_NUMBER'
81462                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
81463                                     ,p_token_2                 => 'LINE_TYPE_NAME'
81464                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
81465                                                                              l_component_type
81466                                                                             ,l_component_code
81467                                                                             ,l_component_type_code
81468                                                                             ,l_component_appl_id
81469                                                                             ,l_amb_context_code
81470                                                                             ,l_entity_code
81471                                                                             ,l_event_class_code
81472                                                                            )
81473                                     ,p_token_3                 => 'OWNER'
81474                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
81475                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
81476                                                                           ,p_lookup_code    => l_component_type_code
81477                                                                          )
81478                                     ,p_token_4                 => 'PRODUCT_NAME'
81479                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
81480                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
81481                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
81482                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
81483                                     ,p_ae_header_id            =>  NULL
81484                                        );
81485 
81486         IF (C_LEVEL_ERROR>= g_log_level) THEN
81487                  trace
81488                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81489                       ,p_level    => C_LEVEL_ERROR
81490                       ,p_module   => l_log_module);
81491         END IF;
81492       END IF;
81493    END IF;
81494    --
81495    --
81496    ------------------------------------------------------------------------------------------------
81497    -- 4219869 Business Flow
81498    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
81499    -- Prior Entry.  Currently, the following code is always generated.
81500    ------------------------------------------------------------------------------------------------
81501    XLA_AE_LINES_PKG.ValidateCurrentLine;
81502 
81503    ------------------------------------------------------------------------------------
81504    -- 4219869 Business Flow
81505    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
81506    ------------------------------------------------------------------------------------
81507    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81508 
81509    ----------------------------------------------------------------------------------
81510    -- 4219869 Business Flow
81511    -- Update journal entry status -- Need to generate this within IF <condition>
81512    ----------------------------------------------------------------------------------
81513    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81514          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
81515          ,p_balance_type_code => l_balance_type_code
81516          );
81517 
81518    -------------------------------------------------------------------------------------------
81519    -- 4262811 - Generate the Accrual Reversal lines
81520    -------------------------------------------------------------------------------------------
81521    BEGIN
81522       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
81523                               (g_array_event(p_event_id).array_value_num('header_index'));
81524       IF l_acc_rev_flag IS NULL THEN
81525          l_acc_rev_flag := 'N';
81526       END IF;
81527    EXCEPTION
81528       WHEN OTHERS THEN
81529          l_acc_rev_flag := 'N';
81530    END;
81531    --
81532    IF (l_acc_rev_flag = 'Y') THEN
81533 
81534        -- 4645092  ------------------------------------------------------------------------------
81535        -- To allow MPA report to determine if it should generate report process
81536        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
81537        ------------------------------------------------------------------------------------------
81538 
81539        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
81540        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
81544    --
81541    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
81542    -- call ADRs
81543    -- Bug 4922099
81545    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81546         (NVL(l_actual_upg_option, 'N') = 'O') OR
81547         (NVL(l_enc_upg_option, 'N') = 'O')
81548       )
81549    THEN
81550    NULL;
81551    --
81552    --
81553    
81554   l_ccid := AcctDerRule_21(
81555            p_application_id           => p_application_id
81556          , p_ae_header_id             => l_ae_header_id 
81557 , p_source_1 => p_source_1
81558 , p_source_2 => p_source_2
81559          , x_transaction_coa_id       => l_adr_transaction_coa_id
81560          , x_accounting_coa_id        => l_adr_accounting_coa_id
81561          , x_value_type_code          => l_adr_value_type_code
81562          , p_side                     => 'NA'
81563    );
81564 
81565    xla_ae_lines_pkg.set_ccid(
81566     p_code_combination_id          => l_ccid
81567   , p_value_type_code              => l_adr_value_type_code
81568   , p_transaction_coa_id           => l_adr_transaction_coa_id
81569   , p_accounting_coa_id            => l_adr_accounting_coa_id
81570   , p_adr_code                     => 'IOPR'
81571   , p_adr_type_code                => 'S'
81572   , p_component_type               => l_component_type
81573   , p_component_code               => l_component_code
81574   , p_component_type_code          => l_component_type_code
81575   , p_component_appl_id            => l_component_appl_id
81576   , p_amb_context_code             => l_amb_context_code
81577   , p_side                         => 'NA'
81578   );
81579 
81580 
81581    --
81582    --
81583    END IF;
81584 
81585        --
81586        -- Update the line information that should be overwritten
81587        --
81588        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
81589                                          p_header_num   => 1);
81590        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
81591 
81592        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
81593 
81594        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
81595           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
81596        END IF;
81597 
81598       --
81599       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
81600       --
81601       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
81602           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
81603       ELSE
81604           ---------------------------------------------------------------------------------------------------
81605           -- 4262811a Switch Sign
81606           ---------------------------------------------------------------------------------------------------
81607           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
81608           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81609                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81610           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81611                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81612           -- 5132302
81613           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
81614                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81615 
81616       END IF;
81617 
81618       -- 4955764
81619       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81620       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
81621 
81622 
81623       XLA_AE_LINES_PKG.ValidateCurrentLine;
81624       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81625 
81626       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81627                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
81628                ,p_balance_type_code => l_balance_type_code);
81629 
81630    END IF;
81631 
81632    -----------------------------------------------------------------------------------------
81633    -- 4262811 Multiperiod Accounting
81634    -----------------------------------------------------------------------------------------
81635      -- No MPA option is assigned.
81636 
81637 
81638 END IF;
81639 END IF;
81640 --
81641 
81642 --
81643 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81644    trace
81645       (p_msg      => 'END of AcctLineType_179'
81646       ,p_level    => C_LEVEL_PROCEDURE
81647       ,p_module   => l_log_module);
81648 END IF;
81649 --
81650 EXCEPTION
81651   WHEN xla_exceptions_pkg.application_exception THEN
81652       RAISE;
81653   WHEN OTHERS THEN
81654        xla_exceptions_pkg.raise_message
81655            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_179');
81656 END AcctLineType_179;
81657 --
81658 
81659 ---------------------------------------
81660 --
81661 -- PRIVATE FUNCTION
81662 --         AcctLineType_180
81663 --
81667  ,p_event_id              IN NUMBER
81664 ---------------------------------------
81665 PROCEDURE AcctLineType_180 (
81666   p_application_id        IN NUMBER
81668  ,p_calculate_acctd_flag  IN VARCHAR2
81669  ,p_calculate_g_l_flag    IN VARCHAR2
81670  ,p_actual_flag           IN OUT VARCHAR2
81671  ,p_balance_type_code     OUT VARCHAR2
81672  ,p_gain_or_loss_ref      OUT VARCHAR2
81673  
81674 --Transaction Account
81675  , p_source_1            IN NUMBER
81676 --Journal Line Type
81677  , p_source_2            IN VARCHAR2
81678 --Entered Amount
81679  , p_source_3            IN NUMBER
81680 --First Distribution Identifier
81681  , p_source_5            IN NUMBER
81682 --Distribution Type
81683  , p_source_6            IN VARCHAR2
81684 --Currency Code
81685  , p_source_7            IN VARCHAR2
81686 --Currency Conversion Date
81687  , p_source_8            IN DATE
81688 --Currency Conversion Rate
81689  , p_source_9            IN NUMBER
81690 --Currency Conversion Type
81691  , p_source_10            IN VARCHAR2
81692 --Accounted Amount
81693  , p_source_11            IN NUMBER
81694 )
81695 IS
81696 
81697 l_component_type              VARCHAR2(80);
81698 l_component_code              VARCHAR2(30);
81699 l_component_type_code         VARCHAR2(1);
81700 l_component_appl_id           INTEGER;
81701 l_amb_context_code            VARCHAR2(30);
81702 l_entity_code                 VARCHAR2(30);
81703 l_event_class_code            VARCHAR2(30);
81704 l_ae_header_id                NUMBER;
81705 l_event_type_code             VARCHAR2(30);
81706 l_line_definition_code        VARCHAR2(30);
81707 l_line_definition_owner_code  VARCHAR2(1);
81708 --
81709 -- adr variables
81710 l_segment                     VARCHAR2(30);
81711 l_ccid                        NUMBER;
81712 l_adr_transaction_coa_id      NUMBER;
81713 l_adr_accounting_coa_id       NUMBER;
81714 l_adr_flexfield_segment_code  VARCHAR2(30);
81715 l_adr_flex_value_set_id       NUMBER;
81716 l_adr_value_type_code         VARCHAR2(30);
81717 l_adr_value_combination_id    NUMBER;
81718 l_adr_value_segment_code      VARCHAR2(30);
81719 
81720 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
81721 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
81722 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
81723 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
81724 
81725 -- 4262811 Variables ------------------------------------------------------------------------------------------
81726 l_entered_amt_idx             NUMBER;
81727 l_accted_amt_idx              NUMBER;
81728 l_acc_rev_flag                VARCHAR2(1);
81729 l_accrual_line_num            NUMBER;
81730 l_tmp_amt                     NUMBER;
81731 l_acc_rev_natural_side_code   VARCHAR2(1);
81732 
81733 l_num_entries                 NUMBER;
81734 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
81735 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
81736 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
81737 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
81738 l_recog_line_1                NUMBER;
81739 l_recog_line_2                NUMBER;
81740 
81741 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
81742 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
81743 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
81744 
81745 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
81746 
81747 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
81748 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
81749 
81750 ---------------------------------------------------------------------------------------------------------------
81751 
81752 
81753 --
81754 -- bulk performance
81755 --
81756 l_balance_type_code           VARCHAR2(1);
81757 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
81758 l_log_module                  VARCHAR2(240);
81759 
81760 --
81761 -- Upgrade strategy
81762 --
81763 l_actual_upg_option           VARCHAR2(1);
81764 l_enc_upg_option           VARCHAR2(1);
81765 
81766 --
81767 BEGIN
81768 --
81769 IF g_log_enabled THEN
81770       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_180';
81771 END IF;
81772 --
81773 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81774 
81775       trace
81776          (p_msg      => 'BEGIN of AcctLineType_180'
81777          ,p_level    => C_LEVEL_PROCEDURE
81778          ,p_module   => l_log_module);
81779 
81780 END IF;
81781 --
81782 l_component_type             := 'AMB_JLT';
81783 l_component_code             := 'IOPR';
81784 l_component_type_code        := 'S';
81785 l_component_appl_id          :=  555;
81786 l_amb_context_code           := 'DEFAULT';
81787 l_entity_code                := 'INVENTORY';
81788 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
81789 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_TP';
81790 l_line_definition_owner_code := 'S';
81791 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT_TP';
81792 --
81793 l_balance_type_code          := 'A';
81794 l_segment                     := NULL;
81795 l_ccid                        := NULL;
81796 l_adr_transaction_coa_id      := NULL;
81797 l_adr_accounting_coa_id       := NULL;
81798 l_adr_flexfield_segment_code  := NULL;
81802 l_adr_value_segment_code      := NULL;
81799 l_adr_flex_value_set_id       := NULL;
81800 l_adr_value_type_code         := NULL;
81801 l_adr_value_combination_id    := NULL;
81803 
81804 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
81805 l_bflow_class_code           := '';    -- 4219869 Business Flow
81806 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
81807 l_budgetary_control_flag     := 'N';
81808 
81809 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
81810 l_bflow_applied_to_amt       := NULL; -- 5132302
81811 l_entered_amt_idx            := NULL;          -- 4262811
81812 l_accted_amt_idx             := NULL;          -- 4262811
81813 l_acc_rev_flag               := NULL;          -- 4262811
81814 l_accrual_line_num           := NULL;          -- 4262811
81815 l_tmp_amt                    := NULL;          -- 4262811
81816 --
81817  
81818 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
81819     l_balance_type_code <> 'B' THEN
81820 IF NVL(p_source_2,'
81821 ') =  'IOPR'
81822  THEN 
81823 
81824    --
81825    XLA_AE_LINES_PKG.SetNewLine;
81826 
81827    p_balance_type_code          := l_balance_type_code;
81828    -- set the flag so later we will know whether the gain loss line needs to be created
81829    
81830    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
81831      p_actual_flag :='A';
81832    END IF;
81833 
81834    --
81835    -- bulk performance
81836    --
81837    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
81838                                       p_header_num   => 0); -- 4262811
81839    --
81840    -- set accounting line options
81841    --
81842    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
81843            p_natural_side_code          => 'D'
81844          , p_gain_or_loss_flag          => 'N'
81845          , p_gl_transfer_mode_code      => 'D'
81846          , p_acct_entry_type_code       => 'A'
81847          , p_switch_side_flag           => 'Y'
81848          , p_merge_duplicate_code       => 'W'
81849          );
81850    --
81851    l_acc_rev_natural_side_code := 'C';  -- 4262811
81852    -- 
81853    --
81854    -- set accounting line type info
81855    --
81856    xla_ae_lines_pkg.SetAcctLineType
81857       (p_component_type             => l_component_type
81858       ,p_event_type_code            => l_event_type_code
81859       ,p_line_definition_owner_code => l_line_definition_owner_code
81860       ,p_line_definition_code       => l_line_definition_code
81861       ,p_accounting_line_code       => l_component_code
81862       ,p_accounting_line_type_code  => l_component_type_code
81863       ,p_accounting_line_appl_id    => l_component_appl_id
81864       ,p_amb_context_code           => l_amb_context_code
81865       ,p_entity_code                => l_entity_code
81866       ,p_event_class_code           => l_event_class_code);
81867    --
81868    -- set accounting class
81869    --
81870    xla_ae_lines_pkg.SetAcctClass(
81871            p_accounting_class_code  => 'INTERORG_PROFIT'
81872          , p_ae_header_id           => l_ae_header_id
81873          );
81874 
81875    --
81876    -- set rounding class
81877    --
81878    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
81879                       'INTERORG_PROFIT';
81880 
81881    --
81882    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
81883    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
81884    --
81885    -- bulk performance
81886    --
81887    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
81888 
81889    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
81890       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
81891 
81892    -- 4955764
81893    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81894       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
81895 
81896    -- 4458381 Public Sector Enh
81897    
81898    --
81899    -- set accounting attributes for the line type
81900    --
81901    l_entered_amt_idx := 3;
81902    l_accted_amt_idx  := 8;
81903    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
81904    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
81905    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
81906    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
81907    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
81908    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
81909    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
81910    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
81911    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
81912    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
81913    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
81914    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
81915    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
81916    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
81917    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
81918    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
81922    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
81919    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
81920 
81921    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
81923 
81924    ---------------------------------------------------------------------------------------------------------------
81925    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
81926    ---------------------------------------------------------------------------------------------------------------
81927    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
81928 
81929    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81930    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81931 
81932    IF xla_accounting_cache_pkg.GetValueChar
81933          (p_source_code         => 'LEDGER_CATEGORY_CODE'
81934          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
81935    AND l_bflow_method_code = 'PRIOR_ENTRY'
81936 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
81937    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
81938          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
81939        )
81940    THEN
81941          xla_ae_lines_pkg.BflowUpgEntry
81942            (p_business_method_code    => l_bflow_method_code
81943            ,p_business_class_code     => l_bflow_class_code
81944            ,p_balance_type            => l_balance_type_code);
81945    ELSE
81946       NULL;
81947 -- No business flow processing for business flow method of NONE.
81948    END IF;
81949 
81950    --
81951    -- call analytical criteria
81952    --
81953    
81954    --
81955    -- call description
81956    --
81957    -- No description or it is inherited.
81958    --
81959    -- call ADRs
81960    -- Bug 4922099
81961    --
81962    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81963         (NVL(l_actual_upg_option, 'N') = 'O') OR
81964         (NVL(l_enc_upg_option, 'N') = 'O')
81965       )
81966    THEN
81967    NULL;
81968    --
81969    --
81970    
81971   l_ccid := AcctDerRule_21(
81972            p_application_id           => p_application_id
81973          , p_ae_header_id             => l_ae_header_id 
81974 , p_source_1 => p_source_1
81975 , p_source_2 => p_source_2
81976          , x_transaction_coa_id       => l_adr_transaction_coa_id
81977          , x_accounting_coa_id        => l_adr_accounting_coa_id
81978          , x_value_type_code          => l_adr_value_type_code
81979          , p_side                     => 'NA'
81980    );
81981 
81982    xla_ae_lines_pkg.set_ccid(
81983     p_code_combination_id          => l_ccid
81984   , p_value_type_code              => l_adr_value_type_code
81985   , p_transaction_coa_id           => l_adr_transaction_coa_id
81986   , p_accounting_coa_id            => l_adr_accounting_coa_id
81987   , p_adr_code                     => 'IOPR'
81988   , p_adr_type_code                => 'S'
81989   , p_component_type               => l_component_type
81990   , p_component_code               => l_component_code
81991   , p_component_type_code          => l_component_type_code
81992   , p_component_appl_id            => l_component_appl_id
81993   , p_amb_context_code             => l_amb_context_code
81994   , p_side                         => 'NA'
81995   );
81996 
81997 
81998    --
81999    --
82000    END IF;
82001    --
82002    -- Bug 4922099
82003    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
82004           (NVL(l_enc_upg_option, 'N') = 'O')
82005         ) AND
82006         (l_bflow_method_code = 'PRIOR_ENTRY')
82007       )
82008    THEN
82009       IF
82010       --
82011       1 = 2
82012       --
82013       THEN
82014       xla_accounting_err_pkg.build_message
82015                                     (p_appli_s_name            => 'XLA'
82016                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82017                                     ,p_token_1                 => 'LINE_NUMBER'
82018                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
82019                                     ,p_token_2                 => 'LINE_TYPE_NAME'
82020                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
82021                                                                              l_component_type
82022                                                                             ,l_component_code
82023                                                                             ,l_component_type_code
82024                                                                             ,l_component_appl_id
82025                                                                             ,l_amb_context_code
82026                                                                             ,l_entity_code
82027                                                                             ,l_event_class_code
82028                                                                            )
82029                                     ,p_token_3                 => 'OWNER'
82030                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
82034                                     ,p_token_4                 => 'PRODUCT_NAME'
82031                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
82032                                                                           ,p_lookup_code    => l_component_type_code
82033                                                                          )
82035                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
82036                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
82037                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
82038                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
82039                                     ,p_ae_header_id            =>  NULL
82040                                        );
82041 
82042         IF (C_LEVEL_ERROR>= g_log_level) THEN
82043                  trace
82044                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82045                       ,p_level    => C_LEVEL_ERROR
82046                       ,p_module   => l_log_module);
82047         END IF;
82048       END IF;
82049    END IF;
82050    --
82051    --
82052    ------------------------------------------------------------------------------------------------
82053    -- 4219869 Business Flow
82054    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
82055    -- Prior Entry.  Currently, the following code is always generated.
82056    ------------------------------------------------------------------------------------------------
82057    XLA_AE_LINES_PKG.ValidateCurrentLine;
82058 
82059    ------------------------------------------------------------------------------------
82060    -- 4219869 Business Flow
82061    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
82062    ------------------------------------------------------------------------------------
82063    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82064 
82065    ----------------------------------------------------------------------------------
82066    -- 4219869 Business Flow
82067    -- Update journal entry status -- Need to generate this within IF <condition>
82068    ----------------------------------------------------------------------------------
82069    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82070          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
82071          ,p_balance_type_code => l_balance_type_code
82072          );
82073 
82074    -------------------------------------------------------------------------------------------
82075    -- 4262811 - Generate the Accrual Reversal lines
82076    -------------------------------------------------------------------------------------------
82077    BEGIN
82078       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
82079                               (g_array_event(p_event_id).array_value_num('header_index'));
82080       IF l_acc_rev_flag IS NULL THEN
82081          l_acc_rev_flag := 'N';
82082       END IF;
82083    EXCEPTION
82084       WHEN OTHERS THEN
82085          l_acc_rev_flag := 'N';
82086    END;
82087    --
82088    IF (l_acc_rev_flag = 'Y') THEN
82089 
82090        -- 4645092  ------------------------------------------------------------------------------
82091        -- To allow MPA report to determine if it should generate report process
82092        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
82093        ------------------------------------------------------------------------------------------
82094 
82095        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
82096        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
82097    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
82098    -- call ADRs
82099    -- Bug 4922099
82100    --
82101    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82102         (NVL(l_actual_upg_option, 'N') = 'O') OR
82103         (NVL(l_enc_upg_option, 'N') = 'O')
82104       )
82105    THEN
82106    NULL;
82107    --
82108    --
82109    
82110   l_ccid := AcctDerRule_21(
82111            p_application_id           => p_application_id
82112          , p_ae_header_id             => l_ae_header_id 
82113 , p_source_1 => p_source_1
82114 , p_source_2 => p_source_2
82115          , x_transaction_coa_id       => l_adr_transaction_coa_id
82116          , x_accounting_coa_id        => l_adr_accounting_coa_id
82117          , x_value_type_code          => l_adr_value_type_code
82118          , p_side                     => 'NA'
82119    );
82120 
82121    xla_ae_lines_pkg.set_ccid(
82122     p_code_combination_id          => l_ccid
82123   , p_value_type_code              => l_adr_value_type_code
82124   , p_transaction_coa_id           => l_adr_transaction_coa_id
82125   , p_accounting_coa_id            => l_adr_accounting_coa_id
82126   , p_adr_code                     => 'IOPR'
82127   , p_adr_type_code                => 'S'
82128   , p_component_type               => l_component_type
82129   , p_component_code               => l_component_code
82130   , p_component_type_code          => l_component_type_code
82131   , p_component_appl_id            => l_component_appl_id
82132   , p_amb_context_code             => l_amb_context_code
82133   , p_side                         => 'NA'
82134   );
82135 
82136 
82140 
82137    --
82138    --
82139    END IF;
82141        --
82142        -- Update the line information that should be overwritten
82143        --
82144        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
82145                                          p_header_num   => 1);
82146        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
82147 
82148        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
82149 
82150        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
82151           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
82152        END IF;
82153 
82154       --
82155       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
82156       --
82157       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
82158           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
82159       ELSE
82160           ---------------------------------------------------------------------------------------------------
82161           -- 4262811a Switch Sign
82162           ---------------------------------------------------------------------------------------------------
82163           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
82164           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82165                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82166           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82167                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82168           -- 5132302
82169           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
82170                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82171 
82172       END IF;
82173 
82174       -- 4955764
82175       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82176       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
82177 
82178 
82179       XLA_AE_LINES_PKG.ValidateCurrentLine;
82180       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82181 
82182       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82183                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
82184                ,p_balance_type_code => l_balance_type_code);
82185 
82186    END IF;
82187 
82188    -----------------------------------------------------------------------------------------
82189    -- 4262811 Multiperiod Accounting
82190    -----------------------------------------------------------------------------------------
82191      -- No MPA option is assigned.
82192 
82193 
82194 END IF;
82195 END IF;
82196 --
82197 
82198 --
82199 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82200    trace
82201       (p_msg      => 'END of AcctLineType_180'
82202       ,p_level    => C_LEVEL_PROCEDURE
82203       ,p_module   => l_log_module);
82204 END IF;
82205 --
82206 EXCEPTION
82207   WHEN xla_exceptions_pkg.application_exception THEN
82208       RAISE;
82209   WHEN OTHERS THEN
82210        xla_exceptions_pkg.raise_message
82211            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_180');
82212 END AcctLineType_180;
82213 --
82214 
82215 ---------------------------------------
82216 --
82217 -- PRIVATE FUNCTION
82218 --         AcctLineType_181
82219 --
82220 ---------------------------------------
82221 PROCEDURE AcctLineType_181 (
82222   p_application_id        IN NUMBER
82223  ,p_event_id              IN NUMBER
82224  ,p_calculate_acctd_flag  IN VARCHAR2
82225  ,p_calculate_g_l_flag    IN VARCHAR2
82226  ,p_actual_flag           IN OUT VARCHAR2
82227  ,p_balance_type_code     OUT VARCHAR2
82228  ,p_gain_or_loss_ref      OUT VARCHAR2
82229  
82230 --Transaction Account
82231  , p_source_1            IN NUMBER
82232 --Journal Line Type
82233  , p_source_2            IN VARCHAR2
82234 --Entered Amount
82235  , p_source_3            IN NUMBER
82236 --First Distribution Identifier
82237  , p_source_5            IN NUMBER
82238 --Distribution Type
82239  , p_source_6            IN VARCHAR2
82240 --Currency Code
82241  , p_source_7            IN VARCHAR2
82242 --Currency Conversion Date
82243  , p_source_8            IN DATE
82244 --Currency Conversion Rate
82245  , p_source_9            IN NUMBER
82246 --Currency Conversion Type
82247  , p_source_10            IN VARCHAR2
82248 --Accounted Amount
82249  , p_source_11            IN NUMBER
82250 )
82251 IS
82252 
82253 l_component_type              VARCHAR2(80);
82254 l_component_code              VARCHAR2(30);
82255 l_component_type_code         VARCHAR2(1);
82256 l_component_appl_id           INTEGER;
82257 l_amb_context_code            VARCHAR2(30);
82258 l_entity_code                 VARCHAR2(30);
82259 l_event_class_code            VARCHAR2(30);
82260 l_ae_header_id                NUMBER;
82261 l_event_type_code             VARCHAR2(30);
82262 l_line_definition_code        VARCHAR2(30);
82263 l_line_definition_owner_code  VARCHAR2(1);
82264 --
82265 -- adr variables
82269 l_adr_accounting_coa_id       NUMBER;
82266 l_segment                     VARCHAR2(30);
82267 l_ccid                        NUMBER;
82268 l_adr_transaction_coa_id      NUMBER;
82270 l_adr_flexfield_segment_code  VARCHAR2(30);
82271 l_adr_flex_value_set_id       NUMBER;
82272 l_adr_value_type_code         VARCHAR2(30);
82273 l_adr_value_combination_id    NUMBER;
82274 l_adr_value_segment_code      VARCHAR2(30);
82275 
82276 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
82277 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
82278 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
82279 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
82280 
82281 -- 4262811 Variables ------------------------------------------------------------------------------------------
82282 l_entered_amt_idx             NUMBER;
82283 l_accted_amt_idx              NUMBER;
82284 l_acc_rev_flag                VARCHAR2(1);
82285 l_accrual_line_num            NUMBER;
82286 l_tmp_amt                     NUMBER;
82287 l_acc_rev_natural_side_code   VARCHAR2(1);
82288 
82289 l_num_entries                 NUMBER;
82290 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
82291 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
82292 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
82293 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
82294 l_recog_line_1                NUMBER;
82295 l_recog_line_2                NUMBER;
82296 
82297 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
82298 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
82299 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
82300 
82301 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
82302 
82303 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
82304 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
82305 
82306 ---------------------------------------------------------------------------------------------------------------
82307 
82308 
82309 --
82310 -- bulk performance
82311 --
82312 l_balance_type_code           VARCHAR2(1);
82313 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
82314 l_log_module                  VARCHAR2(240);
82315 
82316 --
82317 -- Upgrade strategy
82318 --
82319 l_actual_upg_option           VARCHAR2(1);
82320 l_enc_upg_option           VARCHAR2(1);
82321 
82322 --
82323 BEGIN
82324 --
82325 IF g_log_enabled THEN
82326       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_181';
82327 END IF;
82328 --
82329 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82330 
82331       trace
82332          (p_msg      => 'BEGIN of AcctLineType_181'
82333          ,p_level    => C_LEVEL_PROCEDURE
82334          ,p_module   => l_log_module);
82335 
82336 END IF;
82337 --
82338 l_component_type             := 'AMB_JLT';
82339 l_component_code             := 'IOPR';
82340 l_component_type_code        := 'S';
82341 l_component_appl_id          :=  555;
82342 l_amb_context_code           := 'DEFAULT';
82343 l_entity_code                := 'INVENTORY';
82344 l_event_class_code           := 'INT_ORDER_TO_EXP';
82345 l_event_type_code            := 'INT_ORDER_ISSUE_TP';
82346 l_line_definition_owner_code := 'S';
82347 l_line_definition_code       := 'INT_ORDER_ISSUE_TP';
82348 --
82349 l_balance_type_code          := 'A';
82350 l_segment                     := NULL;
82351 l_ccid                        := NULL;
82352 l_adr_transaction_coa_id      := NULL;
82353 l_adr_accounting_coa_id       := NULL;
82354 l_adr_flexfield_segment_code  := NULL;
82355 l_adr_flex_value_set_id       := NULL;
82356 l_adr_value_type_code         := NULL;
82357 l_adr_value_combination_id    := NULL;
82358 l_adr_value_segment_code      := NULL;
82359 
82360 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
82361 l_bflow_class_code           := '';    -- 4219869 Business Flow
82362 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
82363 l_budgetary_control_flag     := 'N';
82364 
82365 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
82366 l_bflow_applied_to_amt       := NULL; -- 5132302
82367 l_entered_amt_idx            := NULL;          -- 4262811
82368 l_accted_amt_idx             := NULL;          -- 4262811
82369 l_acc_rev_flag               := NULL;          -- 4262811
82370 l_accrual_line_num           := NULL;          -- 4262811
82371 l_tmp_amt                    := NULL;          -- 4262811
82372 --
82373  
82374 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
82375     l_balance_type_code <> 'B' THEN
82376 IF NVL(p_source_2,'
82377 ') =  'IOPR'
82378  THEN 
82379 
82380    --
82381    XLA_AE_LINES_PKG.SetNewLine;
82382 
82383    p_balance_type_code          := l_balance_type_code;
82384    -- set the flag so later we will know whether the gain loss line needs to be created
82385    
82386    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
82387      p_actual_flag :='A';
82388    END IF;
82389 
82390    --
82391    -- bulk performance
82392    --
82393    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
82394                                       p_header_num   => 0); -- 4262811
82395    --
82399            p_natural_side_code          => 'D'
82396    -- set accounting line options
82397    --
82398    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
82400          , p_gain_or_loss_flag          => 'N'
82401          , p_gl_transfer_mode_code      => 'D'
82402          , p_acct_entry_type_code       => 'A'
82403          , p_switch_side_flag           => 'Y'
82404          , p_merge_duplicate_code       => 'W'
82405          );
82406    --
82407    l_acc_rev_natural_side_code := 'C';  -- 4262811
82408    -- 
82409    --
82410    -- set accounting line type info
82411    --
82412    xla_ae_lines_pkg.SetAcctLineType
82413       (p_component_type             => l_component_type
82414       ,p_event_type_code            => l_event_type_code
82415       ,p_line_definition_owner_code => l_line_definition_owner_code
82416       ,p_line_definition_code       => l_line_definition_code
82417       ,p_accounting_line_code       => l_component_code
82418       ,p_accounting_line_type_code  => l_component_type_code
82419       ,p_accounting_line_appl_id    => l_component_appl_id
82420       ,p_amb_context_code           => l_amb_context_code
82421       ,p_entity_code                => l_entity_code
82422       ,p_event_class_code           => l_event_class_code);
82423    --
82424    -- set accounting class
82425    --
82426    xla_ae_lines_pkg.SetAcctClass(
82427            p_accounting_class_code  => 'INTERORG_PROFIT'
82428          , p_ae_header_id           => l_ae_header_id
82429          );
82430 
82431    --
82432    -- set rounding class
82433    --
82434    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
82435                       'INTERORG_PROFIT';
82436 
82437    --
82438    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
82439    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
82440    --
82441    -- bulk performance
82442    --
82443    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
82444 
82445    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
82446       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
82447 
82448    -- 4955764
82449    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82450       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
82451 
82452    -- 4458381 Public Sector Enh
82453    
82454    --
82455    -- set accounting attributes for the line type
82456    --
82457    l_entered_amt_idx := 3;
82458    l_accted_amt_idx  := 8;
82459    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
82460    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
82461    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
82462    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
82463    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
82464    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
82465    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
82466    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
82467    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
82468    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
82469    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
82470    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
82471    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
82472    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
82473    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
82474    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
82475    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
82476 
82477    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
82478    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
82479 
82480    ---------------------------------------------------------------------------------------------------------------
82481    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
82482    ---------------------------------------------------------------------------------------------------------------
82483    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
82484 
82485    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82486    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82487 
82488    IF xla_accounting_cache_pkg.GetValueChar
82489          (p_source_code         => 'LEDGER_CATEGORY_CODE'
82490          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
82491    AND l_bflow_method_code = 'PRIOR_ENTRY'
82492 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
82493    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
82494          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
82495        )
82496    THEN
82497          xla_ae_lines_pkg.BflowUpgEntry
82498            (p_business_method_code    => l_bflow_method_code
82499            ,p_business_class_code     => l_bflow_class_code
82500            ,p_balance_type            => l_balance_type_code);
82501    ELSE
82502       NULL;
82503 -- No business flow processing for business flow method of NONE.
82507    -- call analytical criteria
82504    END IF;
82505 
82506    --
82508    --
82509    
82510    --
82511    -- call description
82512    --
82513    -- No description or it is inherited.
82514    --
82515    -- call ADRs
82516    -- Bug 4922099
82517    --
82518    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82519         (NVL(l_actual_upg_option, 'N') = 'O') OR
82520         (NVL(l_enc_upg_option, 'N') = 'O')
82521       )
82522    THEN
82523    NULL;
82524    --
82525    --
82526    
82527   l_ccid := AcctDerRule_21(
82528            p_application_id           => p_application_id
82529          , p_ae_header_id             => l_ae_header_id 
82530 , p_source_1 => p_source_1
82531 , p_source_2 => p_source_2
82532          , x_transaction_coa_id       => l_adr_transaction_coa_id
82533          , x_accounting_coa_id        => l_adr_accounting_coa_id
82534          , x_value_type_code          => l_adr_value_type_code
82535          , p_side                     => 'NA'
82536    );
82537 
82538    xla_ae_lines_pkg.set_ccid(
82539     p_code_combination_id          => l_ccid
82540   , p_value_type_code              => l_adr_value_type_code
82541   , p_transaction_coa_id           => l_adr_transaction_coa_id
82542   , p_accounting_coa_id            => l_adr_accounting_coa_id
82543   , p_adr_code                     => 'IOPR'
82544   , p_adr_type_code                => 'S'
82545   , p_component_type               => l_component_type
82546   , p_component_code               => l_component_code
82547   , p_component_type_code          => l_component_type_code
82548   , p_component_appl_id            => l_component_appl_id
82549   , p_amb_context_code             => l_amb_context_code
82550   , p_side                         => 'NA'
82551   );
82552 
82553 
82554    --
82555    --
82556    END IF;
82557    --
82558    -- Bug 4922099
82559    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
82560           (NVL(l_enc_upg_option, 'N') = 'O')
82561         ) AND
82562         (l_bflow_method_code = 'PRIOR_ENTRY')
82563       )
82564    THEN
82565       IF
82566       --
82567       1 = 2
82568       --
82569       THEN
82570       xla_accounting_err_pkg.build_message
82571                                     (p_appli_s_name            => 'XLA'
82572                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82573                                     ,p_token_1                 => 'LINE_NUMBER'
82574                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
82575                                     ,p_token_2                 => 'LINE_TYPE_NAME'
82576                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
82577                                                                              l_component_type
82578                                                                             ,l_component_code
82579                                                                             ,l_component_type_code
82580                                                                             ,l_component_appl_id
82581                                                                             ,l_amb_context_code
82582                                                                             ,l_entity_code
82583                                                                             ,l_event_class_code
82584                                                                            )
82585                                     ,p_token_3                 => 'OWNER'
82586                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
82587                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
82588                                                                           ,p_lookup_code    => l_component_type_code
82589                                                                          )
82590                                     ,p_token_4                 => 'PRODUCT_NAME'
82591                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
82592                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
82593                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
82594                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
82595                                     ,p_ae_header_id            =>  NULL
82596                                        );
82597 
82598         IF (C_LEVEL_ERROR>= g_log_level) THEN
82599                  trace
82600                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82601                       ,p_level    => C_LEVEL_ERROR
82602                       ,p_module   => l_log_module);
82603         END IF;
82604       END IF;
82605    END IF;
82606    --
82607    --
82608    ------------------------------------------------------------------------------------------------
82609    -- 4219869 Business Flow
82610    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
82611    -- Prior Entry.  Currently, the following code is always generated.
82612    ------------------------------------------------------------------------------------------------
82613    XLA_AE_LINES_PKG.ValidateCurrentLine;
82614 
82618    ------------------------------------------------------------------------------------
82615    ------------------------------------------------------------------------------------
82616    -- 4219869 Business Flow
82617    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
82619    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82620 
82621    ----------------------------------------------------------------------------------
82622    -- 4219869 Business Flow
82623    -- Update journal entry status -- Need to generate this within IF <condition>
82624    ----------------------------------------------------------------------------------
82625    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82626          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
82627          ,p_balance_type_code => l_balance_type_code
82628          );
82629 
82630    -------------------------------------------------------------------------------------------
82631    -- 4262811 - Generate the Accrual Reversal lines
82632    -------------------------------------------------------------------------------------------
82633    BEGIN
82634       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
82635                               (g_array_event(p_event_id).array_value_num('header_index'));
82636       IF l_acc_rev_flag IS NULL THEN
82637          l_acc_rev_flag := 'N';
82638       END IF;
82639    EXCEPTION
82640       WHEN OTHERS THEN
82641          l_acc_rev_flag := 'N';
82642    END;
82643    --
82644    IF (l_acc_rev_flag = 'Y') THEN
82645 
82646        -- 4645092  ------------------------------------------------------------------------------
82647        -- To allow MPA report to determine if it should generate report process
82648        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
82649        ------------------------------------------------------------------------------------------
82650 
82651        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
82652        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
82653    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
82654    -- call ADRs
82655    -- Bug 4922099
82656    --
82657    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82658         (NVL(l_actual_upg_option, 'N') = 'O') OR
82659         (NVL(l_enc_upg_option, 'N') = 'O')
82660       )
82661    THEN
82662    NULL;
82663    --
82664    --
82665    
82666   l_ccid := AcctDerRule_21(
82667            p_application_id           => p_application_id
82668          , p_ae_header_id             => l_ae_header_id 
82669 , p_source_1 => p_source_1
82670 , p_source_2 => p_source_2
82671          , x_transaction_coa_id       => l_adr_transaction_coa_id
82672          , x_accounting_coa_id        => l_adr_accounting_coa_id
82673          , x_value_type_code          => l_adr_value_type_code
82674          , p_side                     => 'NA'
82675    );
82676 
82677    xla_ae_lines_pkg.set_ccid(
82678     p_code_combination_id          => l_ccid
82679   , p_value_type_code              => l_adr_value_type_code
82680   , p_transaction_coa_id           => l_adr_transaction_coa_id
82681   , p_accounting_coa_id            => l_adr_accounting_coa_id
82682   , p_adr_code                     => 'IOPR'
82683   , p_adr_type_code                => 'S'
82684   , p_component_type               => l_component_type
82685   , p_component_code               => l_component_code
82686   , p_component_type_code          => l_component_type_code
82687   , p_component_appl_id            => l_component_appl_id
82688   , p_amb_context_code             => l_amb_context_code
82689   , p_side                         => 'NA'
82690   );
82691 
82692 
82693    --
82694    --
82695    END IF;
82696 
82697        --
82698        -- Update the line information that should be overwritten
82699        --
82700        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
82701                                          p_header_num   => 1);
82702        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
82703 
82704        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
82705 
82706        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
82707           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
82708        END IF;
82709 
82710       --
82711       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
82712       --
82713       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
82714           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
82715       ELSE
82716           ---------------------------------------------------------------------------------------------------
82717           -- 4262811a Switch Sign
82718           ---------------------------------------------------------------------------------------------------
82719           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
82720           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82721                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82722           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82726                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82723                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82724           -- 5132302
82725           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
82727 
82728       END IF;
82729 
82730       -- 4955764
82731       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82732       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
82733 
82734 
82735       XLA_AE_LINES_PKG.ValidateCurrentLine;
82736       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82737 
82738       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82739                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
82740                ,p_balance_type_code => l_balance_type_code);
82741 
82742    END IF;
82743 
82744    -----------------------------------------------------------------------------------------
82745    -- 4262811 Multiperiod Accounting
82746    -----------------------------------------------------------------------------------------
82747      -- No MPA option is assigned.
82748 
82749 
82750 END IF;
82751 END IF;
82752 --
82753 
82754 --
82755 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82756    trace
82757       (p_msg      => 'END of AcctLineType_181'
82758       ,p_level    => C_LEVEL_PROCEDURE
82759       ,p_module   => l_log_module);
82760 END IF;
82761 --
82762 EXCEPTION
82763   WHEN xla_exceptions_pkg.application_exception THEN
82764       RAISE;
82765   WHEN OTHERS THEN
82766        xla_exceptions_pkg.raise_message
82767            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_181');
82768 END AcctLineType_181;
82769 --
82770 
82771 ---------------------------------------
82772 --
82773 -- PRIVATE FUNCTION
82774 --         AcctLineType_182
82775 --
82776 ---------------------------------------
82777 PROCEDURE AcctLineType_182 (
82778   p_application_id        IN NUMBER
82779  ,p_event_id              IN NUMBER
82780  ,p_calculate_acctd_flag  IN VARCHAR2
82781  ,p_calculate_g_l_flag    IN VARCHAR2
82782  ,p_actual_flag           IN OUT VARCHAR2
82783  ,p_balance_type_code     OUT VARCHAR2
82784  ,p_gain_or_loss_ref      OUT VARCHAR2
82785  
82786 --Transaction Account
82787  , p_source_1            IN NUMBER
82788 --Journal Line Type
82789  , p_source_2            IN VARCHAR2
82790 --Entered Amount
82791  , p_source_3            IN NUMBER
82792 --First Distribution Identifier
82793  , p_source_5            IN NUMBER
82794 --Distribution Type
82795  , p_source_6            IN VARCHAR2
82796 --Currency Code
82797  , p_source_7            IN VARCHAR2
82798 --Currency Conversion Date
82799  , p_source_8            IN DATE
82800 --Currency Conversion Rate
82801  , p_source_9            IN NUMBER
82802 --Currency Conversion Type
82803  , p_source_10            IN VARCHAR2
82804 --Accounted Amount
82805  , p_source_11            IN NUMBER
82806 )
82807 IS
82808 
82809 l_component_type              VARCHAR2(80);
82810 l_component_code              VARCHAR2(30);
82811 l_component_type_code         VARCHAR2(1);
82812 l_component_appl_id           INTEGER;
82813 l_amb_context_code            VARCHAR2(30);
82814 l_entity_code                 VARCHAR2(30);
82815 l_event_class_code            VARCHAR2(30);
82816 l_ae_header_id                NUMBER;
82817 l_event_type_code             VARCHAR2(30);
82818 l_line_definition_code        VARCHAR2(30);
82819 l_line_definition_owner_code  VARCHAR2(1);
82820 --
82821 -- adr variables
82822 l_segment                     VARCHAR2(30);
82823 l_ccid                        NUMBER;
82824 l_adr_transaction_coa_id      NUMBER;
82825 l_adr_accounting_coa_id       NUMBER;
82826 l_adr_flexfield_segment_code  VARCHAR2(30);
82827 l_adr_flex_value_set_id       NUMBER;
82828 l_adr_value_type_code         VARCHAR2(30);
82829 l_adr_value_combination_id    NUMBER;
82830 l_adr_value_segment_code      VARCHAR2(30);
82831 
82832 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
82833 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
82834 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
82835 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
82836 
82837 -- 4262811 Variables ------------------------------------------------------------------------------------------
82838 l_entered_amt_idx             NUMBER;
82839 l_accted_amt_idx              NUMBER;
82840 l_acc_rev_flag                VARCHAR2(1);
82841 l_accrual_line_num            NUMBER;
82842 l_tmp_amt                     NUMBER;
82843 l_acc_rev_natural_side_code   VARCHAR2(1);
82844 
82845 l_num_entries                 NUMBER;
82846 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
82847 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
82848 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
82849 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
82850 l_recog_line_1                NUMBER;
82851 l_recog_line_2                NUMBER;
82852 
82853 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
82854 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
82858 
82855 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
82856 
82857 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
82859 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
82860 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
82861 
82862 ---------------------------------------------------------------------------------------------------------------
82863 
82864 
82865 --
82866 -- bulk performance
82867 --
82868 l_balance_type_code           VARCHAR2(1);
82869 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
82870 l_log_module                  VARCHAR2(240);
82871 
82872 --
82873 -- Upgrade strategy
82874 --
82875 l_actual_upg_option           VARCHAR2(1);
82876 l_enc_upg_option           VARCHAR2(1);
82877 
82878 --
82879 BEGIN
82880 --
82881 IF g_log_enabled THEN
82882       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_182';
82883 END IF;
82884 --
82885 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82886 
82887       trace
82888          (p_msg      => 'BEGIN of AcctLineType_182'
82889          ,p_level    => C_LEVEL_PROCEDURE
82890          ,p_module   => l_log_module);
82891 
82892 END IF;
82893 --
82894 l_component_type             := 'AMB_JLT';
82895 l_component_code             := 'IOPR';
82896 l_component_type_code        := 'S';
82897 l_component_appl_id          :=  555;
82898 l_amb_context_code           := 'DEFAULT';
82899 l_entity_code                := 'INVENTORY';
82900 l_event_class_code           := 'DIR_INTERORG_SHIP';
82901 l_event_type_code            := 'DIR_INTERORG_SHIP_TP';
82902 l_line_definition_owner_code := 'S';
82903 l_line_definition_code       := 'DIRECT_XFER_SHIP_TP';
82904 --
82905 l_balance_type_code          := 'A';
82906 l_segment                     := NULL;
82907 l_ccid                        := NULL;
82908 l_adr_transaction_coa_id      := NULL;
82909 l_adr_accounting_coa_id       := NULL;
82910 l_adr_flexfield_segment_code  := NULL;
82911 l_adr_flex_value_set_id       := NULL;
82912 l_adr_value_type_code         := NULL;
82913 l_adr_value_combination_id    := NULL;
82914 l_adr_value_segment_code      := NULL;
82915 
82916 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
82917 l_bflow_class_code           := '';    -- 4219869 Business Flow
82918 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
82919 l_budgetary_control_flag     := 'N';
82920 
82921 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
82922 l_bflow_applied_to_amt       := NULL; -- 5132302
82923 l_entered_amt_idx            := NULL;          -- 4262811
82924 l_accted_amt_idx             := NULL;          -- 4262811
82925 l_acc_rev_flag               := NULL;          -- 4262811
82926 l_accrual_line_num           := NULL;          -- 4262811
82927 l_tmp_amt                    := NULL;          -- 4262811
82928 --
82929  
82930 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
82931     l_balance_type_code <> 'B' THEN
82932 IF NVL(p_source_2,'
82933 ') =  'IOPR'
82934  THEN 
82935 
82936    --
82937    XLA_AE_LINES_PKG.SetNewLine;
82938 
82939    p_balance_type_code          := l_balance_type_code;
82940    -- set the flag so later we will know whether the gain loss line needs to be created
82941    
82942    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
82943      p_actual_flag :='A';
82944    END IF;
82945 
82946    --
82947    -- bulk performance
82948    --
82949    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
82950                                       p_header_num   => 0); -- 4262811
82951    --
82952    -- set accounting line options
82953    --
82954    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
82955            p_natural_side_code          => 'D'
82956          , p_gain_or_loss_flag          => 'N'
82957          , p_gl_transfer_mode_code      => 'D'
82958          , p_acct_entry_type_code       => 'A'
82959          , p_switch_side_flag           => 'Y'
82960          , p_merge_duplicate_code       => 'W'
82961          );
82962    --
82963    l_acc_rev_natural_side_code := 'C';  -- 4262811
82964    -- 
82965    --
82966    -- set accounting line type info
82967    --
82968    xla_ae_lines_pkg.SetAcctLineType
82969       (p_component_type             => l_component_type
82970       ,p_event_type_code            => l_event_type_code
82971       ,p_line_definition_owner_code => l_line_definition_owner_code
82972       ,p_line_definition_code       => l_line_definition_code
82973       ,p_accounting_line_code       => l_component_code
82974       ,p_accounting_line_type_code  => l_component_type_code
82975       ,p_accounting_line_appl_id    => l_component_appl_id
82976       ,p_amb_context_code           => l_amb_context_code
82977       ,p_entity_code                => l_entity_code
82978       ,p_event_class_code           => l_event_class_code);
82979    --
82980    -- set accounting class
82981    --
82982    xla_ae_lines_pkg.SetAcctClass(
82983            p_accounting_class_code  => 'INTERORG_PROFIT'
82984          , p_ae_header_id           => l_ae_header_id
82985          );
82986 
82987    --
82988    -- set rounding class
82989    --
82990    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
82994    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
82991                       'INTERORG_PROFIT';
82992 
82993    --
82995    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
82996    --
82997    -- bulk performance
82998    --
82999    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
83000 
83001    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
83002       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
83003 
83004    -- 4955764
83005    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83006       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
83007 
83008    -- 4458381 Public Sector Enh
83009    
83010    --
83011    -- set accounting attributes for the line type
83012    --
83013    l_entered_amt_idx := 3;
83014    l_accted_amt_idx  := 8;
83015    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
83016    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
83017    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
83018    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
83019    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
83020    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
83021    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
83022    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
83023    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
83024    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
83025    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
83026    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
83027    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
83028    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
83029    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
83030    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
83031    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
83032 
83033    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
83034    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
83035 
83036    ---------------------------------------------------------------------------------------------------------------
83037    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
83038    ---------------------------------------------------------------------------------------------------------------
83039    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
83040 
83041    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83042    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83043 
83044    IF xla_accounting_cache_pkg.GetValueChar
83045          (p_source_code         => 'LEDGER_CATEGORY_CODE'
83046          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
83047    AND l_bflow_method_code = 'PRIOR_ENTRY'
83048 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
83049    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
83050          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
83051        )
83052    THEN
83053          xla_ae_lines_pkg.BflowUpgEntry
83054            (p_business_method_code    => l_bflow_method_code
83055            ,p_business_class_code     => l_bflow_class_code
83056            ,p_balance_type            => l_balance_type_code);
83057    ELSE
83058       NULL;
83059 -- No business flow processing for business flow method of NONE.
83060    END IF;
83061 
83062    --
83063    -- call analytical criteria
83064    --
83065    
83066    --
83067    -- call description
83068    --
83069    -- No description or it is inherited.
83070    --
83071    -- call ADRs
83072    -- Bug 4922099
83073    --
83074    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
83075         (NVL(l_actual_upg_option, 'N') = 'O') OR
83076         (NVL(l_enc_upg_option, 'N') = 'O')
83077       )
83078    THEN
83079    NULL;
83080    --
83081    --
83082    
83083   l_ccid := AcctDerRule_21(
83084            p_application_id           => p_application_id
83085          , p_ae_header_id             => l_ae_header_id 
83086 , p_source_1 => p_source_1
83087 , p_source_2 => p_source_2
83088          , x_transaction_coa_id       => l_adr_transaction_coa_id
83089          , x_accounting_coa_id        => l_adr_accounting_coa_id
83090          , x_value_type_code          => l_adr_value_type_code
83091          , p_side                     => 'NA'
83092    );
83093 
83094    xla_ae_lines_pkg.set_ccid(
83095     p_code_combination_id          => l_ccid
83096   , p_value_type_code              => l_adr_value_type_code
83097   , p_transaction_coa_id           => l_adr_transaction_coa_id
83098   , p_accounting_coa_id            => l_adr_accounting_coa_id
83099   , p_adr_code                     => 'IOPR'
83100   , p_adr_type_code                => 'S'
83101   , p_component_type               => l_component_type
83102   , p_component_code               => l_component_code
83103   , p_component_type_code          => l_component_type_code
83107   );
83104   , p_component_appl_id            => l_component_appl_id
83105   , p_amb_context_code             => l_amb_context_code
83106   , p_side                         => 'NA'
83108 
83109 
83110    --
83111    --
83112    END IF;
83113    --
83114    -- Bug 4922099
83115    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
83116           (NVL(l_enc_upg_option, 'N') = 'O')
83117         ) AND
83118         (l_bflow_method_code = 'PRIOR_ENTRY')
83119       )
83120    THEN
83121       IF
83122       --
83123       1 = 2
83124       --
83125       THEN
83126       xla_accounting_err_pkg.build_message
83127                                     (p_appli_s_name            => 'XLA'
83128                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83129                                     ,p_token_1                 => 'LINE_NUMBER'
83130                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
83131                                     ,p_token_2                 => 'LINE_TYPE_NAME'
83132                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
83133                                                                              l_component_type
83134                                                                             ,l_component_code
83135                                                                             ,l_component_type_code
83136                                                                             ,l_component_appl_id
83137                                                                             ,l_amb_context_code
83138                                                                             ,l_entity_code
83139                                                                             ,l_event_class_code
83140                                                                            )
83141                                     ,p_token_3                 => 'OWNER'
83142                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
83143                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
83144                                                                           ,p_lookup_code    => l_component_type_code
83145                                                                          )
83146                                     ,p_token_4                 => 'PRODUCT_NAME'
83147                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
83148                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
83149                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
83150                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
83151                                     ,p_ae_header_id            =>  NULL
83152                                        );
83153 
83154         IF (C_LEVEL_ERROR>= g_log_level) THEN
83155                  trace
83156                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83157                       ,p_level    => C_LEVEL_ERROR
83158                       ,p_module   => l_log_module);
83159         END IF;
83160       END IF;
83161    END IF;
83162    --
83163    --
83164    ------------------------------------------------------------------------------------------------
83165    -- 4219869 Business Flow
83166    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
83167    -- Prior Entry.  Currently, the following code is always generated.
83168    ------------------------------------------------------------------------------------------------
83169    XLA_AE_LINES_PKG.ValidateCurrentLine;
83170 
83171    ------------------------------------------------------------------------------------
83172    -- 4219869 Business Flow
83173    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
83174    ------------------------------------------------------------------------------------
83175    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83176 
83177    ----------------------------------------------------------------------------------
83178    -- 4219869 Business Flow
83179    -- Update journal entry status -- Need to generate this within IF <condition>
83180    ----------------------------------------------------------------------------------
83181    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
83182          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
83183          ,p_balance_type_code => l_balance_type_code
83184          );
83185 
83186    -------------------------------------------------------------------------------------------
83187    -- 4262811 - Generate the Accrual Reversal lines
83188    -------------------------------------------------------------------------------------------
83189    BEGIN
83190       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
83191                               (g_array_event(p_event_id).array_value_num('header_index'));
83192       IF l_acc_rev_flag IS NULL THEN
83193          l_acc_rev_flag := 'N';
83194       END IF;
83195    EXCEPTION
83196       WHEN OTHERS THEN
83197          l_acc_rev_flag := 'N';
83198    END;
83199    --
83200    IF (l_acc_rev_flag = 'Y') THEN
83201 
83205        ------------------------------------------------------------------------------------------
83202        -- 4645092  ------------------------------------------------------------------------------
83203        -- To allow MPA report to determine if it should generate report process
83204        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
83206 
83207        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
83208        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
83209    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
83210    -- call ADRs
83211    -- Bug 4922099
83212    --
83213    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
83214         (NVL(l_actual_upg_option, 'N') = 'O') OR
83215         (NVL(l_enc_upg_option, 'N') = 'O')
83216       )
83217    THEN
83218    NULL;
83219    --
83220    --
83221    
83222   l_ccid := AcctDerRule_21(
83223            p_application_id           => p_application_id
83224          , p_ae_header_id             => l_ae_header_id 
83225 , p_source_1 => p_source_1
83226 , p_source_2 => p_source_2
83227          , x_transaction_coa_id       => l_adr_transaction_coa_id
83228          , x_accounting_coa_id        => l_adr_accounting_coa_id
83229          , x_value_type_code          => l_adr_value_type_code
83230          , p_side                     => 'NA'
83231    );
83232 
83233    xla_ae_lines_pkg.set_ccid(
83234     p_code_combination_id          => l_ccid
83235   , p_value_type_code              => l_adr_value_type_code
83236   , p_transaction_coa_id           => l_adr_transaction_coa_id
83237   , p_accounting_coa_id            => l_adr_accounting_coa_id
83238   , p_adr_code                     => 'IOPR'
83239   , p_adr_type_code                => 'S'
83240   , p_component_type               => l_component_type
83241   , p_component_code               => l_component_code
83242   , p_component_type_code          => l_component_type_code
83243   , p_component_appl_id            => l_component_appl_id
83244   , p_amb_context_code             => l_amb_context_code
83245   , p_side                         => 'NA'
83246   );
83247 
83248 
83249    --
83250    --
83251    END IF;
83252 
83253        --
83254        -- Update the line information that should be overwritten
83255        --
83256        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
83257                                          p_header_num   => 1);
83258        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
83259 
83260        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
83261 
83262        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
83263           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
83264        END IF;
83265 
83266       --
83267       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
83268       --
83269       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
83270           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
83271       ELSE
83272           ---------------------------------------------------------------------------------------------------
83273           -- 4262811a Switch Sign
83274           ---------------------------------------------------------------------------------------------------
83275           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
83276           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
83277                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83278           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
83279                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83280           -- 5132302
83281           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
83282                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83283 
83284       END IF;
83285 
83286       -- 4955764
83287       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83288       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
83289 
83290 
83291       XLA_AE_LINES_PKG.ValidateCurrentLine;
83292       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83293 
83294       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
83295                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
83296                ,p_balance_type_code => l_balance_type_code);
83297 
83298    END IF;
83299 
83300    -----------------------------------------------------------------------------------------
83301    -- 4262811 Multiperiod Accounting
83302    -----------------------------------------------------------------------------------------
83303      -- No MPA option is assigned.
83304 
83305 
83306 END IF;
83307 END IF;
83308 --
83309 
83310 --
83311 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83312    trace
83313       (p_msg      => 'END of AcctLineType_182'
83314       ,p_level    => C_LEVEL_PROCEDURE
83315       ,p_module   => l_log_module);
83316 END IF;
83317 --
83318 EXCEPTION
83322        xla_exceptions_pkg.raise_message
83319   WHEN xla_exceptions_pkg.application_exception THEN
83320       RAISE;
83321   WHEN OTHERS THEN
83323            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_182');
83324 END AcctLineType_182;
83325 --
83326 
83327 ---------------------------------------
83328 --
83329 -- PRIVATE FUNCTION
83330 --         AcctLineType_183
83331 --
83332 ---------------------------------------
83333 PROCEDURE AcctLineType_183 (
83334   p_application_id        IN NUMBER
83335  ,p_event_id              IN NUMBER
83336  ,p_calculate_acctd_flag  IN VARCHAR2
83337  ,p_calculate_g_l_flag    IN VARCHAR2
83338  ,p_actual_flag           IN OUT VARCHAR2
83339  ,p_balance_type_code     OUT VARCHAR2
83340  ,p_gain_or_loss_ref      OUT VARCHAR2
83341  
83342 --Transaction Account
83343  , p_source_1            IN NUMBER
83344 --Journal Line Type
83345  , p_source_2            IN VARCHAR2
83346 --Entered Amount
83347  , p_source_3            IN NUMBER
83348 --First Distribution Identifier
83349  , p_source_5            IN NUMBER
83350 --Distribution Type
83351  , p_source_6            IN VARCHAR2
83352 --Currency Code
83353  , p_source_7            IN VARCHAR2
83354 --Currency Conversion Date
83355  , p_source_8            IN DATE
83356 --Currency Conversion Rate
83357  , p_source_9            IN NUMBER
83358 --Currency Conversion Type
83359  , p_source_10            IN VARCHAR2
83360 --Accounted Amount
83361  , p_source_11            IN NUMBER
83362 )
83363 IS
83364 
83365 l_component_type              VARCHAR2(80);
83366 l_component_code              VARCHAR2(30);
83367 l_component_type_code         VARCHAR2(1);
83368 l_component_appl_id           INTEGER;
83369 l_amb_context_code            VARCHAR2(30);
83370 l_entity_code                 VARCHAR2(30);
83371 l_event_class_code            VARCHAR2(30);
83372 l_ae_header_id                NUMBER;
83373 l_event_type_code             VARCHAR2(30);
83374 l_line_definition_code        VARCHAR2(30);
83375 l_line_definition_owner_code  VARCHAR2(1);
83376 --
83377 -- adr variables
83378 l_segment                     VARCHAR2(30);
83379 l_ccid                        NUMBER;
83380 l_adr_transaction_coa_id      NUMBER;
83381 l_adr_accounting_coa_id       NUMBER;
83382 l_adr_flexfield_segment_code  VARCHAR2(30);
83383 l_adr_flex_value_set_id       NUMBER;
83384 l_adr_value_type_code         VARCHAR2(30);
83385 l_adr_value_combination_id    NUMBER;
83386 l_adr_value_segment_code      VARCHAR2(30);
83387 
83388 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
83389 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
83390 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
83391 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
83392 
83393 -- 4262811 Variables ------------------------------------------------------------------------------------------
83394 l_entered_amt_idx             NUMBER;
83395 l_accted_amt_idx              NUMBER;
83396 l_acc_rev_flag                VARCHAR2(1);
83397 l_accrual_line_num            NUMBER;
83398 l_tmp_amt                     NUMBER;
83399 l_acc_rev_natural_side_code   VARCHAR2(1);
83400 
83401 l_num_entries                 NUMBER;
83402 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
83403 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
83404 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
83405 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
83406 l_recog_line_1                NUMBER;
83407 l_recog_line_2                NUMBER;
83408 
83409 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
83410 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
83411 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
83412 
83413 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
83414 
83415 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
83416 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
83417 
83418 ---------------------------------------------------------------------------------------------------------------
83419 
83420 
83421 --
83422 -- bulk performance
83423 --
83424 l_balance_type_code           VARCHAR2(1);
83425 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
83426 l_log_module                  VARCHAR2(240);
83427 
83428 --
83429 -- Upgrade strategy
83430 --
83431 l_actual_upg_option           VARCHAR2(1);
83432 l_enc_upg_option           VARCHAR2(1);
83433 
83434 --
83435 BEGIN
83436 --
83437 IF g_log_enabled THEN
83438       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_183';
83439 END IF;
83440 --
83441 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83442 
83443       trace
83444          (p_msg      => 'BEGIN of AcctLineType_183'
83445          ,p_level    => C_LEVEL_PROCEDURE
83446          ,p_module   => l_log_module);
83447 
83448 END IF;
83449 --
83450 l_component_type             := 'AMB_JLT';
83451 l_component_code             := 'IOR';
83452 l_component_type_code        := 'S';
83453 l_component_appl_id          :=  555;
83454 l_amb_context_code           := 'DEFAULT';
83455 l_entity_code                := 'INVENTORY';
83459 l_line_definition_code       := 'INT_ORDER_ISSUE_TP';
83456 l_event_class_code           := 'INT_ORDER_TO_EXP';
83457 l_event_type_code            := 'INT_ORDER_ISSUE_TP';
83458 l_line_definition_owner_code := 'S';
83460 --
83461 l_balance_type_code          := 'A';
83462 l_segment                     := NULL;
83463 l_ccid                        := NULL;
83464 l_adr_transaction_coa_id      := NULL;
83465 l_adr_accounting_coa_id       := NULL;
83466 l_adr_flexfield_segment_code  := NULL;
83467 l_adr_flex_value_set_id       := NULL;
83468 l_adr_value_type_code         := NULL;
83469 l_adr_value_combination_id    := NULL;
83470 l_adr_value_segment_code      := NULL;
83471 
83472 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
83473 l_bflow_class_code           := '';    -- 4219869 Business Flow
83474 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
83475 l_budgetary_control_flag     := 'N';
83476 
83477 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
83478 l_bflow_applied_to_amt       := NULL; -- 5132302
83479 l_entered_amt_idx            := NULL;          -- 4262811
83480 l_accted_amt_idx             := NULL;          -- 4262811
83481 l_acc_rev_flag               := NULL;          -- 4262811
83482 l_accrual_line_num           := NULL;          -- 4262811
83483 l_tmp_amt                    := NULL;          -- 4262811
83484 --
83485  
83486 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
83487     l_balance_type_code <> 'B' THEN
83488 IF NVL(p_source_2,'
83489 ') =  'IOR'
83490  THEN 
83491 
83492    --
83493    XLA_AE_LINES_PKG.SetNewLine;
83494 
83495    p_balance_type_code          := l_balance_type_code;
83496    -- set the flag so later we will know whether the gain loss line needs to be created
83497    
83498    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
83499      p_actual_flag :='A';
83500    END IF;
83501 
83502    --
83503    -- bulk performance
83504    --
83505    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
83506                                       p_header_num   => 0); -- 4262811
83507    --
83508    -- set accounting line options
83509    --
83510    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
83511            p_natural_side_code          => 'D'
83512          , p_gain_or_loss_flag          => 'N'
83513          , p_gl_transfer_mode_code      => 'D'
83514          , p_acct_entry_type_code       => 'A'
83515          , p_switch_side_flag           => 'Y'
83516          , p_merge_duplicate_code       => 'W'
83517          );
83518    --
83519    l_acc_rev_natural_side_code := 'C';  -- 4262811
83520    -- 
83521    --
83522    -- set accounting line type info
83523    --
83524    xla_ae_lines_pkg.SetAcctLineType
83525       (p_component_type             => l_component_type
83526       ,p_event_type_code            => l_event_type_code
83527       ,p_line_definition_owner_code => l_line_definition_owner_code
83528       ,p_line_definition_code       => l_line_definition_code
83529       ,p_accounting_line_code       => l_component_code
83530       ,p_accounting_line_type_code  => l_component_type_code
83531       ,p_accounting_line_appl_id    => l_component_appl_id
83532       ,p_amb_context_code           => l_amb_context_code
83533       ,p_entity_code                => l_entity_code
83534       ,p_event_class_code           => l_event_class_code);
83535    --
83536    -- set accounting class
83537    --
83538    xla_ae_lines_pkg.SetAcctClass(
83539            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
83540          , p_ae_header_id           => l_ae_header_id
83541          );
83542 
83543    --
83544    -- set rounding class
83545    --
83546    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
83547                       'INTERORG_RECEIVABLES';
83548 
83549    --
83550    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
83551    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
83552    --
83553    -- bulk performance
83554    --
83555    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
83556 
83557    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
83558       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
83559 
83560    -- 4955764
83561    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83562       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
83563 
83564    -- 4458381 Public Sector Enh
83565    
83566    --
83567    -- set accounting attributes for the line type
83568    --
83569    l_entered_amt_idx := 3;
83570    l_accted_amt_idx  := 8;
83571    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
83572    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
83573    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
83574    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
83575    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
83576    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
83577    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
83581    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
83578    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
83579    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
83580    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
83582    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
83583    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
83584    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
83585    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
83586    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
83587    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
83588 
83589    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
83590    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
83591 
83592    ---------------------------------------------------------------------------------------------------------------
83593    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
83594    ---------------------------------------------------------------------------------------------------------------
83595    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
83596 
83597    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83598    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83599 
83600    IF xla_accounting_cache_pkg.GetValueChar
83601          (p_source_code         => 'LEDGER_CATEGORY_CODE'
83602          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
83603    AND l_bflow_method_code = 'PRIOR_ENTRY'
83604 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
83605    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
83606          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
83607        )
83608    THEN
83609          xla_ae_lines_pkg.BflowUpgEntry
83610            (p_business_method_code    => l_bflow_method_code
83611            ,p_business_class_code     => l_bflow_class_code
83612            ,p_balance_type            => l_balance_type_code);
83613    ELSE
83614       NULL;
83615 -- No business flow processing for business flow method of NONE.
83616    END IF;
83617 
83618    --
83619    -- call analytical criteria
83620    --
83621    
83622    --
83623    -- call description
83624    --
83625    -- No description or it is inherited.
83626    --
83627    -- call ADRs
83628    -- Bug 4922099
83629    --
83630    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
83631         (NVL(l_actual_upg_option, 'N') = 'O') OR
83632         (NVL(l_enc_upg_option, 'N') = 'O')
83633       )
83634    THEN
83635    NULL;
83636    --
83637    --
83638    
83639   l_ccid := AcctDerRule_22(
83640            p_application_id           => p_application_id
83641          , p_ae_header_id             => l_ae_header_id 
83642 , p_source_1 => p_source_1
83643 , p_source_2 => p_source_2
83644          , x_transaction_coa_id       => l_adr_transaction_coa_id
83645          , x_accounting_coa_id        => l_adr_accounting_coa_id
83646          , x_value_type_code          => l_adr_value_type_code
83647          , p_side                     => 'NA'
83648    );
83649 
83650    xla_ae_lines_pkg.set_ccid(
83651     p_code_combination_id          => l_ccid
83652   , p_value_type_code              => l_adr_value_type_code
83653   , p_transaction_coa_id           => l_adr_transaction_coa_id
83654   , p_accounting_coa_id            => l_adr_accounting_coa_id
83655   , p_adr_code                     => 'IOR'
83656   , p_adr_type_code                => 'S'
83657   , p_component_type               => l_component_type
83658   , p_component_code               => l_component_code
83659   , p_component_type_code          => l_component_type_code
83660   , p_component_appl_id            => l_component_appl_id
83661   , p_amb_context_code             => l_amb_context_code
83662   , p_side                         => 'NA'
83663   );
83664 
83665 
83666    --
83667    --
83668    END IF;
83669    --
83670    -- Bug 4922099
83671    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
83672           (NVL(l_enc_upg_option, 'N') = 'O')
83673         ) AND
83674         (l_bflow_method_code = 'PRIOR_ENTRY')
83675       )
83676    THEN
83677       IF
83678       --
83679       1 = 2
83680       --
83681       THEN
83682       xla_accounting_err_pkg.build_message
83683                                     (p_appli_s_name            => 'XLA'
83684                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83685                                     ,p_token_1                 => 'LINE_NUMBER'
83686                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
83687                                     ,p_token_2                 => 'LINE_TYPE_NAME'
83688                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
83689                                                                              l_component_type
83690                                                                             ,l_component_code
83691                                                                             ,l_component_type_code
83695                                                                             ,l_event_class_code
83692                                                                             ,l_component_appl_id
83693                                                                             ,l_amb_context_code
83694                                                                             ,l_entity_code
83696                                                                            )
83697                                     ,p_token_3                 => 'OWNER'
83698                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
83699                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
83700                                                                           ,p_lookup_code    => l_component_type_code
83701                                                                          )
83702                                     ,p_token_4                 => 'PRODUCT_NAME'
83703                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
83704                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
83705                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
83706                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
83707                                     ,p_ae_header_id            =>  NULL
83708                                        );
83709 
83710         IF (C_LEVEL_ERROR>= g_log_level) THEN
83711                  trace
83712                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83713                       ,p_level    => C_LEVEL_ERROR
83714                       ,p_module   => l_log_module);
83715         END IF;
83716       END IF;
83717    END IF;
83718    --
83719    --
83720    ------------------------------------------------------------------------------------------------
83721    -- 4219869 Business Flow
83722    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
83723    -- Prior Entry.  Currently, the following code is always generated.
83724    ------------------------------------------------------------------------------------------------
83725    XLA_AE_LINES_PKG.ValidateCurrentLine;
83726 
83727    ------------------------------------------------------------------------------------
83728    -- 4219869 Business Flow
83729    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
83730    ------------------------------------------------------------------------------------
83731    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83732 
83733    ----------------------------------------------------------------------------------
83734    -- 4219869 Business Flow
83735    -- Update journal entry status -- Need to generate this within IF <condition>
83736    ----------------------------------------------------------------------------------
83737    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
83738          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
83739          ,p_balance_type_code => l_balance_type_code
83740          );
83741 
83742    -------------------------------------------------------------------------------------------
83743    -- 4262811 - Generate the Accrual Reversal lines
83744    -------------------------------------------------------------------------------------------
83745    BEGIN
83746       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
83747                               (g_array_event(p_event_id).array_value_num('header_index'));
83748       IF l_acc_rev_flag IS NULL THEN
83749          l_acc_rev_flag := 'N';
83750       END IF;
83751    EXCEPTION
83752       WHEN OTHERS THEN
83753          l_acc_rev_flag := 'N';
83754    END;
83755    --
83756    IF (l_acc_rev_flag = 'Y') THEN
83757 
83758        -- 4645092  ------------------------------------------------------------------------------
83759        -- To allow MPA report to determine if it should generate report process
83760        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
83761        ------------------------------------------------------------------------------------------
83762 
83763        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
83764        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
83765    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
83766    -- call ADRs
83767    -- Bug 4922099
83768    --
83769    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
83770         (NVL(l_actual_upg_option, 'N') = 'O') OR
83771         (NVL(l_enc_upg_option, 'N') = 'O')
83772       )
83773    THEN
83774    NULL;
83775    --
83776    --
83777    
83778   l_ccid := AcctDerRule_22(
83779            p_application_id           => p_application_id
83780          , p_ae_header_id             => l_ae_header_id 
83781 , p_source_1 => p_source_1
83782 , p_source_2 => p_source_2
83783          , x_transaction_coa_id       => l_adr_transaction_coa_id
83784          , x_accounting_coa_id        => l_adr_accounting_coa_id
83785          , x_value_type_code          => l_adr_value_type_code
83786          , p_side                     => 'NA'
83787    );
83788 
83789    xla_ae_lines_pkg.set_ccid(
83790     p_code_combination_id          => l_ccid
83791   , p_value_type_code              => l_adr_value_type_code
83792   , p_transaction_coa_id           => l_adr_transaction_coa_id
83796   , p_component_type               => l_component_type
83793   , p_accounting_coa_id            => l_adr_accounting_coa_id
83794   , p_adr_code                     => 'IOR'
83795   , p_adr_type_code                => 'S'
83797   , p_component_code               => l_component_code
83798   , p_component_type_code          => l_component_type_code
83799   , p_component_appl_id            => l_component_appl_id
83800   , p_amb_context_code             => l_amb_context_code
83801   , p_side                         => 'NA'
83802   );
83803 
83804 
83805    --
83806    --
83807    END IF;
83808 
83809        --
83810        -- Update the line information that should be overwritten
83811        --
83812        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
83813                                          p_header_num   => 1);
83814        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
83815 
83816        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
83817 
83818        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
83819           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
83820        END IF;
83821 
83822       --
83823       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
83824       --
83825       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
83826           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
83827       ELSE
83828           ---------------------------------------------------------------------------------------------------
83829           -- 4262811a Switch Sign
83830           ---------------------------------------------------------------------------------------------------
83831           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
83832           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
83833                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83834           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
83835                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83836           -- 5132302
83837           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
83838                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83839 
83840       END IF;
83841 
83842       -- 4955764
83843       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83844       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
83845 
83846 
83847       XLA_AE_LINES_PKG.ValidateCurrentLine;
83848       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83849 
83850       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
83851                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
83852                ,p_balance_type_code => l_balance_type_code);
83853 
83854    END IF;
83855 
83856    -----------------------------------------------------------------------------------------
83857    -- 4262811 Multiperiod Accounting
83858    -----------------------------------------------------------------------------------------
83859      -- No MPA option is assigned.
83860 
83861 
83862 END IF;
83863 END IF;
83864 --
83865 
83866 --
83867 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83868    trace
83869       (p_msg      => 'END of AcctLineType_183'
83870       ,p_level    => C_LEVEL_PROCEDURE
83871       ,p_module   => l_log_module);
83872 END IF;
83873 --
83874 EXCEPTION
83875   WHEN xla_exceptions_pkg.application_exception THEN
83876       RAISE;
83877   WHEN OTHERS THEN
83878        xla_exceptions_pkg.raise_message
83879            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_183');
83880 END AcctLineType_183;
83881 --
83882 
83883 ---------------------------------------
83884 --
83885 -- PRIVATE FUNCTION
83886 --         AcctLineType_184
83887 --
83888 ---------------------------------------
83889 PROCEDURE AcctLineType_184 (
83890   p_application_id        IN NUMBER
83891  ,p_event_id              IN NUMBER
83892  ,p_calculate_acctd_flag  IN VARCHAR2
83893  ,p_calculate_g_l_flag    IN VARCHAR2
83894  ,p_actual_flag           IN OUT VARCHAR2
83895  ,p_balance_type_code     OUT VARCHAR2
83896  ,p_gain_or_loss_ref      OUT VARCHAR2
83897  
83898 --Transaction Account
83899  , p_source_1            IN NUMBER
83900 --Journal Line Type
83901  , p_source_2            IN VARCHAR2
83902 --Entered Amount
83903  , p_source_3            IN NUMBER
83904 --First Distribution Identifier
83905  , p_source_5            IN NUMBER
83906 --Distribution Type
83907  , p_source_6            IN VARCHAR2
83908 --Currency Code
83909  , p_source_7            IN VARCHAR2
83910 --Currency Conversion Date
83911  , p_source_8            IN DATE
83912 --Currency Conversion Rate
83913  , p_source_9            IN NUMBER
83914 --Currency Conversion Type
83915  , p_source_10            IN VARCHAR2
83916 --Accounted Amount
83917  , p_source_11            IN NUMBER
83918 )
83919 IS
83920 
83924 l_component_appl_id           INTEGER;
83921 l_component_type              VARCHAR2(80);
83922 l_component_code              VARCHAR2(30);
83923 l_component_type_code         VARCHAR2(1);
83925 l_amb_context_code            VARCHAR2(30);
83926 l_entity_code                 VARCHAR2(30);
83927 l_event_class_code            VARCHAR2(30);
83928 l_ae_header_id                NUMBER;
83929 l_event_type_code             VARCHAR2(30);
83930 l_line_definition_code        VARCHAR2(30);
83931 l_line_definition_owner_code  VARCHAR2(1);
83932 --
83933 -- adr variables
83934 l_segment                     VARCHAR2(30);
83935 l_ccid                        NUMBER;
83936 l_adr_transaction_coa_id      NUMBER;
83937 l_adr_accounting_coa_id       NUMBER;
83938 l_adr_flexfield_segment_code  VARCHAR2(30);
83939 l_adr_flex_value_set_id       NUMBER;
83940 l_adr_value_type_code         VARCHAR2(30);
83941 l_adr_value_combination_id    NUMBER;
83942 l_adr_value_segment_code      VARCHAR2(30);
83943 
83944 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
83945 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
83946 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
83947 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
83948 
83949 -- 4262811 Variables ------------------------------------------------------------------------------------------
83950 l_entered_amt_idx             NUMBER;
83951 l_accted_amt_idx              NUMBER;
83952 l_acc_rev_flag                VARCHAR2(1);
83953 l_accrual_line_num            NUMBER;
83954 l_tmp_amt                     NUMBER;
83955 l_acc_rev_natural_side_code   VARCHAR2(1);
83956 
83957 l_num_entries                 NUMBER;
83958 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
83959 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
83960 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
83961 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
83962 l_recog_line_1                NUMBER;
83963 l_recog_line_2                NUMBER;
83964 
83965 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
83966 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
83967 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
83968 
83969 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
83970 
83971 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
83972 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
83973 
83974 ---------------------------------------------------------------------------------------------------------------
83975 
83976 
83977 --
83978 -- bulk performance
83979 --
83980 l_balance_type_code           VARCHAR2(1);
83981 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
83982 l_log_module                  VARCHAR2(240);
83983 
83984 --
83985 -- Upgrade strategy
83986 --
83987 l_actual_upg_option           VARCHAR2(1);
83988 l_enc_upg_option           VARCHAR2(1);
83989 
83990 --
83991 BEGIN
83992 --
83993 IF g_log_enabled THEN
83994       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_184';
83995 END IF;
83996 --
83997 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83998 
83999       trace
84000          (p_msg      => 'BEGIN of AcctLineType_184'
84001          ,p_level    => C_LEVEL_PROCEDURE
84002          ,p_module   => l_log_module);
84003 
84004 END IF;
84005 --
84006 l_component_type             := 'AMB_JLT';
84007 l_component_code             := 'IOR';
84008 l_component_type_code        := 'S';
84009 l_component_appl_id          :=  555;
84010 l_amb_context_code           := 'DEFAULT';
84011 l_entity_code                := 'INVENTORY';
84012 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
84013 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_NO_TP';
84014 l_line_definition_owner_code := 'S';
84015 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP_NO_TP';
84016 --
84017 l_balance_type_code          := 'A';
84018 l_segment                     := NULL;
84019 l_ccid                        := NULL;
84020 l_adr_transaction_coa_id      := NULL;
84021 l_adr_accounting_coa_id       := NULL;
84022 l_adr_flexfield_segment_code  := NULL;
84023 l_adr_flex_value_set_id       := NULL;
84024 l_adr_value_type_code         := NULL;
84025 l_adr_value_combination_id    := NULL;
84026 l_adr_value_segment_code      := NULL;
84027 
84028 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
84029 l_bflow_class_code           := '';    -- 4219869 Business Flow
84030 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
84031 l_budgetary_control_flag     := 'N';
84032 
84033 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
84034 l_bflow_applied_to_amt       := NULL; -- 5132302
84035 l_entered_amt_idx            := NULL;          -- 4262811
84036 l_accted_amt_idx             := NULL;          -- 4262811
84037 l_acc_rev_flag               := NULL;          -- 4262811
84038 l_accrual_line_num           := NULL;          -- 4262811
84039 l_tmp_amt                    := NULL;          -- 4262811
84040 --
84041  
84042 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
84043     l_balance_type_code <> 'B' THEN
84044 IF NVL(p_source_2,'
84045 ') =  'IOR'
84046  THEN 
84050 
84047 
84048    --
84049    XLA_AE_LINES_PKG.SetNewLine;
84051    p_balance_type_code          := l_balance_type_code;
84052    -- set the flag so later we will know whether the gain loss line needs to be created
84053    
84054    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
84055      p_actual_flag :='A';
84056    END IF;
84057 
84058    --
84059    -- bulk performance
84060    --
84061    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
84062                                       p_header_num   => 0); -- 4262811
84063    --
84064    -- set accounting line options
84065    --
84066    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
84067            p_natural_side_code          => 'D'
84068          , p_gain_or_loss_flag          => 'N'
84069          , p_gl_transfer_mode_code      => 'D'
84070          , p_acct_entry_type_code       => 'A'
84071          , p_switch_side_flag           => 'Y'
84072          , p_merge_duplicate_code       => 'W'
84073          );
84074    --
84075    l_acc_rev_natural_side_code := 'C';  -- 4262811
84076    -- 
84077    --
84078    -- set accounting line type info
84079    --
84080    xla_ae_lines_pkg.SetAcctLineType
84081       (p_component_type             => l_component_type
84082       ,p_event_type_code            => l_event_type_code
84083       ,p_line_definition_owner_code => l_line_definition_owner_code
84084       ,p_line_definition_code       => l_line_definition_code
84085       ,p_accounting_line_code       => l_component_code
84086       ,p_accounting_line_type_code  => l_component_type_code
84087       ,p_accounting_line_appl_id    => l_component_appl_id
84088       ,p_amb_context_code           => l_amb_context_code
84089       ,p_entity_code                => l_entity_code
84090       ,p_event_class_code           => l_event_class_code);
84091    --
84092    -- set accounting class
84093    --
84094    xla_ae_lines_pkg.SetAcctClass(
84095            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
84096          , p_ae_header_id           => l_ae_header_id
84097          );
84098 
84099    --
84100    -- set rounding class
84101    --
84102    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
84103                       'INTERORG_RECEIVABLES';
84104 
84105    --
84106    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
84107    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
84108    --
84109    -- bulk performance
84110    --
84111    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
84112 
84113    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
84114       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
84115 
84116    -- 4955764
84117    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84118       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
84119 
84120    -- 4458381 Public Sector Enh
84121    
84122    --
84123    -- set accounting attributes for the line type
84124    --
84125    l_entered_amt_idx := 3;
84126    l_accted_amt_idx  := 8;
84127    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
84128    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
84129    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
84130    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
84131    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
84132    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
84133    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
84134    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
84135    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
84136    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
84137    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
84138    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
84139    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
84140    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
84141    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
84142    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
84143    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
84144 
84145    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
84146    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
84147 
84148    ---------------------------------------------------------------------------------------------------------------
84149    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
84150    ---------------------------------------------------------------------------------------------------------------
84151    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
84152 
84153    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84154    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84155 
84156    IF xla_accounting_cache_pkg.GetValueChar
84157          (p_source_code         => 'LEDGER_CATEGORY_CODE'
84161    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
84158          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
84159    AND l_bflow_method_code = 'PRIOR_ENTRY'
84160 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
84162          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
84163        )
84164    THEN
84165          xla_ae_lines_pkg.BflowUpgEntry
84166            (p_business_method_code    => l_bflow_method_code
84167            ,p_business_class_code     => l_bflow_class_code
84168            ,p_balance_type            => l_balance_type_code);
84169    ELSE
84170       NULL;
84171 -- No business flow processing for business flow method of NONE.
84172    END IF;
84173 
84174    --
84175    -- call analytical criteria
84176    --
84177    
84178    --
84179    -- call description
84180    --
84181    -- No description or it is inherited.
84182    --
84183    -- call ADRs
84184    -- Bug 4922099
84185    --
84186    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
84187         (NVL(l_actual_upg_option, 'N') = 'O') OR
84188         (NVL(l_enc_upg_option, 'N') = 'O')
84189       )
84190    THEN
84191    NULL;
84192    --
84193    --
84194    
84195   l_ccid := AcctDerRule_22(
84196            p_application_id           => p_application_id
84197          , p_ae_header_id             => l_ae_header_id 
84198 , p_source_1 => p_source_1
84199 , p_source_2 => p_source_2
84200          , x_transaction_coa_id       => l_adr_transaction_coa_id
84201          , x_accounting_coa_id        => l_adr_accounting_coa_id
84202          , x_value_type_code          => l_adr_value_type_code
84203          , p_side                     => 'NA'
84204    );
84205 
84206    xla_ae_lines_pkg.set_ccid(
84207     p_code_combination_id          => l_ccid
84208   , p_value_type_code              => l_adr_value_type_code
84209   , p_transaction_coa_id           => l_adr_transaction_coa_id
84210   , p_accounting_coa_id            => l_adr_accounting_coa_id
84211   , p_adr_code                     => 'IOR'
84212   , p_adr_type_code                => 'S'
84213   , p_component_type               => l_component_type
84214   , p_component_code               => l_component_code
84215   , p_component_type_code          => l_component_type_code
84216   , p_component_appl_id            => l_component_appl_id
84217   , p_amb_context_code             => l_amb_context_code
84218   , p_side                         => 'NA'
84219   );
84220 
84221 
84222    --
84223    --
84224    END IF;
84225    --
84226    -- Bug 4922099
84227    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
84228           (NVL(l_enc_upg_option, 'N') = 'O')
84229         ) AND
84230         (l_bflow_method_code = 'PRIOR_ENTRY')
84231       )
84232    THEN
84233       IF
84234       --
84235       1 = 2
84236       --
84237       THEN
84238       xla_accounting_err_pkg.build_message
84239                                     (p_appli_s_name            => 'XLA'
84240                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
84241                                     ,p_token_1                 => 'LINE_NUMBER'
84242                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
84243                                     ,p_token_2                 => 'LINE_TYPE_NAME'
84244                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
84245                                                                              l_component_type
84246                                                                             ,l_component_code
84247                                                                             ,l_component_type_code
84248                                                                             ,l_component_appl_id
84249                                                                             ,l_amb_context_code
84250                                                                             ,l_entity_code
84251                                                                             ,l_event_class_code
84252                                                                            )
84253                                     ,p_token_3                 => 'OWNER'
84254                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
84255                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
84256                                                                           ,p_lookup_code    => l_component_type_code
84257                                                                          )
84258                                     ,p_token_4                 => 'PRODUCT_NAME'
84259                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
84260                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
84261                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
84262                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
84263                                     ,p_ae_header_id            =>  NULL
84264                                        );
84265 
84266         IF (C_LEVEL_ERROR>= g_log_level) THEN
84267                  trace
84271         END IF;
84268                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
84269                       ,p_level    => C_LEVEL_ERROR
84270                       ,p_module   => l_log_module);
84272       END IF;
84273    END IF;
84274    --
84275    --
84276    ------------------------------------------------------------------------------------------------
84277    -- 4219869 Business Flow
84278    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
84279    -- Prior Entry.  Currently, the following code is always generated.
84280    ------------------------------------------------------------------------------------------------
84281    XLA_AE_LINES_PKG.ValidateCurrentLine;
84282 
84283    ------------------------------------------------------------------------------------
84284    -- 4219869 Business Flow
84285    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
84286    ------------------------------------------------------------------------------------
84287    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
84288 
84289    ----------------------------------------------------------------------------------
84290    -- 4219869 Business Flow
84291    -- Update journal entry status -- Need to generate this within IF <condition>
84292    ----------------------------------------------------------------------------------
84293    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
84294          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
84295          ,p_balance_type_code => l_balance_type_code
84296          );
84297 
84298    -------------------------------------------------------------------------------------------
84299    -- 4262811 - Generate the Accrual Reversal lines
84300    -------------------------------------------------------------------------------------------
84301    BEGIN
84302       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
84303                               (g_array_event(p_event_id).array_value_num('header_index'));
84304       IF l_acc_rev_flag IS NULL THEN
84305          l_acc_rev_flag := 'N';
84306       END IF;
84307    EXCEPTION
84308       WHEN OTHERS THEN
84309          l_acc_rev_flag := 'N';
84310    END;
84311    --
84312    IF (l_acc_rev_flag = 'Y') THEN
84313 
84314        -- 4645092  ------------------------------------------------------------------------------
84315        -- To allow MPA report to determine if it should generate report process
84316        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
84317        ------------------------------------------------------------------------------------------
84318 
84319        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
84320        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
84321    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
84322    -- call ADRs
84323    -- Bug 4922099
84324    --
84325    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
84326         (NVL(l_actual_upg_option, 'N') = 'O') OR
84327         (NVL(l_enc_upg_option, 'N') = 'O')
84328       )
84329    THEN
84330    NULL;
84331    --
84332    --
84333    
84334   l_ccid := AcctDerRule_22(
84335            p_application_id           => p_application_id
84336          , p_ae_header_id             => l_ae_header_id 
84337 , p_source_1 => p_source_1
84338 , p_source_2 => p_source_2
84339          , x_transaction_coa_id       => l_adr_transaction_coa_id
84340          , x_accounting_coa_id        => l_adr_accounting_coa_id
84341          , x_value_type_code          => l_adr_value_type_code
84342          , p_side                     => 'NA'
84343    );
84344 
84345    xla_ae_lines_pkg.set_ccid(
84346     p_code_combination_id          => l_ccid
84347   , p_value_type_code              => l_adr_value_type_code
84348   , p_transaction_coa_id           => l_adr_transaction_coa_id
84349   , p_accounting_coa_id            => l_adr_accounting_coa_id
84350   , p_adr_code                     => 'IOR'
84351   , p_adr_type_code                => 'S'
84352   , p_component_type               => l_component_type
84353   , p_component_code               => l_component_code
84354   , p_component_type_code          => l_component_type_code
84355   , p_component_appl_id            => l_component_appl_id
84356   , p_amb_context_code             => l_amb_context_code
84357   , p_side                         => 'NA'
84358   );
84359 
84360 
84361    --
84362    --
84363    END IF;
84364 
84365        --
84366        -- Update the line information that should be overwritten
84367        --
84368        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
84369                                          p_header_num   => 1);
84370        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
84371 
84372        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
84373 
84374        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
84375           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
84376        END IF;
84377 
84378       --
84379       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
84380       --
84381       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
84382           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
84383       ELSE
84387           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
84384           ---------------------------------------------------------------------------------------------------
84385           -- 4262811a Switch Sign
84386           ---------------------------------------------------------------------------------------------------
84388           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
84389                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84390           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
84391                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84392           -- 5132302
84393           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
84394                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84395 
84396       END IF;
84397 
84398       -- 4955764
84399       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84400       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
84401 
84402 
84403       XLA_AE_LINES_PKG.ValidateCurrentLine;
84404       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
84405 
84406       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
84407                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
84408                ,p_balance_type_code => l_balance_type_code);
84409 
84410    END IF;
84411 
84412    -----------------------------------------------------------------------------------------
84413    -- 4262811 Multiperiod Accounting
84414    -----------------------------------------------------------------------------------------
84415      -- No MPA option is assigned.
84416 
84417 
84418 END IF;
84419 END IF;
84420 --
84421 
84422 --
84423 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84424    trace
84425       (p_msg      => 'END of AcctLineType_184'
84426       ,p_level    => C_LEVEL_PROCEDURE
84427       ,p_module   => l_log_module);
84428 END IF;
84429 --
84430 EXCEPTION
84431   WHEN xla_exceptions_pkg.application_exception THEN
84432       RAISE;
84433   WHEN OTHERS THEN
84434        xla_exceptions_pkg.raise_message
84435            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_184');
84436 END AcctLineType_184;
84437 --
84438 
84439 ---------------------------------------
84440 --
84441 -- PRIVATE FUNCTION
84442 --         AcctLineType_185
84443 --
84444 ---------------------------------------
84445 PROCEDURE AcctLineType_185 (
84446   p_application_id        IN NUMBER
84447  ,p_event_id              IN NUMBER
84448  ,p_calculate_acctd_flag  IN VARCHAR2
84449  ,p_calculate_g_l_flag    IN VARCHAR2
84450  ,p_actual_flag           IN OUT VARCHAR2
84451  ,p_balance_type_code     OUT VARCHAR2
84452  ,p_gain_or_loss_ref      OUT VARCHAR2
84453  
84454 --Transaction Account
84455  , p_source_1            IN NUMBER
84456 --Journal Line Type
84457  , p_source_2            IN VARCHAR2
84458 --Entered Amount
84459  , p_source_3            IN NUMBER
84460 --First Distribution Identifier
84461  , p_source_5            IN NUMBER
84462 --Distribution Type
84463  , p_source_6            IN VARCHAR2
84464 --Currency Code
84465  , p_source_7            IN VARCHAR2
84466 --Currency Conversion Date
84467  , p_source_8            IN DATE
84468 --Currency Conversion Rate
84469  , p_source_9            IN NUMBER
84470 --Currency Conversion Type
84471  , p_source_10            IN VARCHAR2
84472 --Accounted Amount
84473  , p_source_11            IN NUMBER
84474 )
84475 IS
84476 
84477 l_component_type              VARCHAR2(80);
84478 l_component_code              VARCHAR2(30);
84479 l_component_type_code         VARCHAR2(1);
84480 l_component_appl_id           INTEGER;
84481 l_amb_context_code            VARCHAR2(30);
84482 l_entity_code                 VARCHAR2(30);
84483 l_event_class_code            VARCHAR2(30);
84484 l_ae_header_id                NUMBER;
84485 l_event_type_code             VARCHAR2(30);
84486 l_line_definition_code        VARCHAR2(30);
84487 l_line_definition_owner_code  VARCHAR2(1);
84488 --
84489 -- adr variables
84490 l_segment                     VARCHAR2(30);
84491 l_ccid                        NUMBER;
84492 l_adr_transaction_coa_id      NUMBER;
84493 l_adr_accounting_coa_id       NUMBER;
84494 l_adr_flexfield_segment_code  VARCHAR2(30);
84495 l_adr_flex_value_set_id       NUMBER;
84496 l_adr_value_type_code         VARCHAR2(30);
84497 l_adr_value_combination_id    NUMBER;
84498 l_adr_value_segment_code      VARCHAR2(30);
84499 
84500 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
84501 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
84502 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
84503 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
84504 
84505 -- 4262811 Variables ------------------------------------------------------------------------------------------
84506 l_entered_amt_idx             NUMBER;
84507 l_accted_amt_idx              NUMBER;
84508 l_acc_rev_flag                VARCHAR2(1);
84509 l_accrual_line_num            NUMBER;
84510 l_tmp_amt                     NUMBER;
84514 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
84511 l_acc_rev_natural_side_code   VARCHAR2(1);
84512 
84513 l_num_entries                 NUMBER;
84515 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
84516 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
84517 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
84518 l_recog_line_1                NUMBER;
84519 l_recog_line_2                NUMBER;
84520 
84521 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
84522 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
84523 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
84524 
84525 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
84526 
84527 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
84528 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
84529 
84530 ---------------------------------------------------------------------------------------------------------------
84531 
84532 
84533 --
84534 -- bulk performance
84535 --
84536 l_balance_type_code           VARCHAR2(1);
84537 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
84538 l_log_module                  VARCHAR2(240);
84539 
84540 --
84541 -- Upgrade strategy
84542 --
84543 l_actual_upg_option           VARCHAR2(1);
84544 l_enc_upg_option           VARCHAR2(1);
84545 
84546 --
84547 BEGIN
84548 --
84549 IF g_log_enabled THEN
84550       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_185';
84551 END IF;
84552 --
84553 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84554 
84555       trace
84556          (p_msg      => 'BEGIN of AcctLineType_185'
84557          ,p_level    => C_LEVEL_PROCEDURE
84558          ,p_module   => l_log_module);
84559 
84560 END IF;
84561 --
84562 l_component_type             := 'AMB_JLT';
84563 l_component_code             := 'IOR';
84564 l_component_type_code        := 'S';
84565 l_component_appl_id          :=  555;
84566 l_amb_context_code           := 'DEFAULT';
84567 l_entity_code                := 'INVENTORY';
84568 l_event_class_code           := 'DIR_INTERORG_SHIP';
84569 l_event_type_code            := 'DIR_INTERORG_SHIP_TP';
84570 l_line_definition_owner_code := 'S';
84571 l_line_definition_code       := 'DIRECT_XFER_SHIP_TP';
84572 --
84573 l_balance_type_code          := 'A';
84574 l_segment                     := NULL;
84575 l_ccid                        := NULL;
84576 l_adr_transaction_coa_id      := NULL;
84577 l_adr_accounting_coa_id       := NULL;
84578 l_adr_flexfield_segment_code  := NULL;
84579 l_adr_flex_value_set_id       := NULL;
84580 l_adr_value_type_code         := NULL;
84581 l_adr_value_combination_id    := NULL;
84582 l_adr_value_segment_code      := NULL;
84583 
84584 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
84585 l_bflow_class_code           := '';    -- 4219869 Business Flow
84586 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
84587 l_budgetary_control_flag     := 'N';
84588 
84589 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
84590 l_bflow_applied_to_amt       := NULL; -- 5132302
84591 l_entered_amt_idx            := NULL;          -- 4262811
84592 l_accted_amt_idx             := NULL;          -- 4262811
84593 l_acc_rev_flag               := NULL;          -- 4262811
84594 l_accrual_line_num           := NULL;          -- 4262811
84595 l_tmp_amt                    := NULL;          -- 4262811
84596 --
84597  
84598 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
84599     l_balance_type_code <> 'B' THEN
84600 IF NVL(p_source_2,'
84601 ') =  'IOR'
84602  THEN 
84603 
84604    --
84605    XLA_AE_LINES_PKG.SetNewLine;
84606 
84607    p_balance_type_code          := l_balance_type_code;
84608    -- set the flag so later we will know whether the gain loss line needs to be created
84609    
84610    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
84611      p_actual_flag :='A';
84612    END IF;
84613 
84614    --
84615    -- bulk performance
84616    --
84617    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
84618                                       p_header_num   => 0); -- 4262811
84619    --
84620    -- set accounting line options
84621    --
84622    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
84623            p_natural_side_code          => 'D'
84624          , p_gain_or_loss_flag          => 'N'
84625          , p_gl_transfer_mode_code      => 'D'
84626          , p_acct_entry_type_code       => 'A'
84627          , p_switch_side_flag           => 'Y'
84628          , p_merge_duplicate_code       => 'W'
84629          );
84630    --
84631    l_acc_rev_natural_side_code := 'C';  -- 4262811
84632    -- 
84633    --
84634    -- set accounting line type info
84635    --
84636    xla_ae_lines_pkg.SetAcctLineType
84637       (p_component_type             => l_component_type
84638       ,p_event_type_code            => l_event_type_code
84639       ,p_line_definition_owner_code => l_line_definition_owner_code
84640       ,p_line_definition_code       => l_line_definition_code
84641       ,p_accounting_line_code       => l_component_code
84645       ,p_entity_code                => l_entity_code
84642       ,p_accounting_line_type_code  => l_component_type_code
84643       ,p_accounting_line_appl_id    => l_component_appl_id
84644       ,p_amb_context_code           => l_amb_context_code
84646       ,p_event_class_code           => l_event_class_code);
84647    --
84648    -- set accounting class
84649    --
84650    xla_ae_lines_pkg.SetAcctClass(
84651            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
84652          , p_ae_header_id           => l_ae_header_id
84653          );
84654 
84655    --
84656    -- set rounding class
84657    --
84658    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
84659                       'INTERORG_RECEIVABLES';
84660 
84661    --
84662    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
84663    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
84664    --
84665    -- bulk performance
84666    --
84667    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
84668 
84669    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
84670       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
84671 
84672    -- 4955764
84673    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84674       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
84675 
84676    -- 4458381 Public Sector Enh
84677    
84678    --
84679    -- set accounting attributes for the line type
84680    --
84681    l_entered_amt_idx := 3;
84682    l_accted_amt_idx  := 8;
84683    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
84684    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
84685    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
84686    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
84687    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
84688    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
84689    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
84690    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
84691    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
84692    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
84693    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
84694    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
84695    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
84696    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
84697    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
84698    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
84699    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
84700 
84701    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
84702    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
84703 
84704    ---------------------------------------------------------------------------------------------------------------
84705    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
84706    ---------------------------------------------------------------------------------------------------------------
84707    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
84708 
84709    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84710    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84711 
84712    IF xla_accounting_cache_pkg.GetValueChar
84713          (p_source_code         => 'LEDGER_CATEGORY_CODE'
84714          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
84715    AND l_bflow_method_code = 'PRIOR_ENTRY'
84716 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
84717    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
84718          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
84719        )
84720    THEN
84721          xla_ae_lines_pkg.BflowUpgEntry
84722            (p_business_method_code    => l_bflow_method_code
84723            ,p_business_class_code     => l_bflow_class_code
84724            ,p_balance_type            => l_balance_type_code);
84725    ELSE
84726       NULL;
84727 -- No business flow processing for business flow method of NONE.
84728    END IF;
84729 
84730    --
84731    -- call analytical criteria
84732    --
84733    
84734    --
84735    -- call description
84736    --
84737    -- No description or it is inherited.
84738    --
84739    -- call ADRs
84740    -- Bug 4922099
84741    --
84742    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
84743         (NVL(l_actual_upg_option, 'N') = 'O') OR
84744         (NVL(l_enc_upg_option, 'N') = 'O')
84745       )
84746    THEN
84747    NULL;
84748    --
84749    --
84750    
84751   l_ccid := AcctDerRule_22(
84752            p_application_id           => p_application_id
84753          , p_ae_header_id             => l_ae_header_id 
84754 , p_source_1 => p_source_1
84755 , p_source_2 => p_source_2
84756          , x_transaction_coa_id       => l_adr_transaction_coa_id
84760    );
84757          , x_accounting_coa_id        => l_adr_accounting_coa_id
84758          , x_value_type_code          => l_adr_value_type_code
84759          , p_side                     => 'NA'
84761 
84762    xla_ae_lines_pkg.set_ccid(
84763     p_code_combination_id          => l_ccid
84764   , p_value_type_code              => l_adr_value_type_code
84765   , p_transaction_coa_id           => l_adr_transaction_coa_id
84766   , p_accounting_coa_id            => l_adr_accounting_coa_id
84767   , p_adr_code                     => 'IOR'
84768   , p_adr_type_code                => 'S'
84769   , p_component_type               => l_component_type
84770   , p_component_code               => l_component_code
84771   , p_component_type_code          => l_component_type_code
84772   , p_component_appl_id            => l_component_appl_id
84773   , p_amb_context_code             => l_amb_context_code
84774   , p_side                         => 'NA'
84775   );
84776 
84777 
84778    --
84779    --
84780    END IF;
84781    --
84782    -- Bug 4922099
84783    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
84784           (NVL(l_enc_upg_option, 'N') = 'O')
84785         ) AND
84786         (l_bflow_method_code = 'PRIOR_ENTRY')
84787       )
84788    THEN
84789       IF
84790       --
84791       1 = 2
84792       --
84793       THEN
84794       xla_accounting_err_pkg.build_message
84795                                     (p_appli_s_name            => 'XLA'
84796                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
84797                                     ,p_token_1                 => 'LINE_NUMBER'
84798                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
84799                                     ,p_token_2                 => 'LINE_TYPE_NAME'
84800                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
84801                                                                              l_component_type
84802                                                                             ,l_component_code
84803                                                                             ,l_component_type_code
84804                                                                             ,l_component_appl_id
84805                                                                             ,l_amb_context_code
84806                                                                             ,l_entity_code
84807                                                                             ,l_event_class_code
84808                                                                            )
84809                                     ,p_token_3                 => 'OWNER'
84810                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
84811                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
84812                                                                           ,p_lookup_code    => l_component_type_code
84813                                                                          )
84814                                     ,p_token_4                 => 'PRODUCT_NAME'
84815                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
84816                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
84817                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
84818                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
84819                                     ,p_ae_header_id            =>  NULL
84820                                        );
84821 
84822         IF (C_LEVEL_ERROR>= g_log_level) THEN
84823                  trace
84824                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
84825                       ,p_level    => C_LEVEL_ERROR
84826                       ,p_module   => l_log_module);
84827         END IF;
84828       END IF;
84829    END IF;
84830    --
84831    --
84832    ------------------------------------------------------------------------------------------------
84833    -- 4219869 Business Flow
84834    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
84835    -- Prior Entry.  Currently, the following code is always generated.
84836    ------------------------------------------------------------------------------------------------
84837    XLA_AE_LINES_PKG.ValidateCurrentLine;
84838 
84839    ------------------------------------------------------------------------------------
84840    -- 4219869 Business Flow
84841    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
84842    ------------------------------------------------------------------------------------
84843    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
84844 
84845    ----------------------------------------------------------------------------------
84846    -- 4219869 Business Flow
84847    -- Update journal entry status -- Need to generate this within IF <condition>
84848    ----------------------------------------------------------------------------------
84849    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
84850          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
84851          ,p_balance_type_code => l_balance_type_code
84852          );
84853 
84854    -------------------------------------------------------------------------------------------
84858       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
84855    -- 4262811 - Generate the Accrual Reversal lines
84856    -------------------------------------------------------------------------------------------
84857    BEGIN
84859                               (g_array_event(p_event_id).array_value_num('header_index'));
84860       IF l_acc_rev_flag IS NULL THEN
84861          l_acc_rev_flag := 'N';
84862       END IF;
84863    EXCEPTION
84864       WHEN OTHERS THEN
84865          l_acc_rev_flag := 'N';
84866    END;
84867    --
84868    IF (l_acc_rev_flag = 'Y') THEN
84869 
84870        -- 4645092  ------------------------------------------------------------------------------
84871        -- To allow MPA report to determine if it should generate report process
84872        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
84873        ------------------------------------------------------------------------------------------
84874 
84875        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
84876        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
84877    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
84878    -- call ADRs
84879    -- Bug 4922099
84880    --
84881    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
84882         (NVL(l_actual_upg_option, 'N') = 'O') OR
84883         (NVL(l_enc_upg_option, 'N') = 'O')
84884       )
84885    THEN
84886    NULL;
84887    --
84888    --
84889    
84890   l_ccid := AcctDerRule_22(
84891            p_application_id           => p_application_id
84892          , p_ae_header_id             => l_ae_header_id 
84893 , p_source_1 => p_source_1
84894 , p_source_2 => p_source_2
84895          , x_transaction_coa_id       => l_adr_transaction_coa_id
84896          , x_accounting_coa_id        => l_adr_accounting_coa_id
84897          , x_value_type_code          => l_adr_value_type_code
84898          , p_side                     => 'NA'
84899    );
84900 
84901    xla_ae_lines_pkg.set_ccid(
84902     p_code_combination_id          => l_ccid
84903   , p_value_type_code              => l_adr_value_type_code
84904   , p_transaction_coa_id           => l_adr_transaction_coa_id
84905   , p_accounting_coa_id            => l_adr_accounting_coa_id
84906   , p_adr_code                     => 'IOR'
84907   , p_adr_type_code                => 'S'
84908   , p_component_type               => l_component_type
84909   , p_component_code               => l_component_code
84910   , p_component_type_code          => l_component_type_code
84911   , p_component_appl_id            => l_component_appl_id
84912   , p_amb_context_code             => l_amb_context_code
84913   , p_side                         => 'NA'
84914   );
84915 
84916 
84917    --
84918    --
84919    END IF;
84920 
84921        --
84922        -- Update the line information that should be overwritten
84923        --
84924        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
84925                                          p_header_num   => 1);
84926        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
84927 
84928        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
84929 
84930        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
84931           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
84932        END IF;
84933 
84934       --
84935       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
84936       --
84937       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
84938           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
84939       ELSE
84940           ---------------------------------------------------------------------------------------------------
84941           -- 4262811a Switch Sign
84942           ---------------------------------------------------------------------------------------------------
84943           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
84944           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
84945                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84946           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
84947                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84948           -- 5132302
84949           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
84950                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84951 
84952       END IF;
84953 
84954       -- 4955764
84955       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84956       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
84957 
84958 
84959       XLA_AE_LINES_PKG.ValidateCurrentLine;
84960       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
84961 
84962       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
84963                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
84964                ,p_balance_type_code => l_balance_type_code);
84965 
84966    END IF;
84967 
84971      -- No MPA option is assigned.
84968    -----------------------------------------------------------------------------------------
84969    -- 4262811 Multiperiod Accounting
84970    -----------------------------------------------------------------------------------------
84972 
84973 
84974 END IF;
84975 END IF;
84976 --
84977 
84978 --
84979 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84980    trace
84981       (p_msg      => 'END of AcctLineType_185'
84982       ,p_level    => C_LEVEL_PROCEDURE
84983       ,p_module   => l_log_module);
84984 END IF;
84985 --
84986 EXCEPTION
84987   WHEN xla_exceptions_pkg.application_exception THEN
84988       RAISE;
84989   WHEN OTHERS THEN
84990        xla_exceptions_pkg.raise_message
84991            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_185');
84992 END AcctLineType_185;
84993 --
84994 
84995 ---------------------------------------
84996 --
84997 -- PRIVATE FUNCTION
84998 --         AcctLineType_186
84999 --
85000 ---------------------------------------
85001 PROCEDURE AcctLineType_186 (
85002   p_application_id        IN NUMBER
85003  ,p_event_id              IN NUMBER
85004  ,p_calculate_acctd_flag  IN VARCHAR2
85005  ,p_calculate_g_l_flag    IN VARCHAR2
85006  ,p_actual_flag           IN OUT VARCHAR2
85007  ,p_balance_type_code     OUT VARCHAR2
85008  ,p_gain_or_loss_ref      OUT VARCHAR2
85009  
85010 --Transaction Account
85011  , p_source_1            IN NUMBER
85012 --Journal Line Type
85013  , p_source_2            IN VARCHAR2
85014 --Entered Amount
85015  , p_source_3            IN NUMBER
85016 --First Distribution Identifier
85017  , p_source_5            IN NUMBER
85018 --Distribution Type
85019  , p_source_6            IN VARCHAR2
85020 --Currency Code
85021  , p_source_7            IN VARCHAR2
85022 --Currency Conversion Date
85023  , p_source_8            IN DATE
85024 --Currency Conversion Rate
85025  , p_source_9            IN NUMBER
85026 --Currency Conversion Type
85027  , p_source_10            IN VARCHAR2
85028 --Accounted Amount
85029  , p_source_11            IN NUMBER
85030 )
85031 IS
85032 
85033 l_component_type              VARCHAR2(80);
85034 l_component_code              VARCHAR2(30);
85035 l_component_type_code         VARCHAR2(1);
85036 l_component_appl_id           INTEGER;
85037 l_amb_context_code            VARCHAR2(30);
85038 l_entity_code                 VARCHAR2(30);
85039 l_event_class_code            VARCHAR2(30);
85040 l_ae_header_id                NUMBER;
85041 l_event_type_code             VARCHAR2(30);
85042 l_line_definition_code        VARCHAR2(30);
85043 l_line_definition_owner_code  VARCHAR2(1);
85044 --
85045 -- adr variables
85046 l_segment                     VARCHAR2(30);
85047 l_ccid                        NUMBER;
85048 l_adr_transaction_coa_id      NUMBER;
85049 l_adr_accounting_coa_id       NUMBER;
85050 l_adr_flexfield_segment_code  VARCHAR2(30);
85051 l_adr_flex_value_set_id       NUMBER;
85052 l_adr_value_type_code         VARCHAR2(30);
85053 l_adr_value_combination_id    NUMBER;
85054 l_adr_value_segment_code      VARCHAR2(30);
85055 
85056 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
85057 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
85058 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
85059 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
85060 
85061 -- 4262811 Variables ------------------------------------------------------------------------------------------
85062 l_entered_amt_idx             NUMBER;
85063 l_accted_amt_idx              NUMBER;
85064 l_acc_rev_flag                VARCHAR2(1);
85065 l_accrual_line_num            NUMBER;
85066 l_tmp_amt                     NUMBER;
85067 l_acc_rev_natural_side_code   VARCHAR2(1);
85068 
85069 l_num_entries                 NUMBER;
85070 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
85071 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
85072 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
85073 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
85074 l_recog_line_1                NUMBER;
85075 l_recog_line_2                NUMBER;
85076 
85077 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
85078 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
85079 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
85080 
85081 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
85082 
85083 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
85084 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
85085 
85086 ---------------------------------------------------------------------------------------------------------------
85087 
85088 
85089 --
85090 -- bulk performance
85091 --
85092 l_balance_type_code           VARCHAR2(1);
85093 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
85094 l_log_module                  VARCHAR2(240);
85095 
85096 --
85097 -- Upgrade strategy
85098 --
85099 l_actual_upg_option           VARCHAR2(1);
85100 l_enc_upg_option           VARCHAR2(1);
85101 
85102 --
85103 BEGIN
85104 --
85105 IF g_log_enabled THEN
85109 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85106       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_186';
85107 END IF;
85108 --
85110 
85111       trace
85112          (p_msg      => 'BEGIN of AcctLineType_186'
85113          ,p_level    => C_LEVEL_PROCEDURE
85114          ,p_module   => l_log_module);
85115 
85116 END IF;
85117 --
85118 l_component_type             := 'AMB_JLT';
85119 l_component_code             := 'IOR';
85120 l_component_type_code        := 'S';
85121 l_component_appl_id          :=  555;
85122 l_amb_context_code           := 'DEFAULT';
85123 l_entity_code                := 'INVENTORY';
85124 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
85125 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_TP';
85126 l_line_definition_owner_code := 'S';
85127 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT_TP';
85128 --
85129 l_balance_type_code          := 'A';
85130 l_segment                     := NULL;
85131 l_ccid                        := NULL;
85132 l_adr_transaction_coa_id      := NULL;
85133 l_adr_accounting_coa_id       := NULL;
85134 l_adr_flexfield_segment_code  := NULL;
85135 l_adr_flex_value_set_id       := NULL;
85136 l_adr_value_type_code         := NULL;
85137 l_adr_value_combination_id    := NULL;
85138 l_adr_value_segment_code      := NULL;
85139 
85140 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
85141 l_bflow_class_code           := '';    -- 4219869 Business Flow
85142 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
85143 l_budgetary_control_flag     := 'N';
85144 
85145 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
85146 l_bflow_applied_to_amt       := NULL; -- 5132302
85147 l_entered_amt_idx            := NULL;          -- 4262811
85148 l_accted_amt_idx             := NULL;          -- 4262811
85149 l_acc_rev_flag               := NULL;          -- 4262811
85150 l_accrual_line_num           := NULL;          -- 4262811
85151 l_tmp_amt                    := NULL;          -- 4262811
85152 --
85153  
85154 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
85155     l_balance_type_code <> 'B' THEN
85156 IF NVL(p_source_2,'
85157 ') =  'IOR'
85158  THEN 
85159 
85160    --
85161    XLA_AE_LINES_PKG.SetNewLine;
85162 
85163    p_balance_type_code          := l_balance_type_code;
85164    -- set the flag so later we will know whether the gain loss line needs to be created
85165    
85166    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
85167      p_actual_flag :='A';
85168    END IF;
85169 
85170    --
85171    -- bulk performance
85172    --
85173    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
85174                                       p_header_num   => 0); -- 4262811
85175    --
85176    -- set accounting line options
85177    --
85178    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
85179            p_natural_side_code          => 'D'
85180          , p_gain_or_loss_flag          => 'N'
85181          , p_gl_transfer_mode_code      => 'D'
85182          , p_acct_entry_type_code       => 'A'
85183          , p_switch_side_flag           => 'Y'
85184          , p_merge_duplicate_code       => 'W'
85185          );
85186    --
85187    l_acc_rev_natural_side_code := 'C';  -- 4262811
85188    -- 
85189    --
85190    -- set accounting line type info
85191    --
85192    xla_ae_lines_pkg.SetAcctLineType
85193       (p_component_type             => l_component_type
85194       ,p_event_type_code            => l_event_type_code
85195       ,p_line_definition_owner_code => l_line_definition_owner_code
85196       ,p_line_definition_code       => l_line_definition_code
85197       ,p_accounting_line_code       => l_component_code
85198       ,p_accounting_line_type_code  => l_component_type_code
85199       ,p_accounting_line_appl_id    => l_component_appl_id
85200       ,p_amb_context_code           => l_amb_context_code
85201       ,p_entity_code                => l_entity_code
85202       ,p_event_class_code           => l_event_class_code);
85203    --
85204    -- set accounting class
85205    --
85206    xla_ae_lines_pkg.SetAcctClass(
85207            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
85208          , p_ae_header_id           => l_ae_header_id
85209          );
85210 
85211    --
85212    -- set rounding class
85213    --
85214    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
85215                       'INTERORG_RECEIVABLES';
85216 
85217    --
85218    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
85219    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
85220    --
85221    -- bulk performance
85222    --
85223    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
85224 
85225    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
85226       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
85227 
85228    -- 4955764
85229    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85230       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
85231 
85235    -- set accounting attributes for the line type
85232    -- 4458381 Public Sector Enh
85233    
85234    --
85236    --
85237    l_entered_amt_idx := 3;
85238    l_accted_amt_idx  := 8;
85239    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
85240    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
85241    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
85242    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
85243    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
85244    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
85245    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
85246    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
85247    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
85248    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
85249    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
85250    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
85251    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
85252    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
85253    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
85254    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
85255    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
85256 
85257    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
85258    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
85259 
85260    ---------------------------------------------------------------------------------------------------------------
85261    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
85262    ---------------------------------------------------------------------------------------------------------------
85263    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
85264 
85265    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
85266    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
85267 
85268    IF xla_accounting_cache_pkg.GetValueChar
85269          (p_source_code         => 'LEDGER_CATEGORY_CODE'
85270          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
85271    AND l_bflow_method_code = 'PRIOR_ENTRY'
85272 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
85273    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
85274          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
85275        )
85276    THEN
85277          xla_ae_lines_pkg.BflowUpgEntry
85278            (p_business_method_code    => l_bflow_method_code
85279            ,p_business_class_code     => l_bflow_class_code
85280            ,p_balance_type            => l_balance_type_code);
85281    ELSE
85282       NULL;
85283 -- No business flow processing for business flow method of NONE.
85284    END IF;
85285 
85286    --
85287    -- call analytical criteria
85288    --
85289    
85290    --
85291    -- call description
85292    --
85293    -- No description or it is inherited.
85294    --
85295    -- call ADRs
85296    -- Bug 4922099
85297    --
85298    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85299         (NVL(l_actual_upg_option, 'N') = 'O') OR
85300         (NVL(l_enc_upg_option, 'N') = 'O')
85301       )
85302    THEN
85303    NULL;
85304    --
85305    --
85306    
85307   l_ccid := AcctDerRule_22(
85308            p_application_id           => p_application_id
85309          , p_ae_header_id             => l_ae_header_id 
85310 , p_source_1 => p_source_1
85311 , p_source_2 => p_source_2
85312          , x_transaction_coa_id       => l_adr_transaction_coa_id
85313          , x_accounting_coa_id        => l_adr_accounting_coa_id
85314          , x_value_type_code          => l_adr_value_type_code
85315          , p_side                     => 'NA'
85316    );
85317 
85318    xla_ae_lines_pkg.set_ccid(
85319     p_code_combination_id          => l_ccid
85320   , p_value_type_code              => l_adr_value_type_code
85321   , p_transaction_coa_id           => l_adr_transaction_coa_id
85322   , p_accounting_coa_id            => l_adr_accounting_coa_id
85323   , p_adr_code                     => 'IOR'
85324   , p_adr_type_code                => 'S'
85325   , p_component_type               => l_component_type
85326   , p_component_code               => l_component_code
85327   , p_component_type_code          => l_component_type_code
85328   , p_component_appl_id            => l_component_appl_id
85329   , p_amb_context_code             => l_amb_context_code
85330   , p_side                         => 'NA'
85331   );
85332 
85333 
85334    --
85335    --
85336    END IF;
85337    --
85338    -- Bug 4922099
85339    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
85340           (NVL(l_enc_upg_option, 'N') = 'O')
85341         ) AND
85342         (l_bflow_method_code = 'PRIOR_ENTRY')
85343       )
85344    THEN
85345       IF
85346       --
85347       1 = 2
85348       --
85349       THEN
85350       xla_accounting_err_pkg.build_message
85351                                     (p_appli_s_name            => 'XLA'
85352                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85353                                     ,p_token_1                 => 'LINE_NUMBER'
85357                                                                              l_component_type
85354                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
85355                                     ,p_token_2                 => 'LINE_TYPE_NAME'
85356                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
85358                                                                             ,l_component_code
85359                                                                             ,l_component_type_code
85360                                                                             ,l_component_appl_id
85361                                                                             ,l_amb_context_code
85362                                                                             ,l_entity_code
85363                                                                             ,l_event_class_code
85364                                                                            )
85365                                     ,p_token_3                 => 'OWNER'
85366                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
85367                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
85368                                                                           ,p_lookup_code    => l_component_type_code
85369                                                                          )
85370                                     ,p_token_4                 => 'PRODUCT_NAME'
85371                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
85372                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
85373                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
85374                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
85375                                     ,p_ae_header_id            =>  NULL
85376                                        );
85377 
85378         IF (C_LEVEL_ERROR>= g_log_level) THEN
85379                  trace
85380                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85381                       ,p_level    => C_LEVEL_ERROR
85382                       ,p_module   => l_log_module);
85383         END IF;
85384       END IF;
85385    END IF;
85386    --
85387    --
85388    ------------------------------------------------------------------------------------------------
85389    -- 4219869 Business Flow
85390    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
85391    -- Prior Entry.  Currently, the following code is always generated.
85392    ------------------------------------------------------------------------------------------------
85393    XLA_AE_LINES_PKG.ValidateCurrentLine;
85394 
85395    ------------------------------------------------------------------------------------
85396    -- 4219869 Business Flow
85397    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
85398    ------------------------------------------------------------------------------------
85399    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85400 
85401    ----------------------------------------------------------------------------------
85402    -- 4219869 Business Flow
85403    -- Update journal entry status -- Need to generate this within IF <condition>
85404    ----------------------------------------------------------------------------------
85405    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85406          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
85407          ,p_balance_type_code => l_balance_type_code
85408          );
85409 
85410    -------------------------------------------------------------------------------------------
85411    -- 4262811 - Generate the Accrual Reversal lines
85412    -------------------------------------------------------------------------------------------
85413    BEGIN
85414       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
85415                               (g_array_event(p_event_id).array_value_num('header_index'));
85416       IF l_acc_rev_flag IS NULL THEN
85417          l_acc_rev_flag := 'N';
85418       END IF;
85419    EXCEPTION
85420       WHEN OTHERS THEN
85421          l_acc_rev_flag := 'N';
85422    END;
85423    --
85424    IF (l_acc_rev_flag = 'Y') THEN
85425 
85426        -- 4645092  ------------------------------------------------------------------------------
85427        -- To allow MPA report to determine if it should generate report process
85428        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
85429        ------------------------------------------------------------------------------------------
85430 
85431        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
85432        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
85433    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
85434    -- call ADRs
85435    -- Bug 4922099
85436    --
85437    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85438         (NVL(l_actual_upg_option, 'N') = 'O') OR
85439         (NVL(l_enc_upg_option, 'N') = 'O')
85440       )
85441    THEN
85442    NULL;
85443    --
85444    --
85445    
85446   l_ccid := AcctDerRule_22(
85447            p_application_id           => p_application_id
85448          , p_ae_header_id             => l_ae_header_id 
85452          , x_accounting_coa_id        => l_adr_accounting_coa_id
85449 , p_source_1 => p_source_1
85450 , p_source_2 => p_source_2
85451          , x_transaction_coa_id       => l_adr_transaction_coa_id
85453          , x_value_type_code          => l_adr_value_type_code
85454          , p_side                     => 'NA'
85455    );
85456 
85457    xla_ae_lines_pkg.set_ccid(
85458     p_code_combination_id          => l_ccid
85459   , p_value_type_code              => l_adr_value_type_code
85460   , p_transaction_coa_id           => l_adr_transaction_coa_id
85461   , p_accounting_coa_id            => l_adr_accounting_coa_id
85462   , p_adr_code                     => 'IOR'
85463   , p_adr_type_code                => 'S'
85464   , p_component_type               => l_component_type
85465   , p_component_code               => l_component_code
85466   , p_component_type_code          => l_component_type_code
85467   , p_component_appl_id            => l_component_appl_id
85468   , p_amb_context_code             => l_amb_context_code
85469   , p_side                         => 'NA'
85470   );
85471 
85472 
85473    --
85474    --
85475    END IF;
85476 
85477        --
85478        -- Update the line information that should be overwritten
85479        --
85480        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
85481                                          p_header_num   => 1);
85482        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
85483 
85484        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
85485 
85486        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
85487           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
85488        END IF;
85489 
85490       --
85491       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
85492       --
85493       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
85494           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
85495       ELSE
85496           ---------------------------------------------------------------------------------------------------
85497           -- 4262811a Switch Sign
85498           ---------------------------------------------------------------------------------------------------
85499           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
85500           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85501                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85502           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85503                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85504           -- 5132302
85505           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
85506                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85507 
85508       END IF;
85509 
85510       -- 4955764
85511       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85512       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
85513 
85514 
85515       XLA_AE_LINES_PKG.ValidateCurrentLine;
85516       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85517 
85518       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85519                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
85520                ,p_balance_type_code => l_balance_type_code);
85521 
85522    END IF;
85523 
85524    -----------------------------------------------------------------------------------------
85525    -- 4262811 Multiperiod Accounting
85526    -----------------------------------------------------------------------------------------
85527      -- No MPA option is assigned.
85528 
85529 
85530 END IF;
85531 END IF;
85532 --
85533 
85534 --
85535 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85536    trace
85537       (p_msg      => 'END of AcctLineType_186'
85538       ,p_level    => C_LEVEL_PROCEDURE
85539       ,p_module   => l_log_module);
85540 END IF;
85541 --
85542 EXCEPTION
85543   WHEN xla_exceptions_pkg.application_exception THEN
85544       RAISE;
85545   WHEN OTHERS THEN
85546        xla_exceptions_pkg.raise_message
85547            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_186');
85548 END AcctLineType_186;
85549 --
85550 
85551 ---------------------------------------
85552 --
85553 -- PRIVATE FUNCTION
85554 --         AcctLineType_187
85555 --
85556 ---------------------------------------
85557 PROCEDURE AcctLineType_187 (
85558   p_application_id        IN NUMBER
85559  ,p_event_id              IN NUMBER
85560  ,p_calculate_acctd_flag  IN VARCHAR2
85561  ,p_calculate_g_l_flag    IN VARCHAR2
85562  ,p_actual_flag           IN OUT VARCHAR2
85563  ,p_balance_type_code     OUT VARCHAR2
85564  ,p_gain_or_loss_ref      OUT VARCHAR2
85565  
85566 --Transaction Account
85567  , p_source_1            IN NUMBER
85568 --Journal Line Type
85569  , p_source_2            IN VARCHAR2
85570 --Entered Amount
85571  , p_source_3            IN NUMBER
85575  , p_source_6            IN VARCHAR2
85572 --First Distribution Identifier
85573  , p_source_5            IN NUMBER
85574 --Distribution Type
85576 --Currency Code
85577  , p_source_7            IN VARCHAR2
85578 --Currency Conversion Date
85579  , p_source_8            IN DATE
85580 --Currency Conversion Rate
85581  , p_source_9            IN NUMBER
85582 --Currency Conversion Type
85583  , p_source_10            IN VARCHAR2
85584 --Accounted Amount
85585  , p_source_11            IN NUMBER
85586 )
85587 IS
85588 
85589 l_component_type              VARCHAR2(80);
85590 l_component_code              VARCHAR2(30);
85591 l_component_type_code         VARCHAR2(1);
85592 l_component_appl_id           INTEGER;
85593 l_amb_context_code            VARCHAR2(30);
85594 l_entity_code                 VARCHAR2(30);
85595 l_event_class_code            VARCHAR2(30);
85596 l_ae_header_id                NUMBER;
85597 l_event_type_code             VARCHAR2(30);
85598 l_line_definition_code        VARCHAR2(30);
85599 l_line_definition_owner_code  VARCHAR2(1);
85600 --
85601 -- adr variables
85602 l_segment                     VARCHAR2(30);
85603 l_ccid                        NUMBER;
85604 l_adr_transaction_coa_id      NUMBER;
85605 l_adr_accounting_coa_id       NUMBER;
85606 l_adr_flexfield_segment_code  VARCHAR2(30);
85607 l_adr_flex_value_set_id       NUMBER;
85608 l_adr_value_type_code         VARCHAR2(30);
85609 l_adr_value_combination_id    NUMBER;
85610 l_adr_value_segment_code      VARCHAR2(30);
85611 
85612 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
85613 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
85614 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
85615 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
85616 
85617 -- 4262811 Variables ------------------------------------------------------------------------------------------
85618 l_entered_amt_idx             NUMBER;
85619 l_accted_amt_idx              NUMBER;
85620 l_acc_rev_flag                VARCHAR2(1);
85621 l_accrual_line_num            NUMBER;
85622 l_tmp_amt                     NUMBER;
85623 l_acc_rev_natural_side_code   VARCHAR2(1);
85624 
85625 l_num_entries                 NUMBER;
85626 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
85627 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
85628 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
85629 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
85630 l_recog_line_1                NUMBER;
85631 l_recog_line_2                NUMBER;
85632 
85633 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
85634 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
85635 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
85636 
85637 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
85638 
85639 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
85640 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
85641 
85642 ---------------------------------------------------------------------------------------------------------------
85643 
85644 
85645 --
85646 -- bulk performance
85647 --
85648 l_balance_type_code           VARCHAR2(1);
85649 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
85650 l_log_module                  VARCHAR2(240);
85651 
85652 --
85653 -- Upgrade strategy
85654 --
85655 l_actual_upg_option           VARCHAR2(1);
85656 l_enc_upg_option           VARCHAR2(1);
85657 
85658 --
85659 BEGIN
85660 --
85661 IF g_log_enabled THEN
85662       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_187';
85663 END IF;
85664 --
85665 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85666 
85667       trace
85668          (p_msg      => 'BEGIN of AcctLineType_187'
85669          ,p_level    => C_LEVEL_PROCEDURE
85670          ,p_module   => l_log_module);
85671 
85672 END IF;
85673 --
85674 l_component_type             := 'AMB_JLT';
85675 l_component_code             := 'IOR';
85676 l_component_type_code        := 'S';
85677 l_component_appl_id          :=  555;
85678 l_amb_context_code           := 'DEFAULT';
85679 l_entity_code                := 'INVENTORY';
85680 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
85681 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_TP';
85682 l_line_definition_owner_code := 'S';
85683 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP_TP';
85684 --
85685 l_balance_type_code          := 'A';
85686 l_segment                     := NULL;
85687 l_ccid                        := NULL;
85688 l_adr_transaction_coa_id      := NULL;
85689 l_adr_accounting_coa_id       := NULL;
85690 l_adr_flexfield_segment_code  := NULL;
85691 l_adr_flex_value_set_id       := NULL;
85692 l_adr_value_type_code         := NULL;
85693 l_adr_value_combination_id    := NULL;
85694 l_adr_value_segment_code      := NULL;
85695 
85696 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
85697 l_bflow_class_code           := '';    -- 4219869 Business Flow
85698 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
85699 l_budgetary_control_flag     := 'N';
85700 
85701 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
85705 l_acc_rev_flag               := NULL;          -- 4262811
85702 l_bflow_applied_to_amt       := NULL; -- 5132302
85703 l_entered_amt_idx            := NULL;          -- 4262811
85704 l_accted_amt_idx             := NULL;          -- 4262811
85706 l_accrual_line_num           := NULL;          -- 4262811
85707 l_tmp_amt                    := NULL;          -- 4262811
85708 --
85709  
85710 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
85711     l_balance_type_code <> 'B' THEN
85712 IF NVL(p_source_2,'
85713 ') =  'IOR'
85714  THEN 
85715 
85716    --
85717    XLA_AE_LINES_PKG.SetNewLine;
85718 
85719    p_balance_type_code          := l_balance_type_code;
85720    -- set the flag so later we will know whether the gain loss line needs to be created
85721    
85722    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
85723      p_actual_flag :='A';
85724    END IF;
85725 
85726    --
85727    -- bulk performance
85728    --
85729    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
85730                                       p_header_num   => 0); -- 4262811
85731    --
85732    -- set accounting line options
85733    --
85734    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
85735            p_natural_side_code          => 'D'
85736          , p_gain_or_loss_flag          => 'N'
85737          , p_gl_transfer_mode_code      => 'D'
85738          , p_acct_entry_type_code       => 'A'
85739          , p_switch_side_flag           => 'Y'
85740          , p_merge_duplicate_code       => 'W'
85741          );
85742    --
85743    l_acc_rev_natural_side_code := 'C';  -- 4262811
85744    -- 
85745    --
85746    -- set accounting line type info
85747    --
85748    xla_ae_lines_pkg.SetAcctLineType
85749       (p_component_type             => l_component_type
85750       ,p_event_type_code            => l_event_type_code
85751       ,p_line_definition_owner_code => l_line_definition_owner_code
85752       ,p_line_definition_code       => l_line_definition_code
85753       ,p_accounting_line_code       => l_component_code
85754       ,p_accounting_line_type_code  => l_component_type_code
85755       ,p_accounting_line_appl_id    => l_component_appl_id
85756       ,p_amb_context_code           => l_amb_context_code
85757       ,p_entity_code                => l_entity_code
85758       ,p_event_class_code           => l_event_class_code);
85759    --
85760    -- set accounting class
85761    --
85762    xla_ae_lines_pkg.SetAcctClass(
85763            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
85764          , p_ae_header_id           => l_ae_header_id
85765          );
85766 
85767    --
85768    -- set rounding class
85769    --
85770    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
85771                       'INTERORG_RECEIVABLES';
85772 
85773    --
85774    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
85775    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
85776    --
85777    -- bulk performance
85778    --
85779    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
85780 
85781    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
85782       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
85783 
85784    -- 4955764
85785    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85786       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
85787 
85788    -- 4458381 Public Sector Enh
85789    
85790    --
85791    -- set accounting attributes for the line type
85792    --
85793    l_entered_amt_idx := 3;
85794    l_accted_amt_idx  := 8;
85795    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
85796    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
85797    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
85798    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
85799    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
85800    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
85801    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
85802    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
85803    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
85804    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
85805    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
85806    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
85807    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
85808    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
85809    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
85810    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
85811    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
85812 
85813    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
85814    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
85815 
85816    ---------------------------------------------------------------------------------------------------------------
85817    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
85821    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
85818    ---------------------------------------------------------------------------------------------------------------
85819    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
85820 
85822    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
85823 
85824    IF xla_accounting_cache_pkg.GetValueChar
85825          (p_source_code         => 'LEDGER_CATEGORY_CODE'
85826          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
85827    AND l_bflow_method_code = 'PRIOR_ENTRY'
85828 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
85829    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
85830          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
85831        )
85832    THEN
85833          xla_ae_lines_pkg.BflowUpgEntry
85834            (p_business_method_code    => l_bflow_method_code
85835            ,p_business_class_code     => l_bflow_class_code
85836            ,p_balance_type            => l_balance_type_code);
85837    ELSE
85838       NULL;
85839 -- No business flow processing for business flow method of NONE.
85840    END IF;
85841 
85842    --
85843    -- call analytical criteria
85844    --
85845    
85846    --
85847    -- call description
85848    --
85849    -- No description or it is inherited.
85850    --
85851    -- call ADRs
85852    -- Bug 4922099
85853    --
85854    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85855         (NVL(l_actual_upg_option, 'N') = 'O') OR
85856         (NVL(l_enc_upg_option, 'N') = 'O')
85857       )
85858    THEN
85859    NULL;
85860    --
85861    --
85862    
85863   l_ccid := AcctDerRule_22(
85864            p_application_id           => p_application_id
85865          , p_ae_header_id             => l_ae_header_id 
85866 , p_source_1 => p_source_1
85867 , p_source_2 => p_source_2
85868          , x_transaction_coa_id       => l_adr_transaction_coa_id
85869          , x_accounting_coa_id        => l_adr_accounting_coa_id
85870          , x_value_type_code          => l_adr_value_type_code
85871          , p_side                     => 'NA'
85872    );
85873 
85874    xla_ae_lines_pkg.set_ccid(
85875     p_code_combination_id          => l_ccid
85876   , p_value_type_code              => l_adr_value_type_code
85877   , p_transaction_coa_id           => l_adr_transaction_coa_id
85878   , p_accounting_coa_id            => l_adr_accounting_coa_id
85879   , p_adr_code                     => 'IOR'
85880   , p_adr_type_code                => 'S'
85881   , p_component_type               => l_component_type
85882   , p_component_code               => l_component_code
85883   , p_component_type_code          => l_component_type_code
85884   , p_component_appl_id            => l_component_appl_id
85885   , p_amb_context_code             => l_amb_context_code
85886   , p_side                         => 'NA'
85887   );
85888 
85889 
85890    --
85891    --
85892    END IF;
85893    --
85894    -- Bug 4922099
85895    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
85896           (NVL(l_enc_upg_option, 'N') = 'O')
85897         ) AND
85898         (l_bflow_method_code = 'PRIOR_ENTRY')
85899       )
85900    THEN
85901       IF
85902       --
85903       1 = 2
85904       --
85905       THEN
85906       xla_accounting_err_pkg.build_message
85907                                     (p_appli_s_name            => 'XLA'
85908                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85909                                     ,p_token_1                 => 'LINE_NUMBER'
85910                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
85911                                     ,p_token_2                 => 'LINE_TYPE_NAME'
85912                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
85913                                                                              l_component_type
85914                                                                             ,l_component_code
85915                                                                             ,l_component_type_code
85916                                                                             ,l_component_appl_id
85917                                                                             ,l_amb_context_code
85918                                                                             ,l_entity_code
85919                                                                             ,l_event_class_code
85920                                                                            )
85921                                     ,p_token_3                 => 'OWNER'
85922                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
85923                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
85924                                                                           ,p_lookup_code    => l_component_type_code
85925                                                                          )
85926                                     ,p_token_4                 => 'PRODUCT_NAME'
85927                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
85928                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
85932                                        );
85929                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
85930                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
85931                                     ,p_ae_header_id            =>  NULL
85933 
85934         IF (C_LEVEL_ERROR>= g_log_level) THEN
85935                  trace
85936                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85937                       ,p_level    => C_LEVEL_ERROR
85938                       ,p_module   => l_log_module);
85939         END IF;
85940       END IF;
85941    END IF;
85942    --
85943    --
85944    ------------------------------------------------------------------------------------------------
85945    -- 4219869 Business Flow
85946    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
85947    -- Prior Entry.  Currently, the following code is always generated.
85948    ------------------------------------------------------------------------------------------------
85949    XLA_AE_LINES_PKG.ValidateCurrentLine;
85950 
85951    ------------------------------------------------------------------------------------
85952    -- 4219869 Business Flow
85953    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
85954    ------------------------------------------------------------------------------------
85955    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85956 
85957    ----------------------------------------------------------------------------------
85958    -- 4219869 Business Flow
85959    -- Update journal entry status -- Need to generate this within IF <condition>
85960    ----------------------------------------------------------------------------------
85961    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85962          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
85963          ,p_balance_type_code => l_balance_type_code
85964          );
85965 
85966    -------------------------------------------------------------------------------------------
85967    -- 4262811 - Generate the Accrual Reversal lines
85968    -------------------------------------------------------------------------------------------
85969    BEGIN
85970       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
85971                               (g_array_event(p_event_id).array_value_num('header_index'));
85972       IF l_acc_rev_flag IS NULL THEN
85973          l_acc_rev_flag := 'N';
85974       END IF;
85975    EXCEPTION
85976       WHEN OTHERS THEN
85977          l_acc_rev_flag := 'N';
85978    END;
85979    --
85980    IF (l_acc_rev_flag = 'Y') THEN
85981 
85982        -- 4645092  ------------------------------------------------------------------------------
85983        -- To allow MPA report to determine if it should generate report process
85984        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
85985        ------------------------------------------------------------------------------------------
85986 
85987        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
85988        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
85989    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
85990    -- call ADRs
85991    -- Bug 4922099
85992    --
85993    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85994         (NVL(l_actual_upg_option, 'N') = 'O') OR
85995         (NVL(l_enc_upg_option, 'N') = 'O')
85996       )
85997    THEN
85998    NULL;
85999    --
86000    --
86001    
86002   l_ccid := AcctDerRule_22(
86003            p_application_id           => p_application_id
86004          , p_ae_header_id             => l_ae_header_id 
86005 , p_source_1 => p_source_1
86006 , p_source_2 => p_source_2
86007          , x_transaction_coa_id       => l_adr_transaction_coa_id
86008          , x_accounting_coa_id        => l_adr_accounting_coa_id
86009          , x_value_type_code          => l_adr_value_type_code
86010          , p_side                     => 'NA'
86011    );
86012 
86013    xla_ae_lines_pkg.set_ccid(
86014     p_code_combination_id          => l_ccid
86015   , p_value_type_code              => l_adr_value_type_code
86016   , p_transaction_coa_id           => l_adr_transaction_coa_id
86017   , p_accounting_coa_id            => l_adr_accounting_coa_id
86018   , p_adr_code                     => 'IOR'
86019   , p_adr_type_code                => 'S'
86020   , p_component_type               => l_component_type
86021   , p_component_code               => l_component_code
86022   , p_component_type_code          => l_component_type_code
86023   , p_component_appl_id            => l_component_appl_id
86024   , p_amb_context_code             => l_amb_context_code
86025   , p_side                         => 'NA'
86026   );
86027 
86028 
86029    --
86030    --
86031    END IF;
86032 
86033        --
86034        -- Update the line information that should be overwritten
86035        --
86036        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
86037                                          p_header_num   => 1);
86038        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
86039 
86040        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
86041 
86042        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
86046       --
86043           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
86044        END IF;
86045 
86047       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
86048       --
86049       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
86050           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
86051       ELSE
86052           ---------------------------------------------------------------------------------------------------
86053           -- 4262811a Switch Sign
86054           ---------------------------------------------------------------------------------------------------
86055           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
86056           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86057                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86058           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86059                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86060           -- 5132302
86061           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
86062                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86063 
86064       END IF;
86065 
86066       -- 4955764
86067       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86068       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
86069 
86070 
86071       XLA_AE_LINES_PKG.ValidateCurrentLine;
86072       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86073 
86074       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86075                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
86076                ,p_balance_type_code => l_balance_type_code);
86077 
86078    END IF;
86079 
86080    -----------------------------------------------------------------------------------------
86081    -- 4262811 Multiperiod Accounting
86082    -----------------------------------------------------------------------------------------
86083      -- No MPA option is assigned.
86084 
86085 
86086 END IF;
86087 END IF;
86088 --
86089 
86090 --
86091 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86092    trace
86093       (p_msg      => 'END of AcctLineType_187'
86094       ,p_level    => C_LEVEL_PROCEDURE
86095       ,p_module   => l_log_module);
86096 END IF;
86097 --
86098 EXCEPTION
86099   WHEN xla_exceptions_pkg.application_exception THEN
86100       RAISE;
86101   WHEN OTHERS THEN
86102        xla_exceptions_pkg.raise_message
86103            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_187');
86104 END AcctLineType_187;
86105 --
86106 
86107 ---------------------------------------
86108 --
86109 -- PRIVATE FUNCTION
86110 --         AcctLineType_188
86111 --
86112 ---------------------------------------
86113 PROCEDURE AcctLineType_188 (
86114   p_application_id        IN NUMBER
86115  ,p_event_id              IN NUMBER
86116  ,p_calculate_acctd_flag  IN VARCHAR2
86117  ,p_calculate_g_l_flag    IN VARCHAR2
86118  ,p_actual_flag           IN OUT VARCHAR2
86119  ,p_balance_type_code     OUT VARCHAR2
86120  ,p_gain_or_loss_ref      OUT VARCHAR2
86121  
86122 --Transaction Account
86123  , p_source_1            IN NUMBER
86124 --Journal Line Type
86125  , p_source_2            IN VARCHAR2
86126 --Entered Amount
86127  , p_source_3            IN NUMBER
86128 --First Distribution Identifier
86129  , p_source_5            IN NUMBER
86130 --Distribution Type
86131  , p_source_6            IN VARCHAR2
86132 --Currency Code
86133  , p_source_7            IN VARCHAR2
86134 --Currency Conversion Date
86135  , p_source_8            IN DATE
86136 --Currency Conversion Rate
86137  , p_source_9            IN NUMBER
86138 --Currency Conversion Type
86139  , p_source_10            IN VARCHAR2
86140 --Accounted Amount
86141  , p_source_11            IN NUMBER
86142 )
86143 IS
86144 
86145 l_component_type              VARCHAR2(80);
86146 l_component_code              VARCHAR2(30);
86147 l_component_type_code         VARCHAR2(1);
86148 l_component_appl_id           INTEGER;
86149 l_amb_context_code            VARCHAR2(30);
86150 l_entity_code                 VARCHAR2(30);
86151 l_event_class_code            VARCHAR2(30);
86152 l_ae_header_id                NUMBER;
86153 l_event_type_code             VARCHAR2(30);
86154 l_line_definition_code        VARCHAR2(30);
86155 l_line_definition_owner_code  VARCHAR2(1);
86156 --
86157 -- adr variables
86158 l_segment                     VARCHAR2(30);
86159 l_ccid                        NUMBER;
86160 l_adr_transaction_coa_id      NUMBER;
86161 l_adr_accounting_coa_id       NUMBER;
86162 l_adr_flexfield_segment_code  VARCHAR2(30);
86163 l_adr_flex_value_set_id       NUMBER;
86164 l_adr_value_type_code         VARCHAR2(30);
86165 l_adr_value_combination_id    NUMBER;
86166 l_adr_value_segment_code      VARCHAR2(30);
86167 
86168 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
86172 
86169 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
86170 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
86171 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
86173 -- 4262811 Variables ------------------------------------------------------------------------------------------
86174 l_entered_amt_idx             NUMBER;
86175 l_accted_amt_idx              NUMBER;
86176 l_acc_rev_flag                VARCHAR2(1);
86177 l_accrual_line_num            NUMBER;
86178 l_tmp_amt                     NUMBER;
86179 l_acc_rev_natural_side_code   VARCHAR2(1);
86180 
86181 l_num_entries                 NUMBER;
86182 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
86183 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
86184 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
86185 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
86186 l_recog_line_1                NUMBER;
86187 l_recog_line_2                NUMBER;
86188 
86189 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
86190 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
86191 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
86192 
86193 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
86194 
86195 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
86196 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
86197 
86198 ---------------------------------------------------------------------------------------------------------------
86199 
86200 
86201 --
86202 -- bulk performance
86203 --
86204 l_balance_type_code           VARCHAR2(1);
86205 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
86206 l_log_module                  VARCHAR2(240);
86207 
86208 --
86209 -- Upgrade strategy
86210 --
86211 l_actual_upg_option           VARCHAR2(1);
86212 l_enc_upg_option           VARCHAR2(1);
86213 
86214 --
86215 BEGIN
86216 --
86217 IF g_log_enabled THEN
86218       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_188';
86219 END IF;
86220 --
86221 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86222 
86223       trace
86224          (p_msg      => 'BEGIN of AcctLineType_188'
86225          ,p_level    => C_LEVEL_PROCEDURE
86226          ,p_module   => l_log_module);
86227 
86228 END IF;
86229 --
86230 l_component_type             := 'AMB_JLT';
86231 l_component_code             := 'IOR';
86232 l_component_type_code        := 'S';
86233 l_component_appl_id          :=  555;
86234 l_amb_context_code           := 'DEFAULT';
86235 l_entity_code                := 'INVENTORY';
86236 l_event_class_code           := 'INT_ORDER_TO_EXP';
86237 l_event_type_code            := 'INT_ORDER_ISSUE';
86238 l_line_definition_owner_code := 'S';
86239 l_line_definition_code       := 'INT_ORDER_ISSUE';
86240 --
86241 l_balance_type_code          := 'A';
86242 l_segment                     := NULL;
86243 l_ccid                        := NULL;
86244 l_adr_transaction_coa_id      := NULL;
86245 l_adr_accounting_coa_id       := NULL;
86246 l_adr_flexfield_segment_code  := NULL;
86247 l_adr_flex_value_set_id       := NULL;
86248 l_adr_value_type_code         := NULL;
86249 l_adr_value_combination_id    := NULL;
86250 l_adr_value_segment_code      := NULL;
86251 
86252 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
86253 l_bflow_class_code           := '';    -- 4219869 Business Flow
86254 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
86255 l_budgetary_control_flag     := 'N';
86256 
86257 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
86258 l_bflow_applied_to_amt       := NULL; -- 5132302
86259 l_entered_amt_idx            := NULL;          -- 4262811
86260 l_accted_amt_idx             := NULL;          -- 4262811
86261 l_acc_rev_flag               := NULL;          -- 4262811
86262 l_accrual_line_num           := NULL;          -- 4262811
86263 l_tmp_amt                    := NULL;          -- 4262811
86264 --
86265  
86266 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
86267     l_balance_type_code <> 'B' THEN
86268 IF NVL(p_source_2,'
86269 ') =  'IOR'
86270  THEN 
86271 
86272    --
86273    XLA_AE_LINES_PKG.SetNewLine;
86274 
86275    p_balance_type_code          := l_balance_type_code;
86276    -- set the flag so later we will know whether the gain loss line needs to be created
86277    
86278    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
86279      p_actual_flag :='A';
86280    END IF;
86281 
86282    --
86283    -- bulk performance
86284    --
86285    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
86286                                       p_header_num   => 0); -- 4262811
86287    --
86288    -- set accounting line options
86289    --
86290    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
86291            p_natural_side_code          => 'D'
86292          , p_gain_or_loss_flag          => 'N'
86293          , p_gl_transfer_mode_code      => 'D'
86294          , p_acct_entry_type_code       => 'A'
86295          , p_switch_side_flag           => 'Y'
86296          , p_merge_duplicate_code       => 'W'
86297          );
86301    --
86298    --
86299    l_acc_rev_natural_side_code := 'C';  -- 4262811
86300    -- 
86302    -- set accounting line type info
86303    --
86304    xla_ae_lines_pkg.SetAcctLineType
86305       (p_component_type             => l_component_type
86306       ,p_event_type_code            => l_event_type_code
86307       ,p_line_definition_owner_code => l_line_definition_owner_code
86308       ,p_line_definition_code       => l_line_definition_code
86309       ,p_accounting_line_code       => l_component_code
86310       ,p_accounting_line_type_code  => l_component_type_code
86311       ,p_accounting_line_appl_id    => l_component_appl_id
86312       ,p_amb_context_code           => l_amb_context_code
86313       ,p_entity_code                => l_entity_code
86314       ,p_event_class_code           => l_event_class_code);
86315    --
86316    -- set accounting class
86317    --
86318    xla_ae_lines_pkg.SetAcctClass(
86319            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
86320          , p_ae_header_id           => l_ae_header_id
86321          );
86322 
86323    --
86324    -- set rounding class
86325    --
86326    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
86327                       'INTERORG_RECEIVABLES';
86328 
86329    --
86330    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
86331    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
86332    --
86333    -- bulk performance
86334    --
86335    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
86336 
86337    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
86338       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
86339 
86340    -- 4955764
86341    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86342       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
86343 
86344    -- 4458381 Public Sector Enh
86345    
86346    --
86347    -- set accounting attributes for the line type
86348    --
86349    l_entered_amt_idx := 3;
86350    l_accted_amt_idx  := 8;
86351    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
86352    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
86353    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
86354    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
86355    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
86356    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
86357    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
86358    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
86359    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
86360    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
86361    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
86362    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
86363    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
86364    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
86365    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
86366    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
86367    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
86368 
86369    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
86370    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
86371 
86372    ---------------------------------------------------------------------------------------------------------------
86373    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
86374    ---------------------------------------------------------------------------------------------------------------
86375    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
86376 
86377    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86378    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86379 
86380    IF xla_accounting_cache_pkg.GetValueChar
86381          (p_source_code         => 'LEDGER_CATEGORY_CODE'
86382          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
86383    AND l_bflow_method_code = 'PRIOR_ENTRY'
86384 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
86385    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
86386          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
86387        )
86388    THEN
86389          xla_ae_lines_pkg.BflowUpgEntry
86390            (p_business_method_code    => l_bflow_method_code
86391            ,p_business_class_code     => l_bflow_class_code
86392            ,p_balance_type            => l_balance_type_code);
86393    ELSE
86394       NULL;
86395 -- No business flow processing for business flow method of NONE.
86396    END IF;
86397 
86398    --
86399    -- call analytical criteria
86400    --
86401    
86402    --
86403    -- call description
86404    --
86405    -- No description or it is inherited.
86406    --
86407    -- call ADRs
86408    -- Bug 4922099
86409    --
86410    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86411         (NVL(l_actual_upg_option, 'N') = 'O') OR
86412         (NVL(l_enc_upg_option, 'N') = 'O')
86413       )
86414    THEN
86415    NULL;
86419   l_ccid := AcctDerRule_22(
86416    --
86417    --
86418    
86420            p_application_id           => p_application_id
86421          , p_ae_header_id             => l_ae_header_id 
86422 , p_source_1 => p_source_1
86423 , p_source_2 => p_source_2
86424          , x_transaction_coa_id       => l_adr_transaction_coa_id
86425          , x_accounting_coa_id        => l_adr_accounting_coa_id
86426          , x_value_type_code          => l_adr_value_type_code
86427          , p_side                     => 'NA'
86428    );
86429 
86430    xla_ae_lines_pkg.set_ccid(
86431     p_code_combination_id          => l_ccid
86432   , p_value_type_code              => l_adr_value_type_code
86433   , p_transaction_coa_id           => l_adr_transaction_coa_id
86434   , p_accounting_coa_id            => l_adr_accounting_coa_id
86435   , p_adr_code                     => 'IOR'
86436   , p_adr_type_code                => 'S'
86437   , p_component_type               => l_component_type
86438   , p_component_code               => l_component_code
86439   , p_component_type_code          => l_component_type_code
86440   , p_component_appl_id            => l_component_appl_id
86441   , p_amb_context_code             => l_amb_context_code
86442   , p_side                         => 'NA'
86443   );
86444 
86445 
86446    --
86447    --
86448    END IF;
86449    --
86450    -- Bug 4922099
86451    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
86452           (NVL(l_enc_upg_option, 'N') = 'O')
86453         ) AND
86454         (l_bflow_method_code = 'PRIOR_ENTRY')
86455       )
86456    THEN
86457       IF
86458       --
86459       1 = 2
86460       --
86461       THEN
86462       xla_accounting_err_pkg.build_message
86463                                     (p_appli_s_name            => 'XLA'
86464                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86465                                     ,p_token_1                 => 'LINE_NUMBER'
86466                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
86467                                     ,p_token_2                 => 'LINE_TYPE_NAME'
86468                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
86469                                                                              l_component_type
86470                                                                             ,l_component_code
86471                                                                             ,l_component_type_code
86472                                                                             ,l_component_appl_id
86473                                                                             ,l_amb_context_code
86474                                                                             ,l_entity_code
86475                                                                             ,l_event_class_code
86476                                                                            )
86477                                     ,p_token_3                 => 'OWNER'
86478                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
86479                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
86480                                                                           ,p_lookup_code    => l_component_type_code
86481                                                                          )
86482                                     ,p_token_4                 => 'PRODUCT_NAME'
86483                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
86484                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
86485                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
86486                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
86487                                     ,p_ae_header_id            =>  NULL
86488                                        );
86489 
86490         IF (C_LEVEL_ERROR>= g_log_level) THEN
86491                  trace
86492                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86493                       ,p_level    => C_LEVEL_ERROR
86494                       ,p_module   => l_log_module);
86495         END IF;
86496       END IF;
86497    END IF;
86498    --
86499    --
86500    ------------------------------------------------------------------------------------------------
86501    -- 4219869 Business Flow
86502    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
86503    -- Prior Entry.  Currently, the following code is always generated.
86504    ------------------------------------------------------------------------------------------------
86505    XLA_AE_LINES_PKG.ValidateCurrentLine;
86506 
86507    ------------------------------------------------------------------------------------
86508    -- 4219869 Business Flow
86509    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
86510    ------------------------------------------------------------------------------------
86511    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86512 
86513    ----------------------------------------------------------------------------------
86514    -- 4219869 Business Flow
86515    -- Update journal entry status -- Need to generate this within IF <condition>
86519          ,p_balance_type_code => l_balance_type_code
86516    ----------------------------------------------------------------------------------
86517    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86518          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
86520          );
86521 
86522    -------------------------------------------------------------------------------------------
86523    -- 4262811 - Generate the Accrual Reversal lines
86524    -------------------------------------------------------------------------------------------
86525    BEGIN
86526       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
86527                               (g_array_event(p_event_id).array_value_num('header_index'));
86528       IF l_acc_rev_flag IS NULL THEN
86529          l_acc_rev_flag := 'N';
86530       END IF;
86531    EXCEPTION
86532       WHEN OTHERS THEN
86533          l_acc_rev_flag := 'N';
86534    END;
86535    --
86536    IF (l_acc_rev_flag = 'Y') THEN
86537 
86538        -- 4645092  ------------------------------------------------------------------------------
86539        -- To allow MPA report to determine if it should generate report process
86540        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
86541        ------------------------------------------------------------------------------------------
86542 
86543        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
86544        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
86545    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
86546    -- call ADRs
86547    -- Bug 4922099
86548    --
86549    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86550         (NVL(l_actual_upg_option, 'N') = 'O') OR
86551         (NVL(l_enc_upg_option, 'N') = 'O')
86552       )
86553    THEN
86554    NULL;
86555    --
86556    --
86557    
86558   l_ccid := AcctDerRule_22(
86559            p_application_id           => p_application_id
86560          , p_ae_header_id             => l_ae_header_id 
86561 , p_source_1 => p_source_1
86562 , p_source_2 => p_source_2
86563          , x_transaction_coa_id       => l_adr_transaction_coa_id
86564          , x_accounting_coa_id        => l_adr_accounting_coa_id
86565          , x_value_type_code          => l_adr_value_type_code
86566          , p_side                     => 'NA'
86567    );
86568 
86569    xla_ae_lines_pkg.set_ccid(
86570     p_code_combination_id          => l_ccid
86571   , p_value_type_code              => l_adr_value_type_code
86572   , p_transaction_coa_id           => l_adr_transaction_coa_id
86573   , p_accounting_coa_id            => l_adr_accounting_coa_id
86574   , p_adr_code                     => 'IOR'
86575   , p_adr_type_code                => 'S'
86576   , p_component_type               => l_component_type
86577   , p_component_code               => l_component_code
86578   , p_component_type_code          => l_component_type_code
86579   , p_component_appl_id            => l_component_appl_id
86580   , p_amb_context_code             => l_amb_context_code
86581   , p_side                         => 'NA'
86582   );
86583 
86584 
86585    --
86586    --
86587    END IF;
86588 
86589        --
86590        -- Update the line information that should be overwritten
86591        --
86592        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
86593                                          p_header_num   => 1);
86594        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
86595 
86596        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
86597 
86598        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
86599           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
86600        END IF;
86601 
86602       --
86603       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
86604       --
86605       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
86606           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
86607       ELSE
86608           ---------------------------------------------------------------------------------------------------
86609           -- 4262811a Switch Sign
86610           ---------------------------------------------------------------------------------------------------
86611           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
86612           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86613                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86614           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86615                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86616           -- 5132302
86617           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
86618                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86619 
86620       END IF;
86621 
86622       -- 4955764
86623       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86627       XLA_AE_LINES_PKG.ValidateCurrentLine;
86624       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
86625 
86626 
86628       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86629 
86630       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86631                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
86632                ,p_balance_type_code => l_balance_type_code);
86633 
86634    END IF;
86635 
86636    -----------------------------------------------------------------------------------------
86637    -- 4262811 Multiperiod Accounting
86638    -----------------------------------------------------------------------------------------
86639      -- No MPA option is assigned.
86640 
86641 
86642 END IF;
86643 END IF;
86644 --
86645 
86646 --
86647 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86648    trace
86649       (p_msg      => 'END of AcctLineType_188'
86650       ,p_level    => C_LEVEL_PROCEDURE
86651       ,p_module   => l_log_module);
86652 END IF;
86653 --
86654 EXCEPTION
86655   WHEN xla_exceptions_pkg.application_exception THEN
86656       RAISE;
86657   WHEN OTHERS THEN
86658        xla_exceptions_pkg.raise_message
86659            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_188');
86660 END AcctLineType_188;
86661 --
86662 
86663 ---------------------------------------
86664 --
86665 -- PRIVATE FUNCTION
86666 --         AcctLineType_189
86667 --
86668 ---------------------------------------
86669 PROCEDURE AcctLineType_189 (
86670   p_application_id        IN NUMBER
86671  ,p_event_id              IN NUMBER
86672  ,p_calculate_acctd_flag  IN VARCHAR2
86673  ,p_calculate_g_l_flag    IN VARCHAR2
86674  ,p_actual_flag           IN OUT VARCHAR2
86675  ,p_balance_type_code     OUT VARCHAR2
86676  ,p_gain_or_loss_ref      OUT VARCHAR2
86677  
86678 --Transaction Account
86679  , p_source_1            IN NUMBER
86680 --Journal Line Type
86681  , p_source_2            IN VARCHAR2
86682 --Entered Amount
86683  , p_source_3            IN NUMBER
86684 --First Distribution Identifier
86685  , p_source_5            IN NUMBER
86686 --Distribution Type
86687  , p_source_6            IN VARCHAR2
86688 --Currency Code
86689  , p_source_7            IN VARCHAR2
86690 --Currency Conversion Date
86691  , p_source_8            IN DATE
86692 --Currency Conversion Rate
86693  , p_source_9            IN NUMBER
86694 --Currency Conversion Type
86695  , p_source_10            IN VARCHAR2
86696 --Accounted Amount
86697  , p_source_11            IN NUMBER
86698 )
86699 IS
86700 
86701 l_component_type              VARCHAR2(80);
86702 l_component_code              VARCHAR2(30);
86703 l_component_type_code         VARCHAR2(1);
86704 l_component_appl_id           INTEGER;
86705 l_amb_context_code            VARCHAR2(30);
86706 l_entity_code                 VARCHAR2(30);
86707 l_event_class_code            VARCHAR2(30);
86708 l_ae_header_id                NUMBER;
86709 l_event_type_code             VARCHAR2(30);
86710 l_line_definition_code        VARCHAR2(30);
86711 l_line_definition_owner_code  VARCHAR2(1);
86712 --
86713 -- adr variables
86714 l_segment                     VARCHAR2(30);
86715 l_ccid                        NUMBER;
86716 l_adr_transaction_coa_id      NUMBER;
86717 l_adr_accounting_coa_id       NUMBER;
86718 l_adr_flexfield_segment_code  VARCHAR2(30);
86719 l_adr_flex_value_set_id       NUMBER;
86720 l_adr_value_type_code         VARCHAR2(30);
86721 l_adr_value_combination_id    NUMBER;
86722 l_adr_value_segment_code      VARCHAR2(30);
86723 
86724 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
86725 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
86726 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
86727 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
86728 
86729 -- 4262811 Variables ------------------------------------------------------------------------------------------
86730 l_entered_amt_idx             NUMBER;
86731 l_accted_amt_idx              NUMBER;
86732 l_acc_rev_flag                VARCHAR2(1);
86733 l_accrual_line_num            NUMBER;
86734 l_tmp_amt                     NUMBER;
86735 l_acc_rev_natural_side_code   VARCHAR2(1);
86736 
86737 l_num_entries                 NUMBER;
86738 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
86739 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
86740 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
86741 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
86742 l_recog_line_1                NUMBER;
86743 l_recog_line_2                NUMBER;
86744 
86745 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
86746 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
86747 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
86748 
86749 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
86750 
86751 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
86752 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
86753 
86757 --
86754 ---------------------------------------------------------------------------------------------------------------
86755 
86756 
86758 -- bulk performance
86759 --
86760 l_balance_type_code           VARCHAR2(1);
86761 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
86762 l_log_module                  VARCHAR2(240);
86763 
86764 --
86765 -- Upgrade strategy
86766 --
86767 l_actual_upg_option           VARCHAR2(1);
86768 l_enc_upg_option           VARCHAR2(1);
86769 
86770 --
86771 BEGIN
86772 --
86773 IF g_log_enabled THEN
86774       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_189';
86775 END IF;
86776 --
86777 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86778 
86779       trace
86780          (p_msg      => 'BEGIN of AcctLineType_189'
86781          ,p_level    => C_LEVEL_PROCEDURE
86782          ,p_module   => l_log_module);
86783 
86784 END IF;
86785 --
86786 l_component_type             := 'AMB_JLT';
86787 l_component_code             := 'IOR';
86788 l_component_type_code        := 'S';
86789 l_component_appl_id          :=  555;
86790 l_amb_context_code           := 'DEFAULT';
86791 l_entity_code                := 'INVENTORY';
86792 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
86793 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_NO_TP';
86794 l_line_definition_owner_code := 'S';
86795 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT_NO_TP';
86796 --
86797 l_balance_type_code          := 'A';
86798 l_segment                     := NULL;
86799 l_ccid                        := NULL;
86800 l_adr_transaction_coa_id      := NULL;
86801 l_adr_accounting_coa_id       := NULL;
86802 l_adr_flexfield_segment_code  := NULL;
86803 l_adr_flex_value_set_id       := NULL;
86804 l_adr_value_type_code         := NULL;
86805 l_adr_value_combination_id    := NULL;
86806 l_adr_value_segment_code      := NULL;
86807 
86808 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
86809 l_bflow_class_code           := '';    -- 4219869 Business Flow
86810 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
86811 l_budgetary_control_flag     := 'N';
86812 
86813 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
86814 l_bflow_applied_to_amt       := NULL; -- 5132302
86815 l_entered_amt_idx            := NULL;          -- 4262811
86816 l_accted_amt_idx             := NULL;          -- 4262811
86817 l_acc_rev_flag               := NULL;          -- 4262811
86818 l_accrual_line_num           := NULL;          -- 4262811
86819 l_tmp_amt                    := NULL;          -- 4262811
86820 --
86821  
86822 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
86823     l_balance_type_code <> 'B' THEN
86824 IF NVL(p_source_2,'
86825 ') =  'IOR'
86826  THEN 
86827 
86828    --
86829    XLA_AE_LINES_PKG.SetNewLine;
86830 
86831    p_balance_type_code          := l_balance_type_code;
86832    -- set the flag so later we will know whether the gain loss line needs to be created
86833    
86834    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
86835      p_actual_flag :='A';
86836    END IF;
86837 
86838    --
86839    -- bulk performance
86840    --
86841    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
86842                                       p_header_num   => 0); -- 4262811
86843    --
86844    -- set accounting line options
86845    --
86846    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
86847            p_natural_side_code          => 'D'
86848          , p_gain_or_loss_flag          => 'N'
86849          , p_gl_transfer_mode_code      => 'D'
86850          , p_acct_entry_type_code       => 'A'
86851          , p_switch_side_flag           => 'Y'
86852          , p_merge_duplicate_code       => 'W'
86853          );
86854    --
86855    l_acc_rev_natural_side_code := 'C';  -- 4262811
86856    -- 
86857    --
86858    -- set accounting line type info
86859    --
86860    xla_ae_lines_pkg.SetAcctLineType
86861       (p_component_type             => l_component_type
86862       ,p_event_type_code            => l_event_type_code
86863       ,p_line_definition_owner_code => l_line_definition_owner_code
86864       ,p_line_definition_code       => l_line_definition_code
86865       ,p_accounting_line_code       => l_component_code
86866       ,p_accounting_line_type_code  => l_component_type_code
86867       ,p_accounting_line_appl_id    => l_component_appl_id
86868       ,p_amb_context_code           => l_amb_context_code
86869       ,p_entity_code                => l_entity_code
86870       ,p_event_class_code           => l_event_class_code);
86871    --
86872    -- set accounting class
86873    --
86874    xla_ae_lines_pkg.SetAcctClass(
86875            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
86876          , p_ae_header_id           => l_ae_header_id
86877          );
86878 
86879    --
86880    -- set rounding class
86881    --
86882    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
86883                       'INTERORG_RECEIVABLES';
86884 
86885    --
86886    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
86887    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
86888    --
86889    -- bulk performance
86890    --
86894       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
86891    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
86892 
86893    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
86895 
86896    -- 4955764
86897    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86898       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
86899 
86900    -- 4458381 Public Sector Enh
86901    
86902    --
86903    -- set accounting attributes for the line type
86904    --
86905    l_entered_amt_idx := 3;
86906    l_accted_amt_idx  := 8;
86907    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
86908    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
86909    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
86910    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
86911    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
86912    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
86913    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
86914    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
86915    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
86916    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
86917    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
86918    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
86919    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
86920    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
86921    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
86922    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
86923    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
86924 
86925    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
86926    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
86927 
86928    ---------------------------------------------------------------------------------------------------------------
86929    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
86930    ---------------------------------------------------------------------------------------------------------------
86931    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
86932 
86933    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86934    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86935 
86936    IF xla_accounting_cache_pkg.GetValueChar
86937          (p_source_code         => 'LEDGER_CATEGORY_CODE'
86938          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
86939    AND l_bflow_method_code = 'PRIOR_ENTRY'
86940 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
86941    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
86942          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
86943        )
86944    THEN
86945          xla_ae_lines_pkg.BflowUpgEntry
86946            (p_business_method_code    => l_bflow_method_code
86947            ,p_business_class_code     => l_bflow_class_code
86948            ,p_balance_type            => l_balance_type_code);
86949    ELSE
86950       NULL;
86951 -- No business flow processing for business flow method of NONE.
86952    END IF;
86953 
86954    --
86955    -- call analytical criteria
86956    --
86957    
86958    --
86959    -- call description
86960    --
86961    -- No description or it is inherited.
86962    --
86963    -- call ADRs
86964    -- Bug 4922099
86965    --
86966    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86967         (NVL(l_actual_upg_option, 'N') = 'O') OR
86968         (NVL(l_enc_upg_option, 'N') = 'O')
86969       )
86970    THEN
86971    NULL;
86972    --
86973    --
86974    
86975   l_ccid := AcctDerRule_22(
86976            p_application_id           => p_application_id
86977          , p_ae_header_id             => l_ae_header_id 
86978 , p_source_1 => p_source_1
86979 , p_source_2 => p_source_2
86980          , x_transaction_coa_id       => l_adr_transaction_coa_id
86981          , x_accounting_coa_id        => l_adr_accounting_coa_id
86982          , x_value_type_code          => l_adr_value_type_code
86983          , p_side                     => 'NA'
86984    );
86985 
86986    xla_ae_lines_pkg.set_ccid(
86987     p_code_combination_id          => l_ccid
86988   , p_value_type_code              => l_adr_value_type_code
86989   , p_transaction_coa_id           => l_adr_transaction_coa_id
86990   , p_accounting_coa_id            => l_adr_accounting_coa_id
86991   , p_adr_code                     => 'IOR'
86992   , p_adr_type_code                => 'S'
86993   , p_component_type               => l_component_type
86994   , p_component_code               => l_component_code
86995   , p_component_type_code          => l_component_type_code
86996   , p_component_appl_id            => l_component_appl_id
86997   , p_amb_context_code             => l_amb_context_code
86998   , p_side                         => 'NA'
86999   );
87000 
87001 
87002    --
87003    --
87004    END IF;
87005    --
87006    -- Bug 4922099
87007    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
87008           (NVL(l_enc_upg_option, 'N') = 'O')
87009         ) AND
87013       IF
87010         (l_bflow_method_code = 'PRIOR_ENTRY')
87011       )
87012    THEN
87014       --
87015       1 = 2
87016       --
87017       THEN
87018       xla_accounting_err_pkg.build_message
87019                                     (p_appli_s_name            => 'XLA'
87020                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87021                                     ,p_token_1                 => 'LINE_NUMBER'
87022                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
87023                                     ,p_token_2                 => 'LINE_TYPE_NAME'
87024                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
87025                                                                              l_component_type
87026                                                                             ,l_component_code
87027                                                                             ,l_component_type_code
87028                                                                             ,l_component_appl_id
87029                                                                             ,l_amb_context_code
87030                                                                             ,l_entity_code
87031                                                                             ,l_event_class_code
87032                                                                            )
87033                                     ,p_token_3                 => 'OWNER'
87034                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
87035                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
87036                                                                           ,p_lookup_code    => l_component_type_code
87037                                                                          )
87038                                     ,p_token_4                 => 'PRODUCT_NAME'
87039                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
87040                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
87041                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
87042                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
87043                                     ,p_ae_header_id            =>  NULL
87044                                        );
87045 
87046         IF (C_LEVEL_ERROR>= g_log_level) THEN
87047                  trace
87048                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87049                       ,p_level    => C_LEVEL_ERROR
87050                       ,p_module   => l_log_module);
87051         END IF;
87052       END IF;
87053    END IF;
87054    --
87055    --
87056    ------------------------------------------------------------------------------------------------
87057    -- 4219869 Business Flow
87058    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
87059    -- Prior Entry.  Currently, the following code is always generated.
87060    ------------------------------------------------------------------------------------------------
87061    XLA_AE_LINES_PKG.ValidateCurrentLine;
87062 
87063    ------------------------------------------------------------------------------------
87064    -- 4219869 Business Flow
87065    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
87066    ------------------------------------------------------------------------------------
87067    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87068 
87069    ----------------------------------------------------------------------------------
87070    -- 4219869 Business Flow
87071    -- Update journal entry status -- Need to generate this within IF <condition>
87072    ----------------------------------------------------------------------------------
87073    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87074          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
87075          ,p_balance_type_code => l_balance_type_code
87076          );
87077 
87078    -------------------------------------------------------------------------------------------
87079    -- 4262811 - Generate the Accrual Reversal lines
87080    -------------------------------------------------------------------------------------------
87081    BEGIN
87082       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
87083                               (g_array_event(p_event_id).array_value_num('header_index'));
87084       IF l_acc_rev_flag IS NULL THEN
87085          l_acc_rev_flag := 'N';
87086       END IF;
87087    EXCEPTION
87088       WHEN OTHERS THEN
87089          l_acc_rev_flag := 'N';
87090    END;
87091    --
87092    IF (l_acc_rev_flag = 'Y') THEN
87093 
87094        -- 4645092  ------------------------------------------------------------------------------
87095        -- To allow MPA report to determine if it should generate report process
87096        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
87097        ------------------------------------------------------------------------------------------
87098 
87099        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
87100        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
87104    --
87101    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
87102    -- call ADRs
87103    -- Bug 4922099
87105    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87106         (NVL(l_actual_upg_option, 'N') = 'O') OR
87107         (NVL(l_enc_upg_option, 'N') = 'O')
87108       )
87109    THEN
87110    NULL;
87111    --
87112    --
87113    
87114   l_ccid := AcctDerRule_22(
87115            p_application_id           => p_application_id
87116          , p_ae_header_id             => l_ae_header_id 
87117 , p_source_1 => p_source_1
87118 , p_source_2 => p_source_2
87119          , x_transaction_coa_id       => l_adr_transaction_coa_id
87120          , x_accounting_coa_id        => l_adr_accounting_coa_id
87121          , x_value_type_code          => l_adr_value_type_code
87122          , p_side                     => 'NA'
87123    );
87124 
87125    xla_ae_lines_pkg.set_ccid(
87126     p_code_combination_id          => l_ccid
87127   , p_value_type_code              => l_adr_value_type_code
87128   , p_transaction_coa_id           => l_adr_transaction_coa_id
87129   , p_accounting_coa_id            => l_adr_accounting_coa_id
87130   , p_adr_code                     => 'IOR'
87131   , p_adr_type_code                => 'S'
87132   , p_component_type               => l_component_type
87133   , p_component_code               => l_component_code
87134   , p_component_type_code          => l_component_type_code
87135   , p_component_appl_id            => l_component_appl_id
87136   , p_amb_context_code             => l_amb_context_code
87137   , p_side                         => 'NA'
87138   );
87139 
87140 
87141    --
87142    --
87143    END IF;
87144 
87145        --
87146        -- Update the line information that should be overwritten
87147        --
87148        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
87149                                          p_header_num   => 1);
87150        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
87151 
87152        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
87153 
87154        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
87155           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
87156        END IF;
87157 
87158       --
87159       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
87160       --
87161       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
87162           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
87163       ELSE
87164           ---------------------------------------------------------------------------------------------------
87165           -- 4262811a Switch Sign
87166           ---------------------------------------------------------------------------------------------------
87167           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
87168           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87169                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87170           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87171                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87172           -- 5132302
87173           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
87174                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87175 
87176       END IF;
87177 
87178       -- 4955764
87179       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87180       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
87181 
87182 
87183       XLA_AE_LINES_PKG.ValidateCurrentLine;
87184       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87185 
87186       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87187                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
87188                ,p_balance_type_code => l_balance_type_code);
87189 
87190    END IF;
87191 
87192    -----------------------------------------------------------------------------------------
87193    -- 4262811 Multiperiod Accounting
87194    -----------------------------------------------------------------------------------------
87195      -- No MPA option is assigned.
87196 
87197 
87198 END IF;
87199 END IF;
87200 --
87201 
87202 --
87203 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87204    trace
87205       (p_msg      => 'END of AcctLineType_189'
87206       ,p_level    => C_LEVEL_PROCEDURE
87207       ,p_module   => l_log_module);
87208 END IF;
87209 --
87210 EXCEPTION
87211   WHEN xla_exceptions_pkg.application_exception THEN
87212       RAISE;
87213   WHEN OTHERS THEN
87214        xla_exceptions_pkg.raise_message
87215            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_189');
87216 END AcctLineType_189;
87217 --
87218 
87219 ---------------------------------------
87220 --
87221 -- PRIVATE FUNCTION
87222 --         AcctLineType_190
87226   p_application_id        IN NUMBER
87223 --
87224 ---------------------------------------
87225 PROCEDURE AcctLineType_190 (
87227  ,p_event_id              IN NUMBER
87228  ,p_calculate_acctd_flag  IN VARCHAR2
87229  ,p_calculate_g_l_flag    IN VARCHAR2
87230  ,p_actual_flag           IN OUT VARCHAR2
87231  ,p_balance_type_code     OUT VARCHAR2
87232  ,p_gain_or_loss_ref      OUT VARCHAR2
87233  
87234 --Transaction Account
87235  , p_source_1            IN NUMBER
87236 --Journal Line Type
87237  , p_source_2            IN VARCHAR2
87238 --Entered Amount
87239  , p_source_3            IN NUMBER
87240 --First Distribution Identifier
87241  , p_source_5            IN NUMBER
87242 --Distribution Type
87243  , p_source_6            IN VARCHAR2
87244 --Currency Code
87245  , p_source_7            IN VARCHAR2
87246 --Currency Conversion Date
87247  , p_source_8            IN DATE
87248 --Currency Conversion Rate
87249  , p_source_9            IN NUMBER
87250 --Currency Conversion Type
87251  , p_source_10            IN VARCHAR2
87252 --Accounted Amount
87253  , p_source_11            IN NUMBER
87254 )
87255 IS
87256 
87257 l_component_type              VARCHAR2(80);
87258 l_component_code              VARCHAR2(30);
87259 l_component_type_code         VARCHAR2(1);
87260 l_component_appl_id           INTEGER;
87261 l_amb_context_code            VARCHAR2(30);
87262 l_entity_code                 VARCHAR2(30);
87263 l_event_class_code            VARCHAR2(30);
87264 l_ae_header_id                NUMBER;
87265 l_event_type_code             VARCHAR2(30);
87266 l_line_definition_code        VARCHAR2(30);
87267 l_line_definition_owner_code  VARCHAR2(1);
87268 --
87269 -- adr variables
87270 l_segment                     VARCHAR2(30);
87271 l_ccid                        NUMBER;
87272 l_adr_transaction_coa_id      NUMBER;
87273 l_adr_accounting_coa_id       NUMBER;
87274 l_adr_flexfield_segment_code  VARCHAR2(30);
87275 l_adr_flex_value_set_id       NUMBER;
87276 l_adr_value_type_code         VARCHAR2(30);
87277 l_adr_value_combination_id    NUMBER;
87278 l_adr_value_segment_code      VARCHAR2(30);
87279 
87280 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
87281 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
87282 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
87283 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
87284 
87285 -- 4262811 Variables ------------------------------------------------------------------------------------------
87286 l_entered_amt_idx             NUMBER;
87287 l_accted_amt_idx              NUMBER;
87288 l_acc_rev_flag                VARCHAR2(1);
87289 l_accrual_line_num            NUMBER;
87290 l_tmp_amt                     NUMBER;
87291 l_acc_rev_natural_side_code   VARCHAR2(1);
87292 
87293 l_num_entries                 NUMBER;
87294 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
87295 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
87296 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
87297 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
87298 l_recog_line_1                NUMBER;
87299 l_recog_line_2                NUMBER;
87300 
87301 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
87302 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
87303 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
87304 
87305 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
87306 
87307 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
87308 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
87309 
87310 ---------------------------------------------------------------------------------------------------------------
87311 
87312 
87313 --
87314 -- bulk performance
87315 --
87316 l_balance_type_code           VARCHAR2(1);
87317 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
87318 l_log_module                  VARCHAR2(240);
87319 
87320 --
87321 -- Upgrade strategy
87322 --
87323 l_actual_upg_option           VARCHAR2(1);
87324 l_enc_upg_option           VARCHAR2(1);
87325 
87326 --
87327 BEGIN
87328 --
87329 IF g_log_enabled THEN
87330       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_190';
87331 END IF;
87332 --
87333 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87334 
87335       trace
87336          (p_msg      => 'BEGIN of AcctLineType_190'
87337          ,p_level    => C_LEVEL_PROCEDURE
87338          ,p_module   => l_log_module);
87339 
87340 END IF;
87341 --
87342 l_component_type             := 'AMB_JLT';
87343 l_component_code             := 'IOR';
87344 l_component_type_code        := 'S';
87345 l_component_appl_id          :=  555;
87346 l_amb_context_code           := 'DEFAULT';
87347 l_entity_code                := 'INVENTORY';
87348 l_event_class_code           := 'DIR_INTERORG_SHIP';
87349 l_event_type_code            := 'DIR_INTERORG_SHIP';
87350 l_line_definition_owner_code := 'S';
87351 l_line_definition_code       := 'DIRECT_XFER_SHIP';
87352 --
87353 l_balance_type_code          := 'A';
87354 l_segment                     := NULL;
87355 l_ccid                        := NULL;
87356 l_adr_transaction_coa_id      := NULL;
87360 l_adr_value_type_code         := NULL;
87357 l_adr_accounting_coa_id       := NULL;
87358 l_adr_flexfield_segment_code  := NULL;
87359 l_adr_flex_value_set_id       := NULL;
87361 l_adr_value_combination_id    := NULL;
87362 l_adr_value_segment_code      := NULL;
87363 
87364 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
87365 l_bflow_class_code           := '';    -- 4219869 Business Flow
87366 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
87367 l_budgetary_control_flag     := 'N';
87368 
87369 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
87370 l_bflow_applied_to_amt       := NULL; -- 5132302
87371 l_entered_amt_idx            := NULL;          -- 4262811
87372 l_accted_amt_idx             := NULL;          -- 4262811
87373 l_acc_rev_flag               := NULL;          -- 4262811
87374 l_accrual_line_num           := NULL;          -- 4262811
87375 l_tmp_amt                    := NULL;          -- 4262811
87376 --
87377  
87378 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
87379     l_balance_type_code <> 'B' THEN
87380 IF NVL(p_source_2,'
87381 ') =  'IOR'
87382  THEN 
87383 
87384    --
87385    XLA_AE_LINES_PKG.SetNewLine;
87386 
87387    p_balance_type_code          := l_balance_type_code;
87388    -- set the flag so later we will know whether the gain loss line needs to be created
87389    
87390    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
87391      p_actual_flag :='A';
87392    END IF;
87393 
87394    --
87395    -- bulk performance
87396    --
87397    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
87398                                       p_header_num   => 0); -- 4262811
87399    --
87400    -- set accounting line options
87401    --
87402    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
87403            p_natural_side_code          => 'D'
87404          , p_gain_or_loss_flag          => 'N'
87405          , p_gl_transfer_mode_code      => 'D'
87406          , p_acct_entry_type_code       => 'A'
87407          , p_switch_side_flag           => 'Y'
87408          , p_merge_duplicate_code       => 'W'
87409          );
87410    --
87411    l_acc_rev_natural_side_code := 'C';  -- 4262811
87412    -- 
87413    --
87414    -- set accounting line type info
87415    --
87416    xla_ae_lines_pkg.SetAcctLineType
87417       (p_component_type             => l_component_type
87418       ,p_event_type_code            => l_event_type_code
87419       ,p_line_definition_owner_code => l_line_definition_owner_code
87420       ,p_line_definition_code       => l_line_definition_code
87421       ,p_accounting_line_code       => l_component_code
87422       ,p_accounting_line_type_code  => l_component_type_code
87423       ,p_accounting_line_appl_id    => l_component_appl_id
87424       ,p_amb_context_code           => l_amb_context_code
87425       ,p_entity_code                => l_entity_code
87426       ,p_event_class_code           => l_event_class_code);
87427    --
87428    -- set accounting class
87429    --
87430    xla_ae_lines_pkg.SetAcctClass(
87431            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
87432          , p_ae_header_id           => l_ae_header_id
87433          );
87434 
87435    --
87436    -- set rounding class
87437    --
87438    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
87439                       'INTERORG_RECEIVABLES';
87440 
87441    --
87442    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
87443    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
87444    --
87445    -- bulk performance
87446    --
87447    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
87448 
87449    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
87450       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
87451 
87452    -- 4955764
87453    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87454       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
87455 
87456    -- 4458381 Public Sector Enh
87457    
87458    --
87459    -- set accounting attributes for the line type
87460    --
87461    l_entered_amt_idx := 3;
87462    l_accted_amt_idx  := 8;
87463    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
87464    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
87465    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
87466    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
87467    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
87468    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
87469    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
87470    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
87471    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
87472    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
87473    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
87474    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
87475    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
87476    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
87477    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
87478    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
87482    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
87479    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
87480 
87481    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
87483 
87484    ---------------------------------------------------------------------------------------------------------------
87485    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
87486    ---------------------------------------------------------------------------------------------------------------
87487    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
87488 
87489    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87490    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87491 
87492    IF xla_accounting_cache_pkg.GetValueChar
87493          (p_source_code         => 'LEDGER_CATEGORY_CODE'
87494          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
87495    AND l_bflow_method_code = 'PRIOR_ENTRY'
87496 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
87497    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
87498          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
87499        )
87500    THEN
87501          xla_ae_lines_pkg.BflowUpgEntry
87502            (p_business_method_code    => l_bflow_method_code
87503            ,p_business_class_code     => l_bflow_class_code
87504            ,p_balance_type            => l_balance_type_code);
87505    ELSE
87506       NULL;
87507 -- No business flow processing for business flow method of NONE.
87508    END IF;
87509 
87510    --
87511    -- call analytical criteria
87512    --
87513    
87514    --
87515    -- call description
87516    --
87517    -- No description or it is inherited.
87518    --
87519    -- call ADRs
87520    -- Bug 4922099
87521    --
87522    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87523         (NVL(l_actual_upg_option, 'N') = 'O') OR
87524         (NVL(l_enc_upg_option, 'N') = 'O')
87525       )
87526    THEN
87527    NULL;
87528    --
87529    --
87530    
87531   l_ccid := AcctDerRule_22(
87532            p_application_id           => p_application_id
87533          , p_ae_header_id             => l_ae_header_id 
87534 , p_source_1 => p_source_1
87535 , p_source_2 => p_source_2
87536          , x_transaction_coa_id       => l_adr_transaction_coa_id
87537          , x_accounting_coa_id        => l_adr_accounting_coa_id
87538          , x_value_type_code          => l_adr_value_type_code
87539          , p_side                     => 'NA'
87540    );
87541 
87542    xla_ae_lines_pkg.set_ccid(
87543     p_code_combination_id          => l_ccid
87544   , p_value_type_code              => l_adr_value_type_code
87545   , p_transaction_coa_id           => l_adr_transaction_coa_id
87546   , p_accounting_coa_id            => l_adr_accounting_coa_id
87547   , p_adr_code                     => 'IOR'
87548   , p_adr_type_code                => 'S'
87549   , p_component_type               => l_component_type
87550   , p_component_code               => l_component_code
87551   , p_component_type_code          => l_component_type_code
87552   , p_component_appl_id            => l_component_appl_id
87553   , p_amb_context_code             => l_amb_context_code
87554   , p_side                         => 'NA'
87555   );
87556 
87557 
87558    --
87559    --
87560    END IF;
87561    --
87562    -- Bug 4922099
87563    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
87564           (NVL(l_enc_upg_option, 'N') = 'O')
87565         ) AND
87566         (l_bflow_method_code = 'PRIOR_ENTRY')
87567       )
87568    THEN
87569       IF
87570       --
87571       1 = 2
87572       --
87573       THEN
87574       xla_accounting_err_pkg.build_message
87575                                     (p_appli_s_name            => 'XLA'
87576                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87577                                     ,p_token_1                 => 'LINE_NUMBER'
87578                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
87579                                     ,p_token_2                 => 'LINE_TYPE_NAME'
87580                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
87581                                                                              l_component_type
87582                                                                             ,l_component_code
87583                                                                             ,l_component_type_code
87584                                                                             ,l_component_appl_id
87585                                                                             ,l_amb_context_code
87586                                                                             ,l_entity_code
87587                                                                             ,l_event_class_code
87588                                                                            )
87589                                     ,p_token_3                 => 'OWNER'
87590                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
87594                                     ,p_token_4                 => 'PRODUCT_NAME'
87591                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
87592                                                                           ,p_lookup_code    => l_component_type_code
87593                                                                          )
87595                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
87596                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
87597                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
87598                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
87599                                     ,p_ae_header_id            =>  NULL
87600                                        );
87601 
87602         IF (C_LEVEL_ERROR>= g_log_level) THEN
87603                  trace
87604                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87605                       ,p_level    => C_LEVEL_ERROR
87606                       ,p_module   => l_log_module);
87607         END IF;
87608       END IF;
87609    END IF;
87610    --
87611    --
87612    ------------------------------------------------------------------------------------------------
87613    -- 4219869 Business Flow
87614    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
87615    -- Prior Entry.  Currently, the following code is always generated.
87616    ------------------------------------------------------------------------------------------------
87617    XLA_AE_LINES_PKG.ValidateCurrentLine;
87618 
87619    ------------------------------------------------------------------------------------
87620    -- 4219869 Business Flow
87621    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
87622    ------------------------------------------------------------------------------------
87623    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87624 
87625    ----------------------------------------------------------------------------------
87626    -- 4219869 Business Flow
87627    -- Update journal entry status -- Need to generate this within IF <condition>
87628    ----------------------------------------------------------------------------------
87629    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87630          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
87631          ,p_balance_type_code => l_balance_type_code
87632          );
87633 
87634    -------------------------------------------------------------------------------------------
87635    -- 4262811 - Generate the Accrual Reversal lines
87636    -------------------------------------------------------------------------------------------
87637    BEGIN
87638       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
87639                               (g_array_event(p_event_id).array_value_num('header_index'));
87640       IF l_acc_rev_flag IS NULL THEN
87641          l_acc_rev_flag := 'N';
87642       END IF;
87643    EXCEPTION
87644       WHEN OTHERS THEN
87645          l_acc_rev_flag := 'N';
87646    END;
87647    --
87648    IF (l_acc_rev_flag = 'Y') THEN
87649 
87650        -- 4645092  ------------------------------------------------------------------------------
87651        -- To allow MPA report to determine if it should generate report process
87652        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
87653        ------------------------------------------------------------------------------------------
87654 
87655        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
87656        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
87657    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
87658    -- call ADRs
87659    -- Bug 4922099
87660    --
87661    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87662         (NVL(l_actual_upg_option, 'N') = 'O') OR
87663         (NVL(l_enc_upg_option, 'N') = 'O')
87664       )
87665    THEN
87666    NULL;
87667    --
87668    --
87669    
87670   l_ccid := AcctDerRule_22(
87671            p_application_id           => p_application_id
87672          , p_ae_header_id             => l_ae_header_id 
87673 , p_source_1 => p_source_1
87674 , p_source_2 => p_source_2
87675          , x_transaction_coa_id       => l_adr_transaction_coa_id
87676          , x_accounting_coa_id        => l_adr_accounting_coa_id
87677          , x_value_type_code          => l_adr_value_type_code
87678          , p_side                     => 'NA'
87679    );
87680 
87681    xla_ae_lines_pkg.set_ccid(
87682     p_code_combination_id          => l_ccid
87683   , p_value_type_code              => l_adr_value_type_code
87684   , p_transaction_coa_id           => l_adr_transaction_coa_id
87685   , p_accounting_coa_id            => l_adr_accounting_coa_id
87686   , p_adr_code                     => 'IOR'
87687   , p_adr_type_code                => 'S'
87688   , p_component_type               => l_component_type
87689   , p_component_code               => l_component_code
87690   , p_component_type_code          => l_component_type_code
87691   , p_component_appl_id            => l_component_appl_id
87692   , p_amb_context_code             => l_amb_context_code
87693   , p_side                         => 'NA'
87694   );
87698    --
87695 
87696 
87697    --
87699    END IF;
87700 
87701        --
87702        -- Update the line information that should be overwritten
87703        --
87704        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
87705                                          p_header_num   => 1);
87706        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
87707 
87708        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
87709 
87710        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
87711           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
87712        END IF;
87713 
87714       --
87715       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
87716       --
87717       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
87718           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
87719       ELSE
87720           ---------------------------------------------------------------------------------------------------
87721           -- 4262811a Switch Sign
87722           ---------------------------------------------------------------------------------------------------
87723           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
87724           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87725                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87726           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87727                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87728           -- 5132302
87729           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
87730                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87731 
87732       END IF;
87733 
87734       -- 4955764
87735       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87736       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
87737 
87738 
87739       XLA_AE_LINES_PKG.ValidateCurrentLine;
87740       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87741 
87742       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87743                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
87744                ,p_balance_type_code => l_balance_type_code);
87745 
87746    END IF;
87747 
87748    -----------------------------------------------------------------------------------------
87749    -- 4262811 Multiperiod Accounting
87750    -----------------------------------------------------------------------------------------
87751      -- No MPA option is assigned.
87752 
87753 
87754 END IF;
87755 END IF;
87756 --
87757 
87758 --
87759 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87760    trace
87761       (p_msg      => 'END of AcctLineType_190'
87762       ,p_level    => C_LEVEL_PROCEDURE
87763       ,p_module   => l_log_module);
87764 END IF;
87765 --
87766 EXCEPTION
87767   WHEN xla_exceptions_pkg.application_exception THEN
87768       RAISE;
87769   WHEN OTHERS THEN
87770        xla_exceptions_pkg.raise_message
87771            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_190');
87772 END AcctLineType_190;
87773 --
87774 
87775 ---------------------------------------
87776 --
87777 -- PRIVATE FUNCTION
87778 --         AcctLineType_191
87779 --
87780 ---------------------------------------
87781 PROCEDURE AcctLineType_191 (
87782   p_application_id        IN NUMBER
87783  ,p_event_id              IN NUMBER
87784  ,p_calculate_acctd_flag  IN VARCHAR2
87785  ,p_calculate_g_l_flag    IN VARCHAR2
87786  ,p_actual_flag           IN OUT VARCHAR2
87787  ,p_balance_type_code     OUT VARCHAR2
87788  ,p_gain_or_loss_ref      OUT VARCHAR2
87789  
87790 --Transaction Account
87791  , p_source_1            IN NUMBER
87792 --Journal Line Type
87793  , p_source_2            IN VARCHAR2
87794 --Entered Amount
87795  , p_source_3            IN NUMBER
87796 --First Distribution Identifier
87797  , p_source_5            IN NUMBER
87798 --Distribution Type
87799  , p_source_6            IN VARCHAR2
87800 --Currency Code
87801  , p_source_7            IN VARCHAR2
87802 --Currency Conversion Date
87803  , p_source_8            IN DATE
87804 --Currency Conversion Rate
87805  , p_source_9            IN NUMBER
87806 --Currency Conversion Type
87807  , p_source_10            IN VARCHAR2
87808 --Accounted Amount
87809  , p_source_11            IN NUMBER
87810 )
87811 IS
87812 
87813 l_component_type              VARCHAR2(80);
87814 l_component_code              VARCHAR2(30);
87815 l_component_type_code         VARCHAR2(1);
87816 l_component_appl_id           INTEGER;
87817 l_amb_context_code            VARCHAR2(30);
87818 l_entity_code                 VARCHAR2(30);
87819 l_event_class_code            VARCHAR2(30);
87820 l_ae_header_id                NUMBER;
87821 l_event_type_code             VARCHAR2(30);
87825 -- adr variables
87822 l_line_definition_code        VARCHAR2(30);
87823 l_line_definition_owner_code  VARCHAR2(1);
87824 --
87826 l_segment                     VARCHAR2(30);
87827 l_ccid                        NUMBER;
87828 l_adr_transaction_coa_id      NUMBER;
87829 l_adr_accounting_coa_id       NUMBER;
87830 l_adr_flexfield_segment_code  VARCHAR2(30);
87831 l_adr_flex_value_set_id       NUMBER;
87832 l_adr_value_type_code         VARCHAR2(30);
87833 l_adr_value_combination_id    NUMBER;
87834 l_adr_value_segment_code      VARCHAR2(30);
87835 
87836 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
87837 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
87838 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
87839 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
87840 
87841 -- 4262811 Variables ------------------------------------------------------------------------------------------
87842 l_entered_amt_idx             NUMBER;
87843 l_accted_amt_idx              NUMBER;
87844 l_acc_rev_flag                VARCHAR2(1);
87845 l_accrual_line_num            NUMBER;
87846 l_tmp_amt                     NUMBER;
87847 l_acc_rev_natural_side_code   VARCHAR2(1);
87848 
87849 l_num_entries                 NUMBER;
87850 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
87851 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
87852 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
87853 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
87854 l_recog_line_1                NUMBER;
87855 l_recog_line_2                NUMBER;
87856 
87857 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
87858 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
87859 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
87860 
87861 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
87862 
87863 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
87864 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
87865 
87866 ---------------------------------------------------------------------------------------------------------------
87867 
87868 
87869 --
87870 -- bulk performance
87871 --
87872 l_balance_type_code           VARCHAR2(1);
87873 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
87874 l_log_module                  VARCHAR2(240);
87875 
87876 --
87877 -- Upgrade strategy
87878 --
87879 l_actual_upg_option           VARCHAR2(1);
87880 l_enc_upg_option           VARCHAR2(1);
87881 
87882 --
87883 BEGIN
87884 --
87885 IF g_log_enabled THEN
87886       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_191';
87887 END IF;
87888 --
87889 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87890 
87891       trace
87892          (p_msg      => 'BEGIN of AcctLineType_191'
87893          ,p_level    => C_LEVEL_PROCEDURE
87894          ,p_module   => l_log_module);
87895 
87896 END IF;
87897 --
87898 l_component_type             := 'AMB_JLT';
87899 l_component_code             := 'IPA';
87900 l_component_type_code        := 'S';
87901 l_component_appl_id          :=  555;
87902 l_amb_context_code           := 'DEFAULT';
87903 l_entity_code                := 'PURCHASING';
87904 l_event_class_code           := 'PAYABLES_INVOICE';
87905 l_event_type_code            := 'INVOICE_IPV_ADJ';
87906 l_line_definition_owner_code := 'S';
87907 l_line_definition_code       := 'INVOICE_IPV_ADJ';
87908 --
87909 l_balance_type_code          := 'A';
87910 l_segment                     := NULL;
87911 l_ccid                        := NULL;
87912 l_adr_transaction_coa_id      := NULL;
87913 l_adr_accounting_coa_id       := NULL;
87914 l_adr_flexfield_segment_code  := NULL;
87915 l_adr_flex_value_set_id       := NULL;
87916 l_adr_value_type_code         := NULL;
87917 l_adr_value_combination_id    := NULL;
87918 l_adr_value_segment_code      := NULL;
87919 
87920 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
87921 l_bflow_class_code           := '';    -- 4219869 Business Flow
87922 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
87923 l_budgetary_control_flag     := 'N';
87924 
87925 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
87926 l_bflow_applied_to_amt       := NULL; -- 5132302
87927 l_entered_amt_idx            := NULL;          -- 4262811
87928 l_accted_amt_idx             := NULL;          -- 4262811
87929 l_acc_rev_flag               := NULL;          -- 4262811
87930 l_accrual_line_num           := NULL;          -- 4262811
87931 l_tmp_amt                    := NULL;          -- 4262811
87932 --
87933  
87934 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
87935     l_balance_type_code <> 'B' THEN
87936 IF NVL(p_source_2,'
87937 ') =  'IPA'
87938  THEN 
87939 
87940    --
87941    XLA_AE_LINES_PKG.SetNewLine;
87942 
87943    p_balance_type_code          := l_balance_type_code;
87944    -- set the flag so later we will know whether the gain loss line needs to be created
87945    
87946    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
87947      p_actual_flag :='A';
87948    END IF;
87949 
87950    --
87951    -- bulk performance
87952    --
87953    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
87957    --
87954                                       p_header_num   => 0); -- 4262811
87955    --
87956    -- set accounting line options
87958    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
87959            p_natural_side_code          => 'D'
87960          , p_gain_or_loss_flag          => 'N'
87961          , p_gl_transfer_mode_code      => 'D'
87962          , p_acct_entry_type_code       => 'A'
87963          , p_switch_side_flag           => 'Y'
87964          , p_merge_duplicate_code       => 'W'
87965          );
87966    --
87967    l_acc_rev_natural_side_code := 'C';  -- 4262811
87968    -- 
87969    --
87970    -- set accounting line type info
87971    --
87972    xla_ae_lines_pkg.SetAcctLineType
87973       (p_component_type             => l_component_type
87974       ,p_event_type_code            => l_event_type_code
87975       ,p_line_definition_owner_code => l_line_definition_owner_code
87976       ,p_line_definition_code       => l_line_definition_code
87977       ,p_accounting_line_code       => l_component_code
87978       ,p_accounting_line_type_code  => l_component_type_code
87979       ,p_accounting_line_appl_id    => l_component_appl_id
87980       ,p_amb_context_code           => l_amb_context_code
87981       ,p_entity_code                => l_entity_code
87982       ,p_event_class_code           => l_event_class_code);
87983    --
87984    -- set accounting class
87985    --
87986    xla_ae_lines_pkg.SetAcctClass(
87987            p_accounting_class_code  => 'IPV'
87988          , p_ae_header_id           => l_ae_header_id
87989          );
87990 
87991    --
87992    -- set rounding class
87993    --
87994    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
87995                       'IPV';
87996 
87997    --
87998    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
87999    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
88000    --
88001    -- bulk performance
88002    --
88003    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
88004 
88005    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
88006       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
88007 
88008    -- 4955764
88009    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88010       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
88011 
88012    -- 4458381 Public Sector Enh
88013    
88014    --
88015    -- set accounting attributes for the line type
88016    --
88017    l_entered_amt_idx := 3;
88018    l_accted_amt_idx  := 8;
88019    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
88020    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
88021    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
88022    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
88023    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
88024    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
88025    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
88026    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
88027    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
88028    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
88029    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
88030    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
88031    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
88032    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
88033    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
88034    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
88035    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
88036 
88037    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
88038    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
88039 
88040    ---------------------------------------------------------------------------------------------------------------
88041    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
88042    ---------------------------------------------------------------------------------------------------------------
88043    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
88044 
88045    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88046    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88047 
88048    IF xla_accounting_cache_pkg.GetValueChar
88049          (p_source_code         => 'LEDGER_CATEGORY_CODE'
88050          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
88051    AND l_bflow_method_code = 'PRIOR_ENTRY'
88052 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
88053    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
88054          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
88055        )
88056    THEN
88057          xla_ae_lines_pkg.BflowUpgEntry
88058            (p_business_method_code    => l_bflow_method_code
88059            ,p_business_class_code     => l_bflow_class_code
88060            ,p_balance_type            => l_balance_type_code);
88061    ELSE
88062       NULL;
88066    --
88063 -- No business flow processing for business flow method of NONE.
88064    END IF;
88065 
88067    -- call analytical criteria
88068    --
88069    
88070    --
88071    -- call description
88072    --
88073    -- No description or it is inherited.
88074    --
88075    -- call ADRs
88076    -- Bug 4922099
88077    --
88078    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88079         (NVL(l_actual_upg_option, 'N') = 'O') OR
88080         (NVL(l_enc_upg_option, 'N') = 'O')
88081       )
88082    THEN
88083    NULL;
88084    --
88085    --
88086    
88087   l_ccid := AcctDerRule_23(
88088            p_application_id           => p_application_id
88089          , p_ae_header_id             => l_ae_header_id 
88090 , p_source_1 => p_source_1
88091 , p_source_2 => p_source_2
88092          , x_transaction_coa_id       => l_adr_transaction_coa_id
88093          , x_accounting_coa_id        => l_adr_accounting_coa_id
88094          , x_value_type_code          => l_adr_value_type_code
88095          , p_side                     => 'NA'
88096    );
88097 
88098    xla_ae_lines_pkg.set_ccid(
88099     p_code_combination_id          => l_ccid
88100   , p_value_type_code              => l_adr_value_type_code
88101   , p_transaction_coa_id           => l_adr_transaction_coa_id
88102   , p_accounting_coa_id            => l_adr_accounting_coa_id
88103   , p_adr_code                     => 'IPA'
88104   , p_adr_type_code                => 'S'
88105   , p_component_type               => l_component_type
88106   , p_component_code               => l_component_code
88107   , p_component_type_code          => l_component_type_code
88108   , p_component_appl_id            => l_component_appl_id
88109   , p_amb_context_code             => l_amb_context_code
88110   , p_side                         => 'NA'
88111   );
88112 
88113 
88114    --
88115    --
88116    END IF;
88117    --
88118    -- Bug 4922099
88119    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
88120           (NVL(l_enc_upg_option, 'N') = 'O')
88121         ) AND
88122         (l_bflow_method_code = 'PRIOR_ENTRY')
88123       )
88124    THEN
88125       IF
88126       --
88127       1 = 2
88128       --
88129       THEN
88130       xla_accounting_err_pkg.build_message
88131                                     (p_appli_s_name            => 'XLA'
88132                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88133                                     ,p_token_1                 => 'LINE_NUMBER'
88134                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
88135                                     ,p_token_2                 => 'LINE_TYPE_NAME'
88136                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
88137                                                                              l_component_type
88138                                                                             ,l_component_code
88139                                                                             ,l_component_type_code
88140                                                                             ,l_component_appl_id
88141                                                                             ,l_amb_context_code
88142                                                                             ,l_entity_code
88143                                                                             ,l_event_class_code
88144                                                                            )
88145                                     ,p_token_3                 => 'OWNER'
88146                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
88147                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
88148                                                                           ,p_lookup_code    => l_component_type_code
88149                                                                          )
88150                                     ,p_token_4                 => 'PRODUCT_NAME'
88151                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
88152                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
88153                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
88154                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
88155                                     ,p_ae_header_id            =>  NULL
88156                                        );
88157 
88158         IF (C_LEVEL_ERROR>= g_log_level) THEN
88159                  trace
88160                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88161                       ,p_level    => C_LEVEL_ERROR
88162                       ,p_module   => l_log_module);
88163         END IF;
88164       END IF;
88165    END IF;
88166    --
88167    --
88168    ------------------------------------------------------------------------------------------------
88169    -- 4219869 Business Flow
88170    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
88171    -- Prior Entry.  Currently, the following code is always generated.
88172    ------------------------------------------------------------------------------------------------
88173    XLA_AE_LINES_PKG.ValidateCurrentLine;
88177    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
88174 
88175    ------------------------------------------------------------------------------------
88176    -- 4219869 Business Flow
88178    ------------------------------------------------------------------------------------
88179    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88180 
88181    ----------------------------------------------------------------------------------
88182    -- 4219869 Business Flow
88183    -- Update journal entry status -- Need to generate this within IF <condition>
88184    ----------------------------------------------------------------------------------
88185    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88186          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
88187          ,p_balance_type_code => l_balance_type_code
88188          );
88189 
88190    -------------------------------------------------------------------------------------------
88191    -- 4262811 - Generate the Accrual Reversal lines
88192    -------------------------------------------------------------------------------------------
88193    BEGIN
88194       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
88195                               (g_array_event(p_event_id).array_value_num('header_index'));
88196       IF l_acc_rev_flag IS NULL THEN
88197          l_acc_rev_flag := 'N';
88198       END IF;
88199    EXCEPTION
88200       WHEN OTHERS THEN
88201          l_acc_rev_flag := 'N';
88202    END;
88203    --
88204    IF (l_acc_rev_flag = 'Y') THEN
88205 
88206        -- 4645092  ------------------------------------------------------------------------------
88207        -- To allow MPA report to determine if it should generate report process
88208        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
88209        ------------------------------------------------------------------------------------------
88210 
88211        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
88212        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
88213    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
88214    -- call ADRs
88215    -- Bug 4922099
88216    --
88217    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88218         (NVL(l_actual_upg_option, 'N') = 'O') OR
88219         (NVL(l_enc_upg_option, 'N') = 'O')
88220       )
88221    THEN
88222    NULL;
88223    --
88224    --
88225    
88226   l_ccid := AcctDerRule_23(
88227            p_application_id           => p_application_id
88228          , p_ae_header_id             => l_ae_header_id 
88229 , p_source_1 => p_source_1
88230 , p_source_2 => p_source_2
88231          , x_transaction_coa_id       => l_adr_transaction_coa_id
88232          , x_accounting_coa_id        => l_adr_accounting_coa_id
88233          , x_value_type_code          => l_adr_value_type_code
88234          , p_side                     => 'NA'
88235    );
88236 
88237    xla_ae_lines_pkg.set_ccid(
88238     p_code_combination_id          => l_ccid
88239   , p_value_type_code              => l_adr_value_type_code
88240   , p_transaction_coa_id           => l_adr_transaction_coa_id
88241   , p_accounting_coa_id            => l_adr_accounting_coa_id
88242   , p_adr_code                     => 'IPA'
88243   , p_adr_type_code                => 'S'
88244   , p_component_type               => l_component_type
88245   , p_component_code               => l_component_code
88246   , p_component_type_code          => l_component_type_code
88247   , p_component_appl_id            => l_component_appl_id
88248   , p_amb_context_code             => l_amb_context_code
88249   , p_side                         => 'NA'
88250   );
88251 
88252 
88253    --
88254    --
88255    END IF;
88256 
88257        --
88258        -- Update the line information that should be overwritten
88259        --
88260        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
88261                                          p_header_num   => 1);
88262        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
88263 
88264        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
88265 
88266        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
88267           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
88268        END IF;
88269 
88270       --
88271       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
88272       --
88273       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
88274           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
88275       ELSE
88276           ---------------------------------------------------------------------------------------------------
88277           -- 4262811a Switch Sign
88278           ---------------------------------------------------------------------------------------------------
88279           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
88280           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88281                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88282           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88286                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88283                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88284           -- 5132302
88285           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
88287 
88288       END IF;
88289 
88290       -- 4955764
88291       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88292       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
88293 
88294 
88295       XLA_AE_LINES_PKG.ValidateCurrentLine;
88296       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88297 
88298       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88299                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
88300                ,p_balance_type_code => l_balance_type_code);
88301 
88302    END IF;
88303 
88304    -----------------------------------------------------------------------------------------
88305    -- 4262811 Multiperiod Accounting
88306    -----------------------------------------------------------------------------------------
88307      -- No MPA option is assigned.
88308 
88309 
88310 END IF;
88311 END IF;
88312 --
88313 
88314 --
88315 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88316    trace
88317       (p_msg      => 'END of AcctLineType_191'
88318       ,p_level    => C_LEVEL_PROCEDURE
88319       ,p_module   => l_log_module);
88320 END IF;
88321 --
88322 EXCEPTION
88323   WHEN xla_exceptions_pkg.application_exception THEN
88324       RAISE;
88325   WHEN OTHERS THEN
88326        xla_exceptions_pkg.raise_message
88327            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_191');
88328 END AcctLineType_191;
88329 --
88330 
88331 ---------------------------------------
88332 --
88333 -- PRIVATE FUNCTION
88334 --         AcctLineType_192
88335 --
88336 ---------------------------------------
88337 PROCEDURE AcctLineType_192 (
88338   p_application_id        IN NUMBER
88339  ,p_event_id              IN NUMBER
88340  ,p_calculate_acctd_flag  IN VARCHAR2
88341  ,p_calculate_g_l_flag    IN VARCHAR2
88342  ,p_actual_flag           IN OUT VARCHAR2
88343  ,p_balance_type_code     OUT VARCHAR2
88344  ,p_gain_or_loss_ref      OUT VARCHAR2
88345  
88346 --Transaction Account
88347  , p_source_1            IN NUMBER
88348 --Journal Line Type
88349  , p_source_2            IN VARCHAR2
88350 --Entered Amount
88351  , p_source_3            IN NUMBER
88352 --First Distribution Identifier
88353  , p_source_5            IN NUMBER
88354 --Distribution Type
88355  , p_source_6            IN VARCHAR2
88356 --Currency Code
88357  , p_source_7            IN VARCHAR2
88358 --Currency Conversion Date
88359  , p_source_8            IN DATE
88360 --Currency Conversion Rate
88361  , p_source_9            IN NUMBER
88362 --Currency Conversion Type
88363  , p_source_10            IN VARCHAR2
88364 --Accounted Amount
88365  , p_source_11            IN NUMBER
88366 )
88367 IS
88368 
88369 l_component_type              VARCHAR2(80);
88370 l_component_code              VARCHAR2(30);
88371 l_component_type_code         VARCHAR2(1);
88372 l_component_appl_id           INTEGER;
88373 l_amb_context_code            VARCHAR2(30);
88374 l_entity_code                 VARCHAR2(30);
88375 l_event_class_code            VARCHAR2(30);
88376 l_ae_header_id                NUMBER;
88377 l_event_type_code             VARCHAR2(30);
88378 l_line_definition_code        VARCHAR2(30);
88379 l_line_definition_owner_code  VARCHAR2(1);
88380 --
88381 -- adr variables
88382 l_segment                     VARCHAR2(30);
88383 l_ccid                        NUMBER;
88384 l_adr_transaction_coa_id      NUMBER;
88385 l_adr_accounting_coa_id       NUMBER;
88386 l_adr_flexfield_segment_code  VARCHAR2(30);
88387 l_adr_flex_value_set_id       NUMBER;
88388 l_adr_value_type_code         VARCHAR2(30);
88389 l_adr_value_combination_id    NUMBER;
88390 l_adr_value_segment_code      VARCHAR2(30);
88391 
88392 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
88393 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
88394 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
88395 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
88396 
88397 -- 4262811 Variables ------------------------------------------------------------------------------------------
88398 l_entered_amt_idx             NUMBER;
88399 l_accted_amt_idx              NUMBER;
88400 l_acc_rev_flag                VARCHAR2(1);
88401 l_accrual_line_num            NUMBER;
88402 l_tmp_amt                     NUMBER;
88403 l_acc_rev_natural_side_code   VARCHAR2(1);
88404 
88405 l_num_entries                 NUMBER;
88406 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
88407 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
88408 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
88409 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
88410 l_recog_line_1                NUMBER;
88411 l_recog_line_2                NUMBER;
88412 
88413 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
88414 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
88418 
88415 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
88416 
88417 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
88419 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
88420 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
88421 
88422 ---------------------------------------------------------------------------------------------------------------
88423 
88424 
88425 --
88426 -- bulk performance
88427 --
88428 l_balance_type_code           VARCHAR2(1);
88429 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
88430 l_log_module                  VARCHAR2(240);
88431 
88432 --
88433 -- Upgrade strategy
88434 --
88435 l_actual_upg_option           VARCHAR2(1);
88436 l_enc_upg_option           VARCHAR2(1);
88437 
88438 --
88439 BEGIN
88440 --
88441 IF g_log_enabled THEN
88442       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_192';
88443 END IF;
88444 --
88445 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88446 
88447       trace
88448          (p_msg      => 'BEGIN of AcctLineType_192'
88449          ,p_level    => C_LEVEL_PROCEDURE
88450          ,p_module   => l_log_module);
88451 
88452 END IF;
88453 --
88454 l_component_type             := 'AMB_JLT';
88455 l_component_code             := 'IRV';
88456 l_component_type_code        := 'S';
88457 l_component_appl_id          :=  555;
88458 l_amb_context_code           := 'DEFAULT';
88459 l_entity_code                := 'REVALUATION';
88460 l_event_class_code           := 'LOTCOSTADJ';
88461 l_event_type_code            := 'LOTCOSTADJ';
88462 l_line_definition_owner_code := 'S';
88463 l_line_definition_code       := 'LOTCOSTADJ';
88464 --
88465 l_balance_type_code          := 'A';
88466 l_segment                     := NULL;
88467 l_ccid                        := NULL;
88468 l_adr_transaction_coa_id      := NULL;
88469 l_adr_accounting_coa_id       := NULL;
88470 l_adr_flexfield_segment_code  := NULL;
88471 l_adr_flex_value_set_id       := NULL;
88472 l_adr_value_type_code         := NULL;
88473 l_adr_value_combination_id    := NULL;
88474 l_adr_value_segment_code      := NULL;
88475 
88476 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
88477 l_bflow_class_code           := '';    -- 4219869 Business Flow
88478 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
88479 l_budgetary_control_flag     := 'N';
88480 
88481 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
88482 l_bflow_applied_to_amt       := NULL; -- 5132302
88483 l_entered_amt_idx            := NULL;          -- 4262811
88484 l_accted_amt_idx             := NULL;          -- 4262811
88485 l_acc_rev_flag               := NULL;          -- 4262811
88486 l_accrual_line_num           := NULL;          -- 4262811
88487 l_tmp_amt                    := NULL;          -- 4262811
88488 --
88489  
88490 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
88491     l_balance_type_code <> 'B' THEN
88492 IF NVL(p_source_2,'
88493 ') =  'IRV'
88494  THEN 
88495 
88496    --
88497    XLA_AE_LINES_PKG.SetNewLine;
88498 
88499    p_balance_type_code          := l_balance_type_code;
88500    -- set the flag so later we will know whether the gain loss line needs to be created
88501    
88502    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
88503      p_actual_flag :='A';
88504    END IF;
88505 
88506    --
88507    -- bulk performance
88508    --
88509    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
88510                                       p_header_num   => 0); -- 4262811
88511    --
88512    -- set accounting line options
88513    --
88514    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
88515            p_natural_side_code          => 'D'
88516          , p_gain_or_loss_flag          => 'N'
88517          , p_gl_transfer_mode_code      => 'D'
88518          , p_acct_entry_type_code       => 'A'
88519          , p_switch_side_flag           => 'Y'
88520          , p_merge_duplicate_code       => 'W'
88521          );
88522    --
88523    l_acc_rev_natural_side_code := 'C';  -- 4262811
88524    -- 
88525    --
88526    -- set accounting line type info
88527    --
88528    xla_ae_lines_pkg.SetAcctLineType
88529       (p_component_type             => l_component_type
88530       ,p_event_type_code            => l_event_type_code
88531       ,p_line_definition_owner_code => l_line_definition_owner_code
88532       ,p_line_definition_code       => l_line_definition_code
88533       ,p_accounting_line_code       => l_component_code
88534       ,p_accounting_line_type_code  => l_component_type_code
88535       ,p_accounting_line_appl_id    => l_component_appl_id
88536       ,p_amb_context_code           => l_amb_context_code
88537       ,p_entity_code                => l_entity_code
88538       ,p_event_class_code           => l_event_class_code);
88539    --
88540    -- set accounting class
88541    --
88542    xla_ae_lines_pkg.SetAcctClass(
88543            p_accounting_class_code  => 'IRV'
88544          , p_ae_header_id           => l_ae_header_id
88545          );
88546 
88547    --
88548    -- set rounding class
88549    --
88550    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
88551                       'IRV';
88552 
88553    --
88557    -- bulk performance
88554    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
88555    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
88556    --
88558    --
88559    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
88560 
88561    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
88562       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
88563 
88564    -- 4955764
88565    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88566       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
88567 
88568    -- 4458381 Public Sector Enh
88569    
88570    --
88571    -- set accounting attributes for the line type
88572    --
88573    l_entered_amt_idx := 3;
88574    l_accted_amt_idx  := 8;
88575    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
88576    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
88577    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
88578    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
88579    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
88580    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
88581    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
88582    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
88583    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
88584    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
88585    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
88586    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
88587    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
88588    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
88589    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
88590    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
88591    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
88592 
88593    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
88594    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
88595 
88596    ---------------------------------------------------------------------------------------------------------------
88597    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
88598    ---------------------------------------------------------------------------------------------------------------
88599    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
88600 
88601    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88602    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88603 
88604    IF xla_accounting_cache_pkg.GetValueChar
88605          (p_source_code         => 'LEDGER_CATEGORY_CODE'
88606          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
88607    AND l_bflow_method_code = 'PRIOR_ENTRY'
88608 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
88609    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
88610          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
88611        )
88612    THEN
88613          xla_ae_lines_pkg.BflowUpgEntry
88614            (p_business_method_code    => l_bflow_method_code
88615            ,p_business_class_code     => l_bflow_class_code
88616            ,p_balance_type            => l_balance_type_code);
88617    ELSE
88618       NULL;
88619 -- No business flow processing for business flow method of NONE.
88620    END IF;
88621 
88622    --
88623    -- call analytical criteria
88624    --
88625    
88626    --
88627    -- call description
88628    --
88629    -- No description or it is inherited.
88630    --
88631    -- call ADRs
88632    -- Bug 4922099
88633    --
88634    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88635         (NVL(l_actual_upg_option, 'N') = 'O') OR
88636         (NVL(l_enc_upg_option, 'N') = 'O')
88637       )
88638    THEN
88639    NULL;
88640    --
88641    --
88642    
88643   l_ccid := AcctDerRule_24(
88644            p_application_id           => p_application_id
88645          , p_ae_header_id             => l_ae_header_id 
88646 , p_source_1 => p_source_1
88647 , p_source_2 => p_source_2
88648          , x_transaction_coa_id       => l_adr_transaction_coa_id
88649          , x_accounting_coa_id        => l_adr_accounting_coa_id
88650          , x_value_type_code          => l_adr_value_type_code
88651          , p_side                     => 'NA'
88652    );
88653 
88654    xla_ae_lines_pkg.set_ccid(
88655     p_code_combination_id          => l_ccid
88656   , p_value_type_code              => l_adr_value_type_code
88657   , p_transaction_coa_id           => l_adr_transaction_coa_id
88658   , p_accounting_coa_id            => l_adr_accounting_coa_id
88659   , p_adr_code                     => 'IRV'
88660   , p_adr_type_code                => 'S'
88661   , p_component_type               => l_component_type
88662   , p_component_code               => l_component_code
88663   , p_component_type_code          => l_component_type_code
88664   , p_component_appl_id            => l_component_appl_id
88665   , p_amb_context_code             => l_amb_context_code
88669 
88666   , p_side                         => 'NA'
88667   );
88668 
88670    --
88671    --
88672    END IF;
88673    --
88674    -- Bug 4922099
88675    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
88676           (NVL(l_enc_upg_option, 'N') = 'O')
88677         ) AND
88678         (l_bflow_method_code = 'PRIOR_ENTRY')
88679       )
88680    THEN
88681       IF
88682       --
88683       1 = 2
88684       --
88685       THEN
88686       xla_accounting_err_pkg.build_message
88687                                     (p_appli_s_name            => 'XLA'
88688                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88689                                     ,p_token_1                 => 'LINE_NUMBER'
88690                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
88691                                     ,p_token_2                 => 'LINE_TYPE_NAME'
88692                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
88693                                                                              l_component_type
88694                                                                             ,l_component_code
88695                                                                             ,l_component_type_code
88696                                                                             ,l_component_appl_id
88697                                                                             ,l_amb_context_code
88698                                                                             ,l_entity_code
88699                                                                             ,l_event_class_code
88700                                                                            )
88701                                     ,p_token_3                 => 'OWNER'
88702                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
88703                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
88704                                                                           ,p_lookup_code    => l_component_type_code
88705                                                                          )
88706                                     ,p_token_4                 => 'PRODUCT_NAME'
88707                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
88708                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
88709                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
88710                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
88711                                     ,p_ae_header_id            =>  NULL
88712                                        );
88713 
88714         IF (C_LEVEL_ERROR>= g_log_level) THEN
88715                  trace
88716                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88717                       ,p_level    => C_LEVEL_ERROR
88718                       ,p_module   => l_log_module);
88719         END IF;
88720       END IF;
88721    END IF;
88722    --
88723    --
88724    ------------------------------------------------------------------------------------------------
88725    -- 4219869 Business Flow
88726    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
88727    -- Prior Entry.  Currently, the following code is always generated.
88728    ------------------------------------------------------------------------------------------------
88729    XLA_AE_LINES_PKG.ValidateCurrentLine;
88730 
88731    ------------------------------------------------------------------------------------
88732    -- 4219869 Business Flow
88733    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
88734    ------------------------------------------------------------------------------------
88735    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88736 
88737    ----------------------------------------------------------------------------------
88738    -- 4219869 Business Flow
88739    -- Update journal entry status -- Need to generate this within IF <condition>
88740    ----------------------------------------------------------------------------------
88741    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88742          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
88743          ,p_balance_type_code => l_balance_type_code
88744          );
88745 
88746    -------------------------------------------------------------------------------------------
88747    -- 4262811 - Generate the Accrual Reversal lines
88748    -------------------------------------------------------------------------------------------
88749    BEGIN
88750       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
88751                               (g_array_event(p_event_id).array_value_num('header_index'));
88752       IF l_acc_rev_flag IS NULL THEN
88753          l_acc_rev_flag := 'N';
88754       END IF;
88755    EXCEPTION
88756       WHEN OTHERS THEN
88757          l_acc_rev_flag := 'N';
88758    END;
88759    --
88760    IF (l_acc_rev_flag = 'Y') THEN
88761 
88762        -- 4645092  ------------------------------------------------------------------------------
88763        -- To allow MPA report to determine if it should generate report process
88767        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
88764        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
88765        ------------------------------------------------------------------------------------------
88766 
88768        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
88769    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
88770    -- call ADRs
88771    -- Bug 4922099
88772    --
88773    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88774         (NVL(l_actual_upg_option, 'N') = 'O') OR
88775         (NVL(l_enc_upg_option, 'N') = 'O')
88776       )
88777    THEN
88778    NULL;
88779    --
88780    --
88781    
88782   l_ccid := AcctDerRule_24(
88783            p_application_id           => p_application_id
88784          , p_ae_header_id             => l_ae_header_id 
88785 , p_source_1 => p_source_1
88786 , p_source_2 => p_source_2
88787          , x_transaction_coa_id       => l_adr_transaction_coa_id
88788          , x_accounting_coa_id        => l_adr_accounting_coa_id
88789          , x_value_type_code          => l_adr_value_type_code
88790          , p_side                     => 'NA'
88791    );
88792 
88793    xla_ae_lines_pkg.set_ccid(
88794     p_code_combination_id          => l_ccid
88795   , p_value_type_code              => l_adr_value_type_code
88796   , p_transaction_coa_id           => l_adr_transaction_coa_id
88797   , p_accounting_coa_id            => l_adr_accounting_coa_id
88798   , p_adr_code                     => 'IRV'
88799   , p_adr_type_code                => 'S'
88800   , p_component_type               => l_component_type
88801   , p_component_code               => l_component_code
88802   , p_component_type_code          => l_component_type_code
88803   , p_component_appl_id            => l_component_appl_id
88804   , p_amb_context_code             => l_amb_context_code
88805   , p_side                         => 'NA'
88806   );
88807 
88808 
88809    --
88810    --
88811    END IF;
88812 
88813        --
88814        -- Update the line information that should be overwritten
88815        --
88816        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
88817                                          p_header_num   => 1);
88818        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
88819 
88820        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
88821 
88822        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
88823           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
88824        END IF;
88825 
88826       --
88827       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
88828       --
88829       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
88830           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
88831       ELSE
88832           ---------------------------------------------------------------------------------------------------
88833           -- 4262811a Switch Sign
88834           ---------------------------------------------------------------------------------------------------
88835           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
88836           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88837                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88838           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88839                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88840           -- 5132302
88841           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
88842                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88843 
88844       END IF;
88845 
88846       -- 4955764
88847       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88848       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
88849 
88850 
88851       XLA_AE_LINES_PKG.ValidateCurrentLine;
88852       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88853 
88854       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88855                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
88856                ,p_balance_type_code => l_balance_type_code);
88857 
88858    END IF;
88859 
88860    -----------------------------------------------------------------------------------------
88861    -- 4262811 Multiperiod Accounting
88862    -----------------------------------------------------------------------------------------
88863      -- No MPA option is assigned.
88864 
88865 
88866 END IF;
88867 END IF;
88868 --
88869 
88870 --
88871 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88872    trace
88873       (p_msg      => 'END of AcctLineType_192'
88874       ,p_level    => C_LEVEL_PROCEDURE
88875       ,p_module   => l_log_module);
88876 END IF;
88877 --
88878 EXCEPTION
88879   WHEN xla_exceptions_pkg.application_exception THEN
88880       RAISE;
88881   WHEN OTHERS THEN
88885 --
88882        xla_exceptions_pkg.raise_message
88883            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_192');
88884 END AcctLineType_192;
88886 
88887 ---------------------------------------
88888 --
88889 -- PRIVATE FUNCTION
88890 --         AcctLineType_193
88891 --
88892 ---------------------------------------
88893 PROCEDURE AcctLineType_193 (
88894   p_application_id        IN NUMBER
88895  ,p_event_id              IN NUMBER
88896  ,p_calculate_acctd_flag  IN VARCHAR2
88897  ,p_calculate_g_l_flag    IN VARCHAR2
88898  ,p_actual_flag           IN OUT VARCHAR2
88899  ,p_balance_type_code     OUT VARCHAR2
88900  ,p_gain_or_loss_ref      OUT VARCHAR2
88901  
88902 --Transaction Account
88903  , p_source_1            IN NUMBER
88904 --Journal Line Type
88905  , p_source_2            IN VARCHAR2
88906 --Entered Amount
88907  , p_source_3            IN NUMBER
88908 --First Distribution Identifier
88909  , p_source_5            IN NUMBER
88910 --Distribution Type
88911  , p_source_6            IN VARCHAR2
88912 --Currency Code
88913  , p_source_7            IN VARCHAR2
88914 --Currency Conversion Date
88915  , p_source_8            IN DATE
88916 --Currency Conversion Rate
88917  , p_source_9            IN NUMBER
88918 --Currency Conversion Type
88919  , p_source_10            IN VARCHAR2
88920 --Accounted Amount
88921  , p_source_11            IN NUMBER
88922 )
88923 IS
88924 
88925 l_component_type              VARCHAR2(80);
88926 l_component_code              VARCHAR2(30);
88927 l_component_type_code         VARCHAR2(1);
88928 l_component_appl_id           INTEGER;
88929 l_amb_context_code            VARCHAR2(30);
88930 l_entity_code                 VARCHAR2(30);
88931 l_event_class_code            VARCHAR2(30);
88932 l_ae_header_id                NUMBER;
88933 l_event_type_code             VARCHAR2(30);
88934 l_line_definition_code        VARCHAR2(30);
88935 l_line_definition_owner_code  VARCHAR2(1);
88936 --
88937 -- adr variables
88938 l_segment                     VARCHAR2(30);
88939 l_ccid                        NUMBER;
88940 l_adr_transaction_coa_id      NUMBER;
88941 l_adr_accounting_coa_id       NUMBER;
88942 l_adr_flexfield_segment_code  VARCHAR2(30);
88943 l_adr_flex_value_set_id       NUMBER;
88944 l_adr_value_type_code         VARCHAR2(30);
88945 l_adr_value_combination_id    NUMBER;
88946 l_adr_value_segment_code      VARCHAR2(30);
88947 
88948 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
88949 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
88950 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
88951 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
88952 
88953 -- 4262811 Variables ------------------------------------------------------------------------------------------
88954 l_entered_amt_idx             NUMBER;
88955 l_accted_amt_idx              NUMBER;
88956 l_acc_rev_flag                VARCHAR2(1);
88957 l_accrual_line_num            NUMBER;
88958 l_tmp_amt                     NUMBER;
88959 l_acc_rev_natural_side_code   VARCHAR2(1);
88960 
88961 l_num_entries                 NUMBER;
88962 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
88963 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
88964 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
88965 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
88966 l_recog_line_1                NUMBER;
88967 l_recog_line_2                NUMBER;
88968 
88969 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
88970 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
88971 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
88972 
88973 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
88974 
88975 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
88976 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
88977 
88978 ---------------------------------------------------------------------------------------------------------------
88979 
88980 
88981 --
88982 -- bulk performance
88983 --
88984 l_balance_type_code           VARCHAR2(1);
88985 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
88986 l_log_module                  VARCHAR2(240);
88987 
88988 --
88989 -- Upgrade strategy
88990 --
88991 l_actual_upg_option           VARCHAR2(1);
88992 l_enc_upg_option           VARCHAR2(1);
88993 
88994 --
88995 BEGIN
88996 --
88997 IF g_log_enabled THEN
88998       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_193';
88999 END IF;
89000 --
89001 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89002 
89003       trace
89004          (p_msg      => 'BEGIN of AcctLineType_193'
89005          ,p_level    => C_LEVEL_PROCEDURE
89006          ,p_module   => l_log_module);
89007 
89008 END IF;
89009 --
89010 l_component_type             := 'AMB_JLT';
89011 l_component_code             := 'IRV';
89012 l_component_type_code        := 'S';
89013 l_component_appl_id          :=  555;
89014 l_amb_context_code           := 'DEFAULT';
89015 l_entity_code                := 'REVALUATION';
89016 l_event_class_code           := 'COSTREVAL';
89017 l_event_type_code            := 'COSTREVAL';
89018 l_line_definition_owner_code := 'S';
89019 l_line_definition_code       := 'COSTREVAL';
89023 l_ccid                        := NULL;
89020 --
89021 l_balance_type_code          := 'A';
89022 l_segment                     := NULL;
89024 l_adr_transaction_coa_id      := NULL;
89025 l_adr_accounting_coa_id       := NULL;
89026 l_adr_flexfield_segment_code  := NULL;
89027 l_adr_flex_value_set_id       := NULL;
89028 l_adr_value_type_code         := NULL;
89029 l_adr_value_combination_id    := NULL;
89030 l_adr_value_segment_code      := NULL;
89031 
89032 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
89033 l_bflow_class_code           := '';    -- 4219869 Business Flow
89034 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
89035 l_budgetary_control_flag     := 'N';
89036 
89037 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
89038 l_bflow_applied_to_amt       := NULL; -- 5132302
89039 l_entered_amt_idx            := NULL;          -- 4262811
89040 l_accted_amt_idx             := NULL;          -- 4262811
89041 l_acc_rev_flag               := NULL;          -- 4262811
89042 l_accrual_line_num           := NULL;          -- 4262811
89043 l_tmp_amt                    := NULL;          -- 4262811
89044 --
89045  
89046 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
89047     l_balance_type_code <> 'B' THEN
89048 IF NVL(p_source_2,'
89049 ') =  'IRV'
89050  THEN 
89051 
89052    --
89053    XLA_AE_LINES_PKG.SetNewLine;
89054 
89055    p_balance_type_code          := l_balance_type_code;
89056    -- set the flag so later we will know whether the gain loss line needs to be created
89057    
89058    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
89059      p_actual_flag :='A';
89060    END IF;
89061 
89062    --
89063    -- bulk performance
89064    --
89065    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
89066                                       p_header_num   => 0); -- 4262811
89067    --
89068    -- set accounting line options
89069    --
89070    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
89071            p_natural_side_code          => 'D'
89072          , p_gain_or_loss_flag          => 'N'
89073          , p_gl_transfer_mode_code      => 'D'
89074          , p_acct_entry_type_code       => 'A'
89075          , p_switch_side_flag           => 'Y'
89076          , p_merge_duplicate_code       => 'W'
89077          );
89078    --
89079    l_acc_rev_natural_side_code := 'C';  -- 4262811
89080    -- 
89081    --
89082    -- set accounting line type info
89083    --
89084    xla_ae_lines_pkg.SetAcctLineType
89085       (p_component_type             => l_component_type
89086       ,p_event_type_code            => l_event_type_code
89087       ,p_line_definition_owner_code => l_line_definition_owner_code
89088       ,p_line_definition_code       => l_line_definition_code
89089       ,p_accounting_line_code       => l_component_code
89090       ,p_accounting_line_type_code  => l_component_type_code
89091       ,p_accounting_line_appl_id    => l_component_appl_id
89092       ,p_amb_context_code           => l_amb_context_code
89093       ,p_entity_code                => l_entity_code
89094       ,p_event_class_code           => l_event_class_code);
89095    --
89096    -- set accounting class
89097    --
89098    xla_ae_lines_pkg.SetAcctClass(
89099            p_accounting_class_code  => 'IRV'
89100          , p_ae_header_id           => l_ae_header_id
89101          );
89102 
89103    --
89104    -- set rounding class
89105    --
89106    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
89107                       'IRV';
89108 
89109    --
89110    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
89111    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
89112    --
89113    -- bulk performance
89114    --
89115    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
89116 
89117    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
89118       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
89119 
89120    -- 4955764
89121    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89122       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
89123 
89124    -- 4458381 Public Sector Enh
89125    
89126    --
89127    -- set accounting attributes for the line type
89128    --
89129    l_entered_amt_idx := 3;
89130    l_accted_amt_idx  := 8;
89131    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
89132    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
89133    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
89134    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
89135    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
89136    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
89137    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
89138    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
89139    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
89140    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
89141    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
89142    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
89146    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
89143    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
89144    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
89145    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
89147    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
89148 
89149    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
89150    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
89151 
89152    ---------------------------------------------------------------------------------------------------------------
89153    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
89154    ---------------------------------------------------------------------------------------------------------------
89155    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
89156 
89157    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89158    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89159 
89160    IF xla_accounting_cache_pkg.GetValueChar
89161          (p_source_code         => 'LEDGER_CATEGORY_CODE'
89162          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
89163    AND l_bflow_method_code = 'PRIOR_ENTRY'
89164 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
89165    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
89166          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
89167        )
89168    THEN
89169          xla_ae_lines_pkg.BflowUpgEntry
89170            (p_business_method_code    => l_bflow_method_code
89171            ,p_business_class_code     => l_bflow_class_code
89172            ,p_balance_type            => l_balance_type_code);
89173    ELSE
89174       NULL;
89175 -- No business flow processing for business flow method of NONE.
89176    END IF;
89177 
89178    --
89179    -- call analytical criteria
89180    --
89181    
89182    --
89183    -- call description
89184    --
89185    -- No description or it is inherited.
89186    --
89187    -- call ADRs
89188    -- Bug 4922099
89189    --
89190    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89191         (NVL(l_actual_upg_option, 'N') = 'O') OR
89192         (NVL(l_enc_upg_option, 'N') = 'O')
89193       )
89194    THEN
89195    NULL;
89196    --
89197    --
89198    
89199   l_ccid := AcctDerRule_24(
89200            p_application_id           => p_application_id
89201          , p_ae_header_id             => l_ae_header_id 
89202 , p_source_1 => p_source_1
89203 , p_source_2 => p_source_2
89204          , x_transaction_coa_id       => l_adr_transaction_coa_id
89205          , x_accounting_coa_id        => l_adr_accounting_coa_id
89206          , x_value_type_code          => l_adr_value_type_code
89207          , p_side                     => 'NA'
89208    );
89209 
89210    xla_ae_lines_pkg.set_ccid(
89211     p_code_combination_id          => l_ccid
89212   , p_value_type_code              => l_adr_value_type_code
89213   , p_transaction_coa_id           => l_adr_transaction_coa_id
89214   , p_accounting_coa_id            => l_adr_accounting_coa_id
89215   , p_adr_code                     => 'IRV'
89216   , p_adr_type_code                => 'S'
89217   , p_component_type               => l_component_type
89218   , p_component_code               => l_component_code
89219   , p_component_type_code          => l_component_type_code
89220   , p_component_appl_id            => l_component_appl_id
89221   , p_amb_context_code             => l_amb_context_code
89222   , p_side                         => 'NA'
89223   );
89224 
89225 
89226    --
89227    --
89228    END IF;
89229    --
89230    -- Bug 4922099
89231    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
89232           (NVL(l_enc_upg_option, 'N') = 'O')
89233         ) AND
89234         (l_bflow_method_code = 'PRIOR_ENTRY')
89235       )
89236    THEN
89237       IF
89238       --
89239       1 = 2
89240       --
89241       THEN
89242       xla_accounting_err_pkg.build_message
89243                                     (p_appli_s_name            => 'XLA'
89244                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89245                                     ,p_token_1                 => 'LINE_NUMBER'
89246                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
89247                                     ,p_token_2                 => 'LINE_TYPE_NAME'
89248                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
89249                                                                              l_component_type
89250                                                                             ,l_component_code
89251                                                                             ,l_component_type_code
89252                                                                             ,l_component_appl_id
89253                                                                             ,l_amb_context_code
89254                                                                             ,l_entity_code
89255                                                                             ,l_event_class_code
89259                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
89256                                                                            )
89257                                     ,p_token_3                 => 'OWNER'
89258                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
89260                                                                           ,p_lookup_code    => l_component_type_code
89261                                                                          )
89262                                     ,p_token_4                 => 'PRODUCT_NAME'
89263                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
89264                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
89265                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
89266                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
89267                                     ,p_ae_header_id            =>  NULL
89268                                        );
89269 
89270         IF (C_LEVEL_ERROR>= g_log_level) THEN
89271                  trace
89272                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89273                       ,p_level    => C_LEVEL_ERROR
89274                       ,p_module   => l_log_module);
89275         END IF;
89276       END IF;
89277    END IF;
89278    --
89279    --
89280    ------------------------------------------------------------------------------------------------
89281    -- 4219869 Business Flow
89282    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
89283    -- Prior Entry.  Currently, the following code is always generated.
89284    ------------------------------------------------------------------------------------------------
89285    XLA_AE_LINES_PKG.ValidateCurrentLine;
89286 
89287    ------------------------------------------------------------------------------------
89288    -- 4219869 Business Flow
89289    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
89290    ------------------------------------------------------------------------------------
89291    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89292 
89293    ----------------------------------------------------------------------------------
89294    -- 4219869 Business Flow
89295    -- Update journal entry status -- Need to generate this within IF <condition>
89296    ----------------------------------------------------------------------------------
89297    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89298          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
89299          ,p_balance_type_code => l_balance_type_code
89300          );
89301 
89302    -------------------------------------------------------------------------------------------
89303    -- 4262811 - Generate the Accrual Reversal lines
89304    -------------------------------------------------------------------------------------------
89305    BEGIN
89306       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
89307                               (g_array_event(p_event_id).array_value_num('header_index'));
89308       IF l_acc_rev_flag IS NULL THEN
89309          l_acc_rev_flag := 'N';
89310       END IF;
89311    EXCEPTION
89312       WHEN OTHERS THEN
89313          l_acc_rev_flag := 'N';
89314    END;
89315    --
89316    IF (l_acc_rev_flag = 'Y') THEN
89317 
89318        -- 4645092  ------------------------------------------------------------------------------
89319        -- To allow MPA report to determine if it should generate report process
89320        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
89321        ------------------------------------------------------------------------------------------
89322 
89323        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
89324        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
89325    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
89326    -- call ADRs
89327    -- Bug 4922099
89328    --
89329    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89330         (NVL(l_actual_upg_option, 'N') = 'O') OR
89331         (NVL(l_enc_upg_option, 'N') = 'O')
89332       )
89333    THEN
89334    NULL;
89335    --
89336    --
89337    
89338   l_ccid := AcctDerRule_24(
89339            p_application_id           => p_application_id
89340          , p_ae_header_id             => l_ae_header_id 
89341 , p_source_1 => p_source_1
89342 , p_source_2 => p_source_2
89343          , x_transaction_coa_id       => l_adr_transaction_coa_id
89344          , x_accounting_coa_id        => l_adr_accounting_coa_id
89345          , x_value_type_code          => l_adr_value_type_code
89346          , p_side                     => 'NA'
89347    );
89348 
89349    xla_ae_lines_pkg.set_ccid(
89350     p_code_combination_id          => l_ccid
89351   , p_value_type_code              => l_adr_value_type_code
89352   , p_transaction_coa_id           => l_adr_transaction_coa_id
89353   , p_accounting_coa_id            => l_adr_accounting_coa_id
89354   , p_adr_code                     => 'IRV'
89355   , p_adr_type_code                => 'S'
89356   , p_component_type               => l_component_type
89357   , p_component_code               => l_component_code
89361   , p_side                         => 'NA'
89358   , p_component_type_code          => l_component_type_code
89359   , p_component_appl_id            => l_component_appl_id
89360   , p_amb_context_code             => l_amb_context_code
89362   );
89363 
89364 
89365    --
89366    --
89367    END IF;
89368 
89369        --
89370        -- Update the line information that should be overwritten
89371        --
89372        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
89373                                          p_header_num   => 1);
89374        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
89375 
89376        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
89377 
89378        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
89379           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
89380        END IF;
89381 
89382       --
89383       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
89384       --
89385       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
89386           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
89387       ELSE
89388           ---------------------------------------------------------------------------------------------------
89389           -- 4262811a Switch Sign
89390           ---------------------------------------------------------------------------------------------------
89391           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
89392           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89393                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89394           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89395                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89396           -- 5132302
89397           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
89398                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89399 
89400       END IF;
89401 
89402       -- 4955764
89403       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89404       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
89405 
89406 
89407       XLA_AE_LINES_PKG.ValidateCurrentLine;
89408       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89409 
89410       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89411                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
89412                ,p_balance_type_code => l_balance_type_code);
89413 
89414    END IF;
89415 
89416    -----------------------------------------------------------------------------------------
89417    -- 4262811 Multiperiod Accounting
89418    -----------------------------------------------------------------------------------------
89419      -- No MPA option is assigned.
89420 
89421 
89422 END IF;
89423 END IF;
89424 --
89425 
89426 --
89427 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89428    trace
89429       (p_msg      => 'END of AcctLineType_193'
89430       ,p_level    => C_LEVEL_PROCEDURE
89431       ,p_module   => l_log_module);
89432 END IF;
89433 --
89434 EXCEPTION
89435   WHEN xla_exceptions_pkg.application_exception THEN
89436       RAISE;
89437   WHEN OTHERS THEN
89438        xla_exceptions_pkg.raise_message
89439            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_193');
89440 END AcctLineType_193;
89441 --
89442 
89443 ---------------------------------------
89444 --
89445 -- PRIVATE FUNCTION
89446 --         AcctLineType_194
89447 --
89448 ---------------------------------------
89449 PROCEDURE AcctLineType_194 (
89450   p_application_id        IN NUMBER
89451  ,p_event_id              IN NUMBER
89452  ,p_calculate_acctd_flag  IN VARCHAR2
89453  ,p_calculate_g_l_flag    IN VARCHAR2
89454  ,p_actual_flag           IN OUT VARCHAR2
89455  ,p_balance_type_code     OUT VARCHAR2
89456  ,p_gain_or_loss_ref      OUT VARCHAR2
89457  
89458 --Transaction Account
89459  , p_source_1            IN NUMBER
89460 --Journal Line Type
89461  , p_source_2            IN VARCHAR2
89462 --Entered Amount
89463  , p_source_3            IN NUMBER
89464 --First Distribution Identifier
89465  , p_source_5            IN NUMBER
89466 --Distribution Type
89467  , p_source_6            IN VARCHAR2
89468 --Currency Code
89469  , p_source_7            IN VARCHAR2
89470 --Currency Conversion Date
89471  , p_source_8            IN DATE
89472 --Currency Conversion Rate
89473  , p_source_9            IN NUMBER
89474 --Currency Conversion Type
89475  , p_source_10            IN VARCHAR2
89476 --Accounted Amount
89477  , p_source_11            IN NUMBER
89478 )
89479 IS
89480 
89481 l_component_type              VARCHAR2(80);
89482 l_component_code              VARCHAR2(30);
89483 l_component_type_code         VARCHAR2(1);
89484 l_component_appl_id           INTEGER;
89485 l_amb_context_code            VARCHAR2(30);
89489 l_event_type_code             VARCHAR2(30);
89486 l_entity_code                 VARCHAR2(30);
89487 l_event_class_code            VARCHAR2(30);
89488 l_ae_header_id                NUMBER;
89490 l_line_definition_code        VARCHAR2(30);
89491 l_line_definition_owner_code  VARCHAR2(1);
89492 --
89493 -- adr variables
89494 l_segment                     VARCHAR2(30);
89495 l_ccid                        NUMBER;
89496 l_adr_transaction_coa_id      NUMBER;
89497 l_adr_accounting_coa_id       NUMBER;
89498 l_adr_flexfield_segment_code  VARCHAR2(30);
89499 l_adr_flex_value_set_id       NUMBER;
89500 l_adr_value_type_code         VARCHAR2(30);
89501 l_adr_value_combination_id    NUMBER;
89502 l_adr_value_segment_code      VARCHAR2(30);
89503 
89504 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
89505 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
89506 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
89507 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
89508 
89509 -- 4262811 Variables ------------------------------------------------------------------------------------------
89510 l_entered_amt_idx             NUMBER;
89511 l_accted_amt_idx              NUMBER;
89512 l_acc_rev_flag                VARCHAR2(1);
89513 l_accrual_line_num            NUMBER;
89514 l_tmp_amt                     NUMBER;
89515 l_acc_rev_natural_side_code   VARCHAR2(1);
89516 
89517 l_num_entries                 NUMBER;
89518 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
89519 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
89520 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
89521 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
89522 l_recog_line_1                NUMBER;
89523 l_recog_line_2                NUMBER;
89524 
89525 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
89526 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
89527 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
89528 
89529 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
89530 
89531 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
89532 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
89533 
89534 ---------------------------------------------------------------------------------------------------------------
89535 
89536 
89537 --
89538 -- bulk performance
89539 --
89540 l_balance_type_code           VARCHAR2(1);
89541 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
89542 l_log_module                  VARCHAR2(240);
89543 
89544 --
89545 -- Upgrade strategy
89546 --
89547 l_actual_upg_option           VARCHAR2(1);
89548 l_enc_upg_option           VARCHAR2(1);
89549 
89550 --
89551 BEGIN
89552 --
89553 IF g_log_enabled THEN
89554       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_194';
89555 END IF;
89556 --
89557 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89558 
89559       trace
89560          (p_msg      => 'BEGIN of AcctLineType_194'
89561          ,p_level    => C_LEVEL_PROCEDURE
89562          ,p_module   => l_log_module);
89563 
89564 END IF;
89565 --
89566 l_component_type             := 'AMB_JLT';
89567 l_component_code             := 'ISP';
89568 l_component_type_code        := 'S';
89569 l_component_appl_id          :=  555;
89570 l_amb_context_code           := 'DEFAULT';
89571 l_entity_code                := 'PURCHASING';
89572 l_event_class_code           := 'RECEIVE';
89573 l_event_type_code            := 'ADJUST_DELIVER';
89574 l_line_definition_owner_code := 'S';
89575 l_line_definition_code       := 'ADJUST_DELIVER';
89576 --
89577 l_balance_type_code          := 'A';
89578 l_segment                     := NULL;
89579 l_ccid                        := NULL;
89580 l_adr_transaction_coa_id      := NULL;
89581 l_adr_accounting_coa_id       := NULL;
89582 l_adr_flexfield_segment_code  := NULL;
89583 l_adr_flex_value_set_id       := NULL;
89584 l_adr_value_type_code         := NULL;
89585 l_adr_value_combination_id    := NULL;
89586 l_adr_value_segment_code      := NULL;
89587 
89588 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
89589 l_bflow_class_code           := '';    -- 4219869 Business Flow
89590 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
89591 l_budgetary_control_flag     := 'N';
89592 
89593 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
89594 l_bflow_applied_to_amt       := NULL; -- 5132302
89595 l_entered_amt_idx            := NULL;          -- 4262811
89596 l_accted_amt_idx             := NULL;          -- 4262811
89597 l_acc_rev_flag               := NULL;          -- 4262811
89598 l_accrual_line_num           := NULL;          -- 4262811
89599 l_tmp_amt                    := NULL;          -- 4262811
89600 --
89601  
89602 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
89603     l_balance_type_code <> 'B' THEN
89604 IF NVL(p_source_2,'
89605 ') =  'ISP'
89606  THEN 
89607 
89608    --
89609    XLA_AE_LINES_PKG.SetNewLine;
89610 
89611    p_balance_type_code          := l_balance_type_code;
89612    -- set the flag so later we will know whether the gain loss line needs to be created
89613    
89617 
89614    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
89615      p_actual_flag :='A';
89616    END IF;
89618    --
89619    -- bulk performance
89620    --
89621    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
89622                                       p_header_num   => 0); -- 4262811
89623    --
89624    -- set accounting line options
89625    --
89626    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
89627            p_natural_side_code          => 'D'
89628          , p_gain_or_loss_flag          => 'N'
89629          , p_gl_transfer_mode_code      => 'D'
89630          , p_acct_entry_type_code       => 'A'
89631          , p_switch_side_flag           => 'Y'
89632          , p_merge_duplicate_code       => 'W'
89633          );
89634    --
89635    l_acc_rev_natural_side_code := 'C';  -- 4262811
89636    -- 
89637    --
89638    -- set accounting line type info
89639    --
89640    xla_ae_lines_pkg.SetAcctLineType
89641       (p_component_type             => l_component_type
89642       ,p_event_type_code            => l_event_type_code
89643       ,p_line_definition_owner_code => l_line_definition_owner_code
89644       ,p_line_definition_code       => l_line_definition_code
89645       ,p_accounting_line_code       => l_component_code
89646       ,p_accounting_line_type_code  => l_component_type_code
89647       ,p_accounting_line_appl_id    => l_component_appl_id
89648       ,p_amb_context_code           => l_amb_context_code
89649       ,p_entity_code                => l_entity_code
89650       ,p_event_class_code           => l_event_class_code);
89651    --
89652    -- set accounting class
89653    --
89654    xla_ae_lines_pkg.SetAcctClass(
89655            p_accounting_class_code  => 'RECEIVING_INSPECTION'
89656          , p_ae_header_id           => l_ae_header_id
89657          );
89658 
89659    --
89660    -- set rounding class
89661    --
89662    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
89663                       'RECEIVING_INSPECTION';
89664 
89665    --
89666    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
89667    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
89668    --
89669    -- bulk performance
89670    --
89671    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
89672 
89673    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
89674       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
89675 
89676    -- 4955764
89677    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89678       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
89679 
89680    -- 4458381 Public Sector Enh
89681    
89682    --
89683    -- set accounting attributes for the line type
89684    --
89685    l_entered_amt_idx := 3;
89686    l_accted_amt_idx  := 8;
89687    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
89688    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
89689    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
89690    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
89691    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
89692    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
89693    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
89694    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
89695    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
89696    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
89697    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
89698    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
89699    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
89700    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
89701    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
89702    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
89703    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
89704 
89705    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
89706    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
89707 
89708    ---------------------------------------------------------------------------------------------------------------
89709    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
89710    ---------------------------------------------------------------------------------------------------------------
89711    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
89712 
89713    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89714    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89715 
89716    IF xla_accounting_cache_pkg.GetValueChar
89717          (p_source_code         => 'LEDGER_CATEGORY_CODE'
89718          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
89719    AND l_bflow_method_code = 'PRIOR_ENTRY'
89720 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
89721    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
89722          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
89723        )
89724    THEN
89728            ,p_balance_type            => l_balance_type_code);
89725          xla_ae_lines_pkg.BflowUpgEntry
89726            (p_business_method_code    => l_bflow_method_code
89727            ,p_business_class_code     => l_bflow_class_code
89729    ELSE
89730       NULL;
89731 -- No business flow processing for business flow method of NONE.
89732    END IF;
89733 
89734    --
89735    -- call analytical criteria
89736    --
89737    
89738    --
89739    -- call description
89740    --
89741    -- No description or it is inherited.
89742    --
89743    -- call ADRs
89744    -- Bug 4922099
89745    --
89746    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89747         (NVL(l_actual_upg_option, 'N') = 'O') OR
89748         (NVL(l_enc_upg_option, 'N') = 'O')
89749       )
89750    THEN
89751    NULL;
89752    --
89753    --
89754    
89755   l_ccid := AcctDerRule_25(
89756            p_application_id           => p_application_id
89757          , p_ae_header_id             => l_ae_header_id 
89758 , p_source_1 => p_source_1
89759 , p_source_2 => p_source_2
89760          , x_transaction_coa_id       => l_adr_transaction_coa_id
89761          , x_accounting_coa_id        => l_adr_accounting_coa_id
89762          , x_value_type_code          => l_adr_value_type_code
89763          , p_side                     => 'NA'
89764    );
89765 
89766    xla_ae_lines_pkg.set_ccid(
89767     p_code_combination_id          => l_ccid
89768   , p_value_type_code              => l_adr_value_type_code
89769   , p_transaction_coa_id           => l_adr_transaction_coa_id
89770   , p_accounting_coa_id            => l_adr_accounting_coa_id
89771   , p_adr_code                     => 'ISP'
89772   , p_adr_type_code                => 'S'
89773   , p_component_type               => l_component_type
89774   , p_component_code               => l_component_code
89775   , p_component_type_code          => l_component_type_code
89776   , p_component_appl_id            => l_component_appl_id
89777   , p_amb_context_code             => l_amb_context_code
89778   , p_side                         => 'NA'
89779   );
89780 
89781 
89782    --
89783    --
89784    END IF;
89785    --
89786    -- Bug 4922099
89787    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
89788           (NVL(l_enc_upg_option, 'N') = 'O')
89789         ) AND
89790         (l_bflow_method_code = 'PRIOR_ENTRY')
89791       )
89792    THEN
89793       IF
89794       --
89795       1 = 2
89796       --
89797       THEN
89798       xla_accounting_err_pkg.build_message
89799                                     (p_appli_s_name            => 'XLA'
89800                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89801                                     ,p_token_1                 => 'LINE_NUMBER'
89802                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
89803                                     ,p_token_2                 => 'LINE_TYPE_NAME'
89804                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
89805                                                                              l_component_type
89806                                                                             ,l_component_code
89807                                                                             ,l_component_type_code
89808                                                                             ,l_component_appl_id
89809                                                                             ,l_amb_context_code
89810                                                                             ,l_entity_code
89811                                                                             ,l_event_class_code
89812                                                                            )
89813                                     ,p_token_3                 => 'OWNER'
89814                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
89815                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
89816                                                                           ,p_lookup_code    => l_component_type_code
89817                                                                          )
89818                                     ,p_token_4                 => 'PRODUCT_NAME'
89819                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
89820                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
89821                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
89822                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
89823                                     ,p_ae_header_id            =>  NULL
89824                                        );
89825 
89826         IF (C_LEVEL_ERROR>= g_log_level) THEN
89827                  trace
89828                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89829                       ,p_level    => C_LEVEL_ERROR
89830                       ,p_module   => l_log_module);
89831         END IF;
89832       END IF;
89833    END IF;
89834    --
89835    --
89836    ------------------------------------------------------------------------------------------------
89837    -- 4219869 Business Flow
89841    XLA_AE_LINES_PKG.ValidateCurrentLine;
89838    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
89839    -- Prior Entry.  Currently, the following code is always generated.
89840    ------------------------------------------------------------------------------------------------
89842 
89843    ------------------------------------------------------------------------------------
89844    -- 4219869 Business Flow
89845    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
89846    ------------------------------------------------------------------------------------
89847    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89848 
89849    ----------------------------------------------------------------------------------
89850    -- 4219869 Business Flow
89851    -- Update journal entry status -- Need to generate this within IF <condition>
89852    ----------------------------------------------------------------------------------
89853    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89854          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
89855          ,p_balance_type_code => l_balance_type_code
89856          );
89857 
89858    -------------------------------------------------------------------------------------------
89859    -- 4262811 - Generate the Accrual Reversal lines
89860    -------------------------------------------------------------------------------------------
89861    BEGIN
89862       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
89863                               (g_array_event(p_event_id).array_value_num('header_index'));
89864       IF l_acc_rev_flag IS NULL THEN
89865          l_acc_rev_flag := 'N';
89866       END IF;
89867    EXCEPTION
89868       WHEN OTHERS THEN
89869          l_acc_rev_flag := 'N';
89870    END;
89871    --
89872    IF (l_acc_rev_flag = 'Y') THEN
89873 
89874        -- 4645092  ------------------------------------------------------------------------------
89875        -- To allow MPA report to determine if it should generate report process
89876        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
89877        ------------------------------------------------------------------------------------------
89878 
89879        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
89880        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
89881    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
89882    -- call ADRs
89883    -- Bug 4922099
89884    --
89885    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89886         (NVL(l_actual_upg_option, 'N') = 'O') OR
89887         (NVL(l_enc_upg_option, 'N') = 'O')
89888       )
89889    THEN
89890    NULL;
89891    --
89892    --
89893    
89894   l_ccid := AcctDerRule_25(
89895            p_application_id           => p_application_id
89896          , p_ae_header_id             => l_ae_header_id 
89897 , p_source_1 => p_source_1
89898 , p_source_2 => p_source_2
89899          , x_transaction_coa_id       => l_adr_transaction_coa_id
89900          , x_accounting_coa_id        => l_adr_accounting_coa_id
89901          , x_value_type_code          => l_adr_value_type_code
89902          , p_side                     => 'NA'
89903    );
89904 
89905    xla_ae_lines_pkg.set_ccid(
89906     p_code_combination_id          => l_ccid
89907   , p_value_type_code              => l_adr_value_type_code
89908   , p_transaction_coa_id           => l_adr_transaction_coa_id
89909   , p_accounting_coa_id            => l_adr_accounting_coa_id
89910   , p_adr_code                     => 'ISP'
89911   , p_adr_type_code                => 'S'
89912   , p_component_type               => l_component_type
89913   , p_component_code               => l_component_code
89914   , p_component_type_code          => l_component_type_code
89915   , p_component_appl_id            => l_component_appl_id
89916   , p_amb_context_code             => l_amb_context_code
89917   , p_side                         => 'NA'
89918   );
89919 
89920 
89921    --
89922    --
89923    END IF;
89924 
89925        --
89926        -- Update the line information that should be overwritten
89927        --
89928        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
89929                                          p_header_num   => 1);
89930        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
89931 
89932        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
89933 
89934        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
89935           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
89936        END IF;
89937 
89938       --
89939       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
89940       --
89941       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
89942           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
89943       ELSE
89944           ---------------------------------------------------------------------------------------------------
89945           -- 4262811a Switch Sign
89946           ---------------------------------------------------------------------------------------------------
89950           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89947           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
89948           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89949                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89951                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89952           -- 5132302
89953           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
89954                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89955 
89956       END IF;
89957 
89958       -- 4955764
89959       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89960       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
89961 
89962 
89963       XLA_AE_LINES_PKG.ValidateCurrentLine;
89964       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89965 
89966       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89967                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
89968                ,p_balance_type_code => l_balance_type_code);
89969 
89970    END IF;
89971 
89972    -----------------------------------------------------------------------------------------
89973    -- 4262811 Multiperiod Accounting
89974    -----------------------------------------------------------------------------------------
89975      -- No MPA option is assigned.
89976 
89977 
89978 END IF;
89979 END IF;
89980 --
89981 
89982 --
89983 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89984    trace
89985       (p_msg      => 'END of AcctLineType_194'
89986       ,p_level    => C_LEVEL_PROCEDURE
89987       ,p_module   => l_log_module);
89988 END IF;
89989 --
89990 EXCEPTION
89991   WHEN xla_exceptions_pkg.application_exception THEN
89992       RAISE;
89993   WHEN OTHERS THEN
89994        xla_exceptions_pkg.raise_message
89995            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_194');
89996 END AcctLineType_194;
89997 --
89998 
89999 ---------------------------------------
90000 --
90001 -- PRIVATE FUNCTION
90002 --         AcctLineType_195
90003 --
90004 ---------------------------------------
90005 PROCEDURE AcctLineType_195 (
90006   p_application_id        IN NUMBER
90007  ,p_event_id              IN NUMBER
90008  ,p_calculate_acctd_flag  IN VARCHAR2
90009  ,p_calculate_g_l_flag    IN VARCHAR2
90010  ,p_actual_flag           IN OUT VARCHAR2
90011  ,p_balance_type_code     OUT VARCHAR2
90012  ,p_gain_or_loss_ref      OUT VARCHAR2
90013  
90014 --Transaction Account
90015  , p_source_1            IN NUMBER
90016 --Journal Line Type
90017  , p_source_2            IN VARCHAR2
90018 --Entered Amount
90019  , p_source_3            IN NUMBER
90020 --First Distribution Identifier
90021  , p_source_5            IN NUMBER
90022 --Distribution Type
90023  , p_source_6            IN VARCHAR2
90024 --Currency Code
90025  , p_source_7            IN VARCHAR2
90026 --Currency Conversion Date
90027  , p_source_8            IN DATE
90028 --Currency Conversion Rate
90029  , p_source_9            IN NUMBER
90030 --Currency Conversion Type
90031  , p_source_10            IN VARCHAR2
90032 --Accounted Amount
90033  , p_source_11            IN NUMBER
90034 )
90035 IS
90036 
90037 l_component_type              VARCHAR2(80);
90038 l_component_code              VARCHAR2(30);
90039 l_component_type_code         VARCHAR2(1);
90040 l_component_appl_id           INTEGER;
90041 l_amb_context_code            VARCHAR2(30);
90042 l_entity_code                 VARCHAR2(30);
90043 l_event_class_code            VARCHAR2(30);
90044 l_ae_header_id                NUMBER;
90045 l_event_type_code             VARCHAR2(30);
90046 l_line_definition_code        VARCHAR2(30);
90047 l_line_definition_owner_code  VARCHAR2(1);
90048 --
90049 -- adr variables
90050 l_segment                     VARCHAR2(30);
90051 l_ccid                        NUMBER;
90052 l_adr_transaction_coa_id      NUMBER;
90053 l_adr_accounting_coa_id       NUMBER;
90054 l_adr_flexfield_segment_code  VARCHAR2(30);
90055 l_adr_flex_value_set_id       NUMBER;
90056 l_adr_value_type_code         VARCHAR2(30);
90057 l_adr_value_combination_id    NUMBER;
90058 l_adr_value_segment_code      VARCHAR2(30);
90059 
90060 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
90061 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
90062 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
90063 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
90064 
90065 -- 4262811 Variables ------------------------------------------------------------------------------------------
90066 l_entered_amt_idx             NUMBER;
90067 l_accted_amt_idx              NUMBER;
90068 l_acc_rev_flag                VARCHAR2(1);
90069 l_accrual_line_num            NUMBER;
90070 l_tmp_amt                     NUMBER;
90071 l_acc_rev_natural_side_code   VARCHAR2(1);
90072 
90073 l_num_entries                 NUMBER;
90074 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
90075 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
90076 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
90080 
90077 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
90078 l_recog_line_1                NUMBER;
90079 l_recog_line_2                NUMBER;
90081 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
90082 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
90083 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
90084 
90085 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
90086 
90087 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
90088 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
90089 
90090 ---------------------------------------------------------------------------------------------------------------
90091 
90092 
90093 --
90094 -- bulk performance
90095 --
90096 l_balance_type_code           VARCHAR2(1);
90097 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
90098 l_log_module                  VARCHAR2(240);
90099 
90100 --
90101 -- Upgrade strategy
90102 --
90103 l_actual_upg_option           VARCHAR2(1);
90104 l_enc_upg_option           VARCHAR2(1);
90105 
90106 --
90107 BEGIN
90108 --
90109 IF g_log_enabled THEN
90110       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_195';
90111 END IF;
90112 --
90113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90114 
90115       trace
90116          (p_msg      => 'BEGIN of AcctLineType_195'
90117          ,p_level    => C_LEVEL_PROCEDURE
90118          ,p_module   => l_log_module);
90119 
90120 END IF;
90121 --
90122 l_component_type             := 'AMB_JLT';
90123 l_component_code             := 'ISP';
90124 l_component_type_code        := 'S';
90125 l_component_appl_id          :=  555;
90126 l_amb_context_code           := 'DEFAULT';
90127 l_entity_code                := 'PURCHASING';
90128 l_event_class_code           := 'DELIVER';
90129 l_event_type_code            := 'RET_TO_RECEIVING';
90130 l_line_definition_owner_code := 'S';
90131 l_line_definition_code       := 'PO_RETURN';
90132 --
90133 l_balance_type_code          := 'A';
90134 l_segment                     := NULL;
90135 l_ccid                        := NULL;
90136 l_adr_transaction_coa_id      := NULL;
90137 l_adr_accounting_coa_id       := NULL;
90138 l_adr_flexfield_segment_code  := NULL;
90139 l_adr_flex_value_set_id       := NULL;
90140 l_adr_value_type_code         := NULL;
90141 l_adr_value_combination_id    := NULL;
90142 l_adr_value_segment_code      := NULL;
90143 
90144 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
90145 l_bflow_class_code           := '';    -- 4219869 Business Flow
90146 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
90147 l_budgetary_control_flag     := 'N';
90148 
90149 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
90150 l_bflow_applied_to_amt       := NULL; -- 5132302
90151 l_entered_amt_idx            := NULL;          -- 4262811
90152 l_accted_amt_idx             := NULL;          -- 4262811
90153 l_acc_rev_flag               := NULL;          -- 4262811
90154 l_accrual_line_num           := NULL;          -- 4262811
90155 l_tmp_amt                    := NULL;          -- 4262811
90156 --
90157  
90158 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
90159     l_balance_type_code <> 'B' THEN
90160 IF NVL(p_source_2,'
90161 ') =  'ISP'
90162  THEN 
90163 
90164    --
90165    XLA_AE_LINES_PKG.SetNewLine;
90166 
90167    p_balance_type_code          := l_balance_type_code;
90168    -- set the flag so later we will know whether the gain loss line needs to be created
90169    
90170    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
90171      p_actual_flag :='A';
90172    END IF;
90173 
90174    --
90175    -- bulk performance
90176    --
90177    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
90178                                       p_header_num   => 0); -- 4262811
90179    --
90180    -- set accounting line options
90181    --
90182    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
90183            p_natural_side_code          => 'D'
90184          , p_gain_or_loss_flag          => 'N'
90185          , p_gl_transfer_mode_code      => 'D'
90186          , p_acct_entry_type_code       => 'A'
90187          , p_switch_side_flag           => 'Y'
90188          , p_merge_duplicate_code       => 'W'
90189          );
90190    --
90191    l_acc_rev_natural_side_code := 'C';  -- 4262811
90192    -- 
90193    --
90194    -- set accounting line type info
90195    --
90196    xla_ae_lines_pkg.SetAcctLineType
90197       (p_component_type             => l_component_type
90198       ,p_event_type_code            => l_event_type_code
90199       ,p_line_definition_owner_code => l_line_definition_owner_code
90200       ,p_line_definition_code       => l_line_definition_code
90201       ,p_accounting_line_code       => l_component_code
90202       ,p_accounting_line_type_code  => l_component_type_code
90203       ,p_accounting_line_appl_id    => l_component_appl_id
90204       ,p_amb_context_code           => l_amb_context_code
90205       ,p_entity_code                => l_entity_code
90206       ,p_event_class_code           => l_event_class_code);
90207    --
90208    -- set accounting class
90209    --
90210    xla_ae_lines_pkg.SetAcctClass(
90214 
90211            p_accounting_class_code  => 'RECEIVING_INSPECTION'
90212          , p_ae_header_id           => l_ae_header_id
90213          );
90215    --
90216    -- set rounding class
90217    --
90218    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
90219                       'RECEIVING_INSPECTION';
90220 
90221    --
90222    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
90223    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
90224    --
90225    -- bulk performance
90226    --
90227    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
90228 
90229    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
90230       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
90231 
90232    -- 4955764
90233    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90234       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
90235 
90236    -- 4458381 Public Sector Enh
90237    
90238    --
90239    -- set accounting attributes for the line type
90240    --
90241    l_entered_amt_idx := 3;
90242    l_accted_amt_idx  := 8;
90243    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
90244    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
90245    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
90246    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
90247    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
90248    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
90249    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
90250    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
90251    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
90252    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
90253    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
90254    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
90255    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
90256    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
90257    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
90258    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
90259    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
90260 
90261    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
90262    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
90263 
90264    ---------------------------------------------------------------------------------------------------------------
90265    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
90266    ---------------------------------------------------------------------------------------------------------------
90267    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
90268 
90269    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90270    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90271 
90272    IF xla_accounting_cache_pkg.GetValueChar
90273          (p_source_code         => 'LEDGER_CATEGORY_CODE'
90274          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
90275    AND l_bflow_method_code = 'PRIOR_ENTRY'
90276 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
90277    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
90278          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
90279        )
90280    THEN
90281          xla_ae_lines_pkg.BflowUpgEntry
90282            (p_business_method_code    => l_bflow_method_code
90283            ,p_business_class_code     => l_bflow_class_code
90284            ,p_balance_type            => l_balance_type_code);
90285    ELSE
90286       NULL;
90287 -- No business flow processing for business flow method of NONE.
90288    END IF;
90289 
90290    --
90291    -- call analytical criteria
90292    --
90293    
90294    --
90295    -- call description
90296    --
90297    -- No description or it is inherited.
90298    --
90299    -- call ADRs
90300    -- Bug 4922099
90301    --
90302    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90303         (NVL(l_actual_upg_option, 'N') = 'O') OR
90304         (NVL(l_enc_upg_option, 'N') = 'O')
90305       )
90306    THEN
90307    NULL;
90308    --
90309    --
90310    
90311   l_ccid := AcctDerRule_25(
90312            p_application_id           => p_application_id
90313          , p_ae_header_id             => l_ae_header_id 
90314 , p_source_1 => p_source_1
90315 , p_source_2 => p_source_2
90316          , x_transaction_coa_id       => l_adr_transaction_coa_id
90317          , x_accounting_coa_id        => l_adr_accounting_coa_id
90318          , x_value_type_code          => l_adr_value_type_code
90319          , p_side                     => 'NA'
90320    );
90321 
90322    xla_ae_lines_pkg.set_ccid(
90323     p_code_combination_id          => l_ccid
90324   , p_value_type_code              => l_adr_value_type_code
90325   , p_transaction_coa_id           => l_adr_transaction_coa_id
90329   , p_component_type               => l_component_type
90326   , p_accounting_coa_id            => l_adr_accounting_coa_id
90327   , p_adr_code                     => 'ISP'
90328   , p_adr_type_code                => 'S'
90330   , p_component_code               => l_component_code
90331   , p_component_type_code          => l_component_type_code
90332   , p_component_appl_id            => l_component_appl_id
90333   , p_amb_context_code             => l_amb_context_code
90334   , p_side                         => 'NA'
90335   );
90336 
90337 
90338    --
90339    --
90340    END IF;
90341    --
90342    -- Bug 4922099
90343    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
90344           (NVL(l_enc_upg_option, 'N') = 'O')
90345         ) AND
90346         (l_bflow_method_code = 'PRIOR_ENTRY')
90347       )
90348    THEN
90349       IF
90350       --
90351       1 = 2
90352       --
90353       THEN
90354       xla_accounting_err_pkg.build_message
90355                                     (p_appli_s_name            => 'XLA'
90356                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90357                                     ,p_token_1                 => 'LINE_NUMBER'
90358                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
90359                                     ,p_token_2                 => 'LINE_TYPE_NAME'
90360                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
90361                                                                              l_component_type
90362                                                                             ,l_component_code
90363                                                                             ,l_component_type_code
90364                                                                             ,l_component_appl_id
90365                                                                             ,l_amb_context_code
90366                                                                             ,l_entity_code
90367                                                                             ,l_event_class_code
90368                                                                            )
90369                                     ,p_token_3                 => 'OWNER'
90370                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
90371                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
90372                                                                           ,p_lookup_code    => l_component_type_code
90373                                                                          )
90374                                     ,p_token_4                 => 'PRODUCT_NAME'
90375                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
90376                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
90377                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
90378                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
90379                                     ,p_ae_header_id            =>  NULL
90380                                        );
90381 
90382         IF (C_LEVEL_ERROR>= g_log_level) THEN
90383                  trace
90384                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90385                       ,p_level    => C_LEVEL_ERROR
90386                       ,p_module   => l_log_module);
90387         END IF;
90388       END IF;
90389    END IF;
90390    --
90391    --
90392    ------------------------------------------------------------------------------------------------
90393    -- 4219869 Business Flow
90394    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
90395    -- Prior Entry.  Currently, the following code is always generated.
90396    ------------------------------------------------------------------------------------------------
90397    XLA_AE_LINES_PKG.ValidateCurrentLine;
90398 
90399    ------------------------------------------------------------------------------------
90400    -- 4219869 Business Flow
90401    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
90402    ------------------------------------------------------------------------------------
90403    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90404 
90405    ----------------------------------------------------------------------------------
90406    -- 4219869 Business Flow
90407    -- Update journal entry status -- Need to generate this within IF <condition>
90408    ----------------------------------------------------------------------------------
90409    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90410          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
90411          ,p_balance_type_code => l_balance_type_code
90412          );
90413 
90414    -------------------------------------------------------------------------------------------
90415    -- 4262811 - Generate the Accrual Reversal lines
90416    -------------------------------------------------------------------------------------------
90417    BEGIN
90418       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
90422       END IF;
90419                               (g_array_event(p_event_id).array_value_num('header_index'));
90420       IF l_acc_rev_flag IS NULL THEN
90421          l_acc_rev_flag := 'N';
90423    EXCEPTION
90424       WHEN OTHERS THEN
90425          l_acc_rev_flag := 'N';
90426    END;
90427    --
90428    IF (l_acc_rev_flag = 'Y') THEN
90429 
90430        -- 4645092  ------------------------------------------------------------------------------
90431        -- To allow MPA report to determine if it should generate report process
90432        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
90433        ------------------------------------------------------------------------------------------
90434 
90435        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
90436        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
90437    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
90438    -- call ADRs
90439    -- Bug 4922099
90440    --
90441    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90442         (NVL(l_actual_upg_option, 'N') = 'O') OR
90443         (NVL(l_enc_upg_option, 'N') = 'O')
90444       )
90445    THEN
90446    NULL;
90447    --
90448    --
90449    
90450   l_ccid := AcctDerRule_25(
90451            p_application_id           => p_application_id
90452          , p_ae_header_id             => l_ae_header_id 
90453 , p_source_1 => p_source_1
90454 , p_source_2 => p_source_2
90455          , x_transaction_coa_id       => l_adr_transaction_coa_id
90456          , x_accounting_coa_id        => l_adr_accounting_coa_id
90457          , x_value_type_code          => l_adr_value_type_code
90458          , p_side                     => 'NA'
90459    );
90460 
90461    xla_ae_lines_pkg.set_ccid(
90462     p_code_combination_id          => l_ccid
90463   , p_value_type_code              => l_adr_value_type_code
90464   , p_transaction_coa_id           => l_adr_transaction_coa_id
90465   , p_accounting_coa_id            => l_adr_accounting_coa_id
90466   , p_adr_code                     => 'ISP'
90467   , p_adr_type_code                => 'S'
90468   , p_component_type               => l_component_type
90469   , p_component_code               => l_component_code
90470   , p_component_type_code          => l_component_type_code
90471   , p_component_appl_id            => l_component_appl_id
90472   , p_amb_context_code             => l_amb_context_code
90473   , p_side                         => 'NA'
90474   );
90475 
90476 
90477    --
90478    --
90479    END IF;
90480 
90481        --
90482        -- Update the line information that should be overwritten
90483        --
90484        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
90485                                          p_header_num   => 1);
90486        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
90487 
90488        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
90489 
90490        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
90491           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
90492        END IF;
90493 
90494       --
90495       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
90496       --
90497       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
90498           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
90499       ELSE
90500           ---------------------------------------------------------------------------------------------------
90501           -- 4262811a Switch Sign
90502           ---------------------------------------------------------------------------------------------------
90503           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
90504           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90505                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90506           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90507                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90508           -- 5132302
90509           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
90510                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90511 
90512       END IF;
90513 
90514       -- 4955764
90515       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90516       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
90517 
90518 
90519       XLA_AE_LINES_PKG.ValidateCurrentLine;
90520       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90521 
90522       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90523                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
90524                ,p_balance_type_code => l_balance_type_code);
90525 
90526    END IF;
90527 
90528    -----------------------------------------------------------------------------------------
90529    -- 4262811 Multiperiod Accounting
90530    -----------------------------------------------------------------------------------------
90531      -- No MPA option is assigned.
90532 
90533 
90537 
90534 END IF;
90535 END IF;
90536 --
90538 --
90539 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90540    trace
90541       (p_msg      => 'END of AcctLineType_195'
90542       ,p_level    => C_LEVEL_PROCEDURE
90543       ,p_module   => l_log_module);
90544 END IF;
90545 --
90546 EXCEPTION
90547   WHEN xla_exceptions_pkg.application_exception THEN
90548       RAISE;
90549   WHEN OTHERS THEN
90550        xla_exceptions_pkg.raise_message
90551            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_195');
90552 END AcctLineType_195;
90553 --
90554 
90555 ---------------------------------------
90556 --
90557 -- PRIVATE FUNCTION
90558 --         AcctLineType_196
90559 --
90560 ---------------------------------------
90561 PROCEDURE AcctLineType_196 (
90562   p_application_id        IN NUMBER
90563  ,p_event_id              IN NUMBER
90564  ,p_calculate_acctd_flag  IN VARCHAR2
90565  ,p_calculate_g_l_flag    IN VARCHAR2
90566  ,p_actual_flag           IN OUT VARCHAR2
90567  ,p_balance_type_code     OUT VARCHAR2
90568  ,p_gain_or_loss_ref      OUT VARCHAR2
90569  
90570 --Transaction Account
90571  , p_source_1            IN NUMBER
90572 --Journal Line Type
90573  , p_source_2            IN VARCHAR2
90574 --Entered Amount
90575  , p_source_3            IN NUMBER
90576 --First Distribution Identifier
90577  , p_source_5            IN NUMBER
90578 --Distribution Type
90579  , p_source_6            IN VARCHAR2
90580 --Currency Code
90581  , p_source_7            IN VARCHAR2
90582 --Currency Conversion Date
90583  , p_source_8            IN DATE
90584 --Currency Conversion Rate
90585  , p_source_9            IN NUMBER
90586 --Currency Conversion Type
90587  , p_source_10            IN VARCHAR2
90588 --Accounted Amount
90589  , p_source_11            IN NUMBER
90590 )
90591 IS
90592 
90593 l_component_type              VARCHAR2(80);
90594 l_component_code              VARCHAR2(30);
90595 l_component_type_code         VARCHAR2(1);
90596 l_component_appl_id           INTEGER;
90597 l_amb_context_code            VARCHAR2(30);
90598 l_entity_code                 VARCHAR2(30);
90599 l_event_class_code            VARCHAR2(30);
90600 l_ae_header_id                NUMBER;
90601 l_event_type_code             VARCHAR2(30);
90602 l_line_definition_code        VARCHAR2(30);
90603 l_line_definition_owner_code  VARCHAR2(1);
90604 --
90605 -- adr variables
90606 l_segment                     VARCHAR2(30);
90607 l_ccid                        NUMBER;
90608 l_adr_transaction_coa_id      NUMBER;
90609 l_adr_accounting_coa_id       NUMBER;
90610 l_adr_flexfield_segment_code  VARCHAR2(30);
90611 l_adr_flex_value_set_id       NUMBER;
90612 l_adr_value_type_code         VARCHAR2(30);
90613 l_adr_value_combination_id    NUMBER;
90614 l_adr_value_segment_code      VARCHAR2(30);
90615 
90616 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
90617 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
90618 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
90619 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
90620 
90621 -- 4262811 Variables ------------------------------------------------------------------------------------------
90622 l_entered_amt_idx             NUMBER;
90623 l_accted_amt_idx              NUMBER;
90624 l_acc_rev_flag                VARCHAR2(1);
90625 l_accrual_line_num            NUMBER;
90626 l_tmp_amt                     NUMBER;
90627 l_acc_rev_natural_side_code   VARCHAR2(1);
90628 
90629 l_num_entries                 NUMBER;
90630 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
90631 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
90632 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
90633 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
90634 l_recog_line_1                NUMBER;
90635 l_recog_line_2                NUMBER;
90636 
90637 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
90638 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
90639 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
90640 
90641 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
90642 
90643 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
90644 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
90645 
90646 ---------------------------------------------------------------------------------------------------------------
90647 
90648 
90649 --
90650 -- bulk performance
90651 --
90652 l_balance_type_code           VARCHAR2(1);
90653 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
90654 l_log_module                  VARCHAR2(240);
90655 
90656 --
90657 -- Upgrade strategy
90658 --
90659 l_actual_upg_option           VARCHAR2(1);
90660 l_enc_upg_option           VARCHAR2(1);
90661 
90662 --
90663 BEGIN
90664 --
90665 IF g_log_enabled THEN
90666       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_196';
90667 END IF;
90668 --
90669 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90670 
90671       trace
90672          (p_msg      => 'BEGIN of AcctLineType_196'
90673          ,p_level    => C_LEVEL_PROCEDURE
90674          ,p_module   => l_log_module);
90675 
90679 l_component_code             := 'ISP';
90676 END IF;
90677 --
90678 l_component_type             := 'AMB_JLT';
90680 l_component_type_code        := 'S';
90681 l_component_appl_id          :=  555;
90682 l_amb_context_code           := 'DEFAULT';
90683 l_entity_code                := 'PURCHASING';
90684 l_event_class_code           := 'DELIVER';
90685 l_event_type_code            := 'INT_REQ_RECEIPT_ADJ';
90686 l_line_definition_owner_code := 'S';
90687 l_line_definition_code       := 'INT_REQ_RCPT_ADJ';
90688 --
90689 l_balance_type_code          := 'A';
90690 l_segment                     := NULL;
90691 l_ccid                        := NULL;
90692 l_adr_transaction_coa_id      := NULL;
90693 l_adr_accounting_coa_id       := NULL;
90694 l_adr_flexfield_segment_code  := NULL;
90695 l_adr_flex_value_set_id       := NULL;
90696 l_adr_value_type_code         := NULL;
90697 l_adr_value_combination_id    := NULL;
90698 l_adr_value_segment_code      := NULL;
90699 
90700 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
90701 l_bflow_class_code           := '';    -- 4219869 Business Flow
90702 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
90703 l_budgetary_control_flag     := 'N';
90704 
90705 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
90706 l_bflow_applied_to_amt       := NULL; -- 5132302
90707 l_entered_amt_idx            := NULL;          -- 4262811
90708 l_accted_amt_idx             := NULL;          -- 4262811
90709 l_acc_rev_flag               := NULL;          -- 4262811
90710 l_accrual_line_num           := NULL;          -- 4262811
90711 l_tmp_amt                    := NULL;          -- 4262811
90712 --
90713  
90714 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
90715     l_balance_type_code <> 'B' THEN
90716 IF NVL(p_source_2,'
90717 ') =  'ISP'
90718  THEN 
90719 
90720    --
90721    XLA_AE_LINES_PKG.SetNewLine;
90722 
90723    p_balance_type_code          := l_balance_type_code;
90724    -- set the flag so later we will know whether the gain loss line needs to be created
90725    
90726    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
90727      p_actual_flag :='A';
90728    END IF;
90729 
90730    --
90731    -- bulk performance
90732    --
90733    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
90734                                       p_header_num   => 0); -- 4262811
90735    --
90736    -- set accounting line options
90737    --
90738    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
90739            p_natural_side_code          => 'D'
90740          , p_gain_or_loss_flag          => 'N'
90741          , p_gl_transfer_mode_code      => 'D'
90742          , p_acct_entry_type_code       => 'A'
90743          , p_switch_side_flag           => 'Y'
90744          , p_merge_duplicate_code       => 'W'
90745          );
90746    --
90747    l_acc_rev_natural_side_code := 'C';  -- 4262811
90748    -- 
90749    --
90750    -- set accounting line type info
90751    --
90752    xla_ae_lines_pkg.SetAcctLineType
90753       (p_component_type             => l_component_type
90754       ,p_event_type_code            => l_event_type_code
90755       ,p_line_definition_owner_code => l_line_definition_owner_code
90756       ,p_line_definition_code       => l_line_definition_code
90757       ,p_accounting_line_code       => l_component_code
90758       ,p_accounting_line_type_code  => l_component_type_code
90759       ,p_accounting_line_appl_id    => l_component_appl_id
90760       ,p_amb_context_code           => l_amb_context_code
90761       ,p_entity_code                => l_entity_code
90762       ,p_event_class_code           => l_event_class_code);
90763    --
90764    -- set accounting class
90765    --
90766    xla_ae_lines_pkg.SetAcctClass(
90767            p_accounting_class_code  => 'RECEIVING_INSPECTION'
90768          , p_ae_header_id           => l_ae_header_id
90769          );
90770 
90771    --
90772    -- set rounding class
90773    --
90774    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
90775                       'RECEIVING_INSPECTION';
90776 
90777    --
90778    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
90779    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
90780    --
90781    -- bulk performance
90782    --
90783    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
90784 
90785    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
90786       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
90787 
90788    -- 4955764
90789    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90790       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
90791 
90792    -- 4458381 Public Sector Enh
90793    
90794    --
90795    -- set accounting attributes for the line type
90796    --
90797    l_entered_amt_idx := 3;
90798    l_accted_amt_idx  := 8;
90799    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
90800    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
90801    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
90802    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
90806    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
90803    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
90804    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
90805    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
90807    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
90808    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
90809    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
90810    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
90811    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
90812    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
90813    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
90814    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
90815    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
90816 
90817    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
90818    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
90819 
90820    ---------------------------------------------------------------------------------------------------------------
90821    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
90822    ---------------------------------------------------------------------------------------------------------------
90823    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
90824 
90825    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90826    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90827 
90828    IF xla_accounting_cache_pkg.GetValueChar
90829          (p_source_code         => 'LEDGER_CATEGORY_CODE'
90830          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
90831    AND l_bflow_method_code = 'PRIOR_ENTRY'
90832 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
90833    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
90834          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
90835        )
90836    THEN
90837          xla_ae_lines_pkg.BflowUpgEntry
90838            (p_business_method_code    => l_bflow_method_code
90839            ,p_business_class_code     => l_bflow_class_code
90840            ,p_balance_type            => l_balance_type_code);
90841    ELSE
90842       NULL;
90843 -- No business flow processing for business flow method of NONE.
90844    END IF;
90845 
90846    --
90847    -- call analytical criteria
90848    --
90849    
90850    --
90851    -- call description
90852    --
90853    -- No description or it is inherited.
90854    --
90855    -- call ADRs
90856    -- Bug 4922099
90857    --
90858    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90859         (NVL(l_actual_upg_option, 'N') = 'O') OR
90860         (NVL(l_enc_upg_option, 'N') = 'O')
90861       )
90862    THEN
90863    NULL;
90864    --
90865    --
90866    
90867   l_ccid := AcctDerRule_25(
90868            p_application_id           => p_application_id
90869          , p_ae_header_id             => l_ae_header_id 
90870 , p_source_1 => p_source_1
90871 , p_source_2 => p_source_2
90872          , x_transaction_coa_id       => l_adr_transaction_coa_id
90873          , x_accounting_coa_id        => l_adr_accounting_coa_id
90874          , x_value_type_code          => l_adr_value_type_code
90875          , p_side                     => 'NA'
90876    );
90877 
90878    xla_ae_lines_pkg.set_ccid(
90879     p_code_combination_id          => l_ccid
90880   , p_value_type_code              => l_adr_value_type_code
90881   , p_transaction_coa_id           => l_adr_transaction_coa_id
90882   , p_accounting_coa_id            => l_adr_accounting_coa_id
90883   , p_adr_code                     => 'ISP'
90884   , p_adr_type_code                => 'S'
90885   , p_component_type               => l_component_type
90886   , p_component_code               => l_component_code
90887   , p_component_type_code          => l_component_type_code
90888   , p_component_appl_id            => l_component_appl_id
90889   , p_amb_context_code             => l_amb_context_code
90890   , p_side                         => 'NA'
90891   );
90892 
90893 
90894    --
90895    --
90896    END IF;
90897    --
90898    -- Bug 4922099
90899    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
90900           (NVL(l_enc_upg_option, 'N') = 'O')
90901         ) AND
90902         (l_bflow_method_code = 'PRIOR_ENTRY')
90903       )
90904    THEN
90905       IF
90906       --
90907       1 = 2
90908       --
90909       THEN
90910       xla_accounting_err_pkg.build_message
90911                                     (p_appli_s_name            => 'XLA'
90912                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90913                                     ,p_token_1                 => 'LINE_NUMBER'
90914                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
90915                                     ,p_token_2                 => 'LINE_TYPE_NAME'
90916                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
90917                                                                              l_component_type
90921                                                                             ,l_amb_context_code
90918                                                                             ,l_component_code
90919                                                                             ,l_component_type_code
90920                                                                             ,l_component_appl_id
90922                                                                             ,l_entity_code
90923                                                                             ,l_event_class_code
90924                                                                            )
90925                                     ,p_token_3                 => 'OWNER'
90926                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
90927                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
90928                                                                           ,p_lookup_code    => l_component_type_code
90929                                                                          )
90930                                     ,p_token_4                 => 'PRODUCT_NAME'
90931                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
90932                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
90933                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
90934                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
90935                                     ,p_ae_header_id            =>  NULL
90936                                        );
90937 
90938         IF (C_LEVEL_ERROR>= g_log_level) THEN
90939                  trace
90940                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90941                       ,p_level    => C_LEVEL_ERROR
90942                       ,p_module   => l_log_module);
90943         END IF;
90944       END IF;
90945    END IF;
90946    --
90947    --
90948    ------------------------------------------------------------------------------------------------
90949    -- 4219869 Business Flow
90950    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
90951    -- Prior Entry.  Currently, the following code is always generated.
90952    ------------------------------------------------------------------------------------------------
90953    XLA_AE_LINES_PKG.ValidateCurrentLine;
90954 
90955    ------------------------------------------------------------------------------------
90956    -- 4219869 Business Flow
90957    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
90958    ------------------------------------------------------------------------------------
90959    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90960 
90961    ----------------------------------------------------------------------------------
90962    -- 4219869 Business Flow
90963    -- Update journal entry status -- Need to generate this within IF <condition>
90964    ----------------------------------------------------------------------------------
90965    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90966          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
90967          ,p_balance_type_code => l_balance_type_code
90968          );
90969 
90970    -------------------------------------------------------------------------------------------
90971    -- 4262811 - Generate the Accrual Reversal lines
90972    -------------------------------------------------------------------------------------------
90973    BEGIN
90974       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
90975                               (g_array_event(p_event_id).array_value_num('header_index'));
90976       IF l_acc_rev_flag IS NULL THEN
90977          l_acc_rev_flag := 'N';
90978       END IF;
90979    EXCEPTION
90980       WHEN OTHERS THEN
90981          l_acc_rev_flag := 'N';
90982    END;
90983    --
90984    IF (l_acc_rev_flag = 'Y') THEN
90985 
90986        -- 4645092  ------------------------------------------------------------------------------
90987        -- To allow MPA report to determine if it should generate report process
90988        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
90989        ------------------------------------------------------------------------------------------
90990 
90991        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
90992        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
90993    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
90994    -- call ADRs
90995    -- Bug 4922099
90996    --
90997    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90998         (NVL(l_actual_upg_option, 'N') = 'O') OR
90999         (NVL(l_enc_upg_option, 'N') = 'O')
91000       )
91001    THEN
91002    NULL;
91003    --
91004    --
91005    
91006   l_ccid := AcctDerRule_25(
91007            p_application_id           => p_application_id
91008          , p_ae_header_id             => l_ae_header_id 
91009 , p_source_1 => p_source_1
91010 , p_source_2 => p_source_2
91011          , x_transaction_coa_id       => l_adr_transaction_coa_id
91012          , x_accounting_coa_id        => l_adr_accounting_coa_id
91013          , x_value_type_code          => l_adr_value_type_code
91014          , p_side                     => 'NA'
91018     p_code_combination_id          => l_ccid
91015    );
91016 
91017    xla_ae_lines_pkg.set_ccid(
91019   , p_value_type_code              => l_adr_value_type_code
91020   , p_transaction_coa_id           => l_adr_transaction_coa_id
91021   , p_accounting_coa_id            => l_adr_accounting_coa_id
91022   , p_adr_code                     => 'ISP'
91023   , p_adr_type_code                => 'S'
91024   , p_component_type               => l_component_type
91025   , p_component_code               => l_component_code
91026   , p_component_type_code          => l_component_type_code
91027   , p_component_appl_id            => l_component_appl_id
91028   , p_amb_context_code             => l_amb_context_code
91029   , p_side                         => 'NA'
91030   );
91031 
91032 
91033    --
91034    --
91035    END IF;
91036 
91037        --
91038        -- Update the line information that should be overwritten
91039        --
91040        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
91041                                          p_header_num   => 1);
91042        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
91043 
91044        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
91045 
91046        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
91047           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
91048        END IF;
91049 
91050       --
91051       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
91052       --
91053       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
91054           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
91055       ELSE
91056           ---------------------------------------------------------------------------------------------------
91057           -- 4262811a Switch Sign
91058           ---------------------------------------------------------------------------------------------------
91059           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
91060           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91061                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91062           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91063                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91064           -- 5132302
91065           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
91066                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91067 
91068       END IF;
91069 
91070       -- 4955764
91071       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91072       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
91073 
91074 
91075       XLA_AE_LINES_PKG.ValidateCurrentLine;
91076       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91077 
91078       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91079                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
91080                ,p_balance_type_code => l_balance_type_code);
91081 
91082    END IF;
91083 
91084    -----------------------------------------------------------------------------------------
91085    -- 4262811 Multiperiod Accounting
91086    -----------------------------------------------------------------------------------------
91087      -- No MPA option is assigned.
91088 
91089 
91090 END IF;
91091 END IF;
91092 --
91093 
91094 --
91095 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91096    trace
91097       (p_msg      => 'END of AcctLineType_196'
91098       ,p_level    => C_LEVEL_PROCEDURE
91099       ,p_module   => l_log_module);
91100 END IF;
91101 --
91102 EXCEPTION
91103   WHEN xla_exceptions_pkg.application_exception THEN
91104       RAISE;
91105   WHEN OTHERS THEN
91106        xla_exceptions_pkg.raise_message
91107            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_196');
91108 END AcctLineType_196;
91109 --
91110 
91111 ---------------------------------------
91112 --
91113 -- PRIVATE FUNCTION
91114 --         AcctLineType_197
91115 --
91116 ---------------------------------------
91117 PROCEDURE AcctLineType_197 (
91118   p_application_id        IN NUMBER
91119  ,p_event_id              IN NUMBER
91120  ,p_calculate_acctd_flag  IN VARCHAR2
91121  ,p_calculate_g_l_flag    IN VARCHAR2
91122  ,p_actual_flag           IN OUT VARCHAR2
91123  ,p_balance_type_code     OUT VARCHAR2
91124  ,p_gain_or_loss_ref      OUT VARCHAR2
91125  
91126 --Transaction Account
91127  , p_source_1            IN NUMBER
91128 --Journal Line Type
91129  , p_source_2            IN VARCHAR2
91130 --Entered Amount
91131  , p_source_3            IN NUMBER
91132 --First Distribution Identifier
91133  , p_source_5            IN NUMBER
91134 --Distribution Type
91135  , p_source_6            IN VARCHAR2
91136 --Currency Code
91137  , p_source_7            IN VARCHAR2
91138 --Currency Conversion Date
91139  , p_source_8            IN DATE
91140 --Currency Conversion Rate
91144 --Accounted Amount
91141  , p_source_9            IN NUMBER
91142 --Currency Conversion Type
91143  , p_source_10            IN VARCHAR2
91145  , p_source_11            IN NUMBER
91146 )
91147 IS
91148 
91149 l_component_type              VARCHAR2(80);
91150 l_component_code              VARCHAR2(30);
91151 l_component_type_code         VARCHAR2(1);
91152 l_component_appl_id           INTEGER;
91153 l_amb_context_code            VARCHAR2(30);
91154 l_entity_code                 VARCHAR2(30);
91155 l_event_class_code            VARCHAR2(30);
91156 l_ae_header_id                NUMBER;
91157 l_event_type_code             VARCHAR2(30);
91158 l_line_definition_code        VARCHAR2(30);
91159 l_line_definition_owner_code  VARCHAR2(1);
91160 --
91161 -- adr variables
91162 l_segment                     VARCHAR2(30);
91163 l_ccid                        NUMBER;
91164 l_adr_transaction_coa_id      NUMBER;
91165 l_adr_accounting_coa_id       NUMBER;
91166 l_adr_flexfield_segment_code  VARCHAR2(30);
91167 l_adr_flex_value_set_id       NUMBER;
91168 l_adr_value_type_code         VARCHAR2(30);
91169 l_adr_value_combination_id    NUMBER;
91170 l_adr_value_segment_code      VARCHAR2(30);
91171 
91172 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
91173 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
91174 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
91175 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
91176 
91177 -- 4262811 Variables ------------------------------------------------------------------------------------------
91178 l_entered_amt_idx             NUMBER;
91179 l_accted_amt_idx              NUMBER;
91180 l_acc_rev_flag                VARCHAR2(1);
91181 l_accrual_line_num            NUMBER;
91182 l_tmp_amt                     NUMBER;
91183 l_acc_rev_natural_side_code   VARCHAR2(1);
91184 
91185 l_num_entries                 NUMBER;
91186 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
91187 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
91188 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
91189 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
91190 l_recog_line_1                NUMBER;
91191 l_recog_line_2                NUMBER;
91192 
91193 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
91194 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
91195 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
91196 
91197 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
91198 
91199 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
91200 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
91201 
91202 ---------------------------------------------------------------------------------------------------------------
91203 
91204 
91205 --
91206 -- bulk performance
91207 --
91208 l_balance_type_code           VARCHAR2(1);
91209 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
91210 l_log_module                  VARCHAR2(240);
91211 
91212 --
91213 -- Upgrade strategy
91214 --
91215 l_actual_upg_option           VARCHAR2(1);
91216 l_enc_upg_option           VARCHAR2(1);
91217 
91218 --
91219 BEGIN
91220 --
91221 IF g_log_enabled THEN
91222       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_197';
91223 END IF;
91224 --
91225 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91226 
91227       trace
91228          (p_msg      => 'BEGIN of AcctLineType_197'
91229          ,p_level    => C_LEVEL_PROCEDURE
91230          ,p_module   => l_log_module);
91231 
91232 END IF;
91233 --
91234 l_component_type             := 'AMB_JLT';
91235 l_component_code             := 'ISP';
91236 l_component_type_code        := 'S';
91237 l_component_appl_id          :=  555;
91238 l_amb_context_code           := 'DEFAULT';
91239 l_entity_code                := 'PURCHASING';
91240 l_event_class_code           := 'RECEIVE';
91241 l_event_type_code            := 'EXP_RET_TO_RECEIVING';
91242 l_line_definition_owner_code := 'S';
91243 l_line_definition_code       := 'EXP_RET_TO_RECEIVING';
91244 --
91245 l_balance_type_code          := 'A';
91246 l_segment                     := NULL;
91247 l_ccid                        := NULL;
91248 l_adr_transaction_coa_id      := NULL;
91249 l_adr_accounting_coa_id       := NULL;
91250 l_adr_flexfield_segment_code  := NULL;
91251 l_adr_flex_value_set_id       := NULL;
91252 l_adr_value_type_code         := NULL;
91253 l_adr_value_combination_id    := NULL;
91254 l_adr_value_segment_code      := NULL;
91255 
91256 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
91257 l_bflow_class_code           := '';    -- 4219869 Business Flow
91258 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
91259 l_budgetary_control_flag     := 'N';
91260 
91261 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
91262 l_bflow_applied_to_amt       := NULL; -- 5132302
91263 l_entered_amt_idx            := NULL;          -- 4262811
91264 l_accted_amt_idx             := NULL;          -- 4262811
91265 l_acc_rev_flag               := NULL;          -- 4262811
91266 l_accrual_line_num           := NULL;          -- 4262811
91267 l_tmp_amt                    := NULL;          -- 4262811
91268 --
91269  
91273 ') =  'ISP'
91270 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
91271     l_balance_type_code <> 'B' THEN
91272 IF NVL(p_source_2,'
91274  THEN 
91275 
91276    --
91277    XLA_AE_LINES_PKG.SetNewLine;
91278 
91279    p_balance_type_code          := l_balance_type_code;
91280    -- set the flag so later we will know whether the gain loss line needs to be created
91281    
91282    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
91283      p_actual_flag :='A';
91284    END IF;
91285 
91286    --
91287    -- bulk performance
91288    --
91289    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
91290                                       p_header_num   => 0); -- 4262811
91291    --
91292    -- set accounting line options
91293    --
91294    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
91295            p_natural_side_code          => 'D'
91296          , p_gain_or_loss_flag          => 'N'
91297          , p_gl_transfer_mode_code      => 'D'
91298          , p_acct_entry_type_code       => 'A'
91299          , p_switch_side_flag           => 'Y'
91300          , p_merge_duplicate_code       => 'W'
91301          );
91302    --
91303    l_acc_rev_natural_side_code := 'C';  -- 4262811
91304    -- 
91305    --
91306    -- set accounting line type info
91307    --
91308    xla_ae_lines_pkg.SetAcctLineType
91309       (p_component_type             => l_component_type
91310       ,p_event_type_code            => l_event_type_code
91311       ,p_line_definition_owner_code => l_line_definition_owner_code
91312       ,p_line_definition_code       => l_line_definition_code
91313       ,p_accounting_line_code       => l_component_code
91314       ,p_accounting_line_type_code  => l_component_type_code
91315       ,p_accounting_line_appl_id    => l_component_appl_id
91316       ,p_amb_context_code           => l_amb_context_code
91317       ,p_entity_code                => l_entity_code
91318       ,p_event_class_code           => l_event_class_code);
91319    --
91320    -- set accounting class
91321    --
91322    xla_ae_lines_pkg.SetAcctClass(
91323            p_accounting_class_code  => 'RECEIVING_INSPECTION'
91324          , p_ae_header_id           => l_ae_header_id
91325          );
91326 
91327    --
91328    -- set rounding class
91329    --
91330    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
91331                       'RECEIVING_INSPECTION';
91332 
91333    --
91334    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
91335    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
91336    --
91337    -- bulk performance
91338    --
91339    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
91340 
91341    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
91342       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
91343 
91344    -- 4955764
91345    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91346       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
91347 
91348    -- 4458381 Public Sector Enh
91349    
91350    --
91351    -- set accounting attributes for the line type
91352    --
91353    l_entered_amt_idx := 3;
91354    l_accted_amt_idx  := 8;
91355    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
91356    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
91357    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
91358    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
91359    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
91360    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
91361    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
91362    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
91363    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
91364    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
91365    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
91366    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
91367    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
91368    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
91369    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
91370    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
91371    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
91372 
91373    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
91374    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
91375 
91376    ---------------------------------------------------------------------------------------------------------------
91377    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
91378    ---------------------------------------------------------------------------------------------------------------
91379    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
91380 
91381    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91385          (p_source_code         => 'LEDGER_CATEGORY_CODE'
91382    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91383 
91384    IF xla_accounting_cache_pkg.GetValueChar
91386          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
91387    AND l_bflow_method_code = 'PRIOR_ENTRY'
91388 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
91389    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
91390          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
91391        )
91392    THEN
91393          xla_ae_lines_pkg.BflowUpgEntry
91394            (p_business_method_code    => l_bflow_method_code
91395            ,p_business_class_code     => l_bflow_class_code
91396            ,p_balance_type            => l_balance_type_code);
91397    ELSE
91398       NULL;
91399 -- No business flow processing for business flow method of NONE.
91400    END IF;
91401 
91402    --
91403    -- call analytical criteria
91404    --
91405    
91406    --
91407    -- call description
91408    --
91409    -- No description or it is inherited.
91410    --
91411    -- call ADRs
91412    -- Bug 4922099
91413    --
91414    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91415         (NVL(l_actual_upg_option, 'N') = 'O') OR
91416         (NVL(l_enc_upg_option, 'N') = 'O')
91417       )
91418    THEN
91419    NULL;
91420    --
91421    --
91422    
91423   l_ccid := AcctDerRule_25(
91424            p_application_id           => p_application_id
91425          , p_ae_header_id             => l_ae_header_id 
91426 , p_source_1 => p_source_1
91427 , p_source_2 => p_source_2
91428          , x_transaction_coa_id       => l_adr_transaction_coa_id
91429          , x_accounting_coa_id        => l_adr_accounting_coa_id
91430          , x_value_type_code          => l_adr_value_type_code
91431          , p_side                     => 'NA'
91432    );
91433 
91434    xla_ae_lines_pkg.set_ccid(
91435     p_code_combination_id          => l_ccid
91436   , p_value_type_code              => l_adr_value_type_code
91437   , p_transaction_coa_id           => l_adr_transaction_coa_id
91438   , p_accounting_coa_id            => l_adr_accounting_coa_id
91439   , p_adr_code                     => 'ISP'
91440   , p_adr_type_code                => 'S'
91441   , p_component_type               => l_component_type
91442   , p_component_code               => l_component_code
91443   , p_component_type_code          => l_component_type_code
91444   , p_component_appl_id            => l_component_appl_id
91445   , p_amb_context_code             => l_amb_context_code
91446   , p_side                         => 'NA'
91447   );
91448 
91449 
91450    --
91451    --
91452    END IF;
91453    --
91454    -- Bug 4922099
91455    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
91456           (NVL(l_enc_upg_option, 'N') = 'O')
91457         ) AND
91458         (l_bflow_method_code = 'PRIOR_ENTRY')
91459       )
91460    THEN
91461       IF
91462       --
91463       1 = 2
91464       --
91465       THEN
91466       xla_accounting_err_pkg.build_message
91467                                     (p_appli_s_name            => 'XLA'
91468                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91469                                     ,p_token_1                 => 'LINE_NUMBER'
91470                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
91471                                     ,p_token_2                 => 'LINE_TYPE_NAME'
91472                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
91473                                                                              l_component_type
91474                                                                             ,l_component_code
91475                                                                             ,l_component_type_code
91476                                                                             ,l_component_appl_id
91477                                                                             ,l_amb_context_code
91478                                                                             ,l_entity_code
91479                                                                             ,l_event_class_code
91480                                                                            )
91481                                     ,p_token_3                 => 'OWNER'
91482                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
91483                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
91484                                                                           ,p_lookup_code    => l_component_type_code
91485                                                                          )
91486                                     ,p_token_4                 => 'PRODUCT_NAME'
91487                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
91488                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
91489                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
91493 
91490                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
91491                                     ,p_ae_header_id            =>  NULL
91492                                        );
91494         IF (C_LEVEL_ERROR>= g_log_level) THEN
91495                  trace
91496                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91497                       ,p_level    => C_LEVEL_ERROR
91498                       ,p_module   => l_log_module);
91499         END IF;
91500       END IF;
91501    END IF;
91502    --
91503    --
91504    ------------------------------------------------------------------------------------------------
91505    -- 4219869 Business Flow
91506    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
91507    -- Prior Entry.  Currently, the following code is always generated.
91508    ------------------------------------------------------------------------------------------------
91509    XLA_AE_LINES_PKG.ValidateCurrentLine;
91510 
91511    ------------------------------------------------------------------------------------
91512    -- 4219869 Business Flow
91513    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
91514    ------------------------------------------------------------------------------------
91515    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91516 
91517    ----------------------------------------------------------------------------------
91518    -- 4219869 Business Flow
91519    -- Update journal entry status -- Need to generate this within IF <condition>
91520    ----------------------------------------------------------------------------------
91521    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91522          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
91523          ,p_balance_type_code => l_balance_type_code
91524          );
91525 
91526    -------------------------------------------------------------------------------------------
91527    -- 4262811 - Generate the Accrual Reversal lines
91528    -------------------------------------------------------------------------------------------
91529    BEGIN
91530       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
91531                               (g_array_event(p_event_id).array_value_num('header_index'));
91532       IF l_acc_rev_flag IS NULL THEN
91533          l_acc_rev_flag := 'N';
91534       END IF;
91535    EXCEPTION
91536       WHEN OTHERS THEN
91537          l_acc_rev_flag := 'N';
91538    END;
91539    --
91540    IF (l_acc_rev_flag = 'Y') THEN
91541 
91542        -- 4645092  ------------------------------------------------------------------------------
91543        -- To allow MPA report to determine if it should generate report process
91544        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
91545        ------------------------------------------------------------------------------------------
91546 
91547        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
91548        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
91549    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
91550    -- call ADRs
91551    -- Bug 4922099
91552    --
91553    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91554         (NVL(l_actual_upg_option, 'N') = 'O') OR
91555         (NVL(l_enc_upg_option, 'N') = 'O')
91556       )
91557    THEN
91558    NULL;
91559    --
91560    --
91561    
91562   l_ccid := AcctDerRule_25(
91563            p_application_id           => p_application_id
91564          , p_ae_header_id             => l_ae_header_id 
91565 , p_source_1 => p_source_1
91566 , p_source_2 => p_source_2
91567          , x_transaction_coa_id       => l_adr_transaction_coa_id
91568          , x_accounting_coa_id        => l_adr_accounting_coa_id
91569          , x_value_type_code          => l_adr_value_type_code
91570          , p_side                     => 'NA'
91571    );
91572 
91573    xla_ae_lines_pkg.set_ccid(
91574     p_code_combination_id          => l_ccid
91575   , p_value_type_code              => l_adr_value_type_code
91576   , p_transaction_coa_id           => l_adr_transaction_coa_id
91577   , p_accounting_coa_id            => l_adr_accounting_coa_id
91578   , p_adr_code                     => 'ISP'
91579   , p_adr_type_code                => 'S'
91580   , p_component_type               => l_component_type
91581   , p_component_code               => l_component_code
91582   , p_component_type_code          => l_component_type_code
91583   , p_component_appl_id            => l_component_appl_id
91584   , p_amb_context_code             => l_amb_context_code
91585   , p_side                         => 'NA'
91586   );
91587 
91588 
91589    --
91590    --
91591    END IF;
91592 
91593        --
91594        -- Update the line information that should be overwritten
91595        --
91596        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
91597                                          p_header_num   => 1);
91598        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
91599 
91600        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
91601 
91602        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
91603           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
91604        END IF;
91605 
91606       --
91610           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
91607       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
91608       --
91609       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
91611       ELSE
91612           ---------------------------------------------------------------------------------------------------
91613           -- 4262811a Switch Sign
91614           ---------------------------------------------------------------------------------------------------
91615           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
91616           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91617                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91618           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91619                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91620           -- 5132302
91621           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
91622                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91623 
91624       END IF;
91625 
91626       -- 4955764
91627       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91628       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
91629 
91630 
91631       XLA_AE_LINES_PKG.ValidateCurrentLine;
91632       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91633 
91634       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91635                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
91636                ,p_balance_type_code => l_balance_type_code);
91637 
91638    END IF;
91639 
91640    -----------------------------------------------------------------------------------------
91641    -- 4262811 Multiperiod Accounting
91642    -----------------------------------------------------------------------------------------
91643      -- No MPA option is assigned.
91644 
91645 
91646 END IF;
91647 END IF;
91648 --
91649 
91650 --
91651 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91652    trace
91653       (p_msg      => 'END of AcctLineType_197'
91654       ,p_level    => C_LEVEL_PROCEDURE
91655       ,p_module   => l_log_module);
91656 END IF;
91657 --
91658 EXCEPTION
91659   WHEN xla_exceptions_pkg.application_exception THEN
91660       RAISE;
91661   WHEN OTHERS THEN
91662        xla_exceptions_pkg.raise_message
91663            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_197');
91664 END AcctLineType_197;
91665 --
91666 
91667 ---------------------------------------
91668 --
91669 -- PRIVATE FUNCTION
91670 --         AcctLineType_198
91671 --
91672 ---------------------------------------
91673 PROCEDURE AcctLineType_198 (
91674   p_application_id        IN NUMBER
91675  ,p_event_id              IN NUMBER
91676  ,p_calculate_acctd_flag  IN VARCHAR2
91677  ,p_calculate_g_l_flag    IN VARCHAR2
91678  ,p_actual_flag           IN OUT VARCHAR2
91679  ,p_balance_type_code     OUT VARCHAR2
91680  ,p_gain_or_loss_ref      OUT VARCHAR2
91681  
91682 --Transaction Account
91683  , p_source_1            IN NUMBER
91684 --Journal Line Type
91685  , p_source_2            IN VARCHAR2
91686 --Entered Amount
91687  , p_source_3            IN NUMBER
91688 --First Distribution Identifier
91689  , p_source_5            IN NUMBER
91690 --Distribution Type
91691  , p_source_6            IN VARCHAR2
91692 --Currency Code
91693  , p_source_7            IN VARCHAR2
91694 --Currency Conversion Date
91695  , p_source_8            IN DATE
91696 --Currency Conversion Rate
91697  , p_source_9            IN NUMBER
91698 --Currency Conversion Type
91699  , p_source_10            IN VARCHAR2
91700 --Accounted Amount
91701  , p_source_11            IN NUMBER
91702 )
91703 IS
91704 
91705 l_component_type              VARCHAR2(80);
91706 l_component_code              VARCHAR2(30);
91707 l_component_type_code         VARCHAR2(1);
91708 l_component_appl_id           INTEGER;
91709 l_amb_context_code            VARCHAR2(30);
91710 l_entity_code                 VARCHAR2(30);
91711 l_event_class_code            VARCHAR2(30);
91712 l_ae_header_id                NUMBER;
91713 l_event_type_code             VARCHAR2(30);
91714 l_line_definition_code        VARCHAR2(30);
91715 l_line_definition_owner_code  VARCHAR2(1);
91716 --
91717 -- adr variables
91718 l_segment                     VARCHAR2(30);
91719 l_ccid                        NUMBER;
91720 l_adr_transaction_coa_id      NUMBER;
91721 l_adr_accounting_coa_id       NUMBER;
91722 l_adr_flexfield_segment_code  VARCHAR2(30);
91723 l_adr_flex_value_set_id       NUMBER;
91724 l_adr_value_type_code         VARCHAR2(30);
91725 l_adr_value_combination_id    NUMBER;
91726 l_adr_value_segment_code      VARCHAR2(30);
91727 
91728 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
91729 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
91730 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
91731 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
91732 
91736 l_acc_rev_flag                VARCHAR2(1);
91733 -- 4262811 Variables ------------------------------------------------------------------------------------------
91734 l_entered_amt_idx             NUMBER;
91735 l_accted_amt_idx              NUMBER;
91737 l_accrual_line_num            NUMBER;
91738 l_tmp_amt                     NUMBER;
91739 l_acc_rev_natural_side_code   VARCHAR2(1);
91740 
91741 l_num_entries                 NUMBER;
91742 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
91743 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
91744 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
91745 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
91746 l_recog_line_1                NUMBER;
91747 l_recog_line_2                NUMBER;
91748 
91749 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
91750 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
91751 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
91752 
91753 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
91754 
91755 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
91756 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
91757 
91758 ---------------------------------------------------------------------------------------------------------------
91759 
91760 
91761 --
91762 -- bulk performance
91763 --
91764 l_balance_type_code           VARCHAR2(1);
91765 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
91766 l_log_module                  VARCHAR2(240);
91767 
91768 --
91769 -- Upgrade strategy
91770 --
91771 l_actual_upg_option           VARCHAR2(1);
91772 l_enc_upg_option           VARCHAR2(1);
91773 
91774 --
91775 BEGIN
91776 --
91777 IF g_log_enabled THEN
91778       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_198';
91779 END IF;
91780 --
91781 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91782 
91783       trace
91784          (p_msg      => 'BEGIN of AcctLineType_198'
91785          ,p_level    => C_LEVEL_PROCEDURE
91786          ,p_module   => l_log_module);
91787 
91788 END IF;
91789 --
91790 l_component_type             := 'AMB_JLT';
91791 l_component_code             := 'ISP';
91792 l_component_type_code        := 'S';
91793 l_component_appl_id          :=  555;
91794 l_amb_context_code           := 'DEFAULT';
91795 l_entity_code                := 'PURCHASING';
91796 l_event_class_code           := 'DELIVER';
91797 l_event_type_code            := 'PO_RECEIPT_ADJ';
91798 l_line_definition_owner_code := 'S';
91799 l_line_definition_code       := 'PO_RECEIPT_ADJ';
91800 --
91801 l_balance_type_code          := 'A';
91802 l_segment                     := NULL;
91803 l_ccid                        := NULL;
91804 l_adr_transaction_coa_id      := NULL;
91805 l_adr_accounting_coa_id       := NULL;
91806 l_adr_flexfield_segment_code  := NULL;
91807 l_adr_flex_value_set_id       := NULL;
91808 l_adr_value_type_code         := NULL;
91809 l_adr_value_combination_id    := NULL;
91810 l_adr_value_segment_code      := NULL;
91811 
91812 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
91813 l_bflow_class_code           := '';    -- 4219869 Business Flow
91814 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
91815 l_budgetary_control_flag     := 'N';
91816 
91817 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
91818 l_bflow_applied_to_amt       := NULL; -- 5132302
91819 l_entered_amt_idx            := NULL;          -- 4262811
91820 l_accted_amt_idx             := NULL;          -- 4262811
91821 l_acc_rev_flag               := NULL;          -- 4262811
91822 l_accrual_line_num           := NULL;          -- 4262811
91823 l_tmp_amt                    := NULL;          -- 4262811
91824 --
91825  
91826 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
91827     l_balance_type_code <> 'B' THEN
91828 IF NVL(p_source_2,'
91829 ') =  'ISP'
91830  THEN 
91831 
91832    --
91833    XLA_AE_LINES_PKG.SetNewLine;
91834 
91835    p_balance_type_code          := l_balance_type_code;
91836    -- set the flag so later we will know whether the gain loss line needs to be created
91837    
91838    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
91839      p_actual_flag :='A';
91840    END IF;
91841 
91842    --
91843    -- bulk performance
91844    --
91845    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
91846                                       p_header_num   => 0); -- 4262811
91847    --
91848    -- set accounting line options
91849    --
91850    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
91851            p_natural_side_code          => 'D'
91852          , p_gain_or_loss_flag          => 'N'
91853          , p_gl_transfer_mode_code      => 'D'
91854          , p_acct_entry_type_code       => 'A'
91855          , p_switch_side_flag           => 'Y'
91856          , p_merge_duplicate_code       => 'W'
91857          );
91858    --
91859    l_acc_rev_natural_side_code := 'C';  -- 4262811
91860    -- 
91861    --
91862    -- set accounting line type info
91863    --
91864    xla_ae_lines_pkg.SetAcctLineType
91868       ,p_line_definition_code       => l_line_definition_code
91865       (p_component_type             => l_component_type
91866       ,p_event_type_code            => l_event_type_code
91867       ,p_line_definition_owner_code => l_line_definition_owner_code
91869       ,p_accounting_line_code       => l_component_code
91870       ,p_accounting_line_type_code  => l_component_type_code
91871       ,p_accounting_line_appl_id    => l_component_appl_id
91872       ,p_amb_context_code           => l_amb_context_code
91873       ,p_entity_code                => l_entity_code
91874       ,p_event_class_code           => l_event_class_code);
91875    --
91876    -- set accounting class
91877    --
91878    xla_ae_lines_pkg.SetAcctClass(
91879            p_accounting_class_code  => 'RECEIVING_INSPECTION'
91880          , p_ae_header_id           => l_ae_header_id
91881          );
91882 
91883    --
91884    -- set rounding class
91885    --
91886    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
91887                       'RECEIVING_INSPECTION';
91888 
91889    --
91890    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
91891    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
91892    --
91893    -- bulk performance
91894    --
91895    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
91896 
91897    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
91898       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
91899 
91900    -- 4955764
91901    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91902       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
91903 
91904    -- 4458381 Public Sector Enh
91905    
91906    --
91907    -- set accounting attributes for the line type
91908    --
91909    l_entered_amt_idx := 3;
91910    l_accted_amt_idx  := 8;
91911    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
91912    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
91913    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
91914    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
91915    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
91916    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
91917    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
91918    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
91919    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
91920    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
91921    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
91922    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
91923    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
91924    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
91925    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
91926    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
91927    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
91928 
91929    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
91930    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
91931 
91932    ---------------------------------------------------------------------------------------------------------------
91933    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
91934    ---------------------------------------------------------------------------------------------------------------
91935    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
91936 
91937    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91938    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91939 
91940    IF xla_accounting_cache_pkg.GetValueChar
91941          (p_source_code         => 'LEDGER_CATEGORY_CODE'
91942          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
91943    AND l_bflow_method_code = 'PRIOR_ENTRY'
91944 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
91945    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
91946          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
91947        )
91948    THEN
91949          xla_ae_lines_pkg.BflowUpgEntry
91950            (p_business_method_code    => l_bflow_method_code
91951            ,p_business_class_code     => l_bflow_class_code
91952            ,p_balance_type            => l_balance_type_code);
91953    ELSE
91954       NULL;
91955 -- No business flow processing for business flow method of NONE.
91956    END IF;
91957 
91958    --
91959    -- call analytical criteria
91960    --
91961    
91962    --
91963    -- call description
91964    --
91965    -- No description or it is inherited.
91966    --
91967    -- call ADRs
91968    -- Bug 4922099
91969    --
91970    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91971         (NVL(l_actual_upg_option, 'N') = 'O') OR
91972         (NVL(l_enc_upg_option, 'N') = 'O')
91973       )
91974    THEN
91975    NULL;
91976    --
91977    --
91981          , p_ae_header_id             => l_ae_header_id 
91978    
91979   l_ccid := AcctDerRule_25(
91980            p_application_id           => p_application_id
91982 , p_source_1 => p_source_1
91983 , p_source_2 => p_source_2
91984          , x_transaction_coa_id       => l_adr_transaction_coa_id
91985          , x_accounting_coa_id        => l_adr_accounting_coa_id
91986          , x_value_type_code          => l_adr_value_type_code
91987          , p_side                     => 'NA'
91988    );
91989 
91990    xla_ae_lines_pkg.set_ccid(
91991     p_code_combination_id          => l_ccid
91992   , p_value_type_code              => l_adr_value_type_code
91993   , p_transaction_coa_id           => l_adr_transaction_coa_id
91994   , p_accounting_coa_id            => l_adr_accounting_coa_id
91995   , p_adr_code                     => 'ISP'
91996   , p_adr_type_code                => 'S'
91997   , p_component_type               => l_component_type
91998   , p_component_code               => l_component_code
91999   , p_component_type_code          => l_component_type_code
92000   , p_component_appl_id            => l_component_appl_id
92001   , p_amb_context_code             => l_amb_context_code
92002   , p_side                         => 'NA'
92003   );
92004 
92005 
92006    --
92007    --
92008    END IF;
92009    --
92010    -- Bug 4922099
92011    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
92012           (NVL(l_enc_upg_option, 'N') = 'O')
92013         ) AND
92014         (l_bflow_method_code = 'PRIOR_ENTRY')
92015       )
92016    THEN
92017       IF
92018       --
92019       1 = 2
92020       --
92021       THEN
92022       xla_accounting_err_pkg.build_message
92023                                     (p_appli_s_name            => 'XLA'
92024                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92025                                     ,p_token_1                 => 'LINE_NUMBER'
92026                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
92027                                     ,p_token_2                 => 'LINE_TYPE_NAME'
92028                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
92029                                                                              l_component_type
92030                                                                             ,l_component_code
92031                                                                             ,l_component_type_code
92032                                                                             ,l_component_appl_id
92033                                                                             ,l_amb_context_code
92034                                                                             ,l_entity_code
92035                                                                             ,l_event_class_code
92036                                                                            )
92037                                     ,p_token_3                 => 'OWNER'
92038                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
92039                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
92040                                                                           ,p_lookup_code    => l_component_type_code
92041                                                                          )
92042                                     ,p_token_4                 => 'PRODUCT_NAME'
92043                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
92044                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
92045                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
92046                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
92047                                     ,p_ae_header_id            =>  NULL
92048                                        );
92049 
92050         IF (C_LEVEL_ERROR>= g_log_level) THEN
92051                  trace
92052                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92053                       ,p_level    => C_LEVEL_ERROR
92054                       ,p_module   => l_log_module);
92055         END IF;
92056       END IF;
92057    END IF;
92058    --
92059    --
92060    ------------------------------------------------------------------------------------------------
92061    -- 4219869 Business Flow
92062    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
92063    -- Prior Entry.  Currently, the following code is always generated.
92064    ------------------------------------------------------------------------------------------------
92065    XLA_AE_LINES_PKG.ValidateCurrentLine;
92066 
92067    ------------------------------------------------------------------------------------
92068    -- 4219869 Business Flow
92069    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
92070    ------------------------------------------------------------------------------------
92071    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92072 
92073    ----------------------------------------------------------------------------------
92074    -- 4219869 Business Flow
92075    -- Update journal entry status -- Need to generate this within IF <condition>
92076    ----------------------------------------------------------------------------------
92080          );
92077    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92078          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
92079          ,p_balance_type_code => l_balance_type_code
92081 
92082    -------------------------------------------------------------------------------------------
92083    -- 4262811 - Generate the Accrual Reversal lines
92084    -------------------------------------------------------------------------------------------
92085    BEGIN
92086       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
92087                               (g_array_event(p_event_id).array_value_num('header_index'));
92088       IF l_acc_rev_flag IS NULL THEN
92089          l_acc_rev_flag := 'N';
92090       END IF;
92091    EXCEPTION
92092       WHEN OTHERS THEN
92093          l_acc_rev_flag := 'N';
92094    END;
92095    --
92096    IF (l_acc_rev_flag = 'Y') THEN
92097 
92098        -- 4645092  ------------------------------------------------------------------------------
92099        -- To allow MPA report to determine if it should generate report process
92100        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
92101        ------------------------------------------------------------------------------------------
92102 
92103        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
92104        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
92105    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
92106    -- call ADRs
92107    -- Bug 4922099
92108    --
92109    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92110         (NVL(l_actual_upg_option, 'N') = 'O') OR
92111         (NVL(l_enc_upg_option, 'N') = 'O')
92112       )
92113    THEN
92114    NULL;
92115    --
92116    --
92117    
92118   l_ccid := AcctDerRule_25(
92119            p_application_id           => p_application_id
92120          , p_ae_header_id             => l_ae_header_id 
92121 , p_source_1 => p_source_1
92122 , p_source_2 => p_source_2
92123          , x_transaction_coa_id       => l_adr_transaction_coa_id
92124          , x_accounting_coa_id        => l_adr_accounting_coa_id
92125          , x_value_type_code          => l_adr_value_type_code
92126          , p_side                     => 'NA'
92127    );
92128 
92129    xla_ae_lines_pkg.set_ccid(
92130     p_code_combination_id          => l_ccid
92131   , p_value_type_code              => l_adr_value_type_code
92132   , p_transaction_coa_id           => l_adr_transaction_coa_id
92133   , p_accounting_coa_id            => l_adr_accounting_coa_id
92134   , p_adr_code                     => 'ISP'
92135   , p_adr_type_code                => 'S'
92136   , p_component_type               => l_component_type
92137   , p_component_code               => l_component_code
92138   , p_component_type_code          => l_component_type_code
92139   , p_component_appl_id            => l_component_appl_id
92140   , p_amb_context_code             => l_amb_context_code
92141   , p_side                         => 'NA'
92142   );
92143 
92144 
92145    --
92146    --
92147    END IF;
92148 
92149        --
92150        -- Update the line information that should be overwritten
92151        --
92152        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
92153                                          p_header_num   => 1);
92154        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
92155 
92156        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
92157 
92158        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
92159           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
92160        END IF;
92161 
92162       --
92163       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
92164       --
92165       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
92166           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
92167       ELSE
92168           ---------------------------------------------------------------------------------------------------
92169           -- 4262811a Switch Sign
92170           ---------------------------------------------------------------------------------------------------
92171           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
92172           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92173                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92174           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92175                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92176           -- 5132302
92177           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
92178                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92179 
92180       END IF;
92181 
92182       -- 4955764
92183       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92184       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
92185 
92186 
92187       XLA_AE_LINES_PKG.ValidateCurrentLine;
92191                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
92188       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92189 
92190       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92192                ,p_balance_type_code => l_balance_type_code);
92193 
92194    END IF;
92195 
92196    -----------------------------------------------------------------------------------------
92197    -- 4262811 Multiperiod Accounting
92198    -----------------------------------------------------------------------------------------
92199      -- No MPA option is assigned.
92200 
92201 
92202 END IF;
92203 END IF;
92204 --
92205 
92206 --
92207 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92208    trace
92209       (p_msg      => 'END of AcctLineType_198'
92210       ,p_level    => C_LEVEL_PROCEDURE
92211       ,p_module   => l_log_module);
92212 END IF;
92213 --
92214 EXCEPTION
92215   WHEN xla_exceptions_pkg.application_exception THEN
92216       RAISE;
92217   WHEN OTHERS THEN
92218        xla_exceptions_pkg.raise_message
92219            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_198');
92220 END AcctLineType_198;
92221 --
92222 
92223 ---------------------------------------
92224 --
92225 -- PRIVATE FUNCTION
92226 --         AcctLineType_199
92227 --
92228 ---------------------------------------
92229 PROCEDURE AcctLineType_199 (
92230   p_application_id        IN NUMBER
92231  ,p_event_id              IN NUMBER
92232  ,p_calculate_acctd_flag  IN VARCHAR2
92233  ,p_calculate_g_l_flag    IN VARCHAR2
92234  ,p_actual_flag           IN OUT VARCHAR2
92235  ,p_balance_type_code     OUT VARCHAR2
92236  ,p_gain_or_loss_ref      OUT VARCHAR2
92237  
92238 --Transaction Account
92239  , p_source_1            IN NUMBER
92240 --Journal Line Type
92241  , p_source_2            IN VARCHAR2
92242 --Entered Amount
92243  , p_source_3            IN NUMBER
92244 --First Distribution Identifier
92245  , p_source_5            IN NUMBER
92246 --Distribution Type
92247  , p_source_6            IN VARCHAR2
92248 --Currency Code
92249  , p_source_7            IN VARCHAR2
92250 --Currency Conversion Date
92251  , p_source_8            IN DATE
92252 --Currency Conversion Rate
92253  , p_source_9            IN NUMBER
92254 --Currency Conversion Type
92255  , p_source_10            IN VARCHAR2
92256 --Accounted Amount
92257  , p_source_11            IN NUMBER
92258 )
92259 IS
92260 
92261 l_component_type              VARCHAR2(80);
92262 l_component_code              VARCHAR2(30);
92263 l_component_type_code         VARCHAR2(1);
92264 l_component_appl_id           INTEGER;
92265 l_amb_context_code            VARCHAR2(30);
92266 l_entity_code                 VARCHAR2(30);
92267 l_event_class_code            VARCHAR2(30);
92268 l_ae_header_id                NUMBER;
92269 l_event_type_code             VARCHAR2(30);
92270 l_line_definition_code        VARCHAR2(30);
92271 l_line_definition_owner_code  VARCHAR2(1);
92272 --
92273 -- adr variables
92274 l_segment                     VARCHAR2(30);
92275 l_ccid                        NUMBER;
92276 l_adr_transaction_coa_id      NUMBER;
92277 l_adr_accounting_coa_id       NUMBER;
92278 l_adr_flexfield_segment_code  VARCHAR2(30);
92279 l_adr_flex_value_set_id       NUMBER;
92280 l_adr_value_type_code         VARCHAR2(30);
92281 l_adr_value_combination_id    NUMBER;
92282 l_adr_value_segment_code      VARCHAR2(30);
92283 
92284 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
92285 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
92286 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
92287 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
92288 
92289 -- 4262811 Variables ------------------------------------------------------------------------------------------
92290 l_entered_amt_idx             NUMBER;
92291 l_accted_amt_idx              NUMBER;
92292 l_acc_rev_flag                VARCHAR2(1);
92293 l_accrual_line_num            NUMBER;
92294 l_tmp_amt                     NUMBER;
92295 l_acc_rev_natural_side_code   VARCHAR2(1);
92296 
92297 l_num_entries                 NUMBER;
92298 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
92299 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
92300 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
92301 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
92302 l_recog_line_1                NUMBER;
92303 l_recog_line_2                NUMBER;
92304 
92305 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
92306 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
92307 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
92308 
92309 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
92310 
92311 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
92312 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
92313 
92314 ---------------------------------------------------------------------------------------------------------------
92315 
92316 
92317 --
92318 -- bulk performance
92319 --
92320 l_balance_type_code           VARCHAR2(1);
92321 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
92325 -- Upgrade strategy
92322 l_log_module                  VARCHAR2(240);
92323 
92324 --
92326 --
92327 l_actual_upg_option           VARCHAR2(1);
92328 l_enc_upg_option           VARCHAR2(1);
92329 
92330 --
92331 BEGIN
92332 --
92333 IF g_log_enabled THEN
92334       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_199';
92335 END IF;
92336 --
92337 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92338 
92339       trace
92340          (p_msg      => 'BEGIN of AcctLineType_199'
92341          ,p_level    => C_LEVEL_PROCEDURE
92342          ,p_module   => l_log_module);
92343 
92344 END IF;
92345 --
92346 l_component_type             := 'AMB_JLT';
92347 l_component_code             := 'ISP';
92348 l_component_type_code        := 'S';
92349 l_component_appl_id          :=  555;
92350 l_amb_context_code           := 'DEFAULT';
92351 l_entity_code                := 'PURCHASING';
92352 l_event_class_code           := 'RECEIVE';
92353 l_event_type_code            := 'DELIVER_EXPENSE';
92354 l_line_definition_owner_code := 'S';
92355 l_line_definition_code       := 'DELIVER_EXPENSE';
92356 --
92357 l_balance_type_code          := 'A';
92358 l_segment                     := NULL;
92359 l_ccid                        := NULL;
92360 l_adr_transaction_coa_id      := NULL;
92361 l_adr_accounting_coa_id       := NULL;
92362 l_adr_flexfield_segment_code  := NULL;
92363 l_adr_flex_value_set_id       := NULL;
92364 l_adr_value_type_code         := NULL;
92365 l_adr_value_combination_id    := NULL;
92366 l_adr_value_segment_code      := NULL;
92367 
92368 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
92369 l_bflow_class_code           := '';    -- 4219869 Business Flow
92370 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
92371 l_budgetary_control_flag     := 'N';
92372 
92373 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
92374 l_bflow_applied_to_amt       := NULL; -- 5132302
92375 l_entered_amt_idx            := NULL;          -- 4262811
92376 l_accted_amt_idx             := NULL;          -- 4262811
92377 l_acc_rev_flag               := NULL;          -- 4262811
92378 l_accrual_line_num           := NULL;          -- 4262811
92379 l_tmp_amt                    := NULL;          -- 4262811
92380 --
92381  
92382 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
92383     l_balance_type_code <> 'B' THEN
92384 IF NVL(p_source_2,'
92385 ') =  'ISP'
92386  THEN 
92387 
92388    --
92389    XLA_AE_LINES_PKG.SetNewLine;
92390 
92391    p_balance_type_code          := l_balance_type_code;
92392    -- set the flag so later we will know whether the gain loss line needs to be created
92393    
92394    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
92395      p_actual_flag :='A';
92396    END IF;
92397 
92398    --
92399    -- bulk performance
92400    --
92401    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
92402                                       p_header_num   => 0); -- 4262811
92403    --
92404    -- set accounting line options
92405    --
92406    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
92407            p_natural_side_code          => 'D'
92408          , p_gain_or_loss_flag          => 'N'
92409          , p_gl_transfer_mode_code      => 'D'
92410          , p_acct_entry_type_code       => 'A'
92411          , p_switch_side_flag           => 'Y'
92412          , p_merge_duplicate_code       => 'W'
92413          );
92414    --
92415    l_acc_rev_natural_side_code := 'C';  -- 4262811
92416    -- 
92417    --
92418    -- set accounting line type info
92419    --
92420    xla_ae_lines_pkg.SetAcctLineType
92421       (p_component_type             => l_component_type
92422       ,p_event_type_code            => l_event_type_code
92423       ,p_line_definition_owner_code => l_line_definition_owner_code
92424       ,p_line_definition_code       => l_line_definition_code
92425       ,p_accounting_line_code       => l_component_code
92426       ,p_accounting_line_type_code  => l_component_type_code
92427       ,p_accounting_line_appl_id    => l_component_appl_id
92428       ,p_amb_context_code           => l_amb_context_code
92429       ,p_entity_code                => l_entity_code
92430       ,p_event_class_code           => l_event_class_code);
92431    --
92432    -- set accounting class
92433    --
92434    xla_ae_lines_pkg.SetAcctClass(
92435            p_accounting_class_code  => 'RECEIVING_INSPECTION'
92436          , p_ae_header_id           => l_ae_header_id
92437          );
92438 
92439    --
92440    -- set rounding class
92441    --
92442    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
92443                       'RECEIVING_INSPECTION';
92444 
92445    --
92446    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
92447    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
92448    --
92449    -- bulk performance
92450    --
92451    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
92452 
92453    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
92454       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
92455 
92456    -- 4955764
92460    -- 4458381 Public Sector Enh
92457    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92458       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
92459 
92461    
92462    --
92463    -- set accounting attributes for the line type
92464    --
92465    l_entered_amt_idx := 3;
92466    l_accted_amt_idx  := 8;
92467    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
92468    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
92469    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
92470    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
92471    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
92472    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
92473    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
92474    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
92475    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
92476    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
92477    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
92478    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
92479    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
92480    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
92481    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
92482    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
92483    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
92484 
92485    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
92486    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
92487 
92488    ---------------------------------------------------------------------------------------------------------------
92489    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
92490    ---------------------------------------------------------------------------------------------------------------
92491    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
92492 
92493    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92494    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92495 
92496    IF xla_accounting_cache_pkg.GetValueChar
92497          (p_source_code         => 'LEDGER_CATEGORY_CODE'
92498          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
92499    AND l_bflow_method_code = 'PRIOR_ENTRY'
92500 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
92501    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
92502          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
92503        )
92504    THEN
92505          xla_ae_lines_pkg.BflowUpgEntry
92506            (p_business_method_code    => l_bflow_method_code
92507            ,p_business_class_code     => l_bflow_class_code
92508            ,p_balance_type            => l_balance_type_code);
92509    ELSE
92510       NULL;
92511 -- No business flow processing for business flow method of NONE.
92512    END IF;
92513 
92514    --
92515    -- call analytical criteria
92516    --
92517    
92518    --
92519    -- call description
92520    --
92521    -- No description or it is inherited.
92522    --
92523    -- call ADRs
92524    -- Bug 4922099
92525    --
92526    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92527         (NVL(l_actual_upg_option, 'N') = 'O') OR
92528         (NVL(l_enc_upg_option, 'N') = 'O')
92529       )
92530    THEN
92531    NULL;
92532    --
92533    --
92534    
92535   l_ccid := AcctDerRule_25(
92536            p_application_id           => p_application_id
92537          , p_ae_header_id             => l_ae_header_id 
92538 , p_source_1 => p_source_1
92539 , p_source_2 => p_source_2
92540          , x_transaction_coa_id       => l_adr_transaction_coa_id
92541          , x_accounting_coa_id        => l_adr_accounting_coa_id
92542          , x_value_type_code          => l_adr_value_type_code
92543          , p_side                     => 'NA'
92544    );
92545 
92546    xla_ae_lines_pkg.set_ccid(
92547     p_code_combination_id          => l_ccid
92548   , p_value_type_code              => l_adr_value_type_code
92549   , p_transaction_coa_id           => l_adr_transaction_coa_id
92550   , p_accounting_coa_id            => l_adr_accounting_coa_id
92551   , p_adr_code                     => 'ISP'
92552   , p_adr_type_code                => 'S'
92553   , p_component_type               => l_component_type
92554   , p_component_code               => l_component_code
92555   , p_component_type_code          => l_component_type_code
92556   , p_component_appl_id            => l_component_appl_id
92557   , p_amb_context_code             => l_amb_context_code
92558   , p_side                         => 'NA'
92559   );
92560 
92561 
92562    --
92563    --
92564    END IF;
92565    --
92566    -- Bug 4922099
92567    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
92568           (NVL(l_enc_upg_option, 'N') = 'O')
92569         ) AND
92570         (l_bflow_method_code = 'PRIOR_ENTRY')
92571       )
92572    THEN
92573       IF
92574       --
92575       1 = 2
92576       --
92577       THEN
92578       xla_accounting_err_pkg.build_message
92582                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
92579                                     (p_appli_s_name            => 'XLA'
92580                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92581                                     ,p_token_1                 => 'LINE_NUMBER'
92583                                     ,p_token_2                 => 'LINE_TYPE_NAME'
92584                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
92585                                                                              l_component_type
92586                                                                             ,l_component_code
92587                                                                             ,l_component_type_code
92588                                                                             ,l_component_appl_id
92589                                                                             ,l_amb_context_code
92590                                                                             ,l_entity_code
92591                                                                             ,l_event_class_code
92592                                                                            )
92593                                     ,p_token_3                 => 'OWNER'
92594                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
92595                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
92596                                                                           ,p_lookup_code    => l_component_type_code
92597                                                                          )
92598                                     ,p_token_4                 => 'PRODUCT_NAME'
92599                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
92600                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
92601                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
92602                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
92603                                     ,p_ae_header_id            =>  NULL
92604                                        );
92605 
92606         IF (C_LEVEL_ERROR>= g_log_level) THEN
92607                  trace
92608                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92609                       ,p_level    => C_LEVEL_ERROR
92610                       ,p_module   => l_log_module);
92611         END IF;
92612       END IF;
92613    END IF;
92614    --
92615    --
92616    ------------------------------------------------------------------------------------------------
92617    -- 4219869 Business Flow
92618    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
92619    -- Prior Entry.  Currently, the following code is always generated.
92620    ------------------------------------------------------------------------------------------------
92621    XLA_AE_LINES_PKG.ValidateCurrentLine;
92622 
92623    ------------------------------------------------------------------------------------
92624    -- 4219869 Business Flow
92625    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
92626    ------------------------------------------------------------------------------------
92627    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92628 
92629    ----------------------------------------------------------------------------------
92630    -- 4219869 Business Flow
92631    -- Update journal entry status -- Need to generate this within IF <condition>
92632    ----------------------------------------------------------------------------------
92633    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92634          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
92635          ,p_balance_type_code => l_balance_type_code
92636          );
92637 
92638    -------------------------------------------------------------------------------------------
92639    -- 4262811 - Generate the Accrual Reversal lines
92640    -------------------------------------------------------------------------------------------
92641    BEGIN
92642       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
92643                               (g_array_event(p_event_id).array_value_num('header_index'));
92644       IF l_acc_rev_flag IS NULL THEN
92645          l_acc_rev_flag := 'N';
92646       END IF;
92647    EXCEPTION
92648       WHEN OTHERS THEN
92649          l_acc_rev_flag := 'N';
92650    END;
92651    --
92652    IF (l_acc_rev_flag = 'Y') THEN
92653 
92654        -- 4645092  ------------------------------------------------------------------------------
92655        -- To allow MPA report to determine if it should generate report process
92656        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
92657        ------------------------------------------------------------------------------------------
92658 
92659        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
92660        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
92661    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
92662    -- call ADRs
92663    -- Bug 4922099
92664    --
92665    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92666         (NVL(l_actual_upg_option, 'N') = 'O') OR
92667         (NVL(l_enc_upg_option, 'N') = 'O')
92668       )
92669    THEN
92670    NULL;
92671    --
92675            p_application_id           => p_application_id
92672    --
92673    
92674   l_ccid := AcctDerRule_25(
92676          , p_ae_header_id             => l_ae_header_id 
92677 , p_source_1 => p_source_1
92678 , p_source_2 => p_source_2
92679          , x_transaction_coa_id       => l_adr_transaction_coa_id
92680          , x_accounting_coa_id        => l_adr_accounting_coa_id
92681          , x_value_type_code          => l_adr_value_type_code
92682          , p_side                     => 'NA'
92683    );
92684 
92685    xla_ae_lines_pkg.set_ccid(
92686     p_code_combination_id          => l_ccid
92687   , p_value_type_code              => l_adr_value_type_code
92688   , p_transaction_coa_id           => l_adr_transaction_coa_id
92689   , p_accounting_coa_id            => l_adr_accounting_coa_id
92690   , p_adr_code                     => 'ISP'
92691   , p_adr_type_code                => 'S'
92692   , p_component_type               => l_component_type
92693   , p_component_code               => l_component_code
92694   , p_component_type_code          => l_component_type_code
92695   , p_component_appl_id            => l_component_appl_id
92696   , p_amb_context_code             => l_amb_context_code
92697   , p_side                         => 'NA'
92698   );
92699 
92700 
92701    --
92702    --
92703    END IF;
92704 
92705        --
92706        -- Update the line information that should be overwritten
92707        --
92708        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
92709                                          p_header_num   => 1);
92710        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
92711 
92712        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
92713 
92714        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
92715           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
92716        END IF;
92717 
92718       --
92719       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
92720       --
92721       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
92722           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
92723       ELSE
92724           ---------------------------------------------------------------------------------------------------
92725           -- 4262811a Switch Sign
92726           ---------------------------------------------------------------------------------------------------
92727           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
92728           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92729                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92730           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92731                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92732           -- 5132302
92733           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
92734                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92735 
92736       END IF;
92737 
92738       -- 4955764
92739       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92740       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
92741 
92742 
92743       XLA_AE_LINES_PKG.ValidateCurrentLine;
92744       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92745 
92746       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92747                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
92748                ,p_balance_type_code => l_balance_type_code);
92749 
92750    END IF;
92751 
92752    -----------------------------------------------------------------------------------------
92753    -- 4262811 Multiperiod Accounting
92754    -----------------------------------------------------------------------------------------
92755      -- No MPA option is assigned.
92756 
92757 
92758 END IF;
92759 END IF;
92760 --
92761 
92762 --
92763 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92764    trace
92765       (p_msg      => 'END of AcctLineType_199'
92766       ,p_level    => C_LEVEL_PROCEDURE
92767       ,p_module   => l_log_module);
92768 END IF;
92769 --
92770 EXCEPTION
92771   WHEN xla_exceptions_pkg.application_exception THEN
92772       RAISE;
92773   WHEN OTHERS THEN
92774        xla_exceptions_pkg.raise_message
92775            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_199');
92776 END AcctLineType_199;
92777 --
92778 
92779 ---------------------------------------
92780 --
92781 -- PRIVATE FUNCTION
92782 --         AcctLineType_200
92783 --
92784 ---------------------------------------
92785 PROCEDURE AcctLineType_200 (
92786   p_application_id        IN NUMBER
92787  ,p_event_id              IN NUMBER
92788  ,p_calculate_acctd_flag  IN VARCHAR2
92789  ,p_calculate_g_l_flag    IN VARCHAR2
92790  ,p_actual_flag           IN OUT VARCHAR2
92791  ,p_balance_type_code     OUT VARCHAR2
92792  ,p_gain_or_loss_ref      OUT VARCHAR2
92793  
92797  , p_source_2            IN VARCHAR2
92794 --Transaction Account
92795  , p_source_1            IN NUMBER
92796 --Journal Line Type
92798 --Entered Amount
92799  , p_source_3            IN NUMBER
92800 --First Distribution Identifier
92801  , p_source_5            IN NUMBER
92802 --Distribution Type
92803  , p_source_6            IN VARCHAR2
92804 --Currency Code
92805  , p_source_7            IN VARCHAR2
92806 --Currency Conversion Date
92807  , p_source_8            IN DATE
92808 --Currency Conversion Rate
92809  , p_source_9            IN NUMBER
92810 --Currency Conversion Type
92811  , p_source_10            IN VARCHAR2
92812 --Accounted Amount
92813  , p_source_11            IN NUMBER
92814 )
92815 IS
92816 
92817 l_component_type              VARCHAR2(80);
92818 l_component_code              VARCHAR2(30);
92819 l_component_type_code         VARCHAR2(1);
92820 l_component_appl_id           INTEGER;
92821 l_amb_context_code            VARCHAR2(30);
92822 l_entity_code                 VARCHAR2(30);
92823 l_event_class_code            VARCHAR2(30);
92824 l_ae_header_id                NUMBER;
92825 l_event_type_code             VARCHAR2(30);
92826 l_line_definition_code        VARCHAR2(30);
92827 l_line_definition_owner_code  VARCHAR2(1);
92828 --
92829 -- adr variables
92830 l_segment                     VARCHAR2(30);
92831 l_ccid                        NUMBER;
92832 l_adr_transaction_coa_id      NUMBER;
92833 l_adr_accounting_coa_id       NUMBER;
92834 l_adr_flexfield_segment_code  VARCHAR2(30);
92835 l_adr_flex_value_set_id       NUMBER;
92836 l_adr_value_type_code         VARCHAR2(30);
92837 l_adr_value_combination_id    NUMBER;
92838 l_adr_value_segment_code      VARCHAR2(30);
92839 
92840 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
92841 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
92842 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
92843 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
92844 
92845 -- 4262811 Variables ------------------------------------------------------------------------------------------
92846 l_entered_amt_idx             NUMBER;
92847 l_accted_amt_idx              NUMBER;
92848 l_acc_rev_flag                VARCHAR2(1);
92849 l_accrual_line_num            NUMBER;
92850 l_tmp_amt                     NUMBER;
92851 l_acc_rev_natural_side_code   VARCHAR2(1);
92852 
92853 l_num_entries                 NUMBER;
92854 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
92855 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
92856 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
92857 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
92858 l_recog_line_1                NUMBER;
92859 l_recog_line_2                NUMBER;
92860 
92861 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
92862 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
92863 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
92864 
92865 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
92866 
92867 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
92868 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
92869 
92870 ---------------------------------------------------------------------------------------------------------------
92871 
92872 
92873 --
92874 -- bulk performance
92875 --
92876 l_balance_type_code           VARCHAR2(1);
92877 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
92878 l_log_module                  VARCHAR2(240);
92879 
92880 --
92881 -- Upgrade strategy
92882 --
92883 l_actual_upg_option           VARCHAR2(1);
92884 l_enc_upg_option           VARCHAR2(1);
92885 
92886 --
92887 BEGIN
92888 --
92889 IF g_log_enabled THEN
92890       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_200';
92891 END IF;
92892 --
92893 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92894 
92895       trace
92896          (p_msg      => 'BEGIN of AcctLineType_200'
92897          ,p_level    => C_LEVEL_PROCEDURE
92898          ,p_module   => l_log_module);
92899 
92900 END IF;
92901 --
92902 l_component_type             := 'AMB_JLT';
92903 l_component_code             := 'ISP';
92904 l_component_type_code        := 'S';
92905 l_component_appl_id          :=  555;
92906 l_amb_context_code           := 'DEFAULT';
92907 l_entity_code                := 'PURCHASING';
92908 l_event_class_code           := 'RECEIVE';
92909 l_event_type_code            := 'ADJUST_RECEIVE';
92910 l_line_definition_owner_code := 'S';
92911 l_line_definition_code       := 'ADJUST_RECEIVE';
92912 --
92913 l_balance_type_code          := 'A';
92914 l_segment                     := NULL;
92915 l_ccid                        := NULL;
92916 l_adr_transaction_coa_id      := NULL;
92917 l_adr_accounting_coa_id       := NULL;
92918 l_adr_flexfield_segment_code  := NULL;
92919 l_adr_flex_value_set_id       := NULL;
92920 l_adr_value_type_code         := NULL;
92921 l_adr_value_combination_id    := NULL;
92922 l_adr_value_segment_code      := NULL;
92923 
92924 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
92928 
92925 l_bflow_class_code           := '';    -- 4219869 Business Flow
92926 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
92927 l_budgetary_control_flag     := 'N';
92929 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
92930 l_bflow_applied_to_amt       := NULL; -- 5132302
92931 l_entered_amt_idx            := NULL;          -- 4262811
92932 l_accted_amt_idx             := NULL;          -- 4262811
92933 l_acc_rev_flag               := NULL;          -- 4262811
92934 l_accrual_line_num           := NULL;          -- 4262811
92935 l_tmp_amt                    := NULL;          -- 4262811
92936 --
92937  
92938 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
92939     l_balance_type_code <> 'B' THEN
92940 IF NVL(p_source_2,'
92941 ') =  'ISP'
92942  THEN 
92943 
92944    --
92945    XLA_AE_LINES_PKG.SetNewLine;
92946 
92947    p_balance_type_code          := l_balance_type_code;
92948    -- set the flag so later we will know whether the gain loss line needs to be created
92949    
92950    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
92951      p_actual_flag :='A';
92952    END IF;
92953 
92954    --
92955    -- bulk performance
92956    --
92957    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
92958                                       p_header_num   => 0); -- 4262811
92959    --
92960    -- set accounting line options
92961    --
92962    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
92963            p_natural_side_code          => 'D'
92964          , p_gain_or_loss_flag          => 'N'
92965          , p_gl_transfer_mode_code      => 'D'
92966          , p_acct_entry_type_code       => 'A'
92967          , p_switch_side_flag           => 'Y'
92968          , p_merge_duplicate_code       => 'W'
92969          );
92970    --
92971    l_acc_rev_natural_side_code := 'C';  -- 4262811
92972    -- 
92973    --
92974    -- set accounting line type info
92975    --
92976    xla_ae_lines_pkg.SetAcctLineType
92977       (p_component_type             => l_component_type
92978       ,p_event_type_code            => l_event_type_code
92979       ,p_line_definition_owner_code => l_line_definition_owner_code
92980       ,p_line_definition_code       => l_line_definition_code
92981       ,p_accounting_line_code       => l_component_code
92982       ,p_accounting_line_type_code  => l_component_type_code
92983       ,p_accounting_line_appl_id    => l_component_appl_id
92984       ,p_amb_context_code           => l_amb_context_code
92985       ,p_entity_code                => l_entity_code
92986       ,p_event_class_code           => l_event_class_code);
92987    --
92988    -- set accounting class
92989    --
92990    xla_ae_lines_pkg.SetAcctClass(
92991            p_accounting_class_code  => 'RECEIVING_INSPECTION'
92992          , p_ae_header_id           => l_ae_header_id
92993          );
92994 
92995    --
92996    -- set rounding class
92997    --
92998    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
92999                       'RECEIVING_INSPECTION';
93000 
93001    --
93002    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
93003    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
93004    --
93005    -- bulk performance
93006    --
93007    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
93008 
93009    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
93010       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
93011 
93012    -- 4955764
93013    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93014       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
93015 
93016    -- 4458381 Public Sector Enh
93017    
93018    --
93019    -- set accounting attributes for the line type
93020    --
93021    l_entered_amt_idx := 3;
93022    l_accted_amt_idx  := 8;
93023    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
93024    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
93025    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
93026    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
93027    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
93028    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
93029    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
93030    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
93031    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
93032    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
93033    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
93034    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
93035    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
93036    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
93037    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
93038    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
93039    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
93040 
93041    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
93042    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
93043 
93047    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
93044    ---------------------------------------------------------------------------------------------------------------
93045    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
93046    ---------------------------------------------------------------------------------------------------------------
93048 
93049    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93050    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93051 
93052    IF xla_accounting_cache_pkg.GetValueChar
93053          (p_source_code         => 'LEDGER_CATEGORY_CODE'
93054          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
93055    AND l_bflow_method_code = 'PRIOR_ENTRY'
93056 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
93057    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
93058          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
93059        )
93060    THEN
93061          xla_ae_lines_pkg.BflowUpgEntry
93062            (p_business_method_code    => l_bflow_method_code
93063            ,p_business_class_code     => l_bflow_class_code
93064            ,p_balance_type            => l_balance_type_code);
93065    ELSE
93066       NULL;
93067 -- No business flow processing for business flow method of NONE.
93068    END IF;
93069 
93070    --
93071    -- call analytical criteria
93072    --
93073    
93074    --
93075    -- call description
93076    --
93077    -- No description or it is inherited.
93078    --
93079    -- call ADRs
93080    -- Bug 4922099
93081    --
93082    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93083         (NVL(l_actual_upg_option, 'N') = 'O') OR
93084         (NVL(l_enc_upg_option, 'N') = 'O')
93085       )
93086    THEN
93087    NULL;
93088    --
93089    --
93090    
93091   l_ccid := AcctDerRule_25(
93092            p_application_id           => p_application_id
93093          , p_ae_header_id             => l_ae_header_id 
93094 , p_source_1 => p_source_1
93095 , p_source_2 => p_source_2
93096          , x_transaction_coa_id       => l_adr_transaction_coa_id
93097          , x_accounting_coa_id        => l_adr_accounting_coa_id
93098          , x_value_type_code          => l_adr_value_type_code
93099          , p_side                     => 'NA'
93100    );
93101 
93102    xla_ae_lines_pkg.set_ccid(
93103     p_code_combination_id          => l_ccid
93104   , p_value_type_code              => l_adr_value_type_code
93105   , p_transaction_coa_id           => l_adr_transaction_coa_id
93106   , p_accounting_coa_id            => l_adr_accounting_coa_id
93107   , p_adr_code                     => 'ISP'
93108   , p_adr_type_code                => 'S'
93109   , p_component_type               => l_component_type
93110   , p_component_code               => l_component_code
93111   , p_component_type_code          => l_component_type_code
93112   , p_component_appl_id            => l_component_appl_id
93113   , p_amb_context_code             => l_amb_context_code
93114   , p_side                         => 'NA'
93115   );
93116 
93117 
93118    --
93119    --
93120    END IF;
93121    --
93122    -- Bug 4922099
93123    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
93124           (NVL(l_enc_upg_option, 'N') = 'O')
93125         ) AND
93126         (l_bflow_method_code = 'PRIOR_ENTRY')
93127       )
93128    THEN
93129       IF
93130       --
93131       1 = 2
93132       --
93133       THEN
93134       xla_accounting_err_pkg.build_message
93135                                     (p_appli_s_name            => 'XLA'
93136                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93137                                     ,p_token_1                 => 'LINE_NUMBER'
93138                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
93139                                     ,p_token_2                 => 'LINE_TYPE_NAME'
93140                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
93141                                                                              l_component_type
93142                                                                             ,l_component_code
93143                                                                             ,l_component_type_code
93144                                                                             ,l_component_appl_id
93145                                                                             ,l_amb_context_code
93146                                                                             ,l_entity_code
93147                                                                             ,l_event_class_code
93148                                                                            )
93149                                     ,p_token_3                 => 'OWNER'
93150                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
93151                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
93152                                                                           ,p_lookup_code    => l_component_type_code
93153                                                                          )
93154                                     ,p_token_4                 => 'PRODUCT_NAME'
93158                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
93155                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
93156                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
93157                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
93159                                     ,p_ae_header_id            =>  NULL
93160                                        );
93161 
93162         IF (C_LEVEL_ERROR>= g_log_level) THEN
93163                  trace
93164                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93165                       ,p_level    => C_LEVEL_ERROR
93166                       ,p_module   => l_log_module);
93167         END IF;
93168       END IF;
93169    END IF;
93170    --
93171    --
93172    ------------------------------------------------------------------------------------------------
93173    -- 4219869 Business Flow
93174    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
93175    -- Prior Entry.  Currently, the following code is always generated.
93176    ------------------------------------------------------------------------------------------------
93177    XLA_AE_LINES_PKG.ValidateCurrentLine;
93178 
93179    ------------------------------------------------------------------------------------
93180    -- 4219869 Business Flow
93181    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
93182    ------------------------------------------------------------------------------------
93183    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93184 
93185    ----------------------------------------------------------------------------------
93186    -- 4219869 Business Flow
93187    -- Update journal entry status -- Need to generate this within IF <condition>
93188    ----------------------------------------------------------------------------------
93189    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93190          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
93191          ,p_balance_type_code => l_balance_type_code
93192          );
93193 
93194    -------------------------------------------------------------------------------------------
93195    -- 4262811 - Generate the Accrual Reversal lines
93196    -------------------------------------------------------------------------------------------
93197    BEGIN
93198       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
93199                               (g_array_event(p_event_id).array_value_num('header_index'));
93200       IF l_acc_rev_flag IS NULL THEN
93201          l_acc_rev_flag := 'N';
93202       END IF;
93203    EXCEPTION
93204       WHEN OTHERS THEN
93205          l_acc_rev_flag := 'N';
93206    END;
93207    --
93208    IF (l_acc_rev_flag = 'Y') THEN
93209 
93210        -- 4645092  ------------------------------------------------------------------------------
93211        -- To allow MPA report to determine if it should generate report process
93212        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
93213        ------------------------------------------------------------------------------------------
93214 
93215        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
93216        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
93217    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
93218    -- call ADRs
93219    -- Bug 4922099
93220    --
93221    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93222         (NVL(l_actual_upg_option, 'N') = 'O') OR
93223         (NVL(l_enc_upg_option, 'N') = 'O')
93224       )
93225    THEN
93226    NULL;
93227    --
93228    --
93229    
93230   l_ccid := AcctDerRule_25(
93231            p_application_id           => p_application_id
93232          , p_ae_header_id             => l_ae_header_id 
93233 , p_source_1 => p_source_1
93234 , p_source_2 => p_source_2
93235          , x_transaction_coa_id       => l_adr_transaction_coa_id
93236          , x_accounting_coa_id        => l_adr_accounting_coa_id
93237          , x_value_type_code          => l_adr_value_type_code
93238          , p_side                     => 'NA'
93239    );
93240 
93241    xla_ae_lines_pkg.set_ccid(
93242     p_code_combination_id          => l_ccid
93243   , p_value_type_code              => l_adr_value_type_code
93244   , p_transaction_coa_id           => l_adr_transaction_coa_id
93245   , p_accounting_coa_id            => l_adr_accounting_coa_id
93246   , p_adr_code                     => 'ISP'
93247   , p_adr_type_code                => 'S'
93248   , p_component_type               => l_component_type
93249   , p_component_code               => l_component_code
93250   , p_component_type_code          => l_component_type_code
93251   , p_component_appl_id            => l_component_appl_id
93252   , p_amb_context_code             => l_amb_context_code
93253   , p_side                         => 'NA'
93254   );
93255 
93256 
93257    --
93258    --
93259    END IF;
93260 
93261        --
93262        -- Update the line information that should be overwritten
93263        --
93264        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
93265                                          p_header_num   => 1);
93266        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
93270        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
93267 
93268        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
93269 
93271           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
93272        END IF;
93273 
93274       --
93275       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
93276       --
93277       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
93278           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
93279       ELSE
93280           ---------------------------------------------------------------------------------------------------
93281           -- 4262811a Switch Sign
93282           ---------------------------------------------------------------------------------------------------
93283           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
93284           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93285                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93286           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93287                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93288           -- 5132302
93289           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
93290                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93291 
93292       END IF;
93293 
93294       -- 4955764
93295       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93296       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
93297 
93298 
93299       XLA_AE_LINES_PKG.ValidateCurrentLine;
93300       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93301 
93302       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93303                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
93304                ,p_balance_type_code => l_balance_type_code);
93305 
93306    END IF;
93307 
93308    -----------------------------------------------------------------------------------------
93309    -- 4262811 Multiperiod Accounting
93310    -----------------------------------------------------------------------------------------
93311      -- No MPA option is assigned.
93312 
93313 
93314 END IF;
93315 END IF;
93316 --
93317 
93318 --
93319 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93320    trace
93321       (p_msg      => 'END of AcctLineType_200'
93322       ,p_level    => C_LEVEL_PROCEDURE
93323       ,p_module   => l_log_module);
93324 END IF;
93325 --
93326 EXCEPTION
93327   WHEN xla_exceptions_pkg.application_exception THEN
93328       RAISE;
93329   WHEN OTHERS THEN
93330        xla_exceptions_pkg.raise_message
93331            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_200');
93332 END AcctLineType_200;
93333 --
93334 
93335 ---------------------------------------
93336 --
93337 -- PRIVATE FUNCTION
93338 --         AcctLineType_201
93339 --
93340 ---------------------------------------
93341 PROCEDURE AcctLineType_201 (
93342   p_application_id        IN NUMBER
93343  ,p_event_id              IN NUMBER
93344  ,p_calculate_acctd_flag  IN VARCHAR2
93345  ,p_calculate_g_l_flag    IN VARCHAR2
93346  ,p_actual_flag           IN OUT VARCHAR2
93347  ,p_balance_type_code     OUT VARCHAR2
93348  ,p_gain_or_loss_ref      OUT VARCHAR2
93349  
93350 --Transaction Account
93351  , p_source_1            IN NUMBER
93352 --Journal Line Type
93353  , p_source_2            IN VARCHAR2
93354 --Entered Amount
93355  , p_source_3            IN NUMBER
93356 --First Distribution Identifier
93357  , p_source_5            IN NUMBER
93358 --Distribution Type
93359  , p_source_6            IN VARCHAR2
93360 --Currency Code
93361  , p_source_7            IN VARCHAR2
93362 --Currency Conversion Date
93363  , p_source_8            IN DATE
93364 --Currency Conversion Rate
93365  , p_source_9            IN NUMBER
93366 --Currency Conversion Type
93367  , p_source_10            IN VARCHAR2
93368 --Accounted Amount
93369  , p_source_11            IN NUMBER
93370 )
93371 IS
93372 
93373 l_component_type              VARCHAR2(80);
93374 l_component_code              VARCHAR2(30);
93375 l_component_type_code         VARCHAR2(1);
93376 l_component_appl_id           INTEGER;
93377 l_amb_context_code            VARCHAR2(30);
93378 l_entity_code                 VARCHAR2(30);
93379 l_event_class_code            VARCHAR2(30);
93380 l_ae_header_id                NUMBER;
93381 l_event_type_code             VARCHAR2(30);
93382 l_line_definition_code        VARCHAR2(30);
93383 l_line_definition_owner_code  VARCHAR2(1);
93384 --
93385 -- adr variables
93386 l_segment                     VARCHAR2(30);
93387 l_ccid                        NUMBER;
93388 l_adr_transaction_coa_id      NUMBER;
93389 l_adr_accounting_coa_id       NUMBER;
93390 l_adr_flexfield_segment_code  VARCHAR2(30);
93391 l_adr_flex_value_set_id       NUMBER;
93392 l_adr_value_type_code         VARCHAR2(30);
93396 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
93393 l_adr_value_combination_id    NUMBER;
93394 l_adr_value_segment_code      VARCHAR2(30);
93395 
93397 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
93398 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
93399 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
93400 
93401 -- 4262811 Variables ------------------------------------------------------------------------------------------
93402 l_entered_amt_idx             NUMBER;
93403 l_accted_amt_idx              NUMBER;
93404 l_acc_rev_flag                VARCHAR2(1);
93405 l_accrual_line_num            NUMBER;
93406 l_tmp_amt                     NUMBER;
93407 l_acc_rev_natural_side_code   VARCHAR2(1);
93408 
93409 l_num_entries                 NUMBER;
93410 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
93411 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
93412 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
93413 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
93414 l_recog_line_1                NUMBER;
93415 l_recog_line_2                NUMBER;
93416 
93417 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
93418 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
93419 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
93420 
93421 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
93422 
93423 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
93424 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
93425 
93426 ---------------------------------------------------------------------------------------------------------------
93427 
93428 
93429 --
93430 -- bulk performance
93431 --
93432 l_balance_type_code           VARCHAR2(1);
93433 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
93434 l_log_module                  VARCHAR2(240);
93435 
93436 --
93437 -- Upgrade strategy
93438 --
93439 l_actual_upg_option           VARCHAR2(1);
93440 l_enc_upg_option           VARCHAR2(1);
93441 
93442 --
93443 BEGIN
93444 --
93445 IF g_log_enabled THEN
93446       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_201';
93447 END IF;
93448 --
93449 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93450 
93451       trace
93452          (p_msg      => 'BEGIN of AcctLineType_201'
93453          ,p_level    => C_LEVEL_PROCEDURE
93454          ,p_module   => l_log_module);
93455 
93456 END IF;
93457 --
93458 l_component_type             := 'AMB_JLT';
93459 l_component_code             := 'ISP';
93460 l_component_type_code        := 'S';
93461 l_component_appl_id          :=  555;
93462 l_amb_context_code           := 'DEFAULT';
93463 l_entity_code                := 'PURCHASING';
93464 l_event_class_code           := 'RECEIVE';
93465 l_event_type_code            := 'RECEIVE';
93466 l_line_definition_owner_code := 'S';
93467 l_line_definition_code       := 'RECEIVE';
93468 --
93469 l_balance_type_code          := 'A';
93470 l_segment                     := NULL;
93471 l_ccid                        := NULL;
93472 l_adr_transaction_coa_id      := NULL;
93473 l_adr_accounting_coa_id       := NULL;
93474 l_adr_flexfield_segment_code  := NULL;
93475 l_adr_flex_value_set_id       := NULL;
93476 l_adr_value_type_code         := NULL;
93477 l_adr_value_combination_id    := NULL;
93478 l_adr_value_segment_code      := NULL;
93479 
93480 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
93481 l_bflow_class_code           := '';    -- 4219869 Business Flow
93482 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
93483 l_budgetary_control_flag     := 'N';
93484 
93485 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
93486 l_bflow_applied_to_amt       := NULL; -- 5132302
93487 l_entered_amt_idx            := NULL;          -- 4262811
93488 l_accted_amt_idx             := NULL;          -- 4262811
93489 l_acc_rev_flag               := NULL;          -- 4262811
93490 l_accrual_line_num           := NULL;          -- 4262811
93491 l_tmp_amt                    := NULL;          -- 4262811
93492 --
93493  
93494 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
93495     l_balance_type_code <> 'B' THEN
93496 IF NVL(p_source_2,'
93497 ') =  'ISP'
93498  THEN 
93499 
93500    --
93501    XLA_AE_LINES_PKG.SetNewLine;
93502 
93503    p_balance_type_code          := l_balance_type_code;
93504    -- set the flag so later we will know whether the gain loss line needs to be created
93505    
93506    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
93507      p_actual_flag :='A';
93508    END IF;
93509 
93510    --
93511    -- bulk performance
93512    --
93513    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
93514                                       p_header_num   => 0); -- 4262811
93515    --
93516    -- set accounting line options
93517    --
93518    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
93519            p_natural_side_code          => 'D'
93520          , p_gain_or_loss_flag          => 'N'
93521          , p_gl_transfer_mode_code      => 'D'
93525          );
93522          , p_acct_entry_type_code       => 'A'
93523          , p_switch_side_flag           => 'Y'
93524          , p_merge_duplicate_code       => 'W'
93526    --
93527    l_acc_rev_natural_side_code := 'C';  -- 4262811
93528    -- 
93529    --
93530    -- set accounting line type info
93531    --
93532    xla_ae_lines_pkg.SetAcctLineType
93533       (p_component_type             => l_component_type
93534       ,p_event_type_code            => l_event_type_code
93535       ,p_line_definition_owner_code => l_line_definition_owner_code
93536       ,p_line_definition_code       => l_line_definition_code
93537       ,p_accounting_line_code       => l_component_code
93538       ,p_accounting_line_type_code  => l_component_type_code
93539       ,p_accounting_line_appl_id    => l_component_appl_id
93540       ,p_amb_context_code           => l_amb_context_code
93541       ,p_entity_code                => l_entity_code
93542       ,p_event_class_code           => l_event_class_code);
93543    --
93544    -- set accounting class
93545    --
93546    xla_ae_lines_pkg.SetAcctClass(
93547            p_accounting_class_code  => 'RECEIVING_INSPECTION'
93548          , p_ae_header_id           => l_ae_header_id
93549          );
93550 
93551    --
93552    -- set rounding class
93553    --
93554    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
93555                       'RECEIVING_INSPECTION';
93556 
93557    --
93558    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
93559    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
93560    --
93561    -- bulk performance
93562    --
93563    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
93564 
93565    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
93566       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
93567 
93568    -- 4955764
93569    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93570       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
93571 
93572    -- 4458381 Public Sector Enh
93573    
93574    --
93575    -- set accounting attributes for the line type
93576    --
93577    l_entered_amt_idx := 3;
93578    l_accted_amt_idx  := 8;
93579    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
93580    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
93581    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
93582    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
93583    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
93584    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
93585    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
93586    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
93587    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
93588    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
93589    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
93590    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
93591    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
93592    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
93593    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
93594    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
93595    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
93596 
93597    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
93598    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
93599 
93600    ---------------------------------------------------------------------------------------------------------------
93601    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
93602    ---------------------------------------------------------------------------------------------------------------
93603    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
93604 
93605    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93606    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93607 
93608    IF xla_accounting_cache_pkg.GetValueChar
93609          (p_source_code         => 'LEDGER_CATEGORY_CODE'
93610          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
93611    AND l_bflow_method_code = 'PRIOR_ENTRY'
93612 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
93613    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
93614          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
93615        )
93616    THEN
93617          xla_ae_lines_pkg.BflowUpgEntry
93618            (p_business_method_code    => l_bflow_method_code
93619            ,p_business_class_code     => l_bflow_class_code
93620            ,p_balance_type            => l_balance_type_code);
93621    ELSE
93622       NULL;
93623 -- No business flow processing for business flow method of NONE.
93624    END IF;
93625 
93626    --
93627    -- call analytical criteria
93628    --
93629    
93630    --
93631    -- call description
93632    --
93633    -- No description or it is inherited.
93634    --
93635    -- call ADRs
93636    -- Bug 4922099
93640         (NVL(l_enc_upg_option, 'N') = 'O')
93637    --
93638    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93639         (NVL(l_actual_upg_option, 'N') = 'O') OR
93641       )
93642    THEN
93643    NULL;
93644    --
93645    --
93646    
93647   l_ccid := AcctDerRule_25(
93648            p_application_id           => p_application_id
93649          , p_ae_header_id             => l_ae_header_id 
93650 , p_source_1 => p_source_1
93651 , p_source_2 => p_source_2
93652          , x_transaction_coa_id       => l_adr_transaction_coa_id
93653          , x_accounting_coa_id        => l_adr_accounting_coa_id
93654          , x_value_type_code          => l_adr_value_type_code
93655          , p_side                     => 'NA'
93656    );
93657 
93658    xla_ae_lines_pkg.set_ccid(
93659     p_code_combination_id          => l_ccid
93660   , p_value_type_code              => l_adr_value_type_code
93661   , p_transaction_coa_id           => l_adr_transaction_coa_id
93662   , p_accounting_coa_id            => l_adr_accounting_coa_id
93663   , p_adr_code                     => 'ISP'
93664   , p_adr_type_code                => 'S'
93665   , p_component_type               => l_component_type
93666   , p_component_code               => l_component_code
93667   , p_component_type_code          => l_component_type_code
93668   , p_component_appl_id            => l_component_appl_id
93669   , p_amb_context_code             => l_amb_context_code
93670   , p_side                         => 'NA'
93671   );
93672 
93673 
93674    --
93675    --
93676    END IF;
93677    --
93678    -- Bug 4922099
93679    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
93680           (NVL(l_enc_upg_option, 'N') = 'O')
93681         ) AND
93682         (l_bflow_method_code = 'PRIOR_ENTRY')
93683       )
93684    THEN
93685       IF
93686       --
93687       1 = 2
93688       --
93689       THEN
93690       xla_accounting_err_pkg.build_message
93691                                     (p_appli_s_name            => 'XLA'
93692                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93693                                     ,p_token_1                 => 'LINE_NUMBER'
93694                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
93695                                     ,p_token_2                 => 'LINE_TYPE_NAME'
93696                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
93697                                                                              l_component_type
93698                                                                             ,l_component_code
93699                                                                             ,l_component_type_code
93700                                                                             ,l_component_appl_id
93701                                                                             ,l_amb_context_code
93702                                                                             ,l_entity_code
93703                                                                             ,l_event_class_code
93704                                                                            )
93705                                     ,p_token_3                 => 'OWNER'
93706                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
93707                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
93708                                                                           ,p_lookup_code    => l_component_type_code
93709                                                                          )
93710                                     ,p_token_4                 => 'PRODUCT_NAME'
93711                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
93712                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
93713                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
93714                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
93715                                     ,p_ae_header_id            =>  NULL
93716                                        );
93717 
93718         IF (C_LEVEL_ERROR>= g_log_level) THEN
93719                  trace
93720                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93721                       ,p_level    => C_LEVEL_ERROR
93722                       ,p_module   => l_log_module);
93723         END IF;
93724       END IF;
93725    END IF;
93726    --
93727    --
93728    ------------------------------------------------------------------------------------------------
93729    -- 4219869 Business Flow
93730    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
93731    -- Prior Entry.  Currently, the following code is always generated.
93732    ------------------------------------------------------------------------------------------------
93733    XLA_AE_LINES_PKG.ValidateCurrentLine;
93734 
93735    ------------------------------------------------------------------------------------
93736    -- 4219869 Business Flow
93737    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
93738    ------------------------------------------------------------------------------------
93739    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93740 
93744    ----------------------------------------------------------------------------------
93741    ----------------------------------------------------------------------------------
93742    -- 4219869 Business Flow
93743    -- Update journal entry status -- Need to generate this within IF <condition>
93745    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93746          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
93747          ,p_balance_type_code => l_balance_type_code
93748          );
93749 
93750    -------------------------------------------------------------------------------------------
93751    -- 4262811 - Generate the Accrual Reversal lines
93752    -------------------------------------------------------------------------------------------
93753    BEGIN
93754       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
93755                               (g_array_event(p_event_id).array_value_num('header_index'));
93756       IF l_acc_rev_flag IS NULL THEN
93757          l_acc_rev_flag := 'N';
93758       END IF;
93759    EXCEPTION
93760       WHEN OTHERS THEN
93761          l_acc_rev_flag := 'N';
93762    END;
93763    --
93764    IF (l_acc_rev_flag = 'Y') THEN
93765 
93766        -- 4645092  ------------------------------------------------------------------------------
93767        -- To allow MPA report to determine if it should generate report process
93768        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
93769        ------------------------------------------------------------------------------------------
93770 
93771        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
93772        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
93773    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
93774    -- call ADRs
93775    -- Bug 4922099
93776    --
93777    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93778         (NVL(l_actual_upg_option, 'N') = 'O') OR
93779         (NVL(l_enc_upg_option, 'N') = 'O')
93780       )
93781    THEN
93782    NULL;
93783    --
93784    --
93785    
93786   l_ccid := AcctDerRule_25(
93787            p_application_id           => p_application_id
93788          , p_ae_header_id             => l_ae_header_id 
93789 , p_source_1 => p_source_1
93790 , p_source_2 => p_source_2
93791          , x_transaction_coa_id       => l_adr_transaction_coa_id
93792          , x_accounting_coa_id        => l_adr_accounting_coa_id
93793          , x_value_type_code          => l_adr_value_type_code
93794          , p_side                     => 'NA'
93795    );
93796 
93797    xla_ae_lines_pkg.set_ccid(
93798     p_code_combination_id          => l_ccid
93799   , p_value_type_code              => l_adr_value_type_code
93800   , p_transaction_coa_id           => l_adr_transaction_coa_id
93801   , p_accounting_coa_id            => l_adr_accounting_coa_id
93802   , p_adr_code                     => 'ISP'
93803   , p_adr_type_code                => 'S'
93804   , p_component_type               => l_component_type
93805   , p_component_code               => l_component_code
93806   , p_component_type_code          => l_component_type_code
93807   , p_component_appl_id            => l_component_appl_id
93808   , p_amb_context_code             => l_amb_context_code
93809   , p_side                         => 'NA'
93810   );
93811 
93812 
93813    --
93814    --
93815    END IF;
93816 
93817        --
93818        -- Update the line information that should be overwritten
93819        --
93820        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
93821                                          p_header_num   => 1);
93822        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
93823 
93824        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
93825 
93826        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
93827           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
93828        END IF;
93829 
93830       --
93831       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
93832       --
93833       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
93834           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
93835       ELSE
93836           ---------------------------------------------------------------------------------------------------
93837           -- 4262811a Switch Sign
93838           ---------------------------------------------------------------------------------------------------
93839           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
93840           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93841                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93842           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93843                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93844           -- 5132302
93845           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
93846                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93847 
93848       END IF;
93849 
93853 
93850       -- 4955764
93851       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93852       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
93854 
93855       XLA_AE_LINES_PKG.ValidateCurrentLine;
93856       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93857 
93858       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93859                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
93860                ,p_balance_type_code => l_balance_type_code);
93861 
93862    END IF;
93863 
93864    -----------------------------------------------------------------------------------------
93865    -- 4262811 Multiperiod Accounting
93866    -----------------------------------------------------------------------------------------
93867      -- No MPA option is assigned.
93868 
93869 
93870 END IF;
93871 END IF;
93872 --
93873 
93874 --
93875 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93876    trace
93877       (p_msg      => 'END of AcctLineType_201'
93878       ,p_level    => C_LEVEL_PROCEDURE
93879       ,p_module   => l_log_module);
93880 END IF;
93881 --
93882 EXCEPTION
93883   WHEN xla_exceptions_pkg.application_exception THEN
93884       RAISE;
93885   WHEN OTHERS THEN
93886        xla_exceptions_pkg.raise_message
93887            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_201');
93888 END AcctLineType_201;
93889 --
93890 
93891 ---------------------------------------
93892 --
93893 -- PRIVATE FUNCTION
93894 --         AcctLineType_202
93895 --
93896 ---------------------------------------
93897 PROCEDURE AcctLineType_202 (
93898   p_application_id        IN NUMBER
93899  ,p_event_id              IN NUMBER
93900  ,p_calculate_acctd_flag  IN VARCHAR2
93901  ,p_calculate_g_l_flag    IN VARCHAR2
93902  ,p_actual_flag           IN OUT VARCHAR2
93903  ,p_balance_type_code     OUT VARCHAR2
93904  ,p_gain_or_loss_ref      OUT VARCHAR2
93905  
93906 --Transaction Account
93907  , p_source_1            IN NUMBER
93908 --Journal Line Type
93909  , p_source_2            IN VARCHAR2
93910 --Entered Amount
93911  , p_source_3            IN NUMBER
93912 --First Distribution Identifier
93913  , p_source_5            IN NUMBER
93914 --Distribution Type
93915  , p_source_6            IN VARCHAR2
93916 --Currency Code
93917  , p_source_7            IN VARCHAR2
93918 --Currency Conversion Date
93919  , p_source_8            IN DATE
93920 --Currency Conversion Rate
93921  , p_source_9            IN NUMBER
93922 --Currency Conversion Type
93923  , p_source_10            IN VARCHAR2
93924 --Accounted Amount
93925  , p_source_11            IN NUMBER
93926 )
93927 IS
93928 
93929 l_component_type              VARCHAR2(80);
93930 l_component_code              VARCHAR2(30);
93931 l_component_type_code         VARCHAR2(1);
93932 l_component_appl_id           INTEGER;
93933 l_amb_context_code            VARCHAR2(30);
93934 l_entity_code                 VARCHAR2(30);
93935 l_event_class_code            VARCHAR2(30);
93936 l_ae_header_id                NUMBER;
93937 l_event_type_code             VARCHAR2(30);
93938 l_line_definition_code        VARCHAR2(30);
93939 l_line_definition_owner_code  VARCHAR2(1);
93940 --
93941 -- adr variables
93942 l_segment                     VARCHAR2(30);
93943 l_ccid                        NUMBER;
93944 l_adr_transaction_coa_id      NUMBER;
93945 l_adr_accounting_coa_id       NUMBER;
93946 l_adr_flexfield_segment_code  VARCHAR2(30);
93947 l_adr_flex_value_set_id       NUMBER;
93948 l_adr_value_type_code         VARCHAR2(30);
93949 l_adr_value_combination_id    NUMBER;
93950 l_adr_value_segment_code      VARCHAR2(30);
93951 
93952 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
93953 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
93954 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
93955 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
93956 
93957 -- 4262811 Variables ------------------------------------------------------------------------------------------
93958 l_entered_amt_idx             NUMBER;
93959 l_accted_amt_idx              NUMBER;
93960 l_acc_rev_flag                VARCHAR2(1);
93961 l_accrual_line_num            NUMBER;
93962 l_tmp_amt                     NUMBER;
93963 l_acc_rev_natural_side_code   VARCHAR2(1);
93964 
93965 l_num_entries                 NUMBER;
93966 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
93967 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
93968 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
93969 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
93970 l_recog_line_1                NUMBER;
93971 l_recog_line_2                NUMBER;
93972 
93973 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
93974 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
93975 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
93976 
93977 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
93978 
93979 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
93980 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
93984 
93981 
93982 ---------------------------------------------------------------------------------------------------------------
93983 
93985 --
93986 -- bulk performance
93987 --
93988 l_balance_type_code           VARCHAR2(1);
93989 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
93990 l_log_module                  VARCHAR2(240);
93991 
93992 --
93993 -- Upgrade strategy
93994 --
93995 l_actual_upg_option           VARCHAR2(1);
93996 l_enc_upg_option           VARCHAR2(1);
93997 
93998 --
93999 BEGIN
94000 --
94001 IF g_log_enabled THEN
94002       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_202';
94003 END IF;
94004 --
94005 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94006 
94007       trace
94008          (p_msg      => 'BEGIN of AcctLineType_202'
94009          ,p_level    => C_LEVEL_PROCEDURE
94010          ,p_module   => l_log_module);
94011 
94012 END IF;
94013 --
94014 l_component_type             := 'AMB_JLT';
94015 l_component_code             := 'ISP';
94016 l_component_type_code        := 'S';
94017 l_component_appl_id          :=  555;
94018 l_amb_context_code           := 'DEFAULT';
94019 l_entity_code                := 'PURCHASING';
94020 l_event_class_code           := 'DELIVER';
94021 l_event_type_code            := 'XFER_TO_CONSIGNED';
94022 l_line_definition_owner_code := 'S';
94023 l_line_definition_code       := 'XFER_TO_CONSIGN';
94024 --
94025 l_balance_type_code          := 'A';
94026 l_segment                     := NULL;
94027 l_ccid                        := NULL;
94028 l_adr_transaction_coa_id      := NULL;
94029 l_adr_accounting_coa_id       := NULL;
94030 l_adr_flexfield_segment_code  := NULL;
94031 l_adr_flex_value_set_id       := NULL;
94032 l_adr_value_type_code         := NULL;
94033 l_adr_value_combination_id    := NULL;
94034 l_adr_value_segment_code      := NULL;
94035 
94036 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
94037 l_bflow_class_code           := '';    -- 4219869 Business Flow
94038 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
94039 l_budgetary_control_flag     := 'N';
94040 
94041 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
94042 l_bflow_applied_to_amt       := NULL; -- 5132302
94043 l_entered_amt_idx            := NULL;          -- 4262811
94044 l_accted_amt_idx             := NULL;          -- 4262811
94045 l_acc_rev_flag               := NULL;          -- 4262811
94046 l_accrual_line_num           := NULL;          -- 4262811
94047 l_tmp_amt                    := NULL;          -- 4262811
94048 --
94049  
94050 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
94051     l_balance_type_code <> 'B' THEN
94052 IF NVL(p_source_2,'
94053 ') =  'ISP'
94054  THEN 
94055 
94056    --
94057    XLA_AE_LINES_PKG.SetNewLine;
94058 
94059    p_balance_type_code          := l_balance_type_code;
94060    -- set the flag so later we will know whether the gain loss line needs to be created
94061    
94062    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
94063      p_actual_flag :='A';
94064    END IF;
94065 
94066    --
94067    -- bulk performance
94068    --
94069    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
94070                                       p_header_num   => 0); -- 4262811
94071    --
94072    -- set accounting line options
94073    --
94074    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
94075            p_natural_side_code          => 'D'
94076          , p_gain_or_loss_flag          => 'N'
94077          , p_gl_transfer_mode_code      => 'D'
94078          , p_acct_entry_type_code       => 'A'
94079          , p_switch_side_flag           => 'Y'
94080          , p_merge_duplicate_code       => 'W'
94081          );
94082    --
94083    l_acc_rev_natural_side_code := 'C';  -- 4262811
94084    -- 
94085    --
94086    -- set accounting line type info
94087    --
94088    xla_ae_lines_pkg.SetAcctLineType
94089       (p_component_type             => l_component_type
94090       ,p_event_type_code            => l_event_type_code
94091       ,p_line_definition_owner_code => l_line_definition_owner_code
94092       ,p_line_definition_code       => l_line_definition_code
94093       ,p_accounting_line_code       => l_component_code
94094       ,p_accounting_line_type_code  => l_component_type_code
94095       ,p_accounting_line_appl_id    => l_component_appl_id
94096       ,p_amb_context_code           => l_amb_context_code
94097       ,p_entity_code                => l_entity_code
94098       ,p_event_class_code           => l_event_class_code);
94099    --
94100    -- set accounting class
94101    --
94102    xla_ae_lines_pkg.SetAcctClass(
94103            p_accounting_class_code  => 'RECEIVING_INSPECTION'
94104          , p_ae_header_id           => l_ae_header_id
94105          );
94106 
94107    --
94108    -- set rounding class
94109    --
94110    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
94111                       'RECEIVING_INSPECTION';
94112 
94113    --
94114    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
94115    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
94116    --
94117    -- bulk performance
94121    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
94118    --
94119    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
94120 
94122       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
94123 
94124    -- 4955764
94125    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94126       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
94127 
94128    -- 4458381 Public Sector Enh
94129    
94130    --
94131    -- set accounting attributes for the line type
94132    --
94133    l_entered_amt_idx := 3;
94134    l_accted_amt_idx  := 8;
94135    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
94136    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
94137    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
94138    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
94139    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
94140    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
94141    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
94142    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
94143    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
94144    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
94145    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
94146    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
94147    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
94148    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
94149    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
94150    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
94151    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
94152 
94153    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
94154    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
94155 
94156    ---------------------------------------------------------------------------------------------------------------
94157    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
94158    ---------------------------------------------------------------------------------------------------------------
94159    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
94160 
94161    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94162    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94163 
94164    IF xla_accounting_cache_pkg.GetValueChar
94165          (p_source_code         => 'LEDGER_CATEGORY_CODE'
94166          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
94167    AND l_bflow_method_code = 'PRIOR_ENTRY'
94168 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
94169    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
94170          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
94171        )
94172    THEN
94173          xla_ae_lines_pkg.BflowUpgEntry
94174            (p_business_method_code    => l_bflow_method_code
94175            ,p_business_class_code     => l_bflow_class_code
94176            ,p_balance_type            => l_balance_type_code);
94177    ELSE
94178       NULL;
94179 -- No business flow processing for business flow method of NONE.
94180    END IF;
94181 
94182    --
94183    -- call analytical criteria
94184    --
94185    
94186    --
94187    -- call description
94188    --
94189    -- No description or it is inherited.
94190    --
94191    -- call ADRs
94192    -- Bug 4922099
94193    --
94194    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94195         (NVL(l_actual_upg_option, 'N') = 'O') OR
94196         (NVL(l_enc_upg_option, 'N') = 'O')
94197       )
94198    THEN
94199    NULL;
94200    --
94201    --
94202    
94203   l_ccid := AcctDerRule_25(
94204            p_application_id           => p_application_id
94205          , p_ae_header_id             => l_ae_header_id 
94206 , p_source_1 => p_source_1
94207 , p_source_2 => p_source_2
94208          , x_transaction_coa_id       => l_adr_transaction_coa_id
94209          , x_accounting_coa_id        => l_adr_accounting_coa_id
94210          , x_value_type_code          => l_adr_value_type_code
94211          , p_side                     => 'NA'
94212    );
94213 
94214    xla_ae_lines_pkg.set_ccid(
94215     p_code_combination_id          => l_ccid
94216   , p_value_type_code              => l_adr_value_type_code
94217   , p_transaction_coa_id           => l_adr_transaction_coa_id
94218   , p_accounting_coa_id            => l_adr_accounting_coa_id
94219   , p_adr_code                     => 'ISP'
94220   , p_adr_type_code                => 'S'
94221   , p_component_type               => l_component_type
94222   , p_component_code               => l_component_code
94223   , p_component_type_code          => l_component_type_code
94224   , p_component_appl_id            => l_component_appl_id
94225   , p_amb_context_code             => l_amb_context_code
94226   , p_side                         => 'NA'
94227   );
94228 
94229 
94230    --
94231    --
94232    END IF;
94233    --
94234    -- Bug 4922099
94235    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
94236           (NVL(l_enc_upg_option, 'N') = 'O')
94237         ) AND
94238         (l_bflow_method_code = 'PRIOR_ENTRY')
94242       --
94239       )
94240    THEN
94241       IF
94243       1 = 2
94244       --
94245       THEN
94246       xla_accounting_err_pkg.build_message
94247                                     (p_appli_s_name            => 'XLA'
94248                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94249                                     ,p_token_1                 => 'LINE_NUMBER'
94250                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
94251                                     ,p_token_2                 => 'LINE_TYPE_NAME'
94252                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
94253                                                                              l_component_type
94254                                                                             ,l_component_code
94255                                                                             ,l_component_type_code
94256                                                                             ,l_component_appl_id
94257                                                                             ,l_amb_context_code
94258                                                                             ,l_entity_code
94259                                                                             ,l_event_class_code
94260                                                                            )
94261                                     ,p_token_3                 => 'OWNER'
94262                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
94263                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
94264                                                                           ,p_lookup_code    => l_component_type_code
94265                                                                          )
94266                                     ,p_token_4                 => 'PRODUCT_NAME'
94267                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
94268                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
94269                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
94270                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
94271                                     ,p_ae_header_id            =>  NULL
94272                                        );
94273 
94274         IF (C_LEVEL_ERROR>= g_log_level) THEN
94275                  trace
94276                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94277                       ,p_level    => C_LEVEL_ERROR
94278                       ,p_module   => l_log_module);
94279         END IF;
94280       END IF;
94281    END IF;
94282    --
94283    --
94284    ------------------------------------------------------------------------------------------------
94285    -- 4219869 Business Flow
94286    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
94287    -- Prior Entry.  Currently, the following code is always generated.
94288    ------------------------------------------------------------------------------------------------
94289    XLA_AE_LINES_PKG.ValidateCurrentLine;
94290 
94291    ------------------------------------------------------------------------------------
94292    -- 4219869 Business Flow
94293    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
94294    ------------------------------------------------------------------------------------
94295    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94296 
94297    ----------------------------------------------------------------------------------
94298    -- 4219869 Business Flow
94299    -- Update journal entry status -- Need to generate this within IF <condition>
94300    ----------------------------------------------------------------------------------
94301    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94302          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
94303          ,p_balance_type_code => l_balance_type_code
94304          );
94305 
94306    -------------------------------------------------------------------------------------------
94307    -- 4262811 - Generate the Accrual Reversal lines
94308    -------------------------------------------------------------------------------------------
94309    BEGIN
94310       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
94311                               (g_array_event(p_event_id).array_value_num('header_index'));
94312       IF l_acc_rev_flag IS NULL THEN
94313          l_acc_rev_flag := 'N';
94314       END IF;
94315    EXCEPTION
94316       WHEN OTHERS THEN
94317          l_acc_rev_flag := 'N';
94318    END;
94319    --
94320    IF (l_acc_rev_flag = 'Y') THEN
94321 
94322        -- 4645092  ------------------------------------------------------------------------------
94323        -- To allow MPA report to determine if it should generate report process
94324        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
94325        ------------------------------------------------------------------------------------------
94326 
94327        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
94328        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
94332    --
94329    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
94330    -- call ADRs
94331    -- Bug 4922099
94333    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94334         (NVL(l_actual_upg_option, 'N') = 'O') OR
94335         (NVL(l_enc_upg_option, 'N') = 'O')
94336       )
94337    THEN
94338    NULL;
94339    --
94340    --
94341    
94342   l_ccid := AcctDerRule_25(
94343            p_application_id           => p_application_id
94344          , p_ae_header_id             => l_ae_header_id 
94345 , p_source_1 => p_source_1
94346 , p_source_2 => p_source_2
94347          , x_transaction_coa_id       => l_adr_transaction_coa_id
94348          , x_accounting_coa_id        => l_adr_accounting_coa_id
94349          , x_value_type_code          => l_adr_value_type_code
94350          , p_side                     => 'NA'
94351    );
94352 
94353    xla_ae_lines_pkg.set_ccid(
94354     p_code_combination_id          => l_ccid
94355   , p_value_type_code              => l_adr_value_type_code
94356   , p_transaction_coa_id           => l_adr_transaction_coa_id
94357   , p_accounting_coa_id            => l_adr_accounting_coa_id
94358   , p_adr_code                     => 'ISP'
94359   , p_adr_type_code                => 'S'
94360   , p_component_type               => l_component_type
94361   , p_component_code               => l_component_code
94362   , p_component_type_code          => l_component_type_code
94363   , p_component_appl_id            => l_component_appl_id
94364   , p_amb_context_code             => l_amb_context_code
94365   , p_side                         => 'NA'
94366   );
94367 
94368 
94369    --
94370    --
94371    END IF;
94372 
94373        --
94374        -- Update the line information that should be overwritten
94375        --
94376        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
94377                                          p_header_num   => 1);
94378        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
94379 
94380        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
94381 
94382        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
94383           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
94384        END IF;
94385 
94386       --
94387       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
94388       --
94389       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
94390           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
94391       ELSE
94392           ---------------------------------------------------------------------------------------------------
94393           -- 4262811a Switch Sign
94394           ---------------------------------------------------------------------------------------------------
94395           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
94396           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94397                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94398           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94399                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94400           -- 5132302
94401           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
94402                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94403 
94404       END IF;
94405 
94406       -- 4955764
94407       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94408       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
94409 
94410 
94411       XLA_AE_LINES_PKG.ValidateCurrentLine;
94412       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94413 
94414       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94415                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
94416                ,p_balance_type_code => l_balance_type_code);
94417 
94418    END IF;
94419 
94420    -----------------------------------------------------------------------------------------
94421    -- 4262811 Multiperiod Accounting
94422    -----------------------------------------------------------------------------------------
94423      -- No MPA option is assigned.
94424 
94425 
94426 END IF;
94427 END IF;
94428 --
94429 
94430 --
94431 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94432    trace
94433       (p_msg      => 'END of AcctLineType_202'
94434       ,p_level    => C_LEVEL_PROCEDURE
94435       ,p_module   => l_log_module);
94436 END IF;
94437 --
94438 EXCEPTION
94439   WHEN xla_exceptions_pkg.application_exception THEN
94440       RAISE;
94441   WHEN OTHERS THEN
94442        xla_exceptions_pkg.raise_message
94443            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_202');
94444 END AcctLineType_202;
94445 --
94446 
94447 ---------------------------------------
94448 --
94449 -- PRIVATE FUNCTION
94453 PROCEDURE AcctLineType_203 (
94450 --         AcctLineType_203
94451 --
94452 ---------------------------------------
94454   p_application_id        IN NUMBER
94455  ,p_event_id              IN NUMBER
94456  ,p_calculate_acctd_flag  IN VARCHAR2
94457  ,p_calculate_g_l_flag    IN VARCHAR2
94458  ,p_actual_flag           IN OUT VARCHAR2
94459  ,p_balance_type_code     OUT VARCHAR2
94460  ,p_gain_or_loss_ref      OUT VARCHAR2
94461  
94462 --Transaction Account
94463  , p_source_1            IN NUMBER
94464 --Journal Line Type
94465  , p_source_2            IN VARCHAR2
94466 --Entered Amount
94467  , p_source_3            IN NUMBER
94468 --First Distribution Identifier
94469  , p_source_5            IN NUMBER
94470 --Distribution Type
94471  , p_source_6            IN VARCHAR2
94472 --Currency Code
94473  , p_source_7            IN VARCHAR2
94474 --Currency Conversion Date
94475  , p_source_8            IN DATE
94476 --Currency Conversion Rate
94477  , p_source_9            IN NUMBER
94478 --Currency Conversion Type
94479  , p_source_10            IN VARCHAR2
94480 --Accounted Amount
94481  , p_source_11            IN NUMBER
94482 )
94483 IS
94484 
94485 l_component_type              VARCHAR2(80);
94486 l_component_code              VARCHAR2(30);
94487 l_component_type_code         VARCHAR2(1);
94488 l_component_appl_id           INTEGER;
94489 l_amb_context_code            VARCHAR2(30);
94490 l_entity_code                 VARCHAR2(30);
94491 l_event_class_code            VARCHAR2(30);
94492 l_ae_header_id                NUMBER;
94493 l_event_type_code             VARCHAR2(30);
94494 l_line_definition_code        VARCHAR2(30);
94495 l_line_definition_owner_code  VARCHAR2(1);
94496 --
94497 -- adr variables
94498 l_segment                     VARCHAR2(30);
94499 l_ccid                        NUMBER;
94500 l_adr_transaction_coa_id      NUMBER;
94501 l_adr_accounting_coa_id       NUMBER;
94502 l_adr_flexfield_segment_code  VARCHAR2(30);
94503 l_adr_flex_value_set_id       NUMBER;
94504 l_adr_value_type_code         VARCHAR2(30);
94505 l_adr_value_combination_id    NUMBER;
94506 l_adr_value_segment_code      VARCHAR2(30);
94507 
94508 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
94509 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
94510 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
94511 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
94512 
94513 -- 4262811 Variables ------------------------------------------------------------------------------------------
94514 l_entered_amt_idx             NUMBER;
94515 l_accted_amt_idx              NUMBER;
94516 l_acc_rev_flag                VARCHAR2(1);
94517 l_accrual_line_num            NUMBER;
94518 l_tmp_amt                     NUMBER;
94519 l_acc_rev_natural_side_code   VARCHAR2(1);
94520 
94521 l_num_entries                 NUMBER;
94522 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
94523 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
94524 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
94525 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
94526 l_recog_line_1                NUMBER;
94527 l_recog_line_2                NUMBER;
94528 
94529 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
94530 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
94531 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
94532 
94533 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
94534 
94535 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
94536 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
94537 
94538 ---------------------------------------------------------------------------------------------------------------
94539 
94540 
94541 --
94542 -- bulk performance
94543 --
94544 l_balance_type_code           VARCHAR2(1);
94545 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
94546 l_log_module                  VARCHAR2(240);
94547 
94548 --
94549 -- Upgrade strategy
94550 --
94551 l_actual_upg_option           VARCHAR2(1);
94552 l_enc_upg_option           VARCHAR2(1);
94553 
94554 --
94555 BEGIN
94556 --
94557 IF g_log_enabled THEN
94558       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_203';
94559 END IF;
94560 --
94561 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94562 
94563       trace
94564          (p_msg      => 'BEGIN of AcctLineType_203'
94565          ,p_level    => C_LEVEL_PROCEDURE
94566          ,p_module   => l_log_module);
94567 
94568 END IF;
94569 --
94570 l_component_type             := 'AMB_JLT';
94571 l_component_code             := 'ISP';
94572 l_component_type_code        := 'S';
94573 l_component_appl_id          :=  555;
94574 l_amb_context_code           := 'DEFAULT';
94575 l_entity_code                := 'PURCHASING';
94576 l_event_class_code           := 'RECEIVE';
94577 l_event_type_code            := 'RET_TO_VENDOR';
94578 l_line_definition_owner_code := 'S';
94579 l_line_definition_code       := 'RETURN';
94580 --
94581 l_balance_type_code          := 'A';
94582 l_segment                     := NULL;
94583 l_ccid                        := NULL;
94587 l_adr_flex_value_set_id       := NULL;
94584 l_adr_transaction_coa_id      := NULL;
94585 l_adr_accounting_coa_id       := NULL;
94586 l_adr_flexfield_segment_code  := NULL;
94588 l_adr_value_type_code         := NULL;
94589 l_adr_value_combination_id    := NULL;
94590 l_adr_value_segment_code      := NULL;
94591 
94592 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
94593 l_bflow_class_code           := '';    -- 4219869 Business Flow
94594 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
94595 l_budgetary_control_flag     := 'N';
94596 
94597 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
94598 l_bflow_applied_to_amt       := NULL; -- 5132302
94599 l_entered_amt_idx            := NULL;          -- 4262811
94600 l_accted_amt_idx             := NULL;          -- 4262811
94601 l_acc_rev_flag               := NULL;          -- 4262811
94602 l_accrual_line_num           := NULL;          -- 4262811
94603 l_tmp_amt                    := NULL;          -- 4262811
94604 --
94605  
94606 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
94607     l_balance_type_code <> 'B' THEN
94608 IF NVL(p_source_2,'
94609 ') =  'ISP'
94610  THEN 
94611 
94612    --
94613    XLA_AE_LINES_PKG.SetNewLine;
94614 
94615    p_balance_type_code          := l_balance_type_code;
94616    -- set the flag so later we will know whether the gain loss line needs to be created
94617    
94618    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
94619      p_actual_flag :='A';
94620    END IF;
94621 
94622    --
94623    -- bulk performance
94624    --
94625    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
94626                                       p_header_num   => 0); -- 4262811
94627    --
94628    -- set accounting line options
94629    --
94630    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
94631            p_natural_side_code          => 'D'
94632          , p_gain_or_loss_flag          => 'N'
94633          , p_gl_transfer_mode_code      => 'D'
94634          , p_acct_entry_type_code       => 'A'
94635          , p_switch_side_flag           => 'Y'
94636          , p_merge_duplicate_code       => 'W'
94637          );
94638    --
94639    l_acc_rev_natural_side_code := 'C';  -- 4262811
94640    -- 
94641    --
94642    -- set accounting line type info
94643    --
94644    xla_ae_lines_pkg.SetAcctLineType
94645       (p_component_type             => l_component_type
94646       ,p_event_type_code            => l_event_type_code
94647       ,p_line_definition_owner_code => l_line_definition_owner_code
94648       ,p_line_definition_code       => l_line_definition_code
94649       ,p_accounting_line_code       => l_component_code
94650       ,p_accounting_line_type_code  => l_component_type_code
94651       ,p_accounting_line_appl_id    => l_component_appl_id
94652       ,p_amb_context_code           => l_amb_context_code
94653       ,p_entity_code                => l_entity_code
94654       ,p_event_class_code           => l_event_class_code);
94655    --
94656    -- set accounting class
94657    --
94658    xla_ae_lines_pkg.SetAcctClass(
94659            p_accounting_class_code  => 'RECEIVING_INSPECTION'
94660          , p_ae_header_id           => l_ae_header_id
94661          );
94662 
94663    --
94664    -- set rounding class
94665    --
94666    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
94667                       'RECEIVING_INSPECTION';
94668 
94669    --
94670    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
94671    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
94672    --
94673    -- bulk performance
94674    --
94675    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
94676 
94677    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
94678       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
94679 
94680    -- 4955764
94681    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94682       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
94683 
94684    -- 4458381 Public Sector Enh
94685    
94686    --
94687    -- set accounting attributes for the line type
94688    --
94689    l_entered_amt_idx := 3;
94690    l_accted_amt_idx  := 8;
94691    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
94692    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
94693    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
94694    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
94695    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
94696    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
94697    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
94698    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
94699    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
94700    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
94701    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
94702    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
94703    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
94704    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
94705    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
94709    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
94706    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
94707    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
94708 
94710    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
94711 
94712    ---------------------------------------------------------------------------------------------------------------
94713    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
94714    ---------------------------------------------------------------------------------------------------------------
94715    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
94716 
94717    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94718    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94719 
94720    IF xla_accounting_cache_pkg.GetValueChar
94721          (p_source_code         => 'LEDGER_CATEGORY_CODE'
94722          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
94723    AND l_bflow_method_code = 'PRIOR_ENTRY'
94724 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
94725    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
94726          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
94727        )
94728    THEN
94729          xla_ae_lines_pkg.BflowUpgEntry
94730            (p_business_method_code    => l_bflow_method_code
94731            ,p_business_class_code     => l_bflow_class_code
94732            ,p_balance_type            => l_balance_type_code);
94733    ELSE
94734       NULL;
94735 -- No business flow processing for business flow method of NONE.
94736    END IF;
94737 
94738    --
94739    -- call analytical criteria
94740    --
94741    
94742    --
94743    -- call description
94744    --
94745    -- No description or it is inherited.
94746    --
94747    -- call ADRs
94748    -- Bug 4922099
94749    --
94750    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94751         (NVL(l_actual_upg_option, 'N') = 'O') OR
94752         (NVL(l_enc_upg_option, 'N') = 'O')
94753       )
94754    THEN
94755    NULL;
94756    --
94757    --
94758    
94759   l_ccid := AcctDerRule_25(
94760            p_application_id           => p_application_id
94761          , p_ae_header_id             => l_ae_header_id 
94762 , p_source_1 => p_source_1
94763 , p_source_2 => p_source_2
94764          , x_transaction_coa_id       => l_adr_transaction_coa_id
94765          , x_accounting_coa_id        => l_adr_accounting_coa_id
94766          , x_value_type_code          => l_adr_value_type_code
94767          , p_side                     => 'NA'
94768    );
94769 
94770    xla_ae_lines_pkg.set_ccid(
94771     p_code_combination_id          => l_ccid
94772   , p_value_type_code              => l_adr_value_type_code
94773   , p_transaction_coa_id           => l_adr_transaction_coa_id
94774   , p_accounting_coa_id            => l_adr_accounting_coa_id
94775   , p_adr_code                     => 'ISP'
94776   , p_adr_type_code                => 'S'
94777   , p_component_type               => l_component_type
94778   , p_component_code               => l_component_code
94779   , p_component_type_code          => l_component_type_code
94780   , p_component_appl_id            => l_component_appl_id
94781   , p_amb_context_code             => l_amb_context_code
94782   , p_side                         => 'NA'
94783   );
94784 
94785 
94786    --
94787    --
94788    END IF;
94789    --
94790    -- Bug 4922099
94791    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
94792           (NVL(l_enc_upg_option, 'N') = 'O')
94793         ) AND
94794         (l_bflow_method_code = 'PRIOR_ENTRY')
94795       )
94796    THEN
94797       IF
94798       --
94799       1 = 2
94800       --
94801       THEN
94802       xla_accounting_err_pkg.build_message
94803                                     (p_appli_s_name            => 'XLA'
94804                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94805                                     ,p_token_1                 => 'LINE_NUMBER'
94806                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
94807                                     ,p_token_2                 => 'LINE_TYPE_NAME'
94808                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
94809                                                                              l_component_type
94810                                                                             ,l_component_code
94811                                                                             ,l_component_type_code
94812                                                                             ,l_component_appl_id
94813                                                                             ,l_amb_context_code
94814                                                                             ,l_entity_code
94815                                                                             ,l_event_class_code
94816                                                                            )
94817                                     ,p_token_3                 => 'OWNER'
94818                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
94822                                     ,p_token_4                 => 'PRODUCT_NAME'
94819                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
94820                                                                           ,p_lookup_code    => l_component_type_code
94821                                                                          )
94823                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
94824                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
94825                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
94826                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
94827                                     ,p_ae_header_id            =>  NULL
94828                                        );
94829 
94830         IF (C_LEVEL_ERROR>= g_log_level) THEN
94831                  trace
94832                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94833                       ,p_level    => C_LEVEL_ERROR
94834                       ,p_module   => l_log_module);
94835         END IF;
94836       END IF;
94837    END IF;
94838    --
94839    --
94840    ------------------------------------------------------------------------------------------------
94841    -- 4219869 Business Flow
94842    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
94843    -- Prior Entry.  Currently, the following code is always generated.
94844    ------------------------------------------------------------------------------------------------
94845    XLA_AE_LINES_PKG.ValidateCurrentLine;
94846 
94847    ------------------------------------------------------------------------------------
94848    -- 4219869 Business Flow
94849    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
94850    ------------------------------------------------------------------------------------
94851    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94852 
94853    ----------------------------------------------------------------------------------
94854    -- 4219869 Business Flow
94855    -- Update journal entry status -- Need to generate this within IF <condition>
94856    ----------------------------------------------------------------------------------
94857    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94858          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
94859          ,p_balance_type_code => l_balance_type_code
94860          );
94861 
94862    -------------------------------------------------------------------------------------------
94863    -- 4262811 - Generate the Accrual Reversal lines
94864    -------------------------------------------------------------------------------------------
94865    BEGIN
94866       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
94867                               (g_array_event(p_event_id).array_value_num('header_index'));
94868       IF l_acc_rev_flag IS NULL THEN
94869          l_acc_rev_flag := 'N';
94870       END IF;
94871    EXCEPTION
94872       WHEN OTHERS THEN
94873          l_acc_rev_flag := 'N';
94874    END;
94875    --
94876    IF (l_acc_rev_flag = 'Y') THEN
94877 
94878        -- 4645092  ------------------------------------------------------------------------------
94879        -- To allow MPA report to determine if it should generate report process
94880        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
94881        ------------------------------------------------------------------------------------------
94882 
94883        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
94884        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
94885    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
94886    -- call ADRs
94887    -- Bug 4922099
94888    --
94889    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94890         (NVL(l_actual_upg_option, 'N') = 'O') OR
94891         (NVL(l_enc_upg_option, 'N') = 'O')
94892       )
94893    THEN
94894    NULL;
94895    --
94896    --
94897    
94898   l_ccid := AcctDerRule_25(
94899            p_application_id           => p_application_id
94900          , p_ae_header_id             => l_ae_header_id 
94901 , p_source_1 => p_source_1
94902 , p_source_2 => p_source_2
94903          , x_transaction_coa_id       => l_adr_transaction_coa_id
94904          , x_accounting_coa_id        => l_adr_accounting_coa_id
94905          , x_value_type_code          => l_adr_value_type_code
94906          , p_side                     => 'NA'
94907    );
94908 
94909    xla_ae_lines_pkg.set_ccid(
94910     p_code_combination_id          => l_ccid
94911   , p_value_type_code              => l_adr_value_type_code
94912   , p_transaction_coa_id           => l_adr_transaction_coa_id
94913   , p_accounting_coa_id            => l_adr_accounting_coa_id
94914   , p_adr_code                     => 'ISP'
94915   , p_adr_type_code                => 'S'
94916   , p_component_type               => l_component_type
94917   , p_component_code               => l_component_code
94918   , p_component_type_code          => l_component_type_code
94919   , p_component_appl_id            => l_component_appl_id
94920   , p_amb_context_code             => l_amb_context_code
94921   , p_side                         => 'NA'
94922   );
94923 
94924 
94925    --
94926    --
94930        -- Update the line information that should be overwritten
94927    END IF;
94928 
94929        --
94931        --
94932        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
94933                                          p_header_num   => 1);
94934        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
94935 
94936        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
94937 
94938        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
94939           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
94940        END IF;
94941 
94942       --
94943       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
94944       --
94945       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
94946           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
94947       ELSE
94948           ---------------------------------------------------------------------------------------------------
94949           -- 4262811a Switch Sign
94950           ---------------------------------------------------------------------------------------------------
94951           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
94952           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94953                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94954           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94955                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94956           -- 5132302
94957           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
94958                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94959 
94960       END IF;
94961 
94962       -- 4955764
94963       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94964       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
94965 
94966 
94967       XLA_AE_LINES_PKG.ValidateCurrentLine;
94968       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94969 
94970       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94971                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
94972                ,p_balance_type_code => l_balance_type_code);
94973 
94974    END IF;
94975 
94976    -----------------------------------------------------------------------------------------
94977    -- 4262811 Multiperiod Accounting
94978    -----------------------------------------------------------------------------------------
94979      -- No MPA option is assigned.
94980 
94981 
94982 END IF;
94983 END IF;
94984 --
94985 
94986 --
94987 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94988    trace
94989       (p_msg      => 'END of AcctLineType_203'
94990       ,p_level    => C_LEVEL_PROCEDURE
94991       ,p_module   => l_log_module);
94992 END IF;
94993 --
94994 EXCEPTION
94995   WHEN xla_exceptions_pkg.application_exception THEN
94996       RAISE;
94997   WHEN OTHERS THEN
94998        xla_exceptions_pkg.raise_message
94999            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_203');
95000 END AcctLineType_203;
95001 --
95002 
95003 ---------------------------------------
95004 --
95005 -- PRIVATE FUNCTION
95006 --         AcctLineType_204
95007 --
95008 ---------------------------------------
95009 PROCEDURE AcctLineType_204 (
95010   p_application_id        IN NUMBER
95011  ,p_event_id              IN NUMBER
95012  ,p_calculate_acctd_flag  IN VARCHAR2
95013  ,p_calculate_g_l_flag    IN VARCHAR2
95014  ,p_actual_flag           IN OUT VARCHAR2
95015  ,p_balance_type_code     OUT VARCHAR2
95016  ,p_gain_or_loss_ref      OUT VARCHAR2
95017  
95018 --Transaction Account
95019  , p_source_1            IN NUMBER
95020 --Journal Line Type
95021  , p_source_2            IN VARCHAR2
95022 --Entered Amount
95023  , p_source_3            IN NUMBER
95024 --First Distribution Identifier
95025  , p_source_5            IN NUMBER
95026 --Distribution Type
95027  , p_source_6            IN VARCHAR2
95028 --Currency Code
95029  , p_source_7            IN VARCHAR2
95030 --Currency Conversion Date
95031  , p_source_8            IN DATE
95032 --Currency Conversion Rate
95033  , p_source_9            IN NUMBER
95034 --Currency Conversion Type
95035  , p_source_10            IN VARCHAR2
95036 --Accounted Amount
95037  , p_source_11            IN NUMBER
95038 )
95039 IS
95040 
95041 l_component_type              VARCHAR2(80);
95042 l_component_code              VARCHAR2(30);
95043 l_component_type_code         VARCHAR2(1);
95044 l_component_appl_id           INTEGER;
95045 l_amb_context_code            VARCHAR2(30);
95046 l_entity_code                 VARCHAR2(30);
95047 l_event_class_code            VARCHAR2(30);
95048 l_ae_header_id                NUMBER;
95049 l_event_type_code             VARCHAR2(30);
95050 l_line_definition_code        VARCHAR2(30);
95051 l_line_definition_owner_code  VARCHAR2(1);
95055 l_ccid                        NUMBER;
95052 --
95053 -- adr variables
95054 l_segment                     VARCHAR2(30);
95056 l_adr_transaction_coa_id      NUMBER;
95057 l_adr_accounting_coa_id       NUMBER;
95058 l_adr_flexfield_segment_code  VARCHAR2(30);
95059 l_adr_flex_value_set_id       NUMBER;
95060 l_adr_value_type_code         VARCHAR2(30);
95061 l_adr_value_combination_id    NUMBER;
95062 l_adr_value_segment_code      VARCHAR2(30);
95063 
95064 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
95065 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
95066 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
95067 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
95068 
95069 -- 4262811 Variables ------------------------------------------------------------------------------------------
95070 l_entered_amt_idx             NUMBER;
95071 l_accted_amt_idx              NUMBER;
95072 l_acc_rev_flag                VARCHAR2(1);
95073 l_accrual_line_num            NUMBER;
95074 l_tmp_amt                     NUMBER;
95075 l_acc_rev_natural_side_code   VARCHAR2(1);
95076 
95077 l_num_entries                 NUMBER;
95078 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
95079 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
95080 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
95081 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
95082 l_recog_line_1                NUMBER;
95083 l_recog_line_2                NUMBER;
95084 
95085 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
95086 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
95087 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
95088 
95089 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
95090 
95091 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
95092 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
95093 
95094 ---------------------------------------------------------------------------------------------------------------
95095 
95096 
95097 --
95098 -- bulk performance
95099 --
95100 l_balance_type_code           VARCHAR2(1);
95101 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
95102 l_log_module                  VARCHAR2(240);
95103 
95104 --
95105 -- Upgrade strategy
95106 --
95107 l_actual_upg_option           VARCHAR2(1);
95108 l_enc_upg_option           VARCHAR2(1);
95109 
95110 --
95111 BEGIN
95112 --
95113 IF g_log_enabled THEN
95114       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_204';
95115 END IF;
95116 --
95117 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95118 
95119       trace
95120          (p_msg      => 'BEGIN of AcctLineType_204'
95121          ,p_level    => C_LEVEL_PROCEDURE
95122          ,p_module   => l_log_module);
95123 
95124 END IF;
95125 --
95126 l_component_type             := 'AMB_JLT';
95127 l_component_code             := 'ISP';
95128 l_component_type_code        := 'S';
95129 l_component_appl_id          :=  555;
95130 l_amb_context_code           := 'DEFAULT';
95131 l_entity_code                := 'PURCHASING';
95132 l_event_class_code           := 'DELIVER';
95133 l_event_type_code            := 'XFER_TO_REGULAR';
95134 l_line_definition_owner_code := 'S';
95135 l_line_definition_code       := 'XFER_TO_REG';
95136 --
95137 l_balance_type_code          := 'A';
95138 l_segment                     := NULL;
95139 l_ccid                        := NULL;
95140 l_adr_transaction_coa_id      := NULL;
95141 l_adr_accounting_coa_id       := NULL;
95142 l_adr_flexfield_segment_code  := NULL;
95143 l_adr_flex_value_set_id       := NULL;
95144 l_adr_value_type_code         := NULL;
95145 l_adr_value_combination_id    := NULL;
95146 l_adr_value_segment_code      := NULL;
95147 
95148 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
95149 l_bflow_class_code           := '';    -- 4219869 Business Flow
95150 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
95151 l_budgetary_control_flag     := 'N';
95152 
95153 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
95154 l_bflow_applied_to_amt       := NULL; -- 5132302
95155 l_entered_amt_idx            := NULL;          -- 4262811
95156 l_accted_amt_idx             := NULL;          -- 4262811
95157 l_acc_rev_flag               := NULL;          -- 4262811
95158 l_accrual_line_num           := NULL;          -- 4262811
95159 l_tmp_amt                    := NULL;          -- 4262811
95160 --
95161  
95162 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
95163     l_balance_type_code <> 'B' THEN
95164 IF NVL(p_source_2,'
95165 ') =  'ISP'
95166  THEN 
95167 
95168    --
95169    XLA_AE_LINES_PKG.SetNewLine;
95170 
95171    p_balance_type_code          := l_balance_type_code;
95172    -- set the flag so later we will know whether the gain loss line needs to be created
95173    
95174    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
95175      p_actual_flag :='A';
95176    END IF;
95177 
95178    --
95179    -- bulk performance
95180    --
95181    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
95185    --
95182                                       p_header_num   => 0); -- 4262811
95183    --
95184    -- set accounting line options
95186    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
95187            p_natural_side_code          => 'D'
95188          , p_gain_or_loss_flag          => 'N'
95189          , p_gl_transfer_mode_code      => 'D'
95190          , p_acct_entry_type_code       => 'A'
95191          , p_switch_side_flag           => 'Y'
95192          , p_merge_duplicate_code       => 'W'
95193          );
95194    --
95195    l_acc_rev_natural_side_code := 'C';  -- 4262811
95196    -- 
95197    --
95198    -- set accounting line type info
95199    --
95200    xla_ae_lines_pkg.SetAcctLineType
95201       (p_component_type             => l_component_type
95202       ,p_event_type_code            => l_event_type_code
95203       ,p_line_definition_owner_code => l_line_definition_owner_code
95204       ,p_line_definition_code       => l_line_definition_code
95205       ,p_accounting_line_code       => l_component_code
95206       ,p_accounting_line_type_code  => l_component_type_code
95207       ,p_accounting_line_appl_id    => l_component_appl_id
95208       ,p_amb_context_code           => l_amb_context_code
95209       ,p_entity_code                => l_entity_code
95210       ,p_event_class_code           => l_event_class_code);
95211    --
95212    -- set accounting class
95213    --
95214    xla_ae_lines_pkg.SetAcctClass(
95215            p_accounting_class_code  => 'RECEIVING_INSPECTION'
95216          , p_ae_header_id           => l_ae_header_id
95217          );
95218 
95219    --
95220    -- set rounding class
95221    --
95222    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
95223                       'RECEIVING_INSPECTION';
95224 
95225    --
95226    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
95227    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
95228    --
95229    -- bulk performance
95230    --
95231    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
95232 
95233    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
95234       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
95235 
95236    -- 4955764
95237    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95238       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
95239 
95240    -- 4458381 Public Sector Enh
95241    
95242    --
95243    -- set accounting attributes for the line type
95244    --
95245    l_entered_amt_idx := 3;
95246    l_accted_amt_idx  := 8;
95247    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
95248    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
95249    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
95250    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
95251    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
95252    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
95253    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
95254    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
95255    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
95256    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
95257    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
95258    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
95259    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
95260    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
95261    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
95262    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
95263    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
95264 
95265    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
95266    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
95267 
95268    ---------------------------------------------------------------------------------------------------------------
95269    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
95270    ---------------------------------------------------------------------------------------------------------------
95271    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
95272 
95273    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95274    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95275 
95276    IF xla_accounting_cache_pkg.GetValueChar
95277          (p_source_code         => 'LEDGER_CATEGORY_CODE'
95278          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
95279    AND l_bflow_method_code = 'PRIOR_ENTRY'
95280 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
95281    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
95282          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
95283        )
95284    THEN
95285          xla_ae_lines_pkg.BflowUpgEntry
95286            (p_business_method_code    => l_bflow_method_code
95287            ,p_business_class_code     => l_bflow_class_code
95288            ,p_balance_type            => l_balance_type_code);
95289    ELSE
95290       NULL;
95294    --
95291 -- No business flow processing for business flow method of NONE.
95292    END IF;
95293 
95295    -- call analytical criteria
95296    --
95297    
95298    --
95299    -- call description
95300    --
95301    -- No description or it is inherited.
95302    --
95303    -- call ADRs
95304    -- Bug 4922099
95305    --
95306    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95307         (NVL(l_actual_upg_option, 'N') = 'O') OR
95308         (NVL(l_enc_upg_option, 'N') = 'O')
95309       )
95310    THEN
95311    NULL;
95312    --
95313    --
95314    
95315   l_ccid := AcctDerRule_25(
95316            p_application_id           => p_application_id
95317          , p_ae_header_id             => l_ae_header_id 
95318 , p_source_1 => p_source_1
95319 , p_source_2 => p_source_2
95320          , x_transaction_coa_id       => l_adr_transaction_coa_id
95321          , x_accounting_coa_id        => l_adr_accounting_coa_id
95322          , x_value_type_code          => l_adr_value_type_code
95323          , p_side                     => 'NA'
95324    );
95325 
95326    xla_ae_lines_pkg.set_ccid(
95327     p_code_combination_id          => l_ccid
95328   , p_value_type_code              => l_adr_value_type_code
95329   , p_transaction_coa_id           => l_adr_transaction_coa_id
95330   , p_accounting_coa_id            => l_adr_accounting_coa_id
95331   , p_adr_code                     => 'ISP'
95332   , p_adr_type_code                => 'S'
95333   , p_component_type               => l_component_type
95334   , p_component_code               => l_component_code
95335   , p_component_type_code          => l_component_type_code
95336   , p_component_appl_id            => l_component_appl_id
95337   , p_amb_context_code             => l_amb_context_code
95338   , p_side                         => 'NA'
95339   );
95340 
95341 
95342    --
95343    --
95344    END IF;
95345    --
95346    -- Bug 4922099
95347    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
95348           (NVL(l_enc_upg_option, 'N') = 'O')
95349         ) AND
95350         (l_bflow_method_code = 'PRIOR_ENTRY')
95351       )
95352    THEN
95353       IF
95354       --
95355       1 = 2
95356       --
95357       THEN
95358       xla_accounting_err_pkg.build_message
95359                                     (p_appli_s_name            => 'XLA'
95360                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95361                                     ,p_token_1                 => 'LINE_NUMBER'
95362                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
95363                                     ,p_token_2                 => 'LINE_TYPE_NAME'
95364                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
95365                                                                              l_component_type
95366                                                                             ,l_component_code
95367                                                                             ,l_component_type_code
95368                                                                             ,l_component_appl_id
95369                                                                             ,l_amb_context_code
95370                                                                             ,l_entity_code
95371                                                                             ,l_event_class_code
95372                                                                            )
95373                                     ,p_token_3                 => 'OWNER'
95374                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
95375                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
95376                                                                           ,p_lookup_code    => l_component_type_code
95377                                                                          )
95378                                     ,p_token_4                 => 'PRODUCT_NAME'
95379                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
95380                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
95381                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
95382                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
95383                                     ,p_ae_header_id            =>  NULL
95384                                        );
95385 
95386         IF (C_LEVEL_ERROR>= g_log_level) THEN
95387                  trace
95388                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95389                       ,p_level    => C_LEVEL_ERROR
95390                       ,p_module   => l_log_module);
95391         END IF;
95392       END IF;
95393    END IF;
95394    --
95395    --
95396    ------------------------------------------------------------------------------------------------
95397    -- 4219869 Business Flow
95398    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
95399    -- Prior Entry.  Currently, the following code is always generated.
95400    ------------------------------------------------------------------------------------------------
95401    XLA_AE_LINES_PKG.ValidateCurrentLine;
95405    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
95402 
95403    ------------------------------------------------------------------------------------
95404    -- 4219869 Business Flow
95406    ------------------------------------------------------------------------------------
95407    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95408 
95409    ----------------------------------------------------------------------------------
95410    -- 4219869 Business Flow
95411    -- Update journal entry status -- Need to generate this within IF <condition>
95412    ----------------------------------------------------------------------------------
95413    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95414          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
95415          ,p_balance_type_code => l_balance_type_code
95416          );
95417 
95418    -------------------------------------------------------------------------------------------
95419    -- 4262811 - Generate the Accrual Reversal lines
95420    -------------------------------------------------------------------------------------------
95421    BEGIN
95422       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
95423                               (g_array_event(p_event_id).array_value_num('header_index'));
95424       IF l_acc_rev_flag IS NULL THEN
95425          l_acc_rev_flag := 'N';
95426       END IF;
95427    EXCEPTION
95428       WHEN OTHERS THEN
95429          l_acc_rev_flag := 'N';
95430    END;
95431    --
95432    IF (l_acc_rev_flag = 'Y') THEN
95433 
95434        -- 4645092  ------------------------------------------------------------------------------
95435        -- To allow MPA report to determine if it should generate report process
95436        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
95437        ------------------------------------------------------------------------------------------
95438 
95439        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
95440        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
95441    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
95442    -- call ADRs
95443    -- Bug 4922099
95444    --
95445    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95446         (NVL(l_actual_upg_option, 'N') = 'O') OR
95447         (NVL(l_enc_upg_option, 'N') = 'O')
95448       )
95449    THEN
95450    NULL;
95451    --
95452    --
95453    
95454   l_ccid := AcctDerRule_25(
95455            p_application_id           => p_application_id
95456          , p_ae_header_id             => l_ae_header_id 
95457 , p_source_1 => p_source_1
95458 , p_source_2 => p_source_2
95459          , x_transaction_coa_id       => l_adr_transaction_coa_id
95460          , x_accounting_coa_id        => l_adr_accounting_coa_id
95461          , x_value_type_code          => l_adr_value_type_code
95462          , p_side                     => 'NA'
95463    );
95464 
95465    xla_ae_lines_pkg.set_ccid(
95466     p_code_combination_id          => l_ccid
95467   , p_value_type_code              => l_adr_value_type_code
95468   , p_transaction_coa_id           => l_adr_transaction_coa_id
95469   , p_accounting_coa_id            => l_adr_accounting_coa_id
95470   , p_adr_code                     => 'ISP'
95471   , p_adr_type_code                => 'S'
95472   , p_component_type               => l_component_type
95473   , p_component_code               => l_component_code
95474   , p_component_type_code          => l_component_type_code
95475   , p_component_appl_id            => l_component_appl_id
95476   , p_amb_context_code             => l_amb_context_code
95477   , p_side                         => 'NA'
95478   );
95479 
95480 
95481    --
95482    --
95483    END IF;
95484 
95485        --
95486        -- Update the line information that should be overwritten
95487        --
95488        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
95489                                          p_header_num   => 1);
95490        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
95491 
95492        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
95493 
95494        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
95495           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
95496        END IF;
95497 
95498       --
95499       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
95500       --
95501       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
95502           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
95503       ELSE
95504           ---------------------------------------------------------------------------------------------------
95505           -- 4262811a Switch Sign
95506           ---------------------------------------------------------------------------------------------------
95507           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
95508           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95509                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95513           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
95510           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95511                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95512           -- 5132302
95514                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95515 
95516       END IF;
95517 
95518       -- 4955764
95519       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95520       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
95521 
95522 
95523       XLA_AE_LINES_PKG.ValidateCurrentLine;
95524       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95525 
95526       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95527                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
95528                ,p_balance_type_code => l_balance_type_code);
95529 
95530    END IF;
95531 
95532    -----------------------------------------------------------------------------------------
95533    -- 4262811 Multiperiod Accounting
95534    -----------------------------------------------------------------------------------------
95535      -- No MPA option is assigned.
95536 
95537 
95538 END IF;
95539 END IF;
95540 --
95541 
95542 --
95543 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95544    trace
95545       (p_msg      => 'END of AcctLineType_204'
95546       ,p_level    => C_LEVEL_PROCEDURE
95547       ,p_module   => l_log_module);
95548 END IF;
95549 --
95550 EXCEPTION
95551   WHEN xla_exceptions_pkg.application_exception THEN
95552       RAISE;
95553   WHEN OTHERS THEN
95554        xla_exceptions_pkg.raise_message
95555            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_204');
95556 END AcctLineType_204;
95557 --
95558 
95559 ---------------------------------------
95560 --
95561 -- PRIVATE FUNCTION
95562 --         AcctLineType_205
95563 --
95564 ---------------------------------------
95565 PROCEDURE AcctLineType_205 (
95566   p_application_id        IN NUMBER
95567  ,p_event_id              IN NUMBER
95568  ,p_calculate_acctd_flag  IN VARCHAR2
95569  ,p_calculate_g_l_flag    IN VARCHAR2
95570  ,p_actual_flag           IN OUT VARCHAR2
95571  ,p_balance_type_code     OUT VARCHAR2
95572  ,p_gain_or_loss_ref      OUT VARCHAR2
95573  
95574 --Transaction Account
95575  , p_source_1            IN NUMBER
95576 --Journal Line Type
95577  , p_source_2            IN VARCHAR2
95578 --Entered Amount
95579  , p_source_3            IN NUMBER
95580 --First Distribution Identifier
95581  , p_source_5            IN NUMBER
95582 --Distribution Type
95583  , p_source_6            IN VARCHAR2
95584 --Currency Code
95585  , p_source_7            IN VARCHAR2
95586 --Currency Conversion Date
95587  , p_source_8            IN DATE
95588 --Currency Conversion Rate
95589  , p_source_9            IN NUMBER
95590 --Currency Conversion Type
95591  , p_source_10            IN VARCHAR2
95592 --Accounted Amount
95593  , p_source_11            IN NUMBER
95594 )
95595 IS
95596 
95597 l_component_type              VARCHAR2(80);
95598 l_component_code              VARCHAR2(30);
95599 l_component_type_code         VARCHAR2(1);
95600 l_component_appl_id           INTEGER;
95601 l_amb_context_code            VARCHAR2(30);
95602 l_entity_code                 VARCHAR2(30);
95603 l_event_class_code            VARCHAR2(30);
95604 l_ae_header_id                NUMBER;
95605 l_event_type_code             VARCHAR2(30);
95606 l_line_definition_code        VARCHAR2(30);
95607 l_line_definition_owner_code  VARCHAR2(1);
95608 --
95609 -- adr variables
95610 l_segment                     VARCHAR2(30);
95611 l_ccid                        NUMBER;
95612 l_adr_transaction_coa_id      NUMBER;
95613 l_adr_accounting_coa_id       NUMBER;
95614 l_adr_flexfield_segment_code  VARCHAR2(30);
95615 l_adr_flex_value_set_id       NUMBER;
95616 l_adr_value_type_code         VARCHAR2(30);
95617 l_adr_value_combination_id    NUMBER;
95618 l_adr_value_segment_code      VARCHAR2(30);
95619 
95620 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
95621 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
95622 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
95623 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
95624 
95625 -- 4262811 Variables ------------------------------------------------------------------------------------------
95626 l_entered_amt_idx             NUMBER;
95627 l_accted_amt_idx              NUMBER;
95628 l_acc_rev_flag                VARCHAR2(1);
95629 l_accrual_line_num            NUMBER;
95630 l_tmp_amt                     NUMBER;
95631 l_acc_rev_natural_side_code   VARCHAR2(1);
95632 
95633 l_num_entries                 NUMBER;
95634 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
95635 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
95636 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
95637 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
95638 l_recog_line_1                NUMBER;
95639 l_recog_line_2                NUMBER;
95640 
95644 
95641 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
95642 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
95643 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
95645 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
95646 
95647 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
95648 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
95649 
95650 ---------------------------------------------------------------------------------------------------------------
95651 
95652 
95653 --
95654 -- bulk performance
95655 --
95656 l_balance_type_code           VARCHAR2(1);
95657 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
95658 l_log_module                  VARCHAR2(240);
95659 
95660 --
95661 -- Upgrade strategy
95662 --
95663 l_actual_upg_option           VARCHAR2(1);
95664 l_enc_upg_option           VARCHAR2(1);
95665 
95666 --
95667 BEGIN
95668 --
95669 IF g_log_enabled THEN
95670       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_205';
95671 END IF;
95672 --
95673 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95674 
95675       trace
95676          (p_msg      => 'BEGIN of AcctLineType_205'
95677          ,p_level    => C_LEVEL_PROCEDURE
95678          ,p_module   => l_log_module);
95679 
95680 END IF;
95681 --
95682 l_component_type             := 'AMB_JLT';
95683 l_component_code             := 'ISP';
95684 l_component_type_code        := 'S';
95685 l_component_appl_id          :=  555;
95686 l_amb_context_code           := 'DEFAULT';
95687 l_entity_code                := 'PURCHASING';
95688 l_event_class_code           := 'DELIVER';
95689 l_event_type_code            := 'PO_RECEIPT';
95690 l_line_definition_owner_code := 'S';
95691 l_line_definition_code       := 'DELIVER';
95692 --
95693 l_balance_type_code          := 'A';
95694 l_segment                     := NULL;
95695 l_ccid                        := NULL;
95696 l_adr_transaction_coa_id      := NULL;
95697 l_adr_accounting_coa_id       := NULL;
95698 l_adr_flexfield_segment_code  := NULL;
95699 l_adr_flex_value_set_id       := NULL;
95700 l_adr_value_type_code         := NULL;
95701 l_adr_value_combination_id    := NULL;
95702 l_adr_value_segment_code      := NULL;
95703 
95704 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
95705 l_bflow_class_code           := '';    -- 4219869 Business Flow
95706 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
95707 l_budgetary_control_flag     := 'N';
95708 
95709 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
95710 l_bflow_applied_to_amt       := NULL; -- 5132302
95711 l_entered_amt_idx            := NULL;          -- 4262811
95712 l_accted_amt_idx             := NULL;          -- 4262811
95713 l_acc_rev_flag               := NULL;          -- 4262811
95714 l_accrual_line_num           := NULL;          -- 4262811
95715 l_tmp_amt                    := NULL;          -- 4262811
95716 --
95717  
95718 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
95719     l_balance_type_code <> 'B' THEN
95720 IF NVL(p_source_2,'
95721 ') =  'ISP'
95722  THEN 
95723 
95724    --
95725    XLA_AE_LINES_PKG.SetNewLine;
95726 
95727    p_balance_type_code          := l_balance_type_code;
95728    -- set the flag so later we will know whether the gain loss line needs to be created
95729    
95730    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
95731      p_actual_flag :='A';
95732    END IF;
95733 
95734    --
95735    -- bulk performance
95736    --
95737    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
95738                                       p_header_num   => 0); -- 4262811
95739    --
95740    -- set accounting line options
95741    --
95742    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
95743            p_natural_side_code          => 'D'
95744          , p_gain_or_loss_flag          => 'N'
95745          , p_gl_transfer_mode_code      => 'D'
95746          , p_acct_entry_type_code       => 'A'
95747          , p_switch_side_flag           => 'Y'
95748          , p_merge_duplicate_code       => 'W'
95749          );
95750    --
95751    l_acc_rev_natural_side_code := 'C';  -- 4262811
95752    -- 
95753    --
95754    -- set accounting line type info
95755    --
95756    xla_ae_lines_pkg.SetAcctLineType
95757       (p_component_type             => l_component_type
95758       ,p_event_type_code            => l_event_type_code
95759       ,p_line_definition_owner_code => l_line_definition_owner_code
95760       ,p_line_definition_code       => l_line_definition_code
95761       ,p_accounting_line_code       => l_component_code
95762       ,p_accounting_line_type_code  => l_component_type_code
95763       ,p_accounting_line_appl_id    => l_component_appl_id
95764       ,p_amb_context_code           => l_amb_context_code
95765       ,p_entity_code                => l_entity_code
95766       ,p_event_class_code           => l_event_class_code);
95767    --
95768    -- set accounting class
95769    --
95770    xla_ae_lines_pkg.SetAcctClass(
95771            p_accounting_class_code  => 'RECEIVING_INSPECTION'
95772          , p_ae_header_id           => l_ae_header_id
95773          );
95774 
95775    --
95776    -- set rounding class
95777    --
95781    --
95778    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
95779                       'RECEIVING_INSPECTION';
95780 
95782    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
95783    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
95784    --
95785    -- bulk performance
95786    --
95787    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
95788 
95789    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
95790       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
95791 
95792    -- 4955764
95793    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95794       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
95795 
95796    -- 4458381 Public Sector Enh
95797    
95798    --
95799    -- set accounting attributes for the line type
95800    --
95801    l_entered_amt_idx := 3;
95802    l_accted_amt_idx  := 8;
95803    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
95804    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
95805    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
95806    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
95807    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
95808    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
95809    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
95810    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
95811    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
95812    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
95813    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
95814    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
95815    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
95816    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
95817    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
95818    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
95819    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
95820 
95821    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
95822    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
95823 
95824    ---------------------------------------------------------------------------------------------------------------
95825    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
95826    ---------------------------------------------------------------------------------------------------------------
95827    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
95828 
95829    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95830    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95831 
95832    IF xla_accounting_cache_pkg.GetValueChar
95833          (p_source_code         => 'LEDGER_CATEGORY_CODE'
95834          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
95835    AND l_bflow_method_code = 'PRIOR_ENTRY'
95836 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
95837    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
95838          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
95839        )
95840    THEN
95841          xla_ae_lines_pkg.BflowUpgEntry
95842            (p_business_method_code    => l_bflow_method_code
95843            ,p_business_class_code     => l_bflow_class_code
95844            ,p_balance_type            => l_balance_type_code);
95845    ELSE
95846       NULL;
95847 -- No business flow processing for business flow method of NONE.
95848    END IF;
95849 
95850    --
95851    -- call analytical criteria
95852    --
95853    
95854    --
95855    -- call description
95856    --
95857    -- No description or it is inherited.
95858    --
95859    -- call ADRs
95860    -- Bug 4922099
95861    --
95862    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95863         (NVL(l_actual_upg_option, 'N') = 'O') OR
95864         (NVL(l_enc_upg_option, 'N') = 'O')
95865       )
95866    THEN
95867    NULL;
95868    --
95869    --
95870    
95871   l_ccid := AcctDerRule_25(
95872            p_application_id           => p_application_id
95873          , p_ae_header_id             => l_ae_header_id 
95874 , p_source_1 => p_source_1
95875 , p_source_2 => p_source_2
95876          , x_transaction_coa_id       => l_adr_transaction_coa_id
95877          , x_accounting_coa_id        => l_adr_accounting_coa_id
95878          , x_value_type_code          => l_adr_value_type_code
95879          , p_side                     => 'NA'
95880    );
95881 
95882    xla_ae_lines_pkg.set_ccid(
95883     p_code_combination_id          => l_ccid
95884   , p_value_type_code              => l_adr_value_type_code
95885   , p_transaction_coa_id           => l_adr_transaction_coa_id
95886   , p_accounting_coa_id            => l_adr_accounting_coa_id
95887   , p_adr_code                     => 'ISP'
95888   , p_adr_type_code                => 'S'
95889   , p_component_type               => l_component_type
95890   , p_component_code               => l_component_code
95894   , p_side                         => 'NA'
95891   , p_component_type_code          => l_component_type_code
95892   , p_component_appl_id            => l_component_appl_id
95893   , p_amb_context_code             => l_amb_context_code
95895   );
95896 
95897 
95898    --
95899    --
95900    END IF;
95901    --
95902    -- Bug 4922099
95903    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
95904           (NVL(l_enc_upg_option, 'N') = 'O')
95905         ) AND
95906         (l_bflow_method_code = 'PRIOR_ENTRY')
95907       )
95908    THEN
95909       IF
95910       --
95911       1 = 2
95912       --
95913       THEN
95914       xla_accounting_err_pkg.build_message
95915                                     (p_appli_s_name            => 'XLA'
95916                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95917                                     ,p_token_1                 => 'LINE_NUMBER'
95918                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
95919                                     ,p_token_2                 => 'LINE_TYPE_NAME'
95920                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
95921                                                                              l_component_type
95922                                                                             ,l_component_code
95923                                                                             ,l_component_type_code
95924                                                                             ,l_component_appl_id
95925                                                                             ,l_amb_context_code
95926                                                                             ,l_entity_code
95927                                                                             ,l_event_class_code
95928                                                                            )
95929                                     ,p_token_3                 => 'OWNER'
95930                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
95931                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
95932                                                                           ,p_lookup_code    => l_component_type_code
95933                                                                          )
95934                                     ,p_token_4                 => 'PRODUCT_NAME'
95935                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
95936                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
95937                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
95938                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
95939                                     ,p_ae_header_id            =>  NULL
95940                                        );
95941 
95942         IF (C_LEVEL_ERROR>= g_log_level) THEN
95943                  trace
95944                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95945                       ,p_level    => C_LEVEL_ERROR
95946                       ,p_module   => l_log_module);
95947         END IF;
95948       END IF;
95949    END IF;
95950    --
95951    --
95952    ------------------------------------------------------------------------------------------------
95953    -- 4219869 Business Flow
95954    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
95955    -- Prior Entry.  Currently, the following code is always generated.
95956    ------------------------------------------------------------------------------------------------
95957    XLA_AE_LINES_PKG.ValidateCurrentLine;
95958 
95959    ------------------------------------------------------------------------------------
95960    -- 4219869 Business Flow
95961    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
95962    ------------------------------------------------------------------------------------
95963    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95964 
95965    ----------------------------------------------------------------------------------
95966    -- 4219869 Business Flow
95967    -- Update journal entry status -- Need to generate this within IF <condition>
95968    ----------------------------------------------------------------------------------
95969    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95970          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
95971          ,p_balance_type_code => l_balance_type_code
95972          );
95973 
95974    -------------------------------------------------------------------------------------------
95975    -- 4262811 - Generate the Accrual Reversal lines
95976    -------------------------------------------------------------------------------------------
95977    BEGIN
95978       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
95979                               (g_array_event(p_event_id).array_value_num('header_index'));
95980       IF l_acc_rev_flag IS NULL THEN
95981          l_acc_rev_flag := 'N';
95982       END IF;
95983    EXCEPTION
95984       WHEN OTHERS THEN
95985          l_acc_rev_flag := 'N';
95986    END;
95987    --
95988    IF (l_acc_rev_flag = 'Y') THEN
95989 
95993        ------------------------------------------------------------------------------------------
95990        -- 4645092  ------------------------------------------------------------------------------
95991        -- To allow MPA report to determine if it should generate report process
95992        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
95994 
95995        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
95996        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
95997    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
95998    -- call ADRs
95999    -- Bug 4922099
96000    --
96001    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96002         (NVL(l_actual_upg_option, 'N') = 'O') OR
96003         (NVL(l_enc_upg_option, 'N') = 'O')
96004       )
96005    THEN
96006    NULL;
96007    --
96008    --
96009    
96010   l_ccid := AcctDerRule_25(
96011            p_application_id           => p_application_id
96012          , p_ae_header_id             => l_ae_header_id 
96013 , p_source_1 => p_source_1
96014 , p_source_2 => p_source_2
96015          , x_transaction_coa_id       => l_adr_transaction_coa_id
96016          , x_accounting_coa_id        => l_adr_accounting_coa_id
96017          , x_value_type_code          => l_adr_value_type_code
96018          , p_side                     => 'NA'
96019    );
96020 
96021    xla_ae_lines_pkg.set_ccid(
96022     p_code_combination_id          => l_ccid
96023   , p_value_type_code              => l_adr_value_type_code
96024   , p_transaction_coa_id           => l_adr_transaction_coa_id
96025   , p_accounting_coa_id            => l_adr_accounting_coa_id
96026   , p_adr_code                     => 'ISP'
96027   , p_adr_type_code                => 'S'
96028   , p_component_type               => l_component_type
96029   , p_component_code               => l_component_code
96030   , p_component_type_code          => l_component_type_code
96031   , p_component_appl_id            => l_component_appl_id
96032   , p_amb_context_code             => l_amb_context_code
96033   , p_side                         => 'NA'
96034   );
96035 
96036 
96037    --
96038    --
96039    END IF;
96040 
96041        --
96042        -- Update the line information that should be overwritten
96043        --
96044        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
96045                                          p_header_num   => 1);
96046        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
96047 
96048        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
96049 
96050        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
96051           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
96052        END IF;
96053 
96054       --
96055       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
96056       --
96057       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
96058           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
96059       ELSE
96060           ---------------------------------------------------------------------------------------------------
96061           -- 4262811a Switch Sign
96062           ---------------------------------------------------------------------------------------------------
96063           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
96064           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96065                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96066           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96067                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96068           -- 5132302
96069           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
96070                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96071 
96072       END IF;
96073 
96074       -- 4955764
96075       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96076       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
96077 
96078 
96079       XLA_AE_LINES_PKG.ValidateCurrentLine;
96080       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96081 
96082       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96083                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
96084                ,p_balance_type_code => l_balance_type_code);
96085 
96086    END IF;
96087 
96088    -----------------------------------------------------------------------------------------
96089    -- 4262811 Multiperiod Accounting
96090    -----------------------------------------------------------------------------------------
96091      -- No MPA option is assigned.
96092 
96093 
96094 END IF;
96095 END IF;
96096 --
96097 
96098 --
96099 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96100    trace
96101       (p_msg      => 'END of AcctLineType_205'
96102       ,p_level    => C_LEVEL_PROCEDURE
96106 EXCEPTION
96103       ,p_module   => l_log_module);
96104 END IF;
96105 --
96107   WHEN xla_exceptions_pkg.application_exception THEN
96108       RAISE;
96109   WHEN OTHERS THEN
96110        xla_exceptions_pkg.raise_message
96111            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_205');
96112 END AcctLineType_205;
96113 --
96114 
96115 ---------------------------------------
96116 --
96117 -- PRIVATE FUNCTION
96118 --         AcctLineType_206
96119 --
96120 ---------------------------------------
96121 PROCEDURE AcctLineType_206 (
96122   p_application_id        IN NUMBER
96123  ,p_event_id              IN NUMBER
96124  ,p_calculate_acctd_flag  IN VARCHAR2
96125  ,p_calculate_g_l_flag    IN VARCHAR2
96126  ,p_actual_flag           IN OUT VARCHAR2
96127  ,p_balance_type_code     OUT VARCHAR2
96128  ,p_gain_or_loss_ref      OUT VARCHAR2
96129  
96130 --Transaction Account
96131  , p_source_1            IN NUMBER
96132 --Journal Line Type
96133  , p_source_2            IN VARCHAR2
96134 --Entered Amount
96135  , p_source_3            IN NUMBER
96136 --First Distribution Identifier
96137  , p_source_5            IN NUMBER
96138 --Distribution Type
96139  , p_source_6            IN VARCHAR2
96140 --Currency Code
96141  , p_source_7            IN VARCHAR2
96142 --Currency Conversion Date
96143  , p_source_8            IN DATE
96144 --Currency Conversion Rate
96145  , p_source_9            IN NUMBER
96146 --Currency Conversion Type
96147  , p_source_10            IN VARCHAR2
96148 --Accounted Amount
96149  , p_source_11            IN NUMBER
96150 )
96151 IS
96152 
96153 l_component_type              VARCHAR2(80);
96154 l_component_code              VARCHAR2(30);
96155 l_component_type_code         VARCHAR2(1);
96156 l_component_appl_id           INTEGER;
96157 l_amb_context_code            VARCHAR2(30);
96158 l_entity_code                 VARCHAR2(30);
96159 l_event_class_code            VARCHAR2(30);
96160 l_ae_header_id                NUMBER;
96161 l_event_type_code             VARCHAR2(30);
96162 l_line_definition_code        VARCHAR2(30);
96163 l_line_definition_owner_code  VARCHAR2(1);
96164 --
96165 -- adr variables
96166 l_segment                     VARCHAR2(30);
96167 l_ccid                        NUMBER;
96168 l_adr_transaction_coa_id      NUMBER;
96169 l_adr_accounting_coa_id       NUMBER;
96170 l_adr_flexfield_segment_code  VARCHAR2(30);
96171 l_adr_flex_value_set_id       NUMBER;
96172 l_adr_value_type_code         VARCHAR2(30);
96173 l_adr_value_combination_id    NUMBER;
96174 l_adr_value_segment_code      VARCHAR2(30);
96175 
96176 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
96177 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
96178 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
96179 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
96180 
96181 -- 4262811 Variables ------------------------------------------------------------------------------------------
96182 l_entered_amt_idx             NUMBER;
96183 l_accted_amt_idx              NUMBER;
96184 l_acc_rev_flag                VARCHAR2(1);
96185 l_accrual_line_num            NUMBER;
96186 l_tmp_amt                     NUMBER;
96187 l_acc_rev_natural_side_code   VARCHAR2(1);
96188 
96189 l_num_entries                 NUMBER;
96190 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
96191 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
96192 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
96193 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
96194 l_recog_line_1                NUMBER;
96195 l_recog_line_2                NUMBER;
96196 
96197 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
96198 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
96199 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
96200 
96201 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
96202 
96203 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
96204 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
96205 
96206 ---------------------------------------------------------------------------------------------------------------
96207 
96208 
96209 --
96210 -- bulk performance
96211 --
96212 l_balance_type_code           VARCHAR2(1);
96213 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
96214 l_log_module                  VARCHAR2(240);
96215 
96216 --
96217 -- Upgrade strategy
96218 --
96219 l_actual_upg_option           VARCHAR2(1);
96220 l_enc_upg_option           VARCHAR2(1);
96221 
96222 --
96223 BEGIN
96224 --
96225 IF g_log_enabled THEN
96226       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_206';
96227 END IF;
96228 --
96229 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96230 
96231       trace
96232          (p_msg      => 'BEGIN of AcctLineType_206'
96233          ,p_level    => C_LEVEL_PROCEDURE
96234          ,p_module   => l_log_module);
96235 
96236 END IF;
96237 --
96238 l_component_type             := 'AMB_JLT';
96239 l_component_code             := 'ISP';
96240 l_component_type_code        := 'S';
96241 l_component_appl_id          :=  555;
96242 l_amb_context_code           := 'DEFAULT';
96246 l_line_definition_owner_code := 'S';
96243 l_entity_code                := 'PURCHASING';
96244 l_event_class_code           := 'RECEIVE';
96245 l_event_type_code            := 'CORRECTION_RECEIVE';
96247 l_line_definition_code       := 'CORRECTION_RECEIVE';
96248 --
96249 l_balance_type_code          := 'A';
96250 l_segment                     := NULL;
96251 l_ccid                        := NULL;
96252 l_adr_transaction_coa_id      := NULL;
96253 l_adr_accounting_coa_id       := NULL;
96254 l_adr_flexfield_segment_code  := NULL;
96255 l_adr_flex_value_set_id       := NULL;
96256 l_adr_value_type_code         := NULL;
96257 l_adr_value_combination_id    := NULL;
96258 l_adr_value_segment_code      := NULL;
96259 
96260 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
96261 l_bflow_class_code           := '';    -- 4219869 Business Flow
96262 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
96263 l_budgetary_control_flag     := 'N';
96264 
96265 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
96266 l_bflow_applied_to_amt       := NULL; -- 5132302
96267 l_entered_amt_idx            := NULL;          -- 4262811
96268 l_accted_amt_idx             := NULL;          -- 4262811
96269 l_acc_rev_flag               := NULL;          -- 4262811
96270 l_accrual_line_num           := NULL;          -- 4262811
96271 l_tmp_amt                    := NULL;          -- 4262811
96272 --
96273  
96274 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
96275     l_balance_type_code <> 'B' THEN
96276 IF NVL(p_source_2,'
96277 ') =  'ISP'
96278  THEN 
96279 
96280    --
96281    XLA_AE_LINES_PKG.SetNewLine;
96282 
96283    p_balance_type_code          := l_balance_type_code;
96284    -- set the flag so later we will know whether the gain loss line needs to be created
96285    
96286    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
96287      p_actual_flag :='A';
96288    END IF;
96289 
96290    --
96291    -- bulk performance
96292    --
96293    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
96294                                       p_header_num   => 0); -- 4262811
96295    --
96296    -- set accounting line options
96297    --
96298    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
96299            p_natural_side_code          => 'D'
96300          , p_gain_or_loss_flag          => 'N'
96301          , p_gl_transfer_mode_code      => 'D'
96302          , p_acct_entry_type_code       => 'A'
96303          , p_switch_side_flag           => 'Y'
96304          , p_merge_duplicate_code       => 'W'
96305          );
96306    --
96307    l_acc_rev_natural_side_code := 'C';  -- 4262811
96308    -- 
96309    --
96310    -- set accounting line type info
96311    --
96312    xla_ae_lines_pkg.SetAcctLineType
96313       (p_component_type             => l_component_type
96314       ,p_event_type_code            => l_event_type_code
96315       ,p_line_definition_owner_code => l_line_definition_owner_code
96316       ,p_line_definition_code       => l_line_definition_code
96317       ,p_accounting_line_code       => l_component_code
96318       ,p_accounting_line_type_code  => l_component_type_code
96319       ,p_accounting_line_appl_id    => l_component_appl_id
96320       ,p_amb_context_code           => l_amb_context_code
96321       ,p_entity_code                => l_entity_code
96322       ,p_event_class_code           => l_event_class_code);
96323    --
96324    -- set accounting class
96325    --
96326    xla_ae_lines_pkg.SetAcctClass(
96327            p_accounting_class_code  => 'RECEIVING_INSPECTION'
96328          , p_ae_header_id           => l_ae_header_id
96329          );
96330 
96331    --
96332    -- set rounding class
96333    --
96334    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
96335                       'RECEIVING_INSPECTION';
96336 
96337    --
96338    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
96339    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
96340    --
96341    -- bulk performance
96342    --
96343    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
96344 
96345    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
96346       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
96347 
96348    -- 4955764
96349    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96350       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
96351 
96352    -- 4458381 Public Sector Enh
96353    
96354    --
96355    -- set accounting attributes for the line type
96356    --
96357    l_entered_amt_idx := 3;
96358    l_accted_amt_idx  := 8;
96359    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
96360    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
96361    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
96362    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
96363    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
96364    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
96365    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
96366    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
96370    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
96367    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
96368    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
96369    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
96371    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
96372    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
96373    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
96374    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
96375    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
96376 
96377    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
96378    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
96379 
96380    ---------------------------------------------------------------------------------------------------------------
96381    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
96382    ---------------------------------------------------------------------------------------------------------------
96383    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
96384 
96385    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96386    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96387 
96388    IF xla_accounting_cache_pkg.GetValueChar
96389          (p_source_code         => 'LEDGER_CATEGORY_CODE'
96390          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
96391    AND l_bflow_method_code = 'PRIOR_ENTRY'
96392 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
96393    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
96394          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
96395        )
96396    THEN
96397          xla_ae_lines_pkg.BflowUpgEntry
96398            (p_business_method_code    => l_bflow_method_code
96399            ,p_business_class_code     => l_bflow_class_code
96400            ,p_balance_type            => l_balance_type_code);
96401    ELSE
96402       NULL;
96403 -- No business flow processing for business flow method of NONE.
96404    END IF;
96405 
96406    --
96407    -- call analytical criteria
96408    --
96409    
96410    --
96411    -- call description
96412    --
96413    -- No description or it is inherited.
96414    --
96415    -- call ADRs
96416    -- Bug 4922099
96417    --
96418    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96419         (NVL(l_actual_upg_option, 'N') = 'O') OR
96420         (NVL(l_enc_upg_option, 'N') = 'O')
96421       )
96422    THEN
96423    NULL;
96424    --
96425    --
96426    
96427   l_ccid := AcctDerRule_25(
96428            p_application_id           => p_application_id
96429          , p_ae_header_id             => l_ae_header_id 
96430 , p_source_1 => p_source_1
96431 , p_source_2 => p_source_2
96432          , x_transaction_coa_id       => l_adr_transaction_coa_id
96433          , x_accounting_coa_id        => l_adr_accounting_coa_id
96434          , x_value_type_code          => l_adr_value_type_code
96435          , p_side                     => 'NA'
96436    );
96437 
96438    xla_ae_lines_pkg.set_ccid(
96439     p_code_combination_id          => l_ccid
96440   , p_value_type_code              => l_adr_value_type_code
96441   , p_transaction_coa_id           => l_adr_transaction_coa_id
96442   , p_accounting_coa_id            => l_adr_accounting_coa_id
96443   , p_adr_code                     => 'ISP'
96444   , p_adr_type_code                => 'S'
96445   , p_component_type               => l_component_type
96446   , p_component_code               => l_component_code
96447   , p_component_type_code          => l_component_type_code
96448   , p_component_appl_id            => l_component_appl_id
96449   , p_amb_context_code             => l_amb_context_code
96450   , p_side                         => 'NA'
96451   );
96452 
96453 
96454    --
96455    --
96456    END IF;
96457    --
96458    -- Bug 4922099
96459    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
96460           (NVL(l_enc_upg_option, 'N') = 'O')
96461         ) AND
96462         (l_bflow_method_code = 'PRIOR_ENTRY')
96463       )
96464    THEN
96465       IF
96466       --
96467       1 = 2
96468       --
96469       THEN
96470       xla_accounting_err_pkg.build_message
96471                                     (p_appli_s_name            => 'XLA'
96472                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96473                                     ,p_token_1                 => 'LINE_NUMBER'
96474                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
96475                                     ,p_token_2                 => 'LINE_TYPE_NAME'
96476                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
96477                                                                              l_component_type
96478                                                                             ,l_component_code
96479                                                                             ,l_component_type_code
96480                                                                             ,l_component_appl_id
96481                                                                             ,l_amb_context_code
96485                                     ,p_token_3                 => 'OWNER'
96482                                                                             ,l_entity_code
96483                                                                             ,l_event_class_code
96484                                                                            )
96486                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
96487                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
96488                                                                           ,p_lookup_code    => l_component_type_code
96489                                                                          )
96490                                     ,p_token_4                 => 'PRODUCT_NAME'
96491                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
96492                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
96493                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
96494                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
96495                                     ,p_ae_header_id            =>  NULL
96496                                        );
96497 
96498         IF (C_LEVEL_ERROR>= g_log_level) THEN
96499                  trace
96500                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96501                       ,p_level    => C_LEVEL_ERROR
96502                       ,p_module   => l_log_module);
96503         END IF;
96504       END IF;
96505    END IF;
96506    --
96507    --
96508    ------------------------------------------------------------------------------------------------
96509    -- 4219869 Business Flow
96510    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
96511    -- Prior Entry.  Currently, the following code is always generated.
96512    ------------------------------------------------------------------------------------------------
96513    XLA_AE_LINES_PKG.ValidateCurrentLine;
96514 
96515    ------------------------------------------------------------------------------------
96516    -- 4219869 Business Flow
96517    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
96518    ------------------------------------------------------------------------------------
96519    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96520 
96521    ----------------------------------------------------------------------------------
96522    -- 4219869 Business Flow
96523    -- Update journal entry status -- Need to generate this within IF <condition>
96524    ----------------------------------------------------------------------------------
96525    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96526          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
96527          ,p_balance_type_code => l_balance_type_code
96528          );
96529 
96530    -------------------------------------------------------------------------------------------
96531    -- 4262811 - Generate the Accrual Reversal lines
96532    -------------------------------------------------------------------------------------------
96533    BEGIN
96534       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
96535                               (g_array_event(p_event_id).array_value_num('header_index'));
96536       IF l_acc_rev_flag IS NULL THEN
96537          l_acc_rev_flag := 'N';
96538       END IF;
96539    EXCEPTION
96540       WHEN OTHERS THEN
96541          l_acc_rev_flag := 'N';
96542    END;
96543    --
96544    IF (l_acc_rev_flag = 'Y') THEN
96545 
96546        -- 4645092  ------------------------------------------------------------------------------
96547        -- To allow MPA report to determine if it should generate report process
96548        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
96549        ------------------------------------------------------------------------------------------
96550 
96551        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
96552        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
96553    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
96554    -- call ADRs
96555    -- Bug 4922099
96556    --
96557    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96558         (NVL(l_actual_upg_option, 'N') = 'O') OR
96559         (NVL(l_enc_upg_option, 'N') = 'O')
96560       )
96561    THEN
96562    NULL;
96563    --
96564    --
96565    
96566   l_ccid := AcctDerRule_25(
96567            p_application_id           => p_application_id
96568          , p_ae_header_id             => l_ae_header_id 
96569 , p_source_1 => p_source_1
96570 , p_source_2 => p_source_2
96571          , x_transaction_coa_id       => l_adr_transaction_coa_id
96572          , x_accounting_coa_id        => l_adr_accounting_coa_id
96573          , x_value_type_code          => l_adr_value_type_code
96574          , p_side                     => 'NA'
96575    );
96576 
96577    xla_ae_lines_pkg.set_ccid(
96578     p_code_combination_id          => l_ccid
96579   , p_value_type_code              => l_adr_value_type_code
96580   , p_transaction_coa_id           => l_adr_transaction_coa_id
96581   , p_accounting_coa_id            => l_adr_accounting_coa_id
96582   , p_adr_code                     => 'ISP'
96586   , p_component_type_code          => l_component_type_code
96583   , p_adr_type_code                => 'S'
96584   , p_component_type               => l_component_type
96585   , p_component_code               => l_component_code
96587   , p_component_appl_id            => l_component_appl_id
96588   , p_amb_context_code             => l_amb_context_code
96589   , p_side                         => 'NA'
96590   );
96591 
96592 
96593    --
96594    --
96595    END IF;
96596 
96597        --
96598        -- Update the line information that should be overwritten
96599        --
96600        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
96601                                          p_header_num   => 1);
96602        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
96603 
96604        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
96605 
96606        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
96607           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
96608        END IF;
96609 
96610       --
96611       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
96612       --
96613       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
96614           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
96615       ELSE
96616           ---------------------------------------------------------------------------------------------------
96617           -- 4262811a Switch Sign
96618           ---------------------------------------------------------------------------------------------------
96619           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
96620           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96621                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96622           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96623                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96624           -- 5132302
96625           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
96626                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96627 
96628       END IF;
96629 
96630       -- 4955764
96631       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96632       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
96633 
96634 
96635       XLA_AE_LINES_PKG.ValidateCurrentLine;
96636       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96637 
96638       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96639                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
96640                ,p_balance_type_code => l_balance_type_code);
96641 
96642    END IF;
96643 
96644    -----------------------------------------------------------------------------------------
96645    -- 4262811 Multiperiod Accounting
96646    -----------------------------------------------------------------------------------------
96647      -- No MPA option is assigned.
96648 
96649 
96650 END IF;
96651 END IF;
96652 --
96653 
96654 --
96655 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96656    trace
96657       (p_msg      => 'END of AcctLineType_206'
96658       ,p_level    => C_LEVEL_PROCEDURE
96659       ,p_module   => l_log_module);
96660 END IF;
96661 --
96662 EXCEPTION
96663   WHEN xla_exceptions_pkg.application_exception THEN
96664       RAISE;
96665   WHEN OTHERS THEN
96666        xla_exceptions_pkg.raise_message
96667            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_206');
96668 END AcctLineType_206;
96669 --
96670 
96671 ---------------------------------------
96672 --
96673 -- PRIVATE FUNCTION
96674 --         AcctLineType_207
96675 --
96676 ---------------------------------------
96677 PROCEDURE AcctLineType_207 (
96678   p_application_id        IN NUMBER
96679  ,p_event_id              IN NUMBER
96680  ,p_calculate_acctd_flag  IN VARCHAR2
96681  ,p_calculate_g_l_flag    IN VARCHAR2
96682  ,p_actual_flag           IN OUT VARCHAR2
96683  ,p_balance_type_code     OUT VARCHAR2
96684  ,p_gain_or_loss_ref      OUT VARCHAR2
96685  
96686 --Transaction Account
96687  , p_source_1            IN NUMBER
96688 --Journal Line Type
96689  , p_source_2            IN VARCHAR2
96690 --Entered Amount
96691  , p_source_3            IN NUMBER
96692 --First Distribution Identifier
96693  , p_source_5            IN NUMBER
96694 --Distribution Type
96695  , p_source_6            IN VARCHAR2
96696 --Currency Code
96697  , p_source_7            IN VARCHAR2
96698 --Currency Conversion Date
96699  , p_source_8            IN DATE
96700 --Currency Conversion Rate
96701  , p_source_9            IN NUMBER
96702 --Currency Conversion Type
96703  , p_source_10            IN VARCHAR2
96704 --Accounted Amount
96705  , p_source_11            IN NUMBER
96706 )
96707 IS
96708 
96709 l_component_type              VARCHAR2(80);
96713 l_amb_context_code            VARCHAR2(30);
96710 l_component_code              VARCHAR2(30);
96711 l_component_type_code         VARCHAR2(1);
96712 l_component_appl_id           INTEGER;
96714 l_entity_code                 VARCHAR2(30);
96715 l_event_class_code            VARCHAR2(30);
96716 l_ae_header_id                NUMBER;
96717 l_event_type_code             VARCHAR2(30);
96718 l_line_definition_code        VARCHAR2(30);
96719 l_line_definition_owner_code  VARCHAR2(1);
96720 --
96721 -- adr variables
96722 l_segment                     VARCHAR2(30);
96723 l_ccid                        NUMBER;
96724 l_adr_transaction_coa_id      NUMBER;
96725 l_adr_accounting_coa_id       NUMBER;
96726 l_adr_flexfield_segment_code  VARCHAR2(30);
96727 l_adr_flex_value_set_id       NUMBER;
96728 l_adr_value_type_code         VARCHAR2(30);
96729 l_adr_value_combination_id    NUMBER;
96730 l_adr_value_segment_code      VARCHAR2(30);
96731 
96732 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
96733 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
96734 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
96735 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
96736 
96737 -- 4262811 Variables ------------------------------------------------------------------------------------------
96738 l_entered_amt_idx             NUMBER;
96739 l_accted_amt_idx              NUMBER;
96740 l_acc_rev_flag                VARCHAR2(1);
96741 l_accrual_line_num            NUMBER;
96742 l_tmp_amt                     NUMBER;
96743 l_acc_rev_natural_side_code   VARCHAR2(1);
96744 
96745 l_num_entries                 NUMBER;
96746 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
96747 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
96748 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
96749 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
96750 l_recog_line_1                NUMBER;
96751 l_recog_line_2                NUMBER;
96752 
96753 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
96754 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
96755 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
96756 
96757 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
96758 
96759 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
96760 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
96761 
96762 ---------------------------------------------------------------------------------------------------------------
96763 
96764 
96765 --
96766 -- bulk performance
96767 --
96768 l_balance_type_code           VARCHAR2(1);
96769 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
96770 l_log_module                  VARCHAR2(240);
96771 
96772 --
96773 -- Upgrade strategy
96774 --
96775 l_actual_upg_option           VARCHAR2(1);
96776 l_enc_upg_option           VARCHAR2(1);
96777 
96778 --
96779 BEGIN
96780 --
96781 IF g_log_enabled THEN
96782       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_207';
96783 END IF;
96784 --
96785 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96786 
96787       trace
96788          (p_msg      => 'BEGIN of AcctLineType_207'
96789          ,p_level    => C_LEVEL_PROCEDURE
96790          ,p_module   => l_log_module);
96791 
96792 END IF;
96793 --
96794 l_component_type             := 'AMB_JLT';
96795 l_component_code             := 'ITR';
96796 l_component_type_code        := 'S';
96797 l_component_appl_id          :=  555;
96798 l_amb_context_code           := 'DEFAULT';
96799 l_entity_code                := 'INVENTORY';
96800 l_event_class_code           := 'FOB_SHIP_RECIPIENT_RCPT';
96801 l_event_type_code            := 'FOB_SHIP_RECIPIENT_RCPT';
96802 l_line_definition_owner_code := 'S';
96803 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_RCPT';
96804 --
96805 l_balance_type_code          := 'A';
96806 l_segment                     := NULL;
96807 l_ccid                        := NULL;
96808 l_adr_transaction_coa_id      := NULL;
96809 l_adr_accounting_coa_id       := NULL;
96810 l_adr_flexfield_segment_code  := NULL;
96811 l_adr_flex_value_set_id       := NULL;
96812 l_adr_value_type_code         := NULL;
96813 l_adr_value_combination_id    := NULL;
96814 l_adr_value_segment_code      := NULL;
96815 
96816 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
96817 l_bflow_class_code           := '';    -- 4219869 Business Flow
96818 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
96819 l_budgetary_control_flag     := 'N';
96820 
96821 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
96822 l_bflow_applied_to_amt       := NULL; -- 5132302
96823 l_entered_amt_idx            := NULL;          -- 4262811
96824 l_accted_amt_idx             := NULL;          -- 4262811
96825 l_acc_rev_flag               := NULL;          -- 4262811
96826 l_accrual_line_num           := NULL;          -- 4262811
96827 l_tmp_amt                    := NULL;          -- 4262811
96828 --
96829  
96830 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
96831     l_balance_type_code <> 'B' THEN
96832 IF NVL(p_source_2,'
96833 ') =  'ITR'
96834  THEN 
96835 
96836    --
96837    XLA_AE_LINES_PKG.SetNewLine;
96838 
96839    p_balance_type_code          := l_balance_type_code;
96843      p_actual_flag :='A';
96840    -- set the flag so later we will know whether the gain loss line needs to be created
96841    
96842    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
96844    END IF;
96845 
96846    --
96847    -- bulk performance
96848    --
96849    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
96850                                       p_header_num   => 0); -- 4262811
96851    --
96852    -- set accounting line options
96853    --
96854    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
96855            p_natural_side_code          => 'D'
96856          , p_gain_or_loss_flag          => 'N'
96857          , p_gl_transfer_mode_code      => 'D'
96858          , p_acct_entry_type_code       => 'A'
96859          , p_switch_side_flag           => 'Y'
96860          , p_merge_duplicate_code       => 'W'
96861          );
96862    --
96863    l_acc_rev_natural_side_code := 'C';  -- 4262811
96864    -- 
96865    --
96866    -- set accounting line type info
96867    --
96868    xla_ae_lines_pkg.SetAcctLineType
96869       (p_component_type             => l_component_type
96870       ,p_event_type_code            => l_event_type_code
96871       ,p_line_definition_owner_code => l_line_definition_owner_code
96872       ,p_line_definition_code       => l_line_definition_code
96873       ,p_accounting_line_code       => l_component_code
96874       ,p_accounting_line_type_code  => l_component_type_code
96875       ,p_accounting_line_appl_id    => l_component_appl_id
96876       ,p_amb_context_code           => l_amb_context_code
96877       ,p_entity_code                => l_entity_code
96878       ,p_event_class_code           => l_event_class_code);
96879    --
96880    -- set accounting class
96881    --
96882    xla_ae_lines_pkg.SetAcctClass(
96883            p_accounting_class_code  => 'INTRANSIT_VALUATION'
96884          , p_ae_header_id           => l_ae_header_id
96885          );
96886 
96887    --
96888    -- set rounding class
96889    --
96890    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
96891                       'INTRANSIT_VALUATION';
96892 
96893    --
96894    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
96895    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
96896    --
96897    -- bulk performance
96898    --
96899    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
96900 
96901    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
96902       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
96903 
96904    -- 4955764
96905    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96906       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
96907 
96908    -- 4458381 Public Sector Enh
96909    
96910    --
96911    -- set accounting attributes for the line type
96912    --
96913    l_entered_amt_idx := 3;
96914    l_accted_amt_idx  := 8;
96915    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
96916    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
96917    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
96918    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
96919    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
96920    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
96921    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
96922    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
96923    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
96924    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
96925    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
96926    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
96927    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
96928    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
96929    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
96930    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
96931    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
96932 
96933    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
96934    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
96935 
96936    ---------------------------------------------------------------------------------------------------------------
96937    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
96938    ---------------------------------------------------------------------------------------------------------------
96939    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
96940 
96941    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96942    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96943 
96944    IF xla_accounting_cache_pkg.GetValueChar
96945          (p_source_code         => 'LEDGER_CATEGORY_CODE'
96946          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
96947    AND l_bflow_method_code = 'PRIOR_ENTRY'
96948 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
96952    THEN
96949    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
96950          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
96951        )
96953          xla_ae_lines_pkg.BflowUpgEntry
96954            (p_business_method_code    => l_bflow_method_code
96955            ,p_business_class_code     => l_bflow_class_code
96956            ,p_balance_type            => l_balance_type_code);
96957    ELSE
96958       NULL;
96959 -- No business flow processing for business flow method of NONE.
96960    END IF;
96961 
96962    --
96963    -- call analytical criteria
96964    --
96965    
96966    --
96967    -- call description
96968    --
96969    -- No description or it is inherited.
96970    --
96971    -- call ADRs
96972    -- Bug 4922099
96973    --
96974    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96975         (NVL(l_actual_upg_option, 'N') = 'O') OR
96976         (NVL(l_enc_upg_option, 'N') = 'O')
96977       )
96978    THEN
96979    NULL;
96980    --
96981    --
96982    
96983   l_ccid := AcctDerRule_26(
96984            p_application_id           => p_application_id
96985          , p_ae_header_id             => l_ae_header_id 
96986 , p_source_1 => p_source_1
96987 , p_source_2 => p_source_2
96988          , x_transaction_coa_id       => l_adr_transaction_coa_id
96989          , x_accounting_coa_id        => l_adr_accounting_coa_id
96990          , x_value_type_code          => l_adr_value_type_code
96991          , p_side                     => 'NA'
96992    );
96993 
96994    xla_ae_lines_pkg.set_ccid(
96995     p_code_combination_id          => l_ccid
96996   , p_value_type_code              => l_adr_value_type_code
96997   , p_transaction_coa_id           => l_adr_transaction_coa_id
96998   , p_accounting_coa_id            => l_adr_accounting_coa_id
96999   , p_adr_code                     => 'ITR'
97000   , p_adr_type_code                => 'S'
97001   , p_component_type               => l_component_type
97002   , p_component_code               => l_component_code
97003   , p_component_type_code          => l_component_type_code
97004   , p_component_appl_id            => l_component_appl_id
97005   , p_amb_context_code             => l_amb_context_code
97006   , p_side                         => 'NA'
97007   );
97008 
97009 
97010    --
97011    --
97012    END IF;
97013    --
97014    -- Bug 4922099
97015    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
97016           (NVL(l_enc_upg_option, 'N') = 'O')
97017         ) AND
97018         (l_bflow_method_code = 'PRIOR_ENTRY')
97019       )
97020    THEN
97021       IF
97022       --
97023       1 = 2
97024       --
97025       THEN
97026       xla_accounting_err_pkg.build_message
97027                                     (p_appli_s_name            => 'XLA'
97028                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97029                                     ,p_token_1                 => 'LINE_NUMBER'
97030                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
97031                                     ,p_token_2                 => 'LINE_TYPE_NAME'
97032                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
97033                                                                              l_component_type
97034                                                                             ,l_component_code
97035                                                                             ,l_component_type_code
97036                                                                             ,l_component_appl_id
97037                                                                             ,l_amb_context_code
97038                                                                             ,l_entity_code
97039                                                                             ,l_event_class_code
97040                                                                            )
97041                                     ,p_token_3                 => 'OWNER'
97042                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
97043                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
97044                                                                           ,p_lookup_code    => l_component_type_code
97045                                                                          )
97046                                     ,p_token_4                 => 'PRODUCT_NAME'
97047                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
97048                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
97049                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
97050                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
97051                                     ,p_ae_header_id            =>  NULL
97052                                        );
97053 
97054         IF (C_LEVEL_ERROR>= g_log_level) THEN
97055                  trace
97056                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97057                       ,p_level    => C_LEVEL_ERROR
97058                       ,p_module   => l_log_module);
97059         END IF;
97060       END IF;
97064    ------------------------------------------------------------------------------------------------
97061    END IF;
97062    --
97063    --
97065    -- 4219869 Business Flow
97066    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
97067    -- Prior Entry.  Currently, the following code is always generated.
97068    ------------------------------------------------------------------------------------------------
97069    XLA_AE_LINES_PKG.ValidateCurrentLine;
97070 
97071    ------------------------------------------------------------------------------------
97072    -- 4219869 Business Flow
97073    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
97074    ------------------------------------------------------------------------------------
97075    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97076 
97077    ----------------------------------------------------------------------------------
97078    -- 4219869 Business Flow
97079    -- Update journal entry status -- Need to generate this within IF <condition>
97080    ----------------------------------------------------------------------------------
97081    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97082          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
97083          ,p_balance_type_code => l_balance_type_code
97084          );
97085 
97086    -------------------------------------------------------------------------------------------
97087    -- 4262811 - Generate the Accrual Reversal lines
97088    -------------------------------------------------------------------------------------------
97089    BEGIN
97090       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
97091                               (g_array_event(p_event_id).array_value_num('header_index'));
97092       IF l_acc_rev_flag IS NULL THEN
97093          l_acc_rev_flag := 'N';
97094       END IF;
97095    EXCEPTION
97096       WHEN OTHERS THEN
97097          l_acc_rev_flag := 'N';
97098    END;
97099    --
97100    IF (l_acc_rev_flag = 'Y') THEN
97101 
97102        -- 4645092  ------------------------------------------------------------------------------
97103        -- To allow MPA report to determine if it should generate report process
97104        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
97105        ------------------------------------------------------------------------------------------
97106 
97107        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
97108        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
97109    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
97110    -- call ADRs
97111    -- Bug 4922099
97112    --
97113    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97114         (NVL(l_actual_upg_option, 'N') = 'O') OR
97115         (NVL(l_enc_upg_option, 'N') = 'O')
97116       )
97117    THEN
97118    NULL;
97119    --
97120    --
97121    
97122   l_ccid := AcctDerRule_26(
97123            p_application_id           => p_application_id
97124          , p_ae_header_id             => l_ae_header_id 
97125 , p_source_1 => p_source_1
97126 , p_source_2 => p_source_2
97127          , x_transaction_coa_id       => l_adr_transaction_coa_id
97128          , x_accounting_coa_id        => l_adr_accounting_coa_id
97129          , x_value_type_code          => l_adr_value_type_code
97130          , p_side                     => 'NA'
97131    );
97132 
97133    xla_ae_lines_pkg.set_ccid(
97134     p_code_combination_id          => l_ccid
97135   , p_value_type_code              => l_adr_value_type_code
97136   , p_transaction_coa_id           => l_adr_transaction_coa_id
97137   , p_accounting_coa_id            => l_adr_accounting_coa_id
97138   , p_adr_code                     => 'ITR'
97139   , p_adr_type_code                => 'S'
97140   , p_component_type               => l_component_type
97141   , p_component_code               => l_component_code
97142   , p_component_type_code          => l_component_type_code
97143   , p_component_appl_id            => l_component_appl_id
97144   , p_amb_context_code             => l_amb_context_code
97145   , p_side                         => 'NA'
97146   );
97147 
97148 
97149    --
97150    --
97151    END IF;
97152 
97153        --
97154        -- Update the line information that should be overwritten
97155        --
97156        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
97157                                          p_header_num   => 1);
97158        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
97159 
97160        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
97161 
97162        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
97163           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
97164        END IF;
97165 
97166       --
97167       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
97168       --
97169       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
97170           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
97171       ELSE
97175           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
97172           ---------------------------------------------------------------------------------------------------
97173           -- 4262811a Switch Sign
97174           ---------------------------------------------------------------------------------------------------
97176           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97177                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97178           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97179                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97180           -- 5132302
97181           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
97182                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97183 
97184       END IF;
97185 
97186       -- 4955764
97187       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97188       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
97189 
97190 
97191       XLA_AE_LINES_PKG.ValidateCurrentLine;
97192       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97193 
97194       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97195                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
97196                ,p_balance_type_code => l_balance_type_code);
97197 
97198    END IF;
97199 
97200    -----------------------------------------------------------------------------------------
97201    -- 4262811 Multiperiod Accounting
97202    -----------------------------------------------------------------------------------------
97203      -- No MPA option is assigned.
97204 
97205 
97206 END IF;
97207 END IF;
97208 --
97209 
97210 --
97211 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97212    trace
97213       (p_msg      => 'END of AcctLineType_207'
97214       ,p_level    => C_LEVEL_PROCEDURE
97215       ,p_module   => l_log_module);
97216 END IF;
97217 --
97218 EXCEPTION
97219   WHEN xla_exceptions_pkg.application_exception THEN
97220       RAISE;
97221   WHEN OTHERS THEN
97222        xla_exceptions_pkg.raise_message
97223            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_207');
97224 END AcctLineType_207;
97225 --
97226 
97227 ---------------------------------------
97228 --
97229 -- PRIVATE FUNCTION
97230 --         AcctLineType_208
97231 --
97232 ---------------------------------------
97233 PROCEDURE AcctLineType_208 (
97234   p_application_id        IN NUMBER
97235  ,p_event_id              IN NUMBER
97236  ,p_calculate_acctd_flag  IN VARCHAR2
97237  ,p_calculate_g_l_flag    IN VARCHAR2
97238  ,p_actual_flag           IN OUT VARCHAR2
97239  ,p_balance_type_code     OUT VARCHAR2
97240  ,p_gain_or_loss_ref      OUT VARCHAR2
97241  
97242 --Transaction Account
97243  , p_source_1            IN NUMBER
97244 --Journal Line Type
97245  , p_source_2            IN VARCHAR2
97246 --Entered Amount
97247  , p_source_3            IN NUMBER
97248 --First Distribution Identifier
97249  , p_source_5            IN NUMBER
97250 --Distribution Type
97251  , p_source_6            IN VARCHAR2
97252 --Currency Code
97253  , p_source_7            IN VARCHAR2
97254 --Currency Conversion Date
97255  , p_source_8            IN DATE
97256 --Currency Conversion Rate
97257  , p_source_9            IN NUMBER
97258 --Currency Conversion Type
97259  , p_source_10            IN VARCHAR2
97260 --Accounted Amount
97261  , p_source_11            IN NUMBER
97262 )
97263 IS
97264 
97265 l_component_type              VARCHAR2(80);
97266 l_component_code              VARCHAR2(30);
97267 l_component_type_code         VARCHAR2(1);
97268 l_component_appl_id           INTEGER;
97269 l_amb_context_code            VARCHAR2(30);
97270 l_entity_code                 VARCHAR2(30);
97271 l_event_class_code            VARCHAR2(30);
97272 l_ae_header_id                NUMBER;
97273 l_event_type_code             VARCHAR2(30);
97274 l_line_definition_code        VARCHAR2(30);
97275 l_line_definition_owner_code  VARCHAR2(1);
97276 --
97277 -- adr variables
97278 l_segment                     VARCHAR2(30);
97279 l_ccid                        NUMBER;
97280 l_adr_transaction_coa_id      NUMBER;
97281 l_adr_accounting_coa_id       NUMBER;
97282 l_adr_flexfield_segment_code  VARCHAR2(30);
97283 l_adr_flex_value_set_id       NUMBER;
97284 l_adr_value_type_code         VARCHAR2(30);
97285 l_adr_value_combination_id    NUMBER;
97286 l_adr_value_segment_code      VARCHAR2(30);
97287 
97288 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
97289 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
97290 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
97291 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
97292 
97293 -- 4262811 Variables ------------------------------------------------------------------------------------------
97294 l_entered_amt_idx             NUMBER;
97295 l_accted_amt_idx              NUMBER;
97296 l_acc_rev_flag                VARCHAR2(1);
97297 l_accrual_line_num            NUMBER;
97298 l_tmp_amt                     NUMBER;
97299 l_acc_rev_natural_side_code   VARCHAR2(1);
97300 
97304 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
97301 l_num_entries                 NUMBER;
97302 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
97303 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
97305 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
97306 l_recog_line_1                NUMBER;
97307 l_recog_line_2                NUMBER;
97308 
97309 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
97310 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
97311 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
97312 
97313 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
97314 
97315 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
97316 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
97317 
97318 ---------------------------------------------------------------------------------------------------------------
97319 
97320 
97321 --
97322 -- bulk performance
97323 --
97324 l_balance_type_code           VARCHAR2(1);
97325 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
97326 l_log_module                  VARCHAR2(240);
97327 
97328 --
97329 -- Upgrade strategy
97330 --
97331 l_actual_upg_option           VARCHAR2(1);
97332 l_enc_upg_option           VARCHAR2(1);
97333 
97334 --
97335 BEGIN
97336 --
97337 IF g_log_enabled THEN
97338       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_208';
97339 END IF;
97340 --
97341 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97342 
97343       trace
97344          (p_msg      => 'BEGIN of AcctLineType_208'
97345          ,p_level    => C_LEVEL_PROCEDURE
97346          ,p_module   => l_log_module);
97347 
97348 END IF;
97349 --
97350 l_component_type             := 'AMB_JLT';
97351 l_component_code             := 'ITR';
97352 l_component_type_code        := 'S';
97353 l_component_appl_id          :=  555;
97354 l_amb_context_code           := 'DEFAULT';
97355 l_entity_code                := 'INVENTORY';
97356 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
97357 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_TP';
97358 l_line_definition_owner_code := 'S';
97359 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP_TP';
97360 --
97361 l_balance_type_code          := 'A';
97362 l_segment                     := NULL;
97363 l_ccid                        := NULL;
97364 l_adr_transaction_coa_id      := NULL;
97365 l_adr_accounting_coa_id       := NULL;
97366 l_adr_flexfield_segment_code  := NULL;
97367 l_adr_flex_value_set_id       := NULL;
97368 l_adr_value_type_code         := NULL;
97369 l_adr_value_combination_id    := NULL;
97370 l_adr_value_segment_code      := NULL;
97371 
97372 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
97373 l_bflow_class_code           := '';    -- 4219869 Business Flow
97374 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
97375 l_budgetary_control_flag     := 'N';
97376 
97377 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
97378 l_bflow_applied_to_amt       := NULL; -- 5132302
97379 l_entered_amt_idx            := NULL;          -- 4262811
97380 l_accted_amt_idx             := NULL;          -- 4262811
97381 l_acc_rev_flag               := NULL;          -- 4262811
97382 l_accrual_line_num           := NULL;          -- 4262811
97383 l_tmp_amt                    := NULL;          -- 4262811
97384 --
97385  
97386 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
97387     l_balance_type_code <> 'B' THEN
97388 IF NVL(p_source_2,'
97389 ') =  'ITR'
97390  THEN 
97391 
97392    --
97393    XLA_AE_LINES_PKG.SetNewLine;
97394 
97395    p_balance_type_code          := l_balance_type_code;
97396    -- set the flag so later we will know whether the gain loss line needs to be created
97397    
97398    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
97399      p_actual_flag :='A';
97400    END IF;
97401 
97402    --
97403    -- bulk performance
97404    --
97405    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
97406                                       p_header_num   => 0); -- 4262811
97407    --
97408    -- set accounting line options
97409    --
97410    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
97411            p_natural_side_code          => 'D'
97412          , p_gain_or_loss_flag          => 'N'
97413          , p_gl_transfer_mode_code      => 'D'
97414          , p_acct_entry_type_code       => 'A'
97415          , p_switch_side_flag           => 'Y'
97416          , p_merge_duplicate_code       => 'W'
97417          );
97418    --
97419    l_acc_rev_natural_side_code := 'C';  -- 4262811
97420    -- 
97421    --
97422    -- set accounting line type info
97423    --
97424    xla_ae_lines_pkg.SetAcctLineType
97425       (p_component_type             => l_component_type
97426       ,p_event_type_code            => l_event_type_code
97427       ,p_line_definition_owner_code => l_line_definition_owner_code
97428       ,p_line_definition_code       => l_line_definition_code
97429       ,p_accounting_line_code       => l_component_code
97430       ,p_accounting_line_type_code  => l_component_type_code
97431       ,p_accounting_line_appl_id    => l_component_appl_id
97435    --
97432       ,p_amb_context_code           => l_amb_context_code
97433       ,p_entity_code                => l_entity_code
97434       ,p_event_class_code           => l_event_class_code);
97436    -- set accounting class
97437    --
97438    xla_ae_lines_pkg.SetAcctClass(
97439            p_accounting_class_code  => 'INTRANSIT_VALUATION'
97440          , p_ae_header_id           => l_ae_header_id
97441          );
97442 
97443    --
97444    -- set rounding class
97445    --
97446    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
97447                       'INTRANSIT_VALUATION';
97448 
97449    --
97450    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
97451    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
97452    --
97453    -- bulk performance
97454    --
97455    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
97456 
97457    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
97458       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
97459 
97460    -- 4955764
97461    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97462       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
97463 
97464    -- 4458381 Public Sector Enh
97465    
97466    --
97467    -- set accounting attributes for the line type
97468    --
97469    l_entered_amt_idx := 3;
97470    l_accted_amt_idx  := 8;
97471    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
97472    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
97473    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
97474    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
97475    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
97476    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
97477    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
97478    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
97479    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
97480    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
97481    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
97482    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
97483    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
97484    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
97485    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
97486    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
97487    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
97488 
97489    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
97490    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
97491 
97492    ---------------------------------------------------------------------------------------------------------------
97493    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
97494    ---------------------------------------------------------------------------------------------------------------
97495    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
97496 
97497    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97498    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97499 
97500    IF xla_accounting_cache_pkg.GetValueChar
97501          (p_source_code         => 'LEDGER_CATEGORY_CODE'
97502          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
97503    AND l_bflow_method_code = 'PRIOR_ENTRY'
97504 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
97505    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
97506          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
97507        )
97508    THEN
97509          xla_ae_lines_pkg.BflowUpgEntry
97510            (p_business_method_code    => l_bflow_method_code
97511            ,p_business_class_code     => l_bflow_class_code
97512            ,p_balance_type            => l_balance_type_code);
97513    ELSE
97514       NULL;
97515 -- No business flow processing for business flow method of NONE.
97516    END IF;
97517 
97518    --
97519    -- call analytical criteria
97520    --
97521    
97522    --
97523    -- call description
97524    --
97525    -- No description or it is inherited.
97526    --
97527    -- call ADRs
97528    -- Bug 4922099
97529    --
97530    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97531         (NVL(l_actual_upg_option, 'N') = 'O') OR
97532         (NVL(l_enc_upg_option, 'N') = 'O')
97533       )
97534    THEN
97535    NULL;
97536    --
97537    --
97538    
97539   l_ccid := AcctDerRule_26(
97540            p_application_id           => p_application_id
97541          , p_ae_header_id             => l_ae_header_id 
97542 , p_source_1 => p_source_1
97543 , p_source_2 => p_source_2
97544          , x_transaction_coa_id       => l_adr_transaction_coa_id
97545          , x_accounting_coa_id        => l_adr_accounting_coa_id
97546          , x_value_type_code          => l_adr_value_type_code
97547          , p_side                     => 'NA'
97548    );
97549 
97553   , p_transaction_coa_id           => l_adr_transaction_coa_id
97550    xla_ae_lines_pkg.set_ccid(
97551     p_code_combination_id          => l_ccid
97552   , p_value_type_code              => l_adr_value_type_code
97554   , p_accounting_coa_id            => l_adr_accounting_coa_id
97555   , p_adr_code                     => 'ITR'
97556   , p_adr_type_code                => 'S'
97557   , p_component_type               => l_component_type
97558   , p_component_code               => l_component_code
97559   , p_component_type_code          => l_component_type_code
97560   , p_component_appl_id            => l_component_appl_id
97561   , p_amb_context_code             => l_amb_context_code
97562   , p_side                         => 'NA'
97563   );
97564 
97565 
97566    --
97567    --
97568    END IF;
97569    --
97570    -- Bug 4922099
97571    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
97572           (NVL(l_enc_upg_option, 'N') = 'O')
97573         ) AND
97574         (l_bflow_method_code = 'PRIOR_ENTRY')
97575       )
97576    THEN
97577       IF
97578       --
97579       1 = 2
97580       --
97581       THEN
97582       xla_accounting_err_pkg.build_message
97583                                     (p_appli_s_name            => 'XLA'
97584                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97585                                     ,p_token_1                 => 'LINE_NUMBER'
97586                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
97587                                     ,p_token_2                 => 'LINE_TYPE_NAME'
97588                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
97589                                                                              l_component_type
97590                                                                             ,l_component_code
97591                                                                             ,l_component_type_code
97592                                                                             ,l_component_appl_id
97593                                                                             ,l_amb_context_code
97594                                                                             ,l_entity_code
97595                                                                             ,l_event_class_code
97596                                                                            )
97597                                     ,p_token_3                 => 'OWNER'
97598                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
97599                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
97600                                                                           ,p_lookup_code    => l_component_type_code
97601                                                                          )
97602                                     ,p_token_4                 => 'PRODUCT_NAME'
97603                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
97604                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
97605                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
97606                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
97607                                     ,p_ae_header_id            =>  NULL
97608                                        );
97609 
97610         IF (C_LEVEL_ERROR>= g_log_level) THEN
97611                  trace
97612                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97613                       ,p_level    => C_LEVEL_ERROR
97614                       ,p_module   => l_log_module);
97615         END IF;
97616       END IF;
97617    END IF;
97618    --
97619    --
97620    ------------------------------------------------------------------------------------------------
97621    -- 4219869 Business Flow
97622    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
97623    -- Prior Entry.  Currently, the following code is always generated.
97624    ------------------------------------------------------------------------------------------------
97625    XLA_AE_LINES_PKG.ValidateCurrentLine;
97626 
97627    ------------------------------------------------------------------------------------
97628    -- 4219869 Business Flow
97629    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
97630    ------------------------------------------------------------------------------------
97631    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97632 
97633    ----------------------------------------------------------------------------------
97634    -- 4219869 Business Flow
97635    -- Update journal entry status -- Need to generate this within IF <condition>
97636    ----------------------------------------------------------------------------------
97637    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97638          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
97639          ,p_balance_type_code => l_balance_type_code
97640          );
97641 
97642    -------------------------------------------------------------------------------------------
97643    -- 4262811 - Generate the Accrual Reversal lines
97647                               (g_array_event(p_event_id).array_value_num('header_index'));
97644    -------------------------------------------------------------------------------------------
97645    BEGIN
97646       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
97648       IF l_acc_rev_flag IS NULL THEN
97649          l_acc_rev_flag := 'N';
97650       END IF;
97651    EXCEPTION
97652       WHEN OTHERS THEN
97653          l_acc_rev_flag := 'N';
97654    END;
97655    --
97656    IF (l_acc_rev_flag = 'Y') THEN
97657 
97658        -- 4645092  ------------------------------------------------------------------------------
97659        -- To allow MPA report to determine if it should generate report process
97660        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
97661        ------------------------------------------------------------------------------------------
97662 
97663        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
97664        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
97665    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
97666    -- call ADRs
97667    -- Bug 4922099
97668    --
97669    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97670         (NVL(l_actual_upg_option, 'N') = 'O') OR
97671         (NVL(l_enc_upg_option, 'N') = 'O')
97672       )
97673    THEN
97674    NULL;
97675    --
97676    --
97677    
97678   l_ccid := AcctDerRule_26(
97679            p_application_id           => p_application_id
97680          , p_ae_header_id             => l_ae_header_id 
97681 , p_source_1 => p_source_1
97682 , p_source_2 => p_source_2
97683          , x_transaction_coa_id       => l_adr_transaction_coa_id
97684          , x_accounting_coa_id        => l_adr_accounting_coa_id
97685          , x_value_type_code          => l_adr_value_type_code
97686          , p_side                     => 'NA'
97687    );
97688 
97689    xla_ae_lines_pkg.set_ccid(
97690     p_code_combination_id          => l_ccid
97691   , p_value_type_code              => l_adr_value_type_code
97692   , p_transaction_coa_id           => l_adr_transaction_coa_id
97693   , p_accounting_coa_id            => l_adr_accounting_coa_id
97694   , p_adr_code                     => 'ITR'
97695   , p_adr_type_code                => 'S'
97696   , p_component_type               => l_component_type
97697   , p_component_code               => l_component_code
97698   , p_component_type_code          => l_component_type_code
97699   , p_component_appl_id            => l_component_appl_id
97700   , p_amb_context_code             => l_amb_context_code
97701   , p_side                         => 'NA'
97702   );
97703 
97704 
97705    --
97706    --
97707    END IF;
97708 
97709        --
97710        -- Update the line information that should be overwritten
97711        --
97712        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
97713                                          p_header_num   => 1);
97714        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
97715 
97716        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
97717 
97718        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
97719           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
97720        END IF;
97721 
97722       --
97723       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
97724       --
97725       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
97726           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
97727       ELSE
97728           ---------------------------------------------------------------------------------------------------
97729           -- 4262811a Switch Sign
97730           ---------------------------------------------------------------------------------------------------
97731           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
97732           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97733                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97734           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97735                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97736           -- 5132302
97737           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
97738                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97739 
97740       END IF;
97741 
97742       -- 4955764
97743       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97744       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
97745 
97746 
97747       XLA_AE_LINES_PKG.ValidateCurrentLine;
97748       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97749 
97750       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97751                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
97752                ,p_balance_type_code => l_balance_type_code);
97753 
97754    END IF;
97755 
97759      -- No MPA option is assigned.
97756    -----------------------------------------------------------------------------------------
97757    -- 4262811 Multiperiod Accounting
97758    -----------------------------------------------------------------------------------------
97760 
97761 
97762 END IF;
97763 END IF;
97764 --
97765 
97766 --
97767 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97768    trace
97769       (p_msg      => 'END of AcctLineType_208'
97770       ,p_level    => C_LEVEL_PROCEDURE
97771       ,p_module   => l_log_module);
97772 END IF;
97773 --
97774 EXCEPTION
97775   WHEN xla_exceptions_pkg.application_exception THEN
97776       RAISE;
97777   WHEN OTHERS THEN
97778        xla_exceptions_pkg.raise_message
97779            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_208');
97780 END AcctLineType_208;
97781 --
97782 
97783 ---------------------------------------
97784 --
97785 -- PRIVATE FUNCTION
97786 --         AcctLineType_209
97787 --
97788 ---------------------------------------
97789 PROCEDURE AcctLineType_209 (
97790   p_application_id        IN NUMBER
97791  ,p_event_id              IN NUMBER
97792  ,p_calculate_acctd_flag  IN VARCHAR2
97793  ,p_calculate_g_l_flag    IN VARCHAR2
97794  ,p_actual_flag           IN OUT VARCHAR2
97795  ,p_balance_type_code     OUT VARCHAR2
97796  ,p_gain_or_loss_ref      OUT VARCHAR2
97797  
97798 --Transaction Account
97799  , p_source_1            IN NUMBER
97800 --Journal Line Type
97801  , p_source_2            IN VARCHAR2
97802 --Entered Amount
97803  , p_source_3            IN NUMBER
97804 --First Distribution Identifier
97805  , p_source_5            IN NUMBER
97806 --Distribution Type
97807  , p_source_6            IN VARCHAR2
97808 --Currency Code
97809  , p_source_7            IN VARCHAR2
97810 --Currency Conversion Date
97811  , p_source_8            IN DATE
97812 --Currency Conversion Rate
97813  , p_source_9            IN NUMBER
97814 --Currency Conversion Type
97815  , p_source_10            IN VARCHAR2
97816 --Accounted Amount
97817  , p_source_11            IN NUMBER
97818 )
97819 IS
97820 
97821 l_component_type              VARCHAR2(80);
97822 l_component_code              VARCHAR2(30);
97823 l_component_type_code         VARCHAR2(1);
97824 l_component_appl_id           INTEGER;
97825 l_amb_context_code            VARCHAR2(30);
97826 l_entity_code                 VARCHAR2(30);
97827 l_event_class_code            VARCHAR2(30);
97828 l_ae_header_id                NUMBER;
97829 l_event_type_code             VARCHAR2(30);
97830 l_line_definition_code        VARCHAR2(30);
97831 l_line_definition_owner_code  VARCHAR2(1);
97832 --
97833 -- adr variables
97834 l_segment                     VARCHAR2(30);
97835 l_ccid                        NUMBER;
97836 l_adr_transaction_coa_id      NUMBER;
97837 l_adr_accounting_coa_id       NUMBER;
97838 l_adr_flexfield_segment_code  VARCHAR2(30);
97839 l_adr_flex_value_set_id       NUMBER;
97840 l_adr_value_type_code         VARCHAR2(30);
97841 l_adr_value_combination_id    NUMBER;
97842 l_adr_value_segment_code      VARCHAR2(30);
97843 
97844 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
97845 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
97846 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
97847 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
97848 
97849 -- 4262811 Variables ------------------------------------------------------------------------------------------
97850 l_entered_amt_idx             NUMBER;
97851 l_accted_amt_idx              NUMBER;
97852 l_acc_rev_flag                VARCHAR2(1);
97853 l_accrual_line_num            NUMBER;
97854 l_tmp_amt                     NUMBER;
97855 l_acc_rev_natural_side_code   VARCHAR2(1);
97856 
97857 l_num_entries                 NUMBER;
97858 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
97859 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
97860 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
97861 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
97862 l_recog_line_1                NUMBER;
97863 l_recog_line_2                NUMBER;
97864 
97865 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
97866 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
97867 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
97868 
97869 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
97870 
97871 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
97872 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
97873 
97874 ---------------------------------------------------------------------------------------------------------------
97875 
97876 
97877 --
97878 -- bulk performance
97879 --
97880 l_balance_type_code           VARCHAR2(1);
97881 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
97882 l_log_module                  VARCHAR2(240);
97883 
97884 --
97885 -- Upgrade strategy
97886 --
97887 l_actual_upg_option           VARCHAR2(1);
97888 l_enc_upg_option           VARCHAR2(1);
97889 
97890 --
97891 BEGIN
97892 --
97893 IF g_log_enabled THEN
97894       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_209';
97895 END IF;
97896 --
97900          (p_msg      => 'BEGIN of AcctLineType_209'
97897 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97898 
97899       trace
97901          ,p_level    => C_LEVEL_PROCEDURE
97902          ,p_module   => l_log_module);
97903 
97904 END IF;
97905 --
97906 l_component_type             := 'AMB_JLT';
97907 l_component_code             := 'ITR';
97908 l_component_type_code        := 'S';
97909 l_component_appl_id          :=  555;
97910 l_amb_context_code           := 'DEFAULT';
97911 l_entity_code                := 'INVENTORY';
97912 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
97913 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_TP';
97914 l_line_definition_owner_code := 'S';
97915 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT_TP';
97916 --
97917 l_balance_type_code          := 'A';
97918 l_segment                     := NULL;
97919 l_ccid                        := NULL;
97920 l_adr_transaction_coa_id      := NULL;
97921 l_adr_accounting_coa_id       := NULL;
97922 l_adr_flexfield_segment_code  := NULL;
97923 l_adr_flex_value_set_id       := NULL;
97924 l_adr_value_type_code         := NULL;
97925 l_adr_value_combination_id    := NULL;
97926 l_adr_value_segment_code      := NULL;
97927 
97928 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
97929 l_bflow_class_code           := '';    -- 4219869 Business Flow
97930 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
97931 l_budgetary_control_flag     := 'N';
97932 
97933 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
97934 l_bflow_applied_to_amt       := NULL; -- 5132302
97935 l_entered_amt_idx            := NULL;          -- 4262811
97936 l_accted_amt_idx             := NULL;          -- 4262811
97937 l_acc_rev_flag               := NULL;          -- 4262811
97938 l_accrual_line_num           := NULL;          -- 4262811
97939 l_tmp_amt                    := NULL;          -- 4262811
97940 --
97941  
97942 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
97943     l_balance_type_code <> 'B' THEN
97944 IF NVL(p_source_2,'
97945 ') =  'ITR'
97946  THEN 
97947 
97948    --
97949    XLA_AE_LINES_PKG.SetNewLine;
97950 
97951    p_balance_type_code          := l_balance_type_code;
97952    -- set the flag so later we will know whether the gain loss line needs to be created
97953    
97954    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
97955      p_actual_flag :='A';
97956    END IF;
97957 
97958    --
97959    -- bulk performance
97960    --
97961    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
97962                                       p_header_num   => 0); -- 4262811
97963    --
97964    -- set accounting line options
97965    --
97966    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
97967            p_natural_side_code          => 'D'
97968          , p_gain_or_loss_flag          => 'N'
97969          , p_gl_transfer_mode_code      => 'D'
97970          , p_acct_entry_type_code       => 'A'
97971          , p_switch_side_flag           => 'Y'
97972          , p_merge_duplicate_code       => 'W'
97973          );
97974    --
97975    l_acc_rev_natural_side_code := 'C';  -- 4262811
97976    -- 
97977    --
97978    -- set accounting line type info
97979    --
97980    xla_ae_lines_pkg.SetAcctLineType
97981       (p_component_type             => l_component_type
97982       ,p_event_type_code            => l_event_type_code
97983       ,p_line_definition_owner_code => l_line_definition_owner_code
97984       ,p_line_definition_code       => l_line_definition_code
97985       ,p_accounting_line_code       => l_component_code
97986       ,p_accounting_line_type_code  => l_component_type_code
97987       ,p_accounting_line_appl_id    => l_component_appl_id
97988       ,p_amb_context_code           => l_amb_context_code
97989       ,p_entity_code                => l_entity_code
97990       ,p_event_class_code           => l_event_class_code);
97991    --
97992    -- set accounting class
97993    --
97994    xla_ae_lines_pkg.SetAcctClass(
97995            p_accounting_class_code  => 'INTRANSIT_VALUATION'
97996          , p_ae_header_id           => l_ae_header_id
97997          );
97998 
97999    --
98000    -- set rounding class
98001    --
98002    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
98003                       'INTRANSIT_VALUATION';
98004 
98005    --
98006    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
98007    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
98008    --
98009    -- bulk performance
98010    --
98011    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
98012 
98013    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
98014       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
98015 
98016    -- 4955764
98017    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98018       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
98019 
98020    -- 4458381 Public Sector Enh
98021    
98022    --
98023    -- set accounting attributes for the line type
98024    --
98025    l_entered_amt_idx := 3;
98026    l_accted_amt_idx  := 8;
98030    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
98027    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
98028    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
98029    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
98031    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
98032    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
98033    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
98034    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
98035    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
98036    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
98037    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
98038    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
98039    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
98040    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
98041    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
98042    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
98043    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
98044 
98045    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
98046    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
98047 
98048    ---------------------------------------------------------------------------------------------------------------
98049    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
98050    ---------------------------------------------------------------------------------------------------------------
98051    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
98052 
98053    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98054    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98055 
98056    IF xla_accounting_cache_pkg.GetValueChar
98057          (p_source_code         => 'LEDGER_CATEGORY_CODE'
98058          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
98059    AND l_bflow_method_code = 'PRIOR_ENTRY'
98060 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
98061    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
98062          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
98063        )
98064    THEN
98065          xla_ae_lines_pkg.BflowUpgEntry
98066            (p_business_method_code    => l_bflow_method_code
98067            ,p_business_class_code     => l_bflow_class_code
98068            ,p_balance_type            => l_balance_type_code);
98069    ELSE
98070       NULL;
98071 -- No business flow processing for business flow method of NONE.
98072    END IF;
98073 
98074    --
98075    -- call analytical criteria
98076    --
98077    
98078    --
98079    -- call description
98080    --
98081    -- No description or it is inherited.
98082    --
98083    -- call ADRs
98084    -- Bug 4922099
98085    --
98086    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98087         (NVL(l_actual_upg_option, 'N') = 'O') OR
98088         (NVL(l_enc_upg_option, 'N') = 'O')
98089       )
98090    THEN
98091    NULL;
98092    --
98093    --
98094    
98095   l_ccid := AcctDerRule_26(
98096            p_application_id           => p_application_id
98097          , p_ae_header_id             => l_ae_header_id 
98098 , p_source_1 => p_source_1
98099 , p_source_2 => p_source_2
98100          , x_transaction_coa_id       => l_adr_transaction_coa_id
98101          , x_accounting_coa_id        => l_adr_accounting_coa_id
98102          , x_value_type_code          => l_adr_value_type_code
98103          , p_side                     => 'NA'
98104    );
98105 
98106    xla_ae_lines_pkg.set_ccid(
98107     p_code_combination_id          => l_ccid
98108   , p_value_type_code              => l_adr_value_type_code
98109   , p_transaction_coa_id           => l_adr_transaction_coa_id
98110   , p_accounting_coa_id            => l_adr_accounting_coa_id
98111   , p_adr_code                     => 'ITR'
98112   , p_adr_type_code                => 'S'
98113   , p_component_type               => l_component_type
98114   , p_component_code               => l_component_code
98115   , p_component_type_code          => l_component_type_code
98116   , p_component_appl_id            => l_component_appl_id
98117   , p_amb_context_code             => l_amb_context_code
98118   , p_side                         => 'NA'
98119   );
98120 
98121 
98122    --
98123    --
98124    END IF;
98125    --
98126    -- Bug 4922099
98127    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
98128           (NVL(l_enc_upg_option, 'N') = 'O')
98129         ) AND
98130         (l_bflow_method_code = 'PRIOR_ENTRY')
98131       )
98132    THEN
98133       IF
98134       --
98135       1 = 2
98136       --
98137       THEN
98138       xla_accounting_err_pkg.build_message
98139                                     (p_appli_s_name            => 'XLA'
98140                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98141                                     ,p_token_1                 => 'LINE_NUMBER'
98142                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
98146                                                                             ,l_component_code
98143                                     ,p_token_2                 => 'LINE_TYPE_NAME'
98144                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
98145                                                                              l_component_type
98147                                                                             ,l_component_type_code
98148                                                                             ,l_component_appl_id
98149                                                                             ,l_amb_context_code
98150                                                                             ,l_entity_code
98151                                                                             ,l_event_class_code
98152                                                                            )
98153                                     ,p_token_3                 => 'OWNER'
98154                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
98155                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
98156                                                                           ,p_lookup_code    => l_component_type_code
98157                                                                          )
98158                                     ,p_token_4                 => 'PRODUCT_NAME'
98159                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
98160                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
98161                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
98162                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
98163                                     ,p_ae_header_id            =>  NULL
98164                                        );
98165 
98166         IF (C_LEVEL_ERROR>= g_log_level) THEN
98167                  trace
98168                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98169                       ,p_level    => C_LEVEL_ERROR
98170                       ,p_module   => l_log_module);
98171         END IF;
98172       END IF;
98173    END IF;
98174    --
98175    --
98176    ------------------------------------------------------------------------------------------------
98177    -- 4219869 Business Flow
98178    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
98179    -- Prior Entry.  Currently, the following code is always generated.
98180    ------------------------------------------------------------------------------------------------
98181    XLA_AE_LINES_PKG.ValidateCurrentLine;
98182 
98183    ------------------------------------------------------------------------------------
98184    -- 4219869 Business Flow
98185    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
98186    ------------------------------------------------------------------------------------
98187    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98188 
98189    ----------------------------------------------------------------------------------
98190    -- 4219869 Business Flow
98191    -- Update journal entry status -- Need to generate this within IF <condition>
98192    ----------------------------------------------------------------------------------
98193    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98194          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
98195          ,p_balance_type_code => l_balance_type_code
98196          );
98197 
98198    -------------------------------------------------------------------------------------------
98199    -- 4262811 - Generate the Accrual Reversal lines
98200    -------------------------------------------------------------------------------------------
98201    BEGIN
98202       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
98203                               (g_array_event(p_event_id).array_value_num('header_index'));
98204       IF l_acc_rev_flag IS NULL THEN
98205          l_acc_rev_flag := 'N';
98206       END IF;
98207    EXCEPTION
98208       WHEN OTHERS THEN
98209          l_acc_rev_flag := 'N';
98210    END;
98211    --
98212    IF (l_acc_rev_flag = 'Y') THEN
98213 
98214        -- 4645092  ------------------------------------------------------------------------------
98215        -- To allow MPA report to determine if it should generate report process
98216        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
98217        ------------------------------------------------------------------------------------------
98218 
98219        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
98220        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
98221    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
98222    -- call ADRs
98223    -- Bug 4922099
98224    --
98225    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98226         (NVL(l_actual_upg_option, 'N') = 'O') OR
98227         (NVL(l_enc_upg_option, 'N') = 'O')
98228       )
98229    THEN
98230    NULL;
98231    --
98232    --
98233    
98234   l_ccid := AcctDerRule_26(
98235            p_application_id           => p_application_id
98236          , p_ae_header_id             => l_ae_header_id 
98240          , x_accounting_coa_id        => l_adr_accounting_coa_id
98237 , p_source_1 => p_source_1
98238 , p_source_2 => p_source_2
98239          , x_transaction_coa_id       => l_adr_transaction_coa_id
98241          , x_value_type_code          => l_adr_value_type_code
98242          , p_side                     => 'NA'
98243    );
98244 
98245    xla_ae_lines_pkg.set_ccid(
98246     p_code_combination_id          => l_ccid
98247   , p_value_type_code              => l_adr_value_type_code
98248   , p_transaction_coa_id           => l_adr_transaction_coa_id
98249   , p_accounting_coa_id            => l_adr_accounting_coa_id
98250   , p_adr_code                     => 'ITR'
98251   , p_adr_type_code                => 'S'
98252   , p_component_type               => l_component_type
98253   , p_component_code               => l_component_code
98254   , p_component_type_code          => l_component_type_code
98255   , p_component_appl_id            => l_component_appl_id
98256   , p_amb_context_code             => l_amb_context_code
98257   , p_side                         => 'NA'
98258   );
98259 
98260 
98261    --
98262    --
98263    END IF;
98264 
98265        --
98266        -- Update the line information that should be overwritten
98267        --
98268        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
98269                                          p_header_num   => 1);
98270        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
98271 
98272        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
98273 
98274        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
98275           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
98276        END IF;
98277 
98278       --
98279       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
98280       --
98281       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
98282           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
98283       ELSE
98284           ---------------------------------------------------------------------------------------------------
98285           -- 4262811a Switch Sign
98286           ---------------------------------------------------------------------------------------------------
98287           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
98288           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98289                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98290           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98291                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98292           -- 5132302
98293           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
98294                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98295 
98296       END IF;
98297 
98298       -- 4955764
98299       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98300       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
98301 
98302 
98303       XLA_AE_LINES_PKG.ValidateCurrentLine;
98304       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98305 
98306       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98307                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
98308                ,p_balance_type_code => l_balance_type_code);
98309 
98310    END IF;
98311 
98312    -----------------------------------------------------------------------------------------
98313    -- 4262811 Multiperiod Accounting
98314    -----------------------------------------------------------------------------------------
98315      -- No MPA option is assigned.
98316 
98317 
98318 END IF;
98319 END IF;
98320 --
98321 
98322 --
98323 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98324    trace
98325       (p_msg      => 'END of AcctLineType_209'
98326       ,p_level    => C_LEVEL_PROCEDURE
98327       ,p_module   => l_log_module);
98328 END IF;
98329 --
98330 EXCEPTION
98331   WHEN xla_exceptions_pkg.application_exception THEN
98332       RAISE;
98333   WHEN OTHERS THEN
98334        xla_exceptions_pkg.raise_message
98335            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_209');
98336 END AcctLineType_209;
98337 --
98338 
98339 ---------------------------------------
98340 --
98341 -- PRIVATE FUNCTION
98342 --         AcctLineType_210
98343 --
98344 ---------------------------------------
98345 PROCEDURE AcctLineType_210 (
98346   p_application_id        IN NUMBER
98347  ,p_event_id              IN NUMBER
98348  ,p_calculate_acctd_flag  IN VARCHAR2
98349  ,p_calculate_g_l_flag    IN VARCHAR2
98350  ,p_actual_flag           IN OUT VARCHAR2
98351  ,p_balance_type_code     OUT VARCHAR2
98352  ,p_gain_or_loss_ref      OUT VARCHAR2
98353  
98354 --Transaction Account
98355  , p_source_1            IN NUMBER
98356 --Journal Line Type
98357  , p_source_2            IN VARCHAR2
98358 --Entered Amount
98359  , p_source_3            IN NUMBER
98360 --First Distribution Identifier
98364 --Currency Code
98361  , p_source_5            IN NUMBER
98362 --Distribution Type
98363  , p_source_6            IN VARCHAR2
98365  , p_source_7            IN VARCHAR2
98366 --Currency Conversion Date
98367  , p_source_8            IN DATE
98368 --Currency Conversion Rate
98369  , p_source_9            IN NUMBER
98370 --Currency Conversion Type
98371  , p_source_10            IN VARCHAR2
98372 --Accounted Amount
98373  , p_source_11            IN NUMBER
98374 )
98375 IS
98376 
98377 l_component_type              VARCHAR2(80);
98378 l_component_code              VARCHAR2(30);
98379 l_component_type_code         VARCHAR2(1);
98380 l_component_appl_id           INTEGER;
98381 l_amb_context_code            VARCHAR2(30);
98382 l_entity_code                 VARCHAR2(30);
98383 l_event_class_code            VARCHAR2(30);
98384 l_ae_header_id                NUMBER;
98385 l_event_type_code             VARCHAR2(30);
98386 l_line_definition_code        VARCHAR2(30);
98387 l_line_definition_owner_code  VARCHAR2(1);
98388 --
98389 -- adr variables
98390 l_segment                     VARCHAR2(30);
98391 l_ccid                        NUMBER;
98392 l_adr_transaction_coa_id      NUMBER;
98393 l_adr_accounting_coa_id       NUMBER;
98394 l_adr_flexfield_segment_code  VARCHAR2(30);
98395 l_adr_flex_value_set_id       NUMBER;
98396 l_adr_value_type_code         VARCHAR2(30);
98397 l_adr_value_combination_id    NUMBER;
98398 l_adr_value_segment_code      VARCHAR2(30);
98399 
98400 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
98401 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
98402 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
98403 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
98404 
98405 -- 4262811 Variables ------------------------------------------------------------------------------------------
98406 l_entered_amt_idx             NUMBER;
98407 l_accted_amt_idx              NUMBER;
98408 l_acc_rev_flag                VARCHAR2(1);
98409 l_accrual_line_num            NUMBER;
98410 l_tmp_amt                     NUMBER;
98411 l_acc_rev_natural_side_code   VARCHAR2(1);
98412 
98413 l_num_entries                 NUMBER;
98414 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
98415 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
98416 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
98417 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
98418 l_recog_line_1                NUMBER;
98419 l_recog_line_2                NUMBER;
98420 
98421 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
98422 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
98423 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
98424 
98425 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
98426 
98427 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
98428 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
98429 
98430 ---------------------------------------------------------------------------------------------------------------
98431 
98432 
98433 --
98434 -- bulk performance
98435 --
98436 l_balance_type_code           VARCHAR2(1);
98437 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
98438 l_log_module                  VARCHAR2(240);
98439 
98440 --
98441 -- Upgrade strategy
98442 --
98443 l_actual_upg_option           VARCHAR2(1);
98444 l_enc_upg_option           VARCHAR2(1);
98445 
98446 --
98447 BEGIN
98448 --
98449 IF g_log_enabled THEN
98450       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_210';
98451 END IF;
98452 --
98453 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98454 
98455       trace
98456          (p_msg      => 'BEGIN of AcctLineType_210'
98457          ,p_level    => C_LEVEL_PROCEDURE
98458          ,p_module   => l_log_module);
98459 
98460 END IF;
98461 --
98462 l_component_type             := 'AMB_JLT';
98463 l_component_code             := 'ITR';
98464 l_component_type_code        := 'S';
98465 l_component_appl_id          :=  555;
98466 l_amb_context_code           := 'DEFAULT';
98467 l_entity_code                := 'INVENTORY';
98468 l_event_class_code           := 'FOB_RCPT_SENDER_SHIP';
98469 l_event_type_code            := 'FOB_RCPT_SENDER_SHIP';
98470 l_line_definition_owner_code := 'S';
98471 l_line_definition_code       := 'FOB_RCPT_SENDER_SHIP';
98472 --
98473 l_balance_type_code          := 'A';
98474 l_segment                     := NULL;
98475 l_ccid                        := NULL;
98476 l_adr_transaction_coa_id      := NULL;
98477 l_adr_accounting_coa_id       := NULL;
98478 l_adr_flexfield_segment_code  := NULL;
98479 l_adr_flex_value_set_id       := NULL;
98480 l_adr_value_type_code         := NULL;
98481 l_adr_value_combination_id    := NULL;
98482 l_adr_value_segment_code      := NULL;
98483 
98484 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
98485 l_bflow_class_code           := '';    -- 4219869 Business Flow
98486 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
98487 l_budgetary_control_flag     := 'N';
98488 
98489 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
98490 l_bflow_applied_to_amt       := NULL; -- 5132302
98494 l_accrual_line_num           := NULL;          -- 4262811
98491 l_entered_amt_idx            := NULL;          -- 4262811
98492 l_accted_amt_idx             := NULL;          -- 4262811
98493 l_acc_rev_flag               := NULL;          -- 4262811
98495 l_tmp_amt                    := NULL;          -- 4262811
98496 --
98497  
98498 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
98499     l_balance_type_code <> 'B' THEN
98500 IF NVL(p_source_2,'
98501 ') =  'ITR'
98502  THEN 
98503 
98504    --
98505    XLA_AE_LINES_PKG.SetNewLine;
98506 
98507    p_balance_type_code          := l_balance_type_code;
98508    -- set the flag so later we will know whether the gain loss line needs to be created
98509    
98510    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
98511      p_actual_flag :='A';
98512    END IF;
98513 
98514    --
98515    -- bulk performance
98516    --
98517    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
98518                                       p_header_num   => 0); -- 4262811
98519    --
98520    -- set accounting line options
98521    --
98522    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
98523            p_natural_side_code          => 'D'
98524          , p_gain_or_loss_flag          => 'N'
98525          , p_gl_transfer_mode_code      => 'D'
98526          , p_acct_entry_type_code       => 'A'
98527          , p_switch_side_flag           => 'Y'
98528          , p_merge_duplicate_code       => 'W'
98529          );
98530    --
98531    l_acc_rev_natural_side_code := 'C';  -- 4262811
98532    -- 
98533    --
98534    -- set accounting line type info
98535    --
98536    xla_ae_lines_pkg.SetAcctLineType
98537       (p_component_type             => l_component_type
98538       ,p_event_type_code            => l_event_type_code
98539       ,p_line_definition_owner_code => l_line_definition_owner_code
98540       ,p_line_definition_code       => l_line_definition_code
98541       ,p_accounting_line_code       => l_component_code
98542       ,p_accounting_line_type_code  => l_component_type_code
98543       ,p_accounting_line_appl_id    => l_component_appl_id
98544       ,p_amb_context_code           => l_amb_context_code
98545       ,p_entity_code                => l_entity_code
98546       ,p_event_class_code           => l_event_class_code);
98547    --
98548    -- set accounting class
98549    --
98550    xla_ae_lines_pkg.SetAcctClass(
98551            p_accounting_class_code  => 'INTRANSIT_VALUATION'
98552          , p_ae_header_id           => l_ae_header_id
98553          );
98554 
98555    --
98556    -- set rounding class
98557    --
98558    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
98559                       'INTRANSIT_VALUATION';
98560 
98561    --
98562    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
98563    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
98564    --
98565    -- bulk performance
98566    --
98567    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
98568 
98569    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
98570       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
98571 
98572    -- 4955764
98573    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98574       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
98575 
98576    -- 4458381 Public Sector Enh
98577    
98578    --
98579    -- set accounting attributes for the line type
98580    --
98581    l_entered_amt_idx := 3;
98582    l_accted_amt_idx  := 8;
98583    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
98584    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
98585    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
98586    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
98587    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
98588    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
98589    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
98590    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
98591    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
98592    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
98593    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
98594    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
98595    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
98596    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
98597    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
98598    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
98599    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
98600 
98601    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
98602    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
98603 
98604    ---------------------------------------------------------------------------------------------------------------
98605    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
98609    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98606    ---------------------------------------------------------------------------------------------------------------
98607    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
98608 
98610    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98611 
98612    IF xla_accounting_cache_pkg.GetValueChar
98613          (p_source_code         => 'LEDGER_CATEGORY_CODE'
98614          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
98615    AND l_bflow_method_code = 'PRIOR_ENTRY'
98616 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
98617    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
98618          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
98619        )
98620    THEN
98621          xla_ae_lines_pkg.BflowUpgEntry
98622            (p_business_method_code    => l_bflow_method_code
98623            ,p_business_class_code     => l_bflow_class_code
98624            ,p_balance_type            => l_balance_type_code);
98625    ELSE
98626       NULL;
98627 -- No business flow processing for business flow method of NONE.
98628    END IF;
98629 
98630    --
98631    -- call analytical criteria
98632    --
98633    
98634    --
98635    -- call description
98636    --
98637    -- No description or it is inherited.
98638    --
98639    -- call ADRs
98640    -- Bug 4922099
98641    --
98642    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98643         (NVL(l_actual_upg_option, 'N') = 'O') OR
98644         (NVL(l_enc_upg_option, 'N') = 'O')
98645       )
98646    THEN
98647    NULL;
98648    --
98649    --
98650    
98651   l_ccid := AcctDerRule_26(
98652            p_application_id           => p_application_id
98653          , p_ae_header_id             => l_ae_header_id 
98654 , p_source_1 => p_source_1
98655 , p_source_2 => p_source_2
98656          , x_transaction_coa_id       => l_adr_transaction_coa_id
98657          , x_accounting_coa_id        => l_adr_accounting_coa_id
98658          , x_value_type_code          => l_adr_value_type_code
98659          , p_side                     => 'NA'
98660    );
98661 
98662    xla_ae_lines_pkg.set_ccid(
98663     p_code_combination_id          => l_ccid
98664   , p_value_type_code              => l_adr_value_type_code
98665   , p_transaction_coa_id           => l_adr_transaction_coa_id
98666   , p_accounting_coa_id            => l_adr_accounting_coa_id
98667   , p_adr_code                     => 'ITR'
98668   , p_adr_type_code                => 'S'
98669   , p_component_type               => l_component_type
98670   , p_component_code               => l_component_code
98671   , p_component_type_code          => l_component_type_code
98672   , p_component_appl_id            => l_component_appl_id
98673   , p_amb_context_code             => l_amb_context_code
98674   , p_side                         => 'NA'
98675   );
98676 
98677 
98678    --
98679    --
98680    END IF;
98681    --
98682    -- Bug 4922099
98683    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
98684           (NVL(l_enc_upg_option, 'N') = 'O')
98685         ) AND
98686         (l_bflow_method_code = 'PRIOR_ENTRY')
98687       )
98688    THEN
98689       IF
98690       --
98691       1 = 2
98692       --
98693       THEN
98694       xla_accounting_err_pkg.build_message
98695                                     (p_appli_s_name            => 'XLA'
98696                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98697                                     ,p_token_1                 => 'LINE_NUMBER'
98698                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
98699                                     ,p_token_2                 => 'LINE_TYPE_NAME'
98700                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
98701                                                                              l_component_type
98702                                                                             ,l_component_code
98703                                                                             ,l_component_type_code
98704                                                                             ,l_component_appl_id
98705                                                                             ,l_amb_context_code
98706                                                                             ,l_entity_code
98707                                                                             ,l_event_class_code
98708                                                                            )
98709                                     ,p_token_3                 => 'OWNER'
98710                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
98711                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
98712                                                                           ,p_lookup_code    => l_component_type_code
98713                                                                          )
98714                                     ,p_token_4                 => 'PRODUCT_NAME'
98718                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
98715                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
98716                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
98717                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
98719                                     ,p_ae_header_id            =>  NULL
98720                                        );
98721 
98722         IF (C_LEVEL_ERROR>= g_log_level) THEN
98723                  trace
98724                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98725                       ,p_level    => C_LEVEL_ERROR
98726                       ,p_module   => l_log_module);
98727         END IF;
98728       END IF;
98729    END IF;
98730    --
98731    --
98732    ------------------------------------------------------------------------------------------------
98733    -- 4219869 Business Flow
98734    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
98735    -- Prior Entry.  Currently, the following code is always generated.
98736    ------------------------------------------------------------------------------------------------
98737    XLA_AE_LINES_PKG.ValidateCurrentLine;
98738 
98739    ------------------------------------------------------------------------------------
98740    -- 4219869 Business Flow
98741    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
98742    ------------------------------------------------------------------------------------
98743    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98744 
98745    ----------------------------------------------------------------------------------
98746    -- 4219869 Business Flow
98747    -- Update journal entry status -- Need to generate this within IF <condition>
98748    ----------------------------------------------------------------------------------
98749    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98750          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
98751          ,p_balance_type_code => l_balance_type_code
98752          );
98753 
98754    -------------------------------------------------------------------------------------------
98755    -- 4262811 - Generate the Accrual Reversal lines
98756    -------------------------------------------------------------------------------------------
98757    BEGIN
98758       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
98759                               (g_array_event(p_event_id).array_value_num('header_index'));
98760       IF l_acc_rev_flag IS NULL THEN
98761          l_acc_rev_flag := 'N';
98762       END IF;
98763    EXCEPTION
98764       WHEN OTHERS THEN
98765          l_acc_rev_flag := 'N';
98766    END;
98767    --
98768    IF (l_acc_rev_flag = 'Y') THEN
98769 
98770        -- 4645092  ------------------------------------------------------------------------------
98771        -- To allow MPA report to determine if it should generate report process
98772        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
98773        ------------------------------------------------------------------------------------------
98774 
98775        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
98776        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
98777    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
98778    -- call ADRs
98779    -- Bug 4922099
98780    --
98781    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98782         (NVL(l_actual_upg_option, 'N') = 'O') OR
98783         (NVL(l_enc_upg_option, 'N') = 'O')
98784       )
98785    THEN
98786    NULL;
98787    --
98788    --
98789    
98790   l_ccid := AcctDerRule_26(
98791            p_application_id           => p_application_id
98792          , p_ae_header_id             => l_ae_header_id 
98793 , p_source_1 => p_source_1
98794 , p_source_2 => p_source_2
98795          , x_transaction_coa_id       => l_adr_transaction_coa_id
98796          , x_accounting_coa_id        => l_adr_accounting_coa_id
98797          , x_value_type_code          => l_adr_value_type_code
98798          , p_side                     => 'NA'
98799    );
98800 
98801    xla_ae_lines_pkg.set_ccid(
98802     p_code_combination_id          => l_ccid
98803   , p_value_type_code              => l_adr_value_type_code
98804   , p_transaction_coa_id           => l_adr_transaction_coa_id
98805   , p_accounting_coa_id            => l_adr_accounting_coa_id
98806   , p_adr_code                     => 'ITR'
98807   , p_adr_type_code                => 'S'
98808   , p_component_type               => l_component_type
98809   , p_component_code               => l_component_code
98810   , p_component_type_code          => l_component_type_code
98811   , p_component_appl_id            => l_component_appl_id
98812   , p_amb_context_code             => l_amb_context_code
98813   , p_side                         => 'NA'
98814   );
98815 
98816 
98817    --
98818    --
98819    END IF;
98820 
98821        --
98822        -- Update the line information that should be overwritten
98823        --
98824        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
98825                                          p_header_num   => 1);
98826        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
98827 
98831           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
98828        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
98829 
98830        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
98832        END IF;
98833 
98834       --
98835       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
98836       --
98837       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
98838           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
98839       ELSE
98840           ---------------------------------------------------------------------------------------------------
98841           -- 4262811a Switch Sign
98842           ---------------------------------------------------------------------------------------------------
98843           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
98844           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98845                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98846           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98847                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98848           -- 5132302
98849           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
98850                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98851 
98852       END IF;
98853 
98854       -- 4955764
98855       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98856       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
98857 
98858 
98859       XLA_AE_LINES_PKG.ValidateCurrentLine;
98860       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98861 
98862       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98863                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
98864                ,p_balance_type_code => l_balance_type_code);
98865 
98866    END IF;
98867 
98868    -----------------------------------------------------------------------------------------
98869    -- 4262811 Multiperiod Accounting
98870    -----------------------------------------------------------------------------------------
98871      -- No MPA option is assigned.
98872 
98873 
98874 END IF;
98875 END IF;
98876 --
98877 
98878 --
98879 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98880    trace
98881       (p_msg      => 'END of AcctLineType_210'
98882       ,p_level    => C_LEVEL_PROCEDURE
98883       ,p_module   => l_log_module);
98884 END IF;
98885 --
98886 EXCEPTION
98887   WHEN xla_exceptions_pkg.application_exception THEN
98888       RAISE;
98889   WHEN OTHERS THEN
98890        xla_exceptions_pkg.raise_message
98891            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_210');
98892 END AcctLineType_210;
98893 --
98894 
98895 ---------------------------------------
98896 --
98897 -- PRIVATE FUNCTION
98898 --         AcctLineType_211
98899 --
98900 ---------------------------------------
98901 PROCEDURE AcctLineType_211 (
98902   p_application_id        IN NUMBER
98903  ,p_event_id              IN NUMBER
98904  ,p_calculate_acctd_flag  IN VARCHAR2
98905  ,p_calculate_g_l_flag    IN VARCHAR2
98906  ,p_actual_flag           IN OUT VARCHAR2
98907  ,p_balance_type_code     OUT VARCHAR2
98908  ,p_gain_or_loss_ref      OUT VARCHAR2
98909  
98910 --Transaction Account
98911  , p_source_1            IN NUMBER
98912 --Journal Line Type
98913  , p_source_2            IN VARCHAR2
98914 --Entered Amount
98915  , p_source_3            IN NUMBER
98916 --First Distribution Identifier
98917  , p_source_5            IN NUMBER
98918 --Distribution Type
98919  , p_source_6            IN VARCHAR2
98920 --Currency Code
98921  , p_source_7            IN VARCHAR2
98922 --Currency Conversion Date
98923  , p_source_8            IN DATE
98924 --Currency Conversion Rate
98925  , p_source_9            IN NUMBER
98926 --Currency Conversion Type
98927  , p_source_10            IN VARCHAR2
98928 --Accounted Amount
98929  , p_source_11            IN NUMBER
98930 )
98931 IS
98932 
98933 l_component_type              VARCHAR2(80);
98934 l_component_code              VARCHAR2(30);
98935 l_component_type_code         VARCHAR2(1);
98936 l_component_appl_id           INTEGER;
98937 l_amb_context_code            VARCHAR2(30);
98938 l_entity_code                 VARCHAR2(30);
98939 l_event_class_code            VARCHAR2(30);
98940 l_ae_header_id                NUMBER;
98941 l_event_type_code             VARCHAR2(30);
98942 l_line_definition_code        VARCHAR2(30);
98943 l_line_definition_owner_code  VARCHAR2(1);
98944 --
98945 -- adr variables
98946 l_segment                     VARCHAR2(30);
98947 l_ccid                        NUMBER;
98948 l_adr_transaction_coa_id      NUMBER;
98949 l_adr_accounting_coa_id       NUMBER;
98950 l_adr_flexfield_segment_code  VARCHAR2(30);
98951 l_adr_flex_value_set_id       NUMBER;
98952 l_adr_value_type_code         VARCHAR2(30);
98953 l_adr_value_combination_id    NUMBER;
98957 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
98954 l_adr_value_segment_code      VARCHAR2(30);
98955 
98956 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
98958 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
98959 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
98960 
98961 -- 4262811 Variables ------------------------------------------------------------------------------------------
98962 l_entered_amt_idx             NUMBER;
98963 l_accted_amt_idx              NUMBER;
98964 l_acc_rev_flag                VARCHAR2(1);
98965 l_accrual_line_num            NUMBER;
98966 l_tmp_amt                     NUMBER;
98967 l_acc_rev_natural_side_code   VARCHAR2(1);
98968 
98969 l_num_entries                 NUMBER;
98970 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
98971 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
98972 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
98973 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
98974 l_recog_line_1                NUMBER;
98975 l_recog_line_2                NUMBER;
98976 
98977 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
98978 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
98979 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
98980 
98981 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
98982 
98983 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
98984 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
98985 
98986 ---------------------------------------------------------------------------------------------------------------
98987 
98988 
98989 --
98990 -- bulk performance
98991 --
98992 l_balance_type_code           VARCHAR2(1);
98993 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
98994 l_log_module                  VARCHAR2(240);
98995 
98996 --
98997 -- Upgrade strategy
98998 --
98999 l_actual_upg_option           VARCHAR2(1);
99000 l_enc_upg_option           VARCHAR2(1);
99001 
99002 --
99003 BEGIN
99004 --
99005 IF g_log_enabled THEN
99006       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_211';
99007 END IF;
99008 --
99009 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99010 
99011       trace
99012          (p_msg      => 'BEGIN of AcctLineType_211'
99013          ,p_level    => C_LEVEL_PROCEDURE
99014          ,p_module   => l_log_module);
99015 
99016 END IF;
99017 --
99018 l_component_type             := 'AMB_JLT';
99019 l_component_code             := 'ITR';
99020 l_component_type_code        := 'S';
99021 l_component_appl_id          :=  555;
99022 l_amb_context_code           := 'DEFAULT';
99023 l_entity_code                := 'INVENTORY';
99024 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
99025 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
99026 l_line_definition_owner_code := 'S';
99027 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
99028 --
99029 l_balance_type_code          := 'A';
99030 l_segment                     := NULL;
99031 l_ccid                        := NULL;
99032 l_adr_transaction_coa_id      := NULL;
99033 l_adr_accounting_coa_id       := NULL;
99034 l_adr_flexfield_segment_code  := NULL;
99035 l_adr_flex_value_set_id       := NULL;
99036 l_adr_value_type_code         := NULL;
99037 l_adr_value_combination_id    := NULL;
99038 l_adr_value_segment_code      := NULL;
99039 
99040 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
99041 l_bflow_class_code           := '';    -- 4219869 Business Flow
99042 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
99043 l_budgetary_control_flag     := 'N';
99044 
99045 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
99046 l_bflow_applied_to_amt       := NULL; -- 5132302
99047 l_entered_amt_idx            := NULL;          -- 4262811
99048 l_accted_amt_idx             := NULL;          -- 4262811
99049 l_acc_rev_flag               := NULL;          -- 4262811
99050 l_accrual_line_num           := NULL;          -- 4262811
99051 l_tmp_amt                    := NULL;          -- 4262811
99052 --
99053  
99054 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
99055     l_balance_type_code <> 'B' THEN
99056 IF NVL(p_source_2,'
99057 ') =  'ITR'
99058  THEN 
99059 
99060    --
99061    XLA_AE_LINES_PKG.SetNewLine;
99062 
99063    p_balance_type_code          := l_balance_type_code;
99064    -- set the flag so later we will know whether the gain loss line needs to be created
99065    
99066    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
99067      p_actual_flag :='A';
99068    END IF;
99069 
99070    --
99071    -- bulk performance
99072    --
99073    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
99074                                       p_header_num   => 0); -- 4262811
99075    --
99076    -- set accounting line options
99077    --
99078    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
99079            p_natural_side_code          => 'D'
99080          , p_gain_or_loss_flag          => 'N'
99081          , p_gl_transfer_mode_code      => 'D'
99082          , p_acct_entry_type_code       => 'A'
99086    --
99083          , p_switch_side_flag           => 'Y'
99084          , p_merge_duplicate_code       => 'W'
99085          );
99087    l_acc_rev_natural_side_code := 'C';  -- 4262811
99088    -- 
99089    --
99090    -- set accounting line type info
99091    --
99092    xla_ae_lines_pkg.SetAcctLineType
99093       (p_component_type             => l_component_type
99094       ,p_event_type_code            => l_event_type_code
99095       ,p_line_definition_owner_code => l_line_definition_owner_code
99096       ,p_line_definition_code       => l_line_definition_code
99097       ,p_accounting_line_code       => l_component_code
99098       ,p_accounting_line_type_code  => l_component_type_code
99099       ,p_accounting_line_appl_id    => l_component_appl_id
99100       ,p_amb_context_code           => l_amb_context_code
99101       ,p_entity_code                => l_entity_code
99102       ,p_event_class_code           => l_event_class_code);
99103    --
99104    -- set accounting class
99105    --
99106    xla_ae_lines_pkg.SetAcctClass(
99107            p_accounting_class_code  => 'INTRANSIT_VALUATION'
99108          , p_ae_header_id           => l_ae_header_id
99109          );
99110 
99111    --
99112    -- set rounding class
99113    --
99114    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
99115                       'INTRANSIT_VALUATION';
99116 
99117    --
99118    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
99119    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
99120    --
99121    -- bulk performance
99122    --
99123    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
99124 
99125    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
99126       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
99127 
99128    -- 4955764
99129    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99130       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
99131 
99132    -- 4458381 Public Sector Enh
99133    
99134    --
99135    -- set accounting attributes for the line type
99136    --
99137    l_entered_amt_idx := 3;
99138    l_accted_amt_idx  := 8;
99139    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
99140    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
99141    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
99142    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
99143    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
99144    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
99145    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
99146    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
99147    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
99148    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
99149    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
99150    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
99151    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
99152    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
99153    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
99154    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
99155    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
99156 
99157    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
99158    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
99159 
99160    ---------------------------------------------------------------------------------------------------------------
99161    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
99162    ---------------------------------------------------------------------------------------------------------------
99163    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
99164 
99165    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99166    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99167 
99168    IF xla_accounting_cache_pkg.GetValueChar
99169          (p_source_code         => 'LEDGER_CATEGORY_CODE'
99170          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
99171    AND l_bflow_method_code = 'PRIOR_ENTRY'
99172 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
99173    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
99174          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
99175        )
99176    THEN
99177          xla_ae_lines_pkg.BflowUpgEntry
99178            (p_business_method_code    => l_bflow_method_code
99179            ,p_business_class_code     => l_bflow_class_code
99180            ,p_balance_type            => l_balance_type_code);
99181    ELSE
99182       NULL;
99183 -- No business flow processing for business flow method of NONE.
99184    END IF;
99185 
99186    --
99187    -- call analytical criteria
99188    --
99189    
99190    --
99191    -- call description
99192    --
99193    -- No description or it is inherited.
99194    --
99195    -- call ADRs
99199         (NVL(l_actual_upg_option, 'N') = 'O') OR
99196    -- Bug 4922099
99197    --
99198    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99200         (NVL(l_enc_upg_option, 'N') = 'O')
99201       )
99202    THEN
99203    NULL;
99204    --
99205    --
99206    
99207   l_ccid := AcctDerRule_26(
99208            p_application_id           => p_application_id
99209          , p_ae_header_id             => l_ae_header_id 
99210 , p_source_1 => p_source_1
99211 , p_source_2 => p_source_2
99212          , x_transaction_coa_id       => l_adr_transaction_coa_id
99213          , x_accounting_coa_id        => l_adr_accounting_coa_id
99214          , x_value_type_code          => l_adr_value_type_code
99215          , p_side                     => 'NA'
99216    );
99217 
99218    xla_ae_lines_pkg.set_ccid(
99219     p_code_combination_id          => l_ccid
99220   , p_value_type_code              => l_adr_value_type_code
99221   , p_transaction_coa_id           => l_adr_transaction_coa_id
99222   , p_accounting_coa_id            => l_adr_accounting_coa_id
99223   , p_adr_code                     => 'ITR'
99224   , p_adr_type_code                => 'S'
99225   , p_component_type               => l_component_type
99226   , p_component_code               => l_component_code
99227   , p_component_type_code          => l_component_type_code
99228   , p_component_appl_id            => l_component_appl_id
99229   , p_amb_context_code             => l_amb_context_code
99230   , p_side                         => 'NA'
99231   );
99232 
99233 
99234    --
99235    --
99236    END IF;
99237    --
99238    -- Bug 4922099
99239    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
99240           (NVL(l_enc_upg_option, 'N') = 'O')
99241         ) AND
99242         (l_bflow_method_code = 'PRIOR_ENTRY')
99243       )
99244    THEN
99245       IF
99246       --
99247       1 = 2
99248       --
99249       THEN
99250       xla_accounting_err_pkg.build_message
99251                                     (p_appli_s_name            => 'XLA'
99252                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99253                                     ,p_token_1                 => 'LINE_NUMBER'
99254                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
99255                                     ,p_token_2                 => 'LINE_TYPE_NAME'
99256                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
99257                                                                              l_component_type
99258                                                                             ,l_component_code
99259                                                                             ,l_component_type_code
99260                                                                             ,l_component_appl_id
99261                                                                             ,l_amb_context_code
99262                                                                             ,l_entity_code
99263                                                                             ,l_event_class_code
99264                                                                            )
99265                                     ,p_token_3                 => 'OWNER'
99266                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
99267                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
99268                                                                           ,p_lookup_code    => l_component_type_code
99269                                                                          )
99270                                     ,p_token_4                 => 'PRODUCT_NAME'
99271                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
99272                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
99273                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
99274                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
99275                                     ,p_ae_header_id            =>  NULL
99276                                        );
99277 
99278         IF (C_LEVEL_ERROR>= g_log_level) THEN
99279                  trace
99280                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99281                       ,p_level    => C_LEVEL_ERROR
99282                       ,p_module   => l_log_module);
99283         END IF;
99284       END IF;
99285    END IF;
99286    --
99287    --
99288    ------------------------------------------------------------------------------------------------
99289    -- 4219869 Business Flow
99290    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
99291    -- Prior Entry.  Currently, the following code is always generated.
99292    ------------------------------------------------------------------------------------------------
99293    XLA_AE_LINES_PKG.ValidateCurrentLine;
99294 
99295    ------------------------------------------------------------------------------------
99296    -- 4219869 Business Flow
99297    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
99298    ------------------------------------------------------------------------------------
99302    -- 4219869 Business Flow
99299    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99300 
99301    ----------------------------------------------------------------------------------
99303    -- Update journal entry status -- Need to generate this within IF <condition>
99304    ----------------------------------------------------------------------------------
99305    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99306          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
99307          ,p_balance_type_code => l_balance_type_code
99308          );
99309 
99310    -------------------------------------------------------------------------------------------
99311    -- 4262811 - Generate the Accrual Reversal lines
99312    -------------------------------------------------------------------------------------------
99313    BEGIN
99314       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
99315                               (g_array_event(p_event_id).array_value_num('header_index'));
99316       IF l_acc_rev_flag IS NULL THEN
99317          l_acc_rev_flag := 'N';
99318       END IF;
99319    EXCEPTION
99320       WHEN OTHERS THEN
99321          l_acc_rev_flag := 'N';
99322    END;
99323    --
99324    IF (l_acc_rev_flag = 'Y') THEN
99325 
99326        -- 4645092  ------------------------------------------------------------------------------
99327        -- To allow MPA report to determine if it should generate report process
99328        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
99329        ------------------------------------------------------------------------------------------
99330 
99331        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
99332        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
99333    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
99334    -- call ADRs
99335    -- Bug 4922099
99336    --
99337    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99338         (NVL(l_actual_upg_option, 'N') = 'O') OR
99339         (NVL(l_enc_upg_option, 'N') = 'O')
99340       )
99341    THEN
99342    NULL;
99343    --
99344    --
99345    
99346   l_ccid := AcctDerRule_26(
99347            p_application_id           => p_application_id
99348          , p_ae_header_id             => l_ae_header_id 
99349 , p_source_1 => p_source_1
99350 , p_source_2 => p_source_2
99351          , x_transaction_coa_id       => l_adr_transaction_coa_id
99352          , x_accounting_coa_id        => l_adr_accounting_coa_id
99353          , x_value_type_code          => l_adr_value_type_code
99354          , p_side                     => 'NA'
99355    );
99356 
99357    xla_ae_lines_pkg.set_ccid(
99358     p_code_combination_id          => l_ccid
99359   , p_value_type_code              => l_adr_value_type_code
99360   , p_transaction_coa_id           => l_adr_transaction_coa_id
99361   , p_accounting_coa_id            => l_adr_accounting_coa_id
99362   , p_adr_code                     => 'ITR'
99363   , p_adr_type_code                => 'S'
99364   , p_component_type               => l_component_type
99365   , p_component_code               => l_component_code
99366   , p_component_type_code          => l_component_type_code
99367   , p_component_appl_id            => l_component_appl_id
99368   , p_amb_context_code             => l_amb_context_code
99369   , p_side                         => 'NA'
99370   );
99371 
99372 
99373    --
99374    --
99375    END IF;
99376 
99377        --
99378        -- Update the line information that should be overwritten
99379        --
99380        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
99381                                          p_header_num   => 1);
99382        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
99383 
99384        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
99385 
99386        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
99387           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
99388        END IF;
99389 
99390       --
99391       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
99392       --
99393       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
99394           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
99395       ELSE
99396           ---------------------------------------------------------------------------------------------------
99397           -- 4262811a Switch Sign
99398           ---------------------------------------------------------------------------------------------------
99399           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
99400           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99401                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99402           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99403                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99404           -- 5132302
99405           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
99406                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99407 
99408       END IF;
99409 
99410       -- 4955764
99414 
99411       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99412       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
99413 
99415       XLA_AE_LINES_PKG.ValidateCurrentLine;
99416       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99417 
99418       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99419                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
99420                ,p_balance_type_code => l_balance_type_code);
99421 
99422    END IF;
99423 
99424    -----------------------------------------------------------------------------------------
99425    -- 4262811 Multiperiod Accounting
99426    -----------------------------------------------------------------------------------------
99427      -- No MPA option is assigned.
99428 
99429 
99430 END IF;
99431 END IF;
99432 --
99433 
99434 --
99435 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99436    trace
99437       (p_msg      => 'END of AcctLineType_211'
99438       ,p_level    => C_LEVEL_PROCEDURE
99439       ,p_module   => l_log_module);
99440 END IF;
99441 --
99442 EXCEPTION
99443   WHEN xla_exceptions_pkg.application_exception THEN
99444       RAISE;
99445   WHEN OTHERS THEN
99446        xla_exceptions_pkg.raise_message
99447            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_211');
99448 END AcctLineType_211;
99449 --
99450 
99451 ---------------------------------------
99452 --
99453 -- PRIVATE FUNCTION
99454 --         AcctLineType_212
99455 --
99456 ---------------------------------------
99457 PROCEDURE AcctLineType_212 (
99458   p_application_id        IN NUMBER
99459  ,p_event_id              IN NUMBER
99460  ,p_calculate_acctd_flag  IN VARCHAR2
99461  ,p_calculate_g_l_flag    IN VARCHAR2
99462  ,p_actual_flag           IN OUT VARCHAR2
99463  ,p_balance_type_code     OUT VARCHAR2
99464  ,p_gain_or_loss_ref      OUT VARCHAR2
99465  
99466 --Transaction Account
99467  , p_source_1            IN NUMBER
99468 --Journal Line Type
99469  , p_source_2            IN VARCHAR2
99470 --Entered Amount
99471  , p_source_3            IN NUMBER
99472 --First Distribution Identifier
99473  , p_source_5            IN NUMBER
99474 --Distribution Type
99475  , p_source_6            IN VARCHAR2
99476 --Currency Code
99477  , p_source_7            IN VARCHAR2
99478 --Currency Conversion Date
99479  , p_source_8            IN DATE
99480 --Currency Conversion Rate
99481  , p_source_9            IN NUMBER
99482 --Currency Conversion Type
99483  , p_source_10            IN VARCHAR2
99484 --Accounted Amount
99485  , p_source_11            IN NUMBER
99486 )
99487 IS
99488 
99489 l_component_type              VARCHAR2(80);
99490 l_component_code              VARCHAR2(30);
99491 l_component_type_code         VARCHAR2(1);
99492 l_component_appl_id           INTEGER;
99493 l_amb_context_code            VARCHAR2(30);
99494 l_entity_code                 VARCHAR2(30);
99495 l_event_class_code            VARCHAR2(30);
99496 l_ae_header_id                NUMBER;
99497 l_event_type_code             VARCHAR2(30);
99498 l_line_definition_code        VARCHAR2(30);
99499 l_line_definition_owner_code  VARCHAR2(1);
99500 --
99501 -- adr variables
99502 l_segment                     VARCHAR2(30);
99503 l_ccid                        NUMBER;
99504 l_adr_transaction_coa_id      NUMBER;
99505 l_adr_accounting_coa_id       NUMBER;
99506 l_adr_flexfield_segment_code  VARCHAR2(30);
99507 l_adr_flex_value_set_id       NUMBER;
99508 l_adr_value_type_code         VARCHAR2(30);
99509 l_adr_value_combination_id    NUMBER;
99510 l_adr_value_segment_code      VARCHAR2(30);
99511 
99512 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
99513 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
99514 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
99515 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
99516 
99517 -- 4262811 Variables ------------------------------------------------------------------------------------------
99518 l_entered_amt_idx             NUMBER;
99519 l_accted_amt_idx              NUMBER;
99520 l_acc_rev_flag                VARCHAR2(1);
99521 l_accrual_line_num            NUMBER;
99522 l_tmp_amt                     NUMBER;
99523 l_acc_rev_natural_side_code   VARCHAR2(1);
99524 
99525 l_num_entries                 NUMBER;
99526 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
99527 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
99528 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
99529 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
99530 l_recog_line_1                NUMBER;
99531 l_recog_line_2                NUMBER;
99532 
99533 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
99534 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
99535 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
99536 
99537 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
99538 
99539 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
99540 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
99541 
99545 --
99542 ---------------------------------------------------------------------------------------------------------------
99543 
99544 
99546 -- bulk performance
99547 --
99548 l_balance_type_code           VARCHAR2(1);
99549 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
99550 l_log_module                  VARCHAR2(240);
99551 
99552 --
99553 -- Upgrade strategy
99554 --
99555 l_actual_upg_option           VARCHAR2(1);
99556 l_enc_upg_option           VARCHAR2(1);
99557 
99558 --
99559 BEGIN
99560 --
99561 IF g_log_enabled THEN
99562       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_212';
99563 END IF;
99564 --
99565 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99566 
99567       trace
99568          (p_msg      => 'BEGIN of AcctLineType_212'
99569          ,p_level    => C_LEVEL_PROCEDURE
99570          ,p_module   => l_log_module);
99571 
99572 END IF;
99573 --
99574 l_component_type             := 'AMB_JLT';
99575 l_component_code             := 'ITR';
99576 l_component_type_code        := 'S';
99577 l_component_appl_id          :=  555;
99578 l_amb_context_code           := 'DEFAULT';
99579 l_entity_code                := 'INVENTORY';
99580 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
99581 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_NO_TP';
99582 l_line_definition_owner_code := 'S';
99583 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT_NO_TP';
99584 --
99585 l_balance_type_code          := 'A';
99586 l_segment                     := NULL;
99587 l_ccid                        := NULL;
99588 l_adr_transaction_coa_id      := NULL;
99589 l_adr_accounting_coa_id       := NULL;
99590 l_adr_flexfield_segment_code  := NULL;
99591 l_adr_flex_value_set_id       := NULL;
99592 l_adr_value_type_code         := NULL;
99593 l_adr_value_combination_id    := NULL;
99594 l_adr_value_segment_code      := NULL;
99595 
99596 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
99597 l_bflow_class_code           := '';    -- 4219869 Business Flow
99598 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
99599 l_budgetary_control_flag     := 'N';
99600 
99601 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
99602 l_bflow_applied_to_amt       := NULL; -- 5132302
99603 l_entered_amt_idx            := NULL;          -- 4262811
99604 l_accted_amt_idx             := NULL;          -- 4262811
99605 l_acc_rev_flag               := NULL;          -- 4262811
99606 l_accrual_line_num           := NULL;          -- 4262811
99607 l_tmp_amt                    := NULL;          -- 4262811
99608 --
99609  
99610 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
99611     l_balance_type_code <> 'B' THEN
99612 IF NVL(p_source_2,'
99613 ') =  'ITR'
99614  THEN 
99615 
99616    --
99617    XLA_AE_LINES_PKG.SetNewLine;
99618 
99619    p_balance_type_code          := l_balance_type_code;
99620    -- set the flag so later we will know whether the gain loss line needs to be created
99621    
99622    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
99623      p_actual_flag :='A';
99624    END IF;
99625 
99626    --
99627    -- bulk performance
99628    --
99629    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
99630                                       p_header_num   => 0); -- 4262811
99631    --
99632    -- set accounting line options
99633    --
99634    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
99635            p_natural_side_code          => 'D'
99636          , p_gain_or_loss_flag          => 'N'
99637          , p_gl_transfer_mode_code      => 'D'
99638          , p_acct_entry_type_code       => 'A'
99639          , p_switch_side_flag           => 'Y'
99640          , p_merge_duplicate_code       => 'W'
99641          );
99642    --
99643    l_acc_rev_natural_side_code := 'C';  -- 4262811
99644    -- 
99645    --
99646    -- set accounting line type info
99647    --
99648    xla_ae_lines_pkg.SetAcctLineType
99649       (p_component_type             => l_component_type
99650       ,p_event_type_code            => l_event_type_code
99651       ,p_line_definition_owner_code => l_line_definition_owner_code
99652       ,p_line_definition_code       => l_line_definition_code
99653       ,p_accounting_line_code       => l_component_code
99654       ,p_accounting_line_type_code  => l_component_type_code
99655       ,p_accounting_line_appl_id    => l_component_appl_id
99656       ,p_amb_context_code           => l_amb_context_code
99657       ,p_entity_code                => l_entity_code
99658       ,p_event_class_code           => l_event_class_code);
99659    --
99660    -- set accounting class
99661    --
99662    xla_ae_lines_pkg.SetAcctClass(
99663            p_accounting_class_code  => 'INTRANSIT_VALUATION'
99664          , p_ae_header_id           => l_ae_header_id
99665          );
99666 
99667    --
99668    -- set rounding class
99669    --
99670    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
99671                       'INTRANSIT_VALUATION';
99672 
99673    --
99674    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
99675    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
99679    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
99676    --
99677    -- bulk performance
99678    --
99680 
99681    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
99682       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
99683 
99684    -- 4955764
99685    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99686       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
99687 
99688    -- 4458381 Public Sector Enh
99689    
99690    --
99691    -- set accounting attributes for the line type
99692    --
99693    l_entered_amt_idx := 3;
99694    l_accted_amt_idx  := 8;
99695    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
99696    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
99697    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
99698    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
99699    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
99700    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
99701    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
99702    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
99703    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
99704    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
99705    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
99706    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
99707    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
99708    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
99709    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
99710    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
99711    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
99712 
99713    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
99714    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
99715 
99716    ---------------------------------------------------------------------------------------------------------------
99717    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
99718    ---------------------------------------------------------------------------------------------------------------
99719    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
99720 
99721    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99722    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99723 
99724    IF xla_accounting_cache_pkg.GetValueChar
99725          (p_source_code         => 'LEDGER_CATEGORY_CODE'
99726          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
99727    AND l_bflow_method_code = 'PRIOR_ENTRY'
99728 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
99729    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
99730          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
99731        )
99732    THEN
99733          xla_ae_lines_pkg.BflowUpgEntry
99734            (p_business_method_code    => l_bflow_method_code
99735            ,p_business_class_code     => l_bflow_class_code
99736            ,p_balance_type            => l_balance_type_code);
99737    ELSE
99738       NULL;
99739 -- No business flow processing for business flow method of NONE.
99740    END IF;
99741 
99742    --
99743    -- call analytical criteria
99744    --
99745    
99746    --
99747    -- call description
99748    --
99749    -- No description or it is inherited.
99750    --
99751    -- call ADRs
99752    -- Bug 4922099
99753    --
99754    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99755         (NVL(l_actual_upg_option, 'N') = 'O') OR
99756         (NVL(l_enc_upg_option, 'N') = 'O')
99757       )
99758    THEN
99759    NULL;
99760    --
99761    --
99762    
99763   l_ccid := AcctDerRule_26(
99764            p_application_id           => p_application_id
99765          , p_ae_header_id             => l_ae_header_id 
99766 , p_source_1 => p_source_1
99767 , p_source_2 => p_source_2
99768          , x_transaction_coa_id       => l_adr_transaction_coa_id
99769          , x_accounting_coa_id        => l_adr_accounting_coa_id
99770          , x_value_type_code          => l_adr_value_type_code
99771          , p_side                     => 'NA'
99772    );
99773 
99774    xla_ae_lines_pkg.set_ccid(
99775     p_code_combination_id          => l_ccid
99776   , p_value_type_code              => l_adr_value_type_code
99777   , p_transaction_coa_id           => l_adr_transaction_coa_id
99778   , p_accounting_coa_id            => l_adr_accounting_coa_id
99779   , p_adr_code                     => 'ITR'
99780   , p_adr_type_code                => 'S'
99781   , p_component_type               => l_component_type
99782   , p_component_code               => l_component_code
99783   , p_component_type_code          => l_component_type_code
99784   , p_component_appl_id            => l_component_appl_id
99785   , p_amb_context_code             => l_amb_context_code
99786   , p_side                         => 'NA'
99787   );
99788 
99789 
99790    --
99791    --
99792    END IF;
99793    --
99797         ) AND
99794    -- Bug 4922099
99795    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
99796           (NVL(l_enc_upg_option, 'N') = 'O')
99798         (l_bflow_method_code = 'PRIOR_ENTRY')
99799       )
99800    THEN
99801       IF
99802       --
99803       1 = 2
99804       --
99805       THEN
99806       xla_accounting_err_pkg.build_message
99807                                     (p_appli_s_name            => 'XLA'
99808                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99809                                     ,p_token_1                 => 'LINE_NUMBER'
99810                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
99811                                     ,p_token_2                 => 'LINE_TYPE_NAME'
99812                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
99813                                                                              l_component_type
99814                                                                             ,l_component_code
99815                                                                             ,l_component_type_code
99816                                                                             ,l_component_appl_id
99817                                                                             ,l_amb_context_code
99818                                                                             ,l_entity_code
99819                                                                             ,l_event_class_code
99820                                                                            )
99821                                     ,p_token_3                 => 'OWNER'
99822                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
99823                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
99824                                                                           ,p_lookup_code    => l_component_type_code
99825                                                                          )
99826                                     ,p_token_4                 => 'PRODUCT_NAME'
99827                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
99828                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
99829                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
99830                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
99831                                     ,p_ae_header_id            =>  NULL
99832                                        );
99833 
99834         IF (C_LEVEL_ERROR>= g_log_level) THEN
99835                  trace
99836                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99837                       ,p_level    => C_LEVEL_ERROR
99838                       ,p_module   => l_log_module);
99839         END IF;
99840       END IF;
99841    END IF;
99842    --
99843    --
99844    ------------------------------------------------------------------------------------------------
99845    -- 4219869 Business Flow
99846    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
99847    -- Prior Entry.  Currently, the following code is always generated.
99848    ------------------------------------------------------------------------------------------------
99849    XLA_AE_LINES_PKG.ValidateCurrentLine;
99850 
99851    ------------------------------------------------------------------------------------
99852    -- 4219869 Business Flow
99853    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
99854    ------------------------------------------------------------------------------------
99855    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99856 
99857    ----------------------------------------------------------------------------------
99858    -- 4219869 Business Flow
99859    -- Update journal entry status -- Need to generate this within IF <condition>
99860    ----------------------------------------------------------------------------------
99861    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99862          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
99863          ,p_balance_type_code => l_balance_type_code
99864          );
99865 
99866    -------------------------------------------------------------------------------------------
99867    -- 4262811 - Generate the Accrual Reversal lines
99868    -------------------------------------------------------------------------------------------
99869    BEGIN
99870       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
99871                               (g_array_event(p_event_id).array_value_num('header_index'));
99872       IF l_acc_rev_flag IS NULL THEN
99873          l_acc_rev_flag := 'N';
99874       END IF;
99875    EXCEPTION
99876       WHEN OTHERS THEN
99877          l_acc_rev_flag := 'N';
99878    END;
99879    --
99880    IF (l_acc_rev_flag = 'Y') THEN
99881 
99882        -- 4645092  ------------------------------------------------------------------------------
99883        -- To allow MPA report to determine if it should generate report process
99884        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
99885        ------------------------------------------------------------------------------------------
99886 
99887        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
99888        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
99892    --
99889    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
99890    -- call ADRs
99891    -- Bug 4922099
99893    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99894         (NVL(l_actual_upg_option, 'N') = 'O') OR
99895         (NVL(l_enc_upg_option, 'N') = 'O')
99896       )
99897    THEN
99898    NULL;
99899    --
99900    --
99901    
99902   l_ccid := AcctDerRule_26(
99903            p_application_id           => p_application_id
99904          , p_ae_header_id             => l_ae_header_id 
99905 , p_source_1 => p_source_1
99906 , p_source_2 => p_source_2
99907          , x_transaction_coa_id       => l_adr_transaction_coa_id
99908          , x_accounting_coa_id        => l_adr_accounting_coa_id
99909          , x_value_type_code          => l_adr_value_type_code
99910          , p_side                     => 'NA'
99911    );
99912 
99913    xla_ae_lines_pkg.set_ccid(
99914     p_code_combination_id          => l_ccid
99915   , p_value_type_code              => l_adr_value_type_code
99916   , p_transaction_coa_id           => l_adr_transaction_coa_id
99917   , p_accounting_coa_id            => l_adr_accounting_coa_id
99918   , p_adr_code                     => 'ITR'
99919   , p_adr_type_code                => 'S'
99920   , p_component_type               => l_component_type
99921   , p_component_code               => l_component_code
99922   , p_component_type_code          => l_component_type_code
99923   , p_component_appl_id            => l_component_appl_id
99924   , p_amb_context_code             => l_amb_context_code
99925   , p_side                         => 'NA'
99926   );
99927 
99928 
99929    --
99930    --
99931    END IF;
99932 
99933        --
99934        -- Update the line information that should be overwritten
99935        --
99936        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
99937                                          p_header_num   => 1);
99938        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
99939 
99940        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
99941 
99942        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
99943           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
99944        END IF;
99945 
99946       --
99947       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
99948       --
99949       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
99950           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
99951       ELSE
99952           ---------------------------------------------------------------------------------------------------
99953           -- 4262811a Switch Sign
99954           ---------------------------------------------------------------------------------------------------
99955           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
99956           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99957                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99958           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99959                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99960           -- 5132302
99961           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
99962                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99963 
99964       END IF;
99965 
99966       -- 4955764
99967       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99968       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
99969 
99970 
99971       XLA_AE_LINES_PKG.ValidateCurrentLine;
99972       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99973 
99974       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99975                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
99976                ,p_balance_type_code => l_balance_type_code);
99977 
99978    END IF;
99979 
99980    -----------------------------------------------------------------------------------------
99981    -- 4262811 Multiperiod Accounting
99982    -----------------------------------------------------------------------------------------
99983      -- No MPA option is assigned.
99984 
99985 
99986 END IF;
99987 END IF;
99988 --
99989 
99990 --
99991 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99992    trace
99993       (p_msg      => 'END of AcctLineType_212'
99994       ,p_level    => C_LEVEL_PROCEDURE
99995       ,p_module   => l_log_module);
99996 END IF;
99997 --
99998 EXCEPTION
99999   WHEN xla_exceptions_pkg.application_exception THEN
100000       RAISE;
100001   WHEN OTHERS THEN
100002        xla_exceptions_pkg.raise_message
100003            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_212');
100004 END AcctLineType_212;
100005 --
100006 
100007 ---------------------------------------
100008 --
100009 -- PRIVATE FUNCTION
100010 --         AcctLineType_213
100011 --
100015  ,p_event_id              IN NUMBER
100012 ---------------------------------------
100013 PROCEDURE AcctLineType_213 (
100014   p_application_id        IN NUMBER
100016  ,p_calculate_acctd_flag  IN VARCHAR2
100017  ,p_calculate_g_l_flag    IN VARCHAR2
100018  ,p_actual_flag           IN OUT VARCHAR2
100019  ,p_balance_type_code     OUT VARCHAR2
100020  ,p_gain_or_loss_ref      OUT VARCHAR2
100021  
100022 --Transaction Account
100023  , p_source_1            IN NUMBER
100024 --Journal Line Type
100025  , p_source_2            IN VARCHAR2
100026 --Entered Amount
100027  , p_source_3            IN NUMBER
100028 --First Distribution Identifier
100029  , p_source_5            IN NUMBER
100030 --Distribution Type
100031  , p_source_6            IN VARCHAR2
100032 --Currency Code
100033  , p_source_7            IN VARCHAR2
100034 --Currency Conversion Date
100035  , p_source_8            IN DATE
100036 --Currency Conversion Rate
100037  , p_source_9            IN NUMBER
100038 --Accounted Amount
100039  , p_source_11            IN NUMBER
100040 )
100041 IS
100042 
100043 l_component_type              VARCHAR2(80);
100044 l_component_code              VARCHAR2(30);
100045 l_component_type_code         VARCHAR2(1);
100046 l_component_appl_id           INTEGER;
100047 l_amb_context_code            VARCHAR2(30);
100048 l_entity_code                 VARCHAR2(30);
100049 l_event_class_code            VARCHAR2(30);
100050 l_ae_header_id                NUMBER;
100051 l_event_type_code             VARCHAR2(30);
100052 l_line_definition_code        VARCHAR2(30);
100053 l_line_definition_owner_code  VARCHAR2(1);
100054 --
100055 -- adr variables
100056 l_segment                     VARCHAR2(30);
100057 l_ccid                        NUMBER;
100058 l_adr_transaction_coa_id      NUMBER;
100059 l_adr_accounting_coa_id       NUMBER;
100060 l_adr_flexfield_segment_code  VARCHAR2(30);
100061 l_adr_flex_value_set_id       NUMBER;
100062 l_adr_value_type_code         VARCHAR2(30);
100063 l_adr_value_combination_id    NUMBER;
100064 l_adr_value_segment_code      VARCHAR2(30);
100065 
100066 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
100067 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
100068 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
100069 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
100070 
100071 -- 4262811 Variables ------------------------------------------------------------------------------------------
100072 l_entered_amt_idx             NUMBER;
100073 l_accted_amt_idx              NUMBER;
100074 l_acc_rev_flag                VARCHAR2(1);
100075 l_accrual_line_num            NUMBER;
100076 l_tmp_amt                     NUMBER;
100077 l_acc_rev_natural_side_code   VARCHAR2(1);
100078 
100079 l_num_entries                 NUMBER;
100080 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
100081 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
100082 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
100083 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
100084 l_recog_line_1                NUMBER;
100085 l_recog_line_2                NUMBER;
100086 
100087 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
100088 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
100089 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
100090 
100091 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
100092 
100093 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
100094 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
100095 
100096 ---------------------------------------------------------------------------------------------------------------
100097 
100098 
100099 --
100100 -- bulk performance
100101 --
100102 l_balance_type_code           VARCHAR2(1);
100103 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
100104 l_log_module                  VARCHAR2(240);
100105 
100106 --
100107 -- Upgrade strategy
100108 --
100109 l_actual_upg_option           VARCHAR2(1);
100110 l_enc_upg_option           VARCHAR2(1);
100111 
100112 --
100113 BEGIN
100114 --
100115 IF g_log_enabled THEN
100116       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_213';
100117 END IF;
100118 --
100119 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100120 
100121       trace
100122          (p_msg      => 'BEGIN of AcctLineType_213'
100123          ,p_level    => C_LEVEL_PROCEDURE
100124          ,p_module   => l_log_module);
100125 
100126 END IF;
100127 --
100128 l_component_type             := 'AMB_JLT';
100129 l_component_code             := 'IVA';
100130 l_component_type_code        := 'S';
100131 l_component_appl_id          :=  555;
100132 l_amb_context_code           := 'DEFAULT';
100133 l_entity_code                := 'INVENTORY';
100134 l_event_class_code           := 'MISC_TXN';
100135 l_event_type_code            := 'MISC_TXN_ALL';
100136 l_line_definition_owner_code := 'S';
100137 l_line_definition_code       := 'MISC_TXN';
100138 --
100139 l_balance_type_code          := 'A';
100140 l_segment                     := NULL;
100141 l_ccid                        := NULL;
100142 l_adr_transaction_coa_id      := NULL;
100143 l_adr_accounting_coa_id       := NULL;
100144 l_adr_flexfield_segment_code  := NULL;
100148 l_adr_value_segment_code      := NULL;
100145 l_adr_flex_value_set_id       := NULL;
100146 l_adr_value_type_code         := NULL;
100147 l_adr_value_combination_id    := NULL;
100149 
100150 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
100151 l_bflow_class_code           := '';    -- 4219869 Business Flow
100152 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
100153 l_budgetary_control_flag     := 'N';
100154 
100155 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
100156 l_bflow_applied_to_amt       := NULL; -- 5132302
100157 l_entered_amt_idx            := NULL;          -- 4262811
100158 l_accted_amt_idx             := NULL;          -- 4262811
100159 l_acc_rev_flag               := NULL;          -- 4262811
100160 l_accrual_line_num           := NULL;          -- 4262811
100161 l_tmp_amt                    := NULL;          -- 4262811
100162 --
100163  
100164 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
100165     l_balance_type_code <> 'B' THEN
100166 IF NVL(p_source_2,'
100167 ') =  'IVA'
100168  THEN 
100169 
100170    --
100171    XLA_AE_LINES_PKG.SetNewLine;
100172 
100173    p_balance_type_code          := l_balance_type_code;
100174    -- set the flag so later we will know whether the gain loss line needs to be created
100175    
100176    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
100177      p_actual_flag :='A';
100178    END IF;
100179 
100180    --
100181    -- bulk performance
100182    --
100183    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
100184                                       p_header_num   => 0); -- 4262811
100185    --
100186    -- set accounting line options
100187    --
100188    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
100189            p_natural_side_code          => 'D'
100190          , p_gain_or_loss_flag          => 'N'
100191          , p_gl_transfer_mode_code      => 'D'
100192          , p_acct_entry_type_code       => 'A'
100193          , p_switch_side_flag           => 'Y'
100194          , p_merge_duplicate_code       => 'W'
100195          );
100196    --
100197    l_acc_rev_natural_side_code := 'C';  -- 4262811
100198    -- 
100199    --
100200    -- set accounting line type info
100201    --
100202    xla_ae_lines_pkg.SetAcctLineType
100203       (p_component_type             => l_component_type
100204       ,p_event_type_code            => l_event_type_code
100205       ,p_line_definition_owner_code => l_line_definition_owner_code
100206       ,p_line_definition_code       => l_line_definition_code
100207       ,p_accounting_line_code       => l_component_code
100208       ,p_accounting_line_type_code  => l_component_type_code
100209       ,p_accounting_line_appl_id    => l_component_appl_id
100210       ,p_amb_context_code           => l_amb_context_code
100211       ,p_entity_code                => l_entity_code
100212       ,p_event_class_code           => l_event_class_code);
100213    --
100214    -- set accounting class
100215    --
100216    xla_ae_lines_pkg.SetAcctClass(
100217            p_accounting_class_code  => 'IVA'
100218          , p_ae_header_id           => l_ae_header_id
100219          );
100220 
100221    --
100222    -- set rounding class
100223    --
100224    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
100225                       'IVA';
100226 
100227    --
100228    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
100229    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
100230    --
100231    -- bulk performance
100232    --
100233    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
100234 
100235    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
100236       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
100237 
100238    -- 4955764
100239    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100240       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
100241 
100242    -- 4458381 Public Sector Enh
100243    
100244    --
100245    -- set accounting attributes for the line type
100246    --
100247    l_entered_amt_idx := 3;
100248    l_accted_amt_idx  := 8;
100249    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
100250    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
100251    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
100252    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
100253    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
100254    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
100255    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
100256    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
100257    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
100258    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
100259    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
100260    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
100261    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
100262    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
100263    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_9);
100264    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
100268    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
100265    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
100266 
100267    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
100269 
100270    ---------------------------------------------------------------------------------------------------------------
100271    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
100272    ---------------------------------------------------------------------------------------------------------------
100273    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
100274 
100275    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100276    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100277 
100278    IF xla_accounting_cache_pkg.GetValueChar
100279          (p_source_code         => 'LEDGER_CATEGORY_CODE'
100280          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
100281    AND l_bflow_method_code = 'PRIOR_ENTRY'
100282 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
100283    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
100284          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
100285        )
100286    THEN
100287          xla_ae_lines_pkg.BflowUpgEntry
100288            (p_business_method_code    => l_bflow_method_code
100289            ,p_business_class_code     => l_bflow_class_code
100290            ,p_balance_type            => l_balance_type_code);
100291    ELSE
100292       NULL;
100293 -- No business flow processing for business flow method of NONE.
100294    END IF;
100295 
100296    --
100297    -- call analytical criteria
100298    --
100299    
100300    --
100301    -- call description
100302    --
100303    -- No description or it is inherited.
100304    --
100305    -- call ADRs
100306    -- Bug 4922099
100307    --
100308    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100309         (NVL(l_actual_upg_option, 'N') = 'O') OR
100310         (NVL(l_enc_upg_option, 'N') = 'O')
100311       )
100312    THEN
100313    NULL;
100314    --
100315    --
100316    
100317   l_ccid := AcctDerRule_27(
100318            p_application_id           => p_application_id
100319          , p_ae_header_id             => l_ae_header_id 
100320 , p_source_1 => p_source_1
100321 , p_source_2 => p_source_2
100322          , x_transaction_coa_id       => l_adr_transaction_coa_id
100323          , x_accounting_coa_id        => l_adr_accounting_coa_id
100324          , x_value_type_code          => l_adr_value_type_code
100325          , p_side                     => 'NA'
100326    );
100327 
100328    xla_ae_lines_pkg.set_ccid(
100329     p_code_combination_id          => l_ccid
100330   , p_value_type_code              => l_adr_value_type_code
100331   , p_transaction_coa_id           => l_adr_transaction_coa_id
100332   , p_accounting_coa_id            => l_adr_accounting_coa_id
100333   , p_adr_code                     => 'IVA'
100334   , p_adr_type_code                => 'S'
100335   , p_component_type               => l_component_type
100336   , p_component_code               => l_component_code
100337   , p_component_type_code          => l_component_type_code
100338   , p_component_appl_id            => l_component_appl_id
100339   , p_amb_context_code             => l_amb_context_code
100340   , p_side                         => 'NA'
100341   );
100342 
100343 
100344    --
100345    --
100346    END IF;
100347    --
100348    -- Bug 4922099
100349    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
100350           (NVL(l_enc_upg_option, 'N') = 'O')
100351         ) AND
100352         (l_bflow_method_code = 'PRIOR_ENTRY')
100353       )
100354    THEN
100355       IF
100356       --
100357       1 = 2
100358       --
100359       THEN
100360       xla_accounting_err_pkg.build_message
100361                                     (p_appli_s_name            => 'XLA'
100362                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100363                                     ,p_token_1                 => 'LINE_NUMBER'
100364                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
100365                                     ,p_token_2                 => 'LINE_TYPE_NAME'
100366                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
100367                                                                              l_component_type
100368                                                                             ,l_component_code
100369                                                                             ,l_component_type_code
100370                                                                             ,l_component_appl_id
100371                                                                             ,l_amb_context_code
100372                                                                             ,l_entity_code
100373                                                                             ,l_event_class_code
100374                                                                            )
100375                                     ,p_token_3                 => 'OWNER'
100376                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
100380                                     ,p_token_4                 => 'PRODUCT_NAME'
100377                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
100378                                                                           ,p_lookup_code    => l_component_type_code
100379                                                                          )
100381                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
100382                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
100383                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
100384                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
100385                                     ,p_ae_header_id            =>  NULL
100386                                        );
100387 
100388         IF (C_LEVEL_ERROR>= g_log_level) THEN
100389                  trace
100390                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100391                       ,p_level    => C_LEVEL_ERROR
100392                       ,p_module   => l_log_module);
100393         END IF;
100394       END IF;
100395    END IF;
100396    --
100397    --
100398    ------------------------------------------------------------------------------------------------
100399    -- 4219869 Business Flow
100400    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
100401    -- Prior Entry.  Currently, the following code is always generated.
100402    ------------------------------------------------------------------------------------------------
100403    XLA_AE_LINES_PKG.ValidateCurrentLine;
100404 
100405    ------------------------------------------------------------------------------------
100406    -- 4219869 Business Flow
100407    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
100408    ------------------------------------------------------------------------------------
100409    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100410 
100411    ----------------------------------------------------------------------------------
100412    -- 4219869 Business Flow
100413    -- Update journal entry status -- Need to generate this within IF <condition>
100414    ----------------------------------------------------------------------------------
100415    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100416          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
100417          ,p_balance_type_code => l_balance_type_code
100418          );
100419 
100420    -------------------------------------------------------------------------------------------
100421    -- 4262811 - Generate the Accrual Reversal lines
100422    -------------------------------------------------------------------------------------------
100423    BEGIN
100424       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
100425                               (g_array_event(p_event_id).array_value_num('header_index'));
100426       IF l_acc_rev_flag IS NULL THEN
100427          l_acc_rev_flag := 'N';
100428       END IF;
100429    EXCEPTION
100430       WHEN OTHERS THEN
100431          l_acc_rev_flag := 'N';
100432    END;
100433    --
100434    IF (l_acc_rev_flag = 'Y') THEN
100435 
100436        -- 4645092  ------------------------------------------------------------------------------
100437        -- To allow MPA report to determine if it should generate report process
100438        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
100439        ------------------------------------------------------------------------------------------
100440 
100441        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
100442        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
100443    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
100444    -- call ADRs
100445    -- Bug 4922099
100446    --
100447    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100448         (NVL(l_actual_upg_option, 'N') = 'O') OR
100449         (NVL(l_enc_upg_option, 'N') = 'O')
100450       )
100451    THEN
100452    NULL;
100453    --
100454    --
100455    
100456   l_ccid := AcctDerRule_27(
100457            p_application_id           => p_application_id
100458          , p_ae_header_id             => l_ae_header_id 
100459 , p_source_1 => p_source_1
100460 , p_source_2 => p_source_2
100461          , x_transaction_coa_id       => l_adr_transaction_coa_id
100462          , x_accounting_coa_id        => l_adr_accounting_coa_id
100463          , x_value_type_code          => l_adr_value_type_code
100464          , p_side                     => 'NA'
100465    );
100466 
100467    xla_ae_lines_pkg.set_ccid(
100468     p_code_combination_id          => l_ccid
100469   , p_value_type_code              => l_adr_value_type_code
100470   , p_transaction_coa_id           => l_adr_transaction_coa_id
100471   , p_accounting_coa_id            => l_adr_accounting_coa_id
100472   , p_adr_code                     => 'IVA'
100473   , p_adr_type_code                => 'S'
100474   , p_component_type               => l_component_type
100475   , p_component_code               => l_component_code
100476   , p_component_type_code          => l_component_type_code
100477   , p_component_appl_id            => l_component_appl_id
100478   , p_amb_context_code             => l_amb_context_code
100479   , p_side                         => 'NA'
100480   );
100481 
100482 
100483    --
100484    --
100485    END IF;
100486 
100490        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
100487        --
100488        -- Update the line information that should be overwritten
100489        --
100491                                          p_header_num   => 1);
100492        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
100493 
100494        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
100495 
100496        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
100497           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
100498        END IF;
100499 
100500       --
100501       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
100502       --
100503       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
100504           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
100505       ELSE
100506           ---------------------------------------------------------------------------------------------------
100507           -- 4262811a Switch Sign
100508           ---------------------------------------------------------------------------------------------------
100509           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
100510           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100511                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100512           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100513                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100514           -- 5132302
100515           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
100516                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100517 
100518       END IF;
100519 
100520       -- 4955764
100521       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100522       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
100523 
100524 
100525       XLA_AE_LINES_PKG.ValidateCurrentLine;
100526       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100527 
100528       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100529                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
100530                ,p_balance_type_code => l_balance_type_code);
100531 
100532    END IF;
100533 
100534    -----------------------------------------------------------------------------------------
100535    -- 4262811 Multiperiod Accounting
100536    -----------------------------------------------------------------------------------------
100537      -- No MPA option is assigned.
100538 
100539 
100540 END IF;
100541 END IF;
100542 --
100543 
100544 --
100545 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100546    trace
100547       (p_msg      => 'END of AcctLineType_213'
100548       ,p_level    => C_LEVEL_PROCEDURE
100549       ,p_module   => l_log_module);
100550 END IF;
100551 --
100552 EXCEPTION
100553   WHEN xla_exceptions_pkg.application_exception THEN
100554       RAISE;
100555   WHEN OTHERS THEN
100556        xla_exceptions_pkg.raise_message
100557            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_213');
100558 END AcctLineType_213;
100559 --
100560 
100561 ---------------------------------------
100562 --
100563 -- PRIVATE FUNCTION
100564 --         AcctLineType_214
100565 --
100566 ---------------------------------------
100567 PROCEDURE AcctLineType_214 (
100568   p_application_id        IN NUMBER
100569  ,p_event_id              IN NUMBER
100570  ,p_calculate_acctd_flag  IN VARCHAR2
100571  ,p_calculate_g_l_flag    IN VARCHAR2
100572  ,p_actual_flag           IN OUT VARCHAR2
100573  ,p_balance_type_code     OUT VARCHAR2
100574  ,p_gain_or_loss_ref      OUT VARCHAR2
100575  
100576 --Transaction Account
100577  , p_source_1            IN NUMBER
100578 --Journal Line Type
100579  , p_source_2            IN VARCHAR2
100580 --Entered Amount
100581  , p_source_3            IN NUMBER
100582 --First Distribution Identifier
100583  , p_source_5            IN NUMBER
100584 --Distribution Type
100585  , p_source_6            IN VARCHAR2
100586 --Currency Code
100587  , p_source_7            IN VARCHAR2
100588 --Currency Conversion Date
100589  , p_source_8            IN DATE
100590 --Currency Conversion Rate
100591  , p_source_9            IN NUMBER
100592 --Currency Conversion Type
100593  , p_source_10            IN VARCHAR2
100594 --Accounted Amount
100595  , p_source_11            IN NUMBER
100596 )
100597 IS
100598 
100599 l_component_type              VARCHAR2(80);
100600 l_component_code              VARCHAR2(30);
100601 l_component_type_code         VARCHAR2(1);
100602 l_component_appl_id           INTEGER;
100603 l_amb_context_code            VARCHAR2(30);
100604 l_entity_code                 VARCHAR2(30);
100605 l_event_class_code            VARCHAR2(30);
100606 l_ae_header_id                NUMBER;
100607 l_event_type_code             VARCHAR2(30);
100608 l_line_definition_code        VARCHAR2(30);
100609 l_line_definition_owner_code  VARCHAR2(1);
100610 --
100611 -- adr variables
100615 l_adr_accounting_coa_id       NUMBER;
100612 l_segment                     VARCHAR2(30);
100613 l_ccid                        NUMBER;
100614 l_adr_transaction_coa_id      NUMBER;
100616 l_adr_flexfield_segment_code  VARCHAR2(30);
100617 l_adr_flex_value_set_id       NUMBER;
100618 l_adr_value_type_code         VARCHAR2(30);
100619 l_adr_value_combination_id    NUMBER;
100620 l_adr_value_segment_code      VARCHAR2(30);
100621 
100622 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
100623 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
100624 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
100625 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
100626 
100627 -- 4262811 Variables ------------------------------------------------------------------------------------------
100628 l_entered_amt_idx             NUMBER;
100629 l_accted_amt_idx              NUMBER;
100630 l_acc_rev_flag                VARCHAR2(1);
100631 l_accrual_line_num            NUMBER;
100632 l_tmp_amt                     NUMBER;
100633 l_acc_rev_natural_side_code   VARCHAR2(1);
100634 
100635 l_num_entries                 NUMBER;
100636 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
100637 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
100638 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
100639 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
100640 l_recog_line_1                NUMBER;
100641 l_recog_line_2                NUMBER;
100642 
100643 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
100644 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
100645 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
100646 
100647 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
100648 
100649 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
100650 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
100651 
100652 ---------------------------------------------------------------------------------------------------------------
100653 
100654 
100655 --
100656 -- bulk performance
100657 --
100658 l_balance_type_code           VARCHAR2(1);
100659 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
100660 l_log_module                  VARCHAR2(240);
100661 
100662 --
100663 -- Upgrade strategy
100664 --
100665 l_actual_upg_option           VARCHAR2(1);
100666 l_enc_upg_option           VARCHAR2(1);
100667 
100668 --
100669 BEGIN
100670 --
100671 IF g_log_enabled THEN
100672       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_214';
100673 END IF;
100674 --
100675 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100676 
100677       trace
100678          (p_msg      => 'BEGIN of AcctLineType_214'
100679          ,p_level    => C_LEVEL_PROCEDURE
100680          ,p_module   => l_log_module);
100681 
100682 END IF;
100683 --
100684 l_component_type             := 'AMB_JLT';
100685 l_component_code             := 'OHV';
100686 l_component_type_code        := 'S';
100687 l_component_appl_id          :=  555;
100688 l_amb_context_code           := 'DEFAULT';
100689 l_entity_code                := 'PRODUCTION';
100690 l_event_class_code           := 'BATCH_CLOSE';
100691 l_event_type_code            := 'CLOS';
100692 l_line_definition_owner_code := 'S';
100693 l_line_definition_code       := 'BATCH_CLOSE';
100694 --
100695 l_balance_type_code          := 'A';
100696 l_segment                     := NULL;
100697 l_ccid                        := NULL;
100698 l_adr_transaction_coa_id      := NULL;
100699 l_adr_accounting_coa_id       := NULL;
100700 l_adr_flexfield_segment_code  := NULL;
100701 l_adr_flex_value_set_id       := NULL;
100702 l_adr_value_type_code         := NULL;
100703 l_adr_value_combination_id    := NULL;
100704 l_adr_value_segment_code      := NULL;
100705 
100706 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
100707 l_bflow_class_code           := '';    -- 4219869 Business Flow
100708 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
100709 l_budgetary_control_flag     := 'N';
100710 
100711 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
100712 l_bflow_applied_to_amt       := NULL; -- 5132302
100713 l_entered_amt_idx            := NULL;          -- 4262811
100714 l_accted_amt_idx             := NULL;          -- 4262811
100715 l_acc_rev_flag               := NULL;          -- 4262811
100716 l_accrual_line_num           := NULL;          -- 4262811
100717 l_tmp_amt                    := NULL;          -- 4262811
100718 --
100719  
100720 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
100721     l_balance_type_code <> 'B' THEN
100722 IF NVL(p_source_2,'
100723 ') =  'OHV'
100724  THEN 
100725 
100726    --
100727    XLA_AE_LINES_PKG.SetNewLine;
100728 
100729    p_balance_type_code          := l_balance_type_code;
100730    -- set the flag so later we will know whether the gain loss line needs to be created
100731    
100732    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
100733      p_actual_flag :='A';
100734    END IF;
100735 
100736    --
100737    -- bulk performance
100738    --
100739    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
100743    --
100740                                       p_header_num   => 0); -- 4262811
100741    --
100742    -- set accounting line options
100744    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
100745            p_natural_side_code          => 'D'
100746          , p_gain_or_loss_flag          => 'N'
100747          , p_gl_transfer_mode_code      => 'D'
100748          , p_acct_entry_type_code       => 'A'
100749          , p_switch_side_flag           => 'Y'
100750          , p_merge_duplicate_code       => 'W'
100751          );
100752    --
100753    l_acc_rev_natural_side_code := 'C';  -- 4262811
100754    -- 
100755    --
100756    -- set accounting line type info
100757    --
100758    xla_ae_lines_pkg.SetAcctLineType
100759       (p_component_type             => l_component_type
100760       ,p_event_type_code            => l_event_type_code
100761       ,p_line_definition_owner_code => l_line_definition_owner_code
100762       ,p_line_definition_code       => l_line_definition_code
100763       ,p_accounting_line_code       => l_component_code
100764       ,p_accounting_line_type_code  => l_component_type_code
100765       ,p_accounting_line_appl_id    => l_component_appl_id
100766       ,p_amb_context_code           => l_amb_context_code
100767       ,p_entity_code                => l_entity_code
100768       ,p_event_class_code           => l_event_class_code);
100769    --
100770    -- set accounting class
100771    --
100772    xla_ae_lines_pkg.SetAcctClass(
100773            p_accounting_class_code  => 'OHV'
100774          , p_ae_header_id           => l_ae_header_id
100775          );
100776 
100777    --
100778    -- set rounding class
100779    --
100780    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
100781                       'OHV';
100782 
100783    --
100784    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
100785    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
100786    --
100787    -- bulk performance
100788    --
100789    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
100790 
100791    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
100792       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
100793 
100794    -- 4955764
100795    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100796       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
100797 
100798    -- 4458381 Public Sector Enh
100799    
100800    --
100801    -- set accounting attributes for the line type
100802    --
100803    l_entered_amt_idx := 3;
100804    l_accted_amt_idx  := 8;
100805    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
100806    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
100807    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
100808    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
100809    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
100810    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
100811    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
100812    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
100813    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
100814    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
100815    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
100816    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
100817    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
100818    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
100819    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
100820    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
100821    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
100822 
100823    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
100824    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
100825 
100826    ---------------------------------------------------------------------------------------------------------------
100827    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
100828    ---------------------------------------------------------------------------------------------------------------
100829    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
100830 
100831    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100832    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100833 
100834    IF xla_accounting_cache_pkg.GetValueChar
100835          (p_source_code         => 'LEDGER_CATEGORY_CODE'
100836          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
100837    AND l_bflow_method_code = 'PRIOR_ENTRY'
100838 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
100839    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
100840          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
100841        )
100842    THEN
100843          xla_ae_lines_pkg.BflowUpgEntry
100844            (p_business_method_code    => l_bflow_method_code
100845            ,p_business_class_code     => l_bflow_class_code
100846            ,p_balance_type            => l_balance_type_code);
100847    ELSE
100851 
100848       NULL;
100849 -- No business flow processing for business flow method of NONE.
100850    END IF;
100852    --
100853    -- call analytical criteria
100854    --
100855    
100856    --
100857    -- call description
100858    --
100859    -- No description or it is inherited.
100860    --
100861    -- call ADRs
100862    -- Bug 4922099
100863    --
100864    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100865         (NVL(l_actual_upg_option, 'N') = 'O') OR
100866         (NVL(l_enc_upg_option, 'N') = 'O')
100867       )
100868    THEN
100869    NULL;
100870    --
100871    --
100872    
100873   l_ccid := AcctDerRule_28(
100874            p_application_id           => p_application_id
100875          , p_ae_header_id             => l_ae_header_id 
100876 , p_source_1 => p_source_1
100877 , p_source_2 => p_source_2
100878          , x_transaction_coa_id       => l_adr_transaction_coa_id
100879          , x_accounting_coa_id        => l_adr_accounting_coa_id
100880          , x_value_type_code          => l_adr_value_type_code
100881          , p_side                     => 'NA'
100882    );
100883 
100884    xla_ae_lines_pkg.set_ccid(
100885     p_code_combination_id          => l_ccid
100886   , p_value_type_code              => l_adr_value_type_code
100887   , p_transaction_coa_id           => l_adr_transaction_coa_id
100888   , p_accounting_coa_id            => l_adr_accounting_coa_id
100889   , p_adr_code                     => 'OHV'
100890   , p_adr_type_code                => 'S'
100891   , p_component_type               => l_component_type
100892   , p_component_code               => l_component_code
100893   , p_component_type_code          => l_component_type_code
100894   , p_component_appl_id            => l_component_appl_id
100895   , p_amb_context_code             => l_amb_context_code
100896   , p_side                         => 'NA'
100897   );
100898 
100899 
100900    --
100901    --
100902    END IF;
100903    --
100904    -- Bug 4922099
100905    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
100906           (NVL(l_enc_upg_option, 'N') = 'O')
100907         ) AND
100908         (l_bflow_method_code = 'PRIOR_ENTRY')
100909       )
100910    THEN
100911       IF
100912       --
100913       1 = 2
100914       --
100915       THEN
100916       xla_accounting_err_pkg.build_message
100917                                     (p_appli_s_name            => 'XLA'
100918                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100919                                     ,p_token_1                 => 'LINE_NUMBER'
100920                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
100921                                     ,p_token_2                 => 'LINE_TYPE_NAME'
100922                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
100923                                                                              l_component_type
100924                                                                             ,l_component_code
100925                                                                             ,l_component_type_code
100926                                                                             ,l_component_appl_id
100927                                                                             ,l_amb_context_code
100928                                                                             ,l_entity_code
100929                                                                             ,l_event_class_code
100930                                                                            )
100931                                     ,p_token_3                 => 'OWNER'
100932                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
100933                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
100934                                                                           ,p_lookup_code    => l_component_type_code
100935                                                                          )
100936                                     ,p_token_4                 => 'PRODUCT_NAME'
100937                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
100938                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
100939                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
100940                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
100941                                     ,p_ae_header_id            =>  NULL
100942                                        );
100943 
100944         IF (C_LEVEL_ERROR>= g_log_level) THEN
100945                  trace
100946                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100947                       ,p_level    => C_LEVEL_ERROR
100948                       ,p_module   => l_log_module);
100949         END IF;
100950       END IF;
100951    END IF;
100952    --
100953    --
100954    ------------------------------------------------------------------------------------------------
100955    -- 4219869 Business Flow
100956    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
100957    -- Prior Entry.  Currently, the following code is always generated.
100958    ------------------------------------------------------------------------------------------------
100959    XLA_AE_LINES_PKG.ValidateCurrentLine;
100960 
100964    ------------------------------------------------------------------------------------
100961    ------------------------------------------------------------------------------------
100962    -- 4219869 Business Flow
100963    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
100965    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100966 
100967    ----------------------------------------------------------------------------------
100968    -- 4219869 Business Flow
100969    -- Update journal entry status -- Need to generate this within IF <condition>
100970    ----------------------------------------------------------------------------------
100971    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100972          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
100973          ,p_balance_type_code => l_balance_type_code
100974          );
100975 
100976    -------------------------------------------------------------------------------------------
100977    -- 4262811 - Generate the Accrual Reversal lines
100978    -------------------------------------------------------------------------------------------
100979    BEGIN
100980       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
100981                               (g_array_event(p_event_id).array_value_num('header_index'));
100982       IF l_acc_rev_flag IS NULL THEN
100983          l_acc_rev_flag := 'N';
100984       END IF;
100985    EXCEPTION
100986       WHEN OTHERS THEN
100987          l_acc_rev_flag := 'N';
100988    END;
100989    --
100990    IF (l_acc_rev_flag = 'Y') THEN
100991 
100992        -- 4645092  ------------------------------------------------------------------------------
100993        -- To allow MPA report to determine if it should generate report process
100994        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
100995        ------------------------------------------------------------------------------------------
100996 
100997        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
100998        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
100999    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
101000    -- call ADRs
101001    -- Bug 4922099
101002    --
101003    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101004         (NVL(l_actual_upg_option, 'N') = 'O') OR
101005         (NVL(l_enc_upg_option, 'N') = 'O')
101006       )
101007    THEN
101008    NULL;
101009    --
101010    --
101011    
101012   l_ccid := AcctDerRule_28(
101013            p_application_id           => p_application_id
101014          , p_ae_header_id             => l_ae_header_id 
101015 , p_source_1 => p_source_1
101016 , p_source_2 => p_source_2
101017          , x_transaction_coa_id       => l_adr_transaction_coa_id
101018          , x_accounting_coa_id        => l_adr_accounting_coa_id
101019          , x_value_type_code          => l_adr_value_type_code
101020          , p_side                     => 'NA'
101021    );
101022 
101023    xla_ae_lines_pkg.set_ccid(
101024     p_code_combination_id          => l_ccid
101025   , p_value_type_code              => l_adr_value_type_code
101026   , p_transaction_coa_id           => l_adr_transaction_coa_id
101027   , p_accounting_coa_id            => l_adr_accounting_coa_id
101028   , p_adr_code                     => 'OHV'
101029   , p_adr_type_code                => 'S'
101030   , p_component_type               => l_component_type
101031   , p_component_code               => l_component_code
101032   , p_component_type_code          => l_component_type_code
101033   , p_component_appl_id            => l_component_appl_id
101034   , p_amb_context_code             => l_amb_context_code
101035   , p_side                         => 'NA'
101036   );
101037 
101038 
101039    --
101040    --
101041    END IF;
101042 
101043        --
101044        -- Update the line information that should be overwritten
101045        --
101046        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
101047                                          p_header_num   => 1);
101048        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
101049 
101050        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
101051 
101052        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
101053           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
101054        END IF;
101055 
101056       --
101057       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
101058       --
101059       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
101060           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
101061       ELSE
101062           ---------------------------------------------------------------------------------------------------
101063           -- 4262811a Switch Sign
101064           ---------------------------------------------------------------------------------------------------
101065           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
101066           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101067                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101068           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101072                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101069                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101070           -- 5132302
101071           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
101073 
101074       END IF;
101075 
101076       -- 4955764
101077       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101078       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
101079 
101080 
101081       XLA_AE_LINES_PKG.ValidateCurrentLine;
101082       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101083 
101084       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101085                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
101086                ,p_balance_type_code => l_balance_type_code);
101087 
101088    END IF;
101089 
101090    -----------------------------------------------------------------------------------------
101091    -- 4262811 Multiperiod Accounting
101092    -----------------------------------------------------------------------------------------
101093      -- No MPA option is assigned.
101094 
101095 
101096 END IF;
101097 END IF;
101098 --
101099 
101100 --
101101 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101102    trace
101103       (p_msg      => 'END of AcctLineType_214'
101104       ,p_level    => C_LEVEL_PROCEDURE
101105       ,p_module   => l_log_module);
101106 END IF;
101107 --
101108 EXCEPTION
101109   WHEN xla_exceptions_pkg.application_exception THEN
101110       RAISE;
101111   WHEN OTHERS THEN
101112        xla_exceptions_pkg.raise_message
101113            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_214');
101114 END AcctLineType_214;
101115 --
101116 
101117 ---------------------------------------
101118 --
101119 -- PRIVATE FUNCTION
101120 --         AcctLineType_215
101121 --
101122 ---------------------------------------
101123 PROCEDURE AcctLineType_215 (
101124   p_application_id        IN NUMBER
101125  ,p_event_id              IN NUMBER
101126  ,p_calculate_acctd_flag  IN VARCHAR2
101127  ,p_calculate_g_l_flag    IN VARCHAR2
101128  ,p_actual_flag           IN OUT VARCHAR2
101129  ,p_balance_type_code     OUT VARCHAR2
101130  ,p_gain_or_loss_ref      OUT VARCHAR2
101131  
101132 --Transaction Account
101133  , p_source_1            IN NUMBER
101134 --Journal Line Type
101135  , p_source_2            IN VARCHAR2
101136 --Entered Amount
101137  , p_source_3            IN NUMBER
101138 --First Distribution Identifier
101139  , p_source_5            IN NUMBER
101140 --Distribution Type
101141  , p_source_6            IN VARCHAR2
101142 --Currency Code
101143  , p_source_7            IN VARCHAR2
101144 --Currency Conversion Date
101145  , p_source_8            IN DATE
101146 --Currency Conversion Rate
101147  , p_source_9            IN NUMBER
101148 --Currency Conversion Type
101149  , p_source_10            IN VARCHAR2
101150 --Accounted Amount
101151  , p_source_11            IN NUMBER
101152 )
101153 IS
101154 
101155 l_component_type              VARCHAR2(80);
101156 l_component_code              VARCHAR2(30);
101157 l_component_type_code         VARCHAR2(1);
101158 l_component_appl_id           INTEGER;
101159 l_amb_context_code            VARCHAR2(30);
101160 l_entity_code                 VARCHAR2(30);
101161 l_event_class_code            VARCHAR2(30);
101162 l_ae_header_id                NUMBER;
101163 l_event_type_code             VARCHAR2(30);
101164 l_line_definition_code        VARCHAR2(30);
101165 l_line_definition_owner_code  VARCHAR2(1);
101166 --
101167 -- adr variables
101168 l_segment                     VARCHAR2(30);
101169 l_ccid                        NUMBER;
101170 l_adr_transaction_coa_id      NUMBER;
101171 l_adr_accounting_coa_id       NUMBER;
101172 l_adr_flexfield_segment_code  VARCHAR2(30);
101173 l_adr_flex_value_set_id       NUMBER;
101174 l_adr_value_type_code         VARCHAR2(30);
101175 l_adr_value_combination_id    NUMBER;
101176 l_adr_value_segment_code      VARCHAR2(30);
101177 
101178 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
101179 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
101180 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
101181 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
101182 
101183 -- 4262811 Variables ------------------------------------------------------------------------------------------
101184 l_entered_amt_idx             NUMBER;
101185 l_accted_amt_idx              NUMBER;
101186 l_acc_rev_flag                VARCHAR2(1);
101187 l_accrual_line_num            NUMBER;
101188 l_tmp_amt                     NUMBER;
101189 l_acc_rev_natural_side_code   VARCHAR2(1);
101190 
101191 l_num_entries                 NUMBER;
101192 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
101193 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
101194 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
101195 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
101196 l_recog_line_1                NUMBER;
101197 l_recog_line_2                NUMBER;
101198 
101199 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
101200 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
101204 
101201 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
101202 
101203 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
101205 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
101206 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
101207 
101208 ---------------------------------------------------------------------------------------------------------------
101209 
101210 
101211 --
101212 -- bulk performance
101213 --
101214 l_balance_type_code           VARCHAR2(1);
101215 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
101216 l_log_module                  VARCHAR2(240);
101217 
101218 --
101219 -- Upgrade strategy
101220 --
101221 l_actual_upg_option           VARCHAR2(1);
101222 l_enc_upg_option           VARCHAR2(1);
101223 
101224 --
101225 BEGIN
101226 --
101227 IF g_log_enabled THEN
101228       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_215';
101229 END IF;
101230 --
101231 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101232 
101233       trace
101234          (p_msg      => 'BEGIN of AcctLineType_215'
101235          ,p_level    => C_LEVEL_PROCEDURE
101236          ,p_module   => l_log_module);
101237 
101238 END IF;
101239 --
101240 l_component_type             := 'AMB_JLT';
101241 l_component_code             := 'OVH';
101242 l_component_type_code        := 'S';
101243 l_component_appl_id          :=  555;
101244 l_amb_context_code           := 'DEFAULT';
101245 l_entity_code                := 'PRODUCTION';
101246 l_event_class_code           := 'BATCH_MATERIAL';
101247 l_event_type_code            := 'CERT';
101248 l_line_definition_owner_code := 'S';
101249 l_line_definition_code       := 'BATCH_COMPLETION';
101250 --
101251 l_balance_type_code          := 'A';
101252 l_segment                     := NULL;
101253 l_ccid                        := NULL;
101254 l_adr_transaction_coa_id      := NULL;
101255 l_adr_accounting_coa_id       := NULL;
101256 l_adr_flexfield_segment_code  := NULL;
101257 l_adr_flex_value_set_id       := NULL;
101258 l_adr_value_type_code         := NULL;
101259 l_adr_value_combination_id    := NULL;
101260 l_adr_value_segment_code      := NULL;
101261 
101262 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
101263 l_bflow_class_code           := '';    -- 4219869 Business Flow
101264 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
101265 l_budgetary_control_flag     := 'N';
101266 
101267 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
101268 l_bflow_applied_to_amt       := NULL; -- 5132302
101269 l_entered_amt_idx            := NULL;          -- 4262811
101270 l_accted_amt_idx             := NULL;          -- 4262811
101271 l_acc_rev_flag               := NULL;          -- 4262811
101272 l_accrual_line_num           := NULL;          -- 4262811
101273 l_tmp_amt                    := NULL;          -- 4262811
101274 --
101275  
101276 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
101277     l_balance_type_code <> 'B' THEN
101278 IF NVL(p_source_2,'
101279 ') =  'OVH'
101280  THEN 
101281 
101282    --
101283    XLA_AE_LINES_PKG.SetNewLine;
101284 
101285    p_balance_type_code          := l_balance_type_code;
101286    -- set the flag so later we will know whether the gain loss line needs to be created
101287    
101288    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
101289      p_actual_flag :='A';
101290    END IF;
101291 
101292    --
101293    -- bulk performance
101294    --
101295    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
101296                                       p_header_num   => 0); -- 4262811
101297    --
101298    -- set accounting line options
101299    --
101300    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
101301            p_natural_side_code          => 'D'
101302          , p_gain_or_loss_flag          => 'N'
101303          , p_gl_transfer_mode_code      => 'D'
101304          , p_acct_entry_type_code       => 'A'
101305          , p_switch_side_flag           => 'Y'
101306          , p_merge_duplicate_code       => 'W'
101307          );
101308    --
101309    l_acc_rev_natural_side_code := 'C';  -- 4262811
101310    -- 
101311    --
101312    -- set accounting line type info
101313    --
101314    xla_ae_lines_pkg.SetAcctLineType
101315       (p_component_type             => l_component_type
101316       ,p_event_type_code            => l_event_type_code
101317       ,p_line_definition_owner_code => l_line_definition_owner_code
101318       ,p_line_definition_code       => l_line_definition_code
101319       ,p_accounting_line_code       => l_component_code
101320       ,p_accounting_line_type_code  => l_component_type_code
101321       ,p_accounting_line_appl_id    => l_component_appl_id
101322       ,p_amb_context_code           => l_amb_context_code
101323       ,p_entity_code                => l_entity_code
101324       ,p_event_class_code           => l_event_class_code);
101325    --
101326    -- set accounting class
101327    --
101328    xla_ae_lines_pkg.SetAcctClass(
101329            p_accounting_class_code  => 'OVERHEAD_ABSORPTION'
101330          , p_ae_header_id           => l_ae_header_id
101331          );
101332 
101333    --
101334    -- set rounding class
101335    --
101339    --
101336    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
101337                       'OVERHEAD_ABSORPTION';
101338 
101340    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
101341    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
101342    --
101343    -- bulk performance
101344    --
101345    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
101346 
101347    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
101348       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
101349 
101350    -- 4955764
101351    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101352       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
101353 
101354    -- 4458381 Public Sector Enh
101355    
101356    --
101357    -- set accounting attributes for the line type
101358    --
101359    l_entered_amt_idx := 3;
101360    l_accted_amt_idx  := 8;
101361    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
101362    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
101363    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
101364    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
101365    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
101366    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
101367    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
101368    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
101369    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
101370    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
101371    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
101372    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
101373    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
101374    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
101375    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
101376    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
101377    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
101378 
101379    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
101380    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
101381 
101382    ---------------------------------------------------------------------------------------------------------------
101383    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
101384    ---------------------------------------------------------------------------------------------------------------
101385    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
101386 
101387    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101388    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101389 
101390    IF xla_accounting_cache_pkg.GetValueChar
101391          (p_source_code         => 'LEDGER_CATEGORY_CODE'
101392          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
101393    AND l_bflow_method_code = 'PRIOR_ENTRY'
101394 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
101395    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
101396          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
101397        )
101398    THEN
101399          xla_ae_lines_pkg.BflowUpgEntry
101400            (p_business_method_code    => l_bflow_method_code
101401            ,p_business_class_code     => l_bflow_class_code
101402            ,p_balance_type            => l_balance_type_code);
101403    ELSE
101404       NULL;
101405 -- No business flow processing for business flow method of NONE.
101406    END IF;
101407 
101408    --
101409    -- call analytical criteria
101410    --
101411    
101412    --
101413    -- call description
101414    --
101415    -- No description or it is inherited.
101416    --
101417    -- call ADRs
101418    -- Bug 4922099
101419    --
101420    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101421         (NVL(l_actual_upg_option, 'N') = 'O') OR
101422         (NVL(l_enc_upg_option, 'N') = 'O')
101423       )
101424    THEN
101425    NULL;
101426    --
101427    --
101428    
101429   l_ccid := AcctDerRule_29(
101430            p_application_id           => p_application_id
101431          , p_ae_header_id             => l_ae_header_id 
101432 , p_source_1 => p_source_1
101433 , p_source_2 => p_source_2
101434          , x_transaction_coa_id       => l_adr_transaction_coa_id
101435          , x_accounting_coa_id        => l_adr_accounting_coa_id
101436          , x_value_type_code          => l_adr_value_type_code
101437          , p_side                     => 'NA'
101438    );
101439 
101440    xla_ae_lines_pkg.set_ccid(
101441     p_code_combination_id          => l_ccid
101442   , p_value_type_code              => l_adr_value_type_code
101443   , p_transaction_coa_id           => l_adr_transaction_coa_id
101444   , p_accounting_coa_id            => l_adr_accounting_coa_id
101445   , p_adr_code                     => 'OVH'
101446   , p_adr_type_code                => 'S'
101447   , p_component_type               => l_component_type
101448   , p_component_code               => l_component_code
101449   , p_component_type_code          => l_component_type_code
101453   );
101450   , p_component_appl_id            => l_component_appl_id
101451   , p_amb_context_code             => l_amb_context_code
101452   , p_side                         => 'NA'
101454 
101455 
101456    --
101457    --
101458    END IF;
101459    --
101460    -- Bug 4922099
101461    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
101462           (NVL(l_enc_upg_option, 'N') = 'O')
101463         ) AND
101464         (l_bflow_method_code = 'PRIOR_ENTRY')
101465       )
101466    THEN
101467       IF
101468       --
101469       1 = 2
101470       --
101471       THEN
101472       xla_accounting_err_pkg.build_message
101473                                     (p_appli_s_name            => 'XLA'
101474                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101475                                     ,p_token_1                 => 'LINE_NUMBER'
101476                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
101477                                     ,p_token_2                 => 'LINE_TYPE_NAME'
101478                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
101479                                                                              l_component_type
101480                                                                             ,l_component_code
101481                                                                             ,l_component_type_code
101482                                                                             ,l_component_appl_id
101483                                                                             ,l_amb_context_code
101484                                                                             ,l_entity_code
101485                                                                             ,l_event_class_code
101486                                                                            )
101487                                     ,p_token_3                 => 'OWNER'
101488                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
101489                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
101490                                                                           ,p_lookup_code    => l_component_type_code
101491                                                                          )
101492                                     ,p_token_4                 => 'PRODUCT_NAME'
101493                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
101494                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
101495                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
101496                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
101497                                     ,p_ae_header_id            =>  NULL
101498                                        );
101499 
101500         IF (C_LEVEL_ERROR>= g_log_level) THEN
101501                  trace
101502                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101503                       ,p_level    => C_LEVEL_ERROR
101504                       ,p_module   => l_log_module);
101505         END IF;
101506       END IF;
101507    END IF;
101508    --
101509    --
101510    ------------------------------------------------------------------------------------------------
101511    -- 4219869 Business Flow
101512    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
101513    -- Prior Entry.  Currently, the following code is always generated.
101514    ------------------------------------------------------------------------------------------------
101515    XLA_AE_LINES_PKG.ValidateCurrentLine;
101516 
101517    ------------------------------------------------------------------------------------
101518    -- 4219869 Business Flow
101519    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
101520    ------------------------------------------------------------------------------------
101521    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101522 
101523    ----------------------------------------------------------------------------------
101524    -- 4219869 Business Flow
101525    -- Update journal entry status -- Need to generate this within IF <condition>
101526    ----------------------------------------------------------------------------------
101527    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101528          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
101529          ,p_balance_type_code => l_balance_type_code
101530          );
101531 
101532    -------------------------------------------------------------------------------------------
101533    -- 4262811 - Generate the Accrual Reversal lines
101534    -------------------------------------------------------------------------------------------
101535    BEGIN
101536       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
101537                               (g_array_event(p_event_id).array_value_num('header_index'));
101538       IF l_acc_rev_flag IS NULL THEN
101539          l_acc_rev_flag := 'N';
101540       END IF;
101541    EXCEPTION
101542       WHEN OTHERS THEN
101543          l_acc_rev_flag := 'N';
101544    END;
101545    --
101546    IF (l_acc_rev_flag = 'Y') THEN
101547 
101551        ------------------------------------------------------------------------------------------
101548        -- 4645092  ------------------------------------------------------------------------------
101549        -- To allow MPA report to determine if it should generate report process
101550        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
101552 
101553        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
101554        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
101555    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
101556    -- call ADRs
101557    -- Bug 4922099
101558    --
101559    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101560         (NVL(l_actual_upg_option, 'N') = 'O') OR
101561         (NVL(l_enc_upg_option, 'N') = 'O')
101562       )
101563    THEN
101564    NULL;
101565    --
101566    --
101567    
101568   l_ccid := AcctDerRule_29(
101569            p_application_id           => p_application_id
101570          , p_ae_header_id             => l_ae_header_id 
101571 , p_source_1 => p_source_1
101572 , p_source_2 => p_source_2
101573          , x_transaction_coa_id       => l_adr_transaction_coa_id
101574          , x_accounting_coa_id        => l_adr_accounting_coa_id
101575          , x_value_type_code          => l_adr_value_type_code
101576          , p_side                     => 'NA'
101577    );
101578 
101579    xla_ae_lines_pkg.set_ccid(
101580     p_code_combination_id          => l_ccid
101581   , p_value_type_code              => l_adr_value_type_code
101582   , p_transaction_coa_id           => l_adr_transaction_coa_id
101583   , p_accounting_coa_id            => l_adr_accounting_coa_id
101584   , p_adr_code                     => 'OVH'
101585   , p_adr_type_code                => 'S'
101586   , p_component_type               => l_component_type
101587   , p_component_code               => l_component_code
101588   , p_component_type_code          => l_component_type_code
101589   , p_component_appl_id            => l_component_appl_id
101590   , p_amb_context_code             => l_amb_context_code
101591   , p_side                         => 'NA'
101592   );
101593 
101594 
101595    --
101596    --
101597    END IF;
101598 
101599        --
101600        -- Update the line information that should be overwritten
101601        --
101602        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
101603                                          p_header_num   => 1);
101604        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
101605 
101606        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
101607 
101608        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
101609           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
101610        END IF;
101611 
101612       --
101613       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
101614       --
101615       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
101616           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
101617       ELSE
101618           ---------------------------------------------------------------------------------------------------
101619           -- 4262811a Switch Sign
101620           ---------------------------------------------------------------------------------------------------
101621           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
101622           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101623                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101624           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101625                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101626           -- 5132302
101627           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
101628                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101629 
101630       END IF;
101631 
101632       -- 4955764
101633       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101634       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
101635 
101636 
101637       XLA_AE_LINES_PKG.ValidateCurrentLine;
101638       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101639 
101640       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101641                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
101642                ,p_balance_type_code => l_balance_type_code);
101643 
101644    END IF;
101645 
101646    -----------------------------------------------------------------------------------------
101647    -- 4262811 Multiperiod Accounting
101648    -----------------------------------------------------------------------------------------
101649      -- No MPA option is assigned.
101650 
101651 
101652 END IF;
101653 END IF;
101654 --
101655 
101656 --
101657 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101658    trace
101659       (p_msg      => 'END of AcctLineType_215'
101660       ,p_level    => C_LEVEL_PROCEDURE
101661       ,p_module   => l_log_module);
101662 END IF;
101663 --
101664 EXCEPTION
101668        xla_exceptions_pkg.raise_message
101665   WHEN xla_exceptions_pkg.application_exception THEN
101666       RAISE;
101667   WHEN OTHERS THEN
101669            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_215');
101670 END AcctLineType_215;
101671 --
101672 
101673 ---------------------------------------
101674 --
101675 -- PRIVATE FUNCTION
101676 --         AcctLineType_216
101677 --
101678 ---------------------------------------
101679 PROCEDURE AcctLineType_216 (
101680   p_application_id        IN NUMBER
101681  ,p_event_id              IN NUMBER
101682  ,p_calculate_acctd_flag  IN VARCHAR2
101683  ,p_calculate_g_l_flag    IN VARCHAR2
101684  ,p_actual_flag           IN OUT VARCHAR2
101685  ,p_balance_type_code     OUT VARCHAR2
101686  ,p_gain_or_loss_ref      OUT VARCHAR2
101687  
101688 --Transaction Account
101689  , p_source_1            IN NUMBER
101690 --Journal Line Type
101691  , p_source_2            IN VARCHAR2
101692 --Entered Amount
101693  , p_source_3            IN NUMBER
101694 --First Distribution Identifier
101695  , p_source_5            IN NUMBER
101696 --Distribution Type
101697  , p_source_6            IN VARCHAR2
101698 --Currency Code
101699  , p_source_7            IN VARCHAR2
101700 --Currency Conversion Date
101701  , p_source_8            IN DATE
101702 --Currency Conversion Rate
101703  , p_source_9            IN NUMBER
101704 --Currency Conversion Type
101705  , p_source_10            IN VARCHAR2
101706 --Accounted Amount
101707  , p_source_11            IN NUMBER
101708 )
101709 IS
101710 
101711 l_component_type              VARCHAR2(80);
101712 l_component_code              VARCHAR2(30);
101713 l_component_type_code         VARCHAR2(1);
101714 l_component_appl_id           INTEGER;
101715 l_amb_context_code            VARCHAR2(30);
101716 l_entity_code                 VARCHAR2(30);
101717 l_event_class_code            VARCHAR2(30);
101718 l_ae_header_id                NUMBER;
101719 l_event_type_code             VARCHAR2(30);
101720 l_line_definition_code        VARCHAR2(30);
101721 l_line_definition_owner_code  VARCHAR2(1);
101722 --
101723 -- adr variables
101724 l_segment                     VARCHAR2(30);
101725 l_ccid                        NUMBER;
101726 l_adr_transaction_coa_id      NUMBER;
101727 l_adr_accounting_coa_id       NUMBER;
101728 l_adr_flexfield_segment_code  VARCHAR2(30);
101729 l_adr_flex_value_set_id       NUMBER;
101730 l_adr_value_type_code         VARCHAR2(30);
101731 l_adr_value_combination_id    NUMBER;
101732 l_adr_value_segment_code      VARCHAR2(30);
101733 
101734 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
101735 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
101736 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
101737 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
101738 
101739 -- 4262811 Variables ------------------------------------------------------------------------------------------
101740 l_entered_amt_idx             NUMBER;
101741 l_accted_amt_idx              NUMBER;
101742 l_acc_rev_flag                VARCHAR2(1);
101743 l_accrual_line_num            NUMBER;
101744 l_tmp_amt                     NUMBER;
101745 l_acc_rev_natural_side_code   VARCHAR2(1);
101746 
101747 l_num_entries                 NUMBER;
101748 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
101749 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
101750 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
101751 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
101752 l_recog_line_1                NUMBER;
101753 l_recog_line_2                NUMBER;
101754 
101755 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
101756 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
101757 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
101758 
101759 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
101760 
101761 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
101762 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
101763 
101764 ---------------------------------------------------------------------------------------------------------------
101765 
101766 
101767 --
101768 -- bulk performance
101769 --
101770 l_balance_type_code           VARCHAR2(1);
101771 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
101772 l_log_module                  VARCHAR2(240);
101773 
101774 --
101775 -- Upgrade strategy
101776 --
101777 l_actual_upg_option           VARCHAR2(1);
101778 l_enc_upg_option           VARCHAR2(1);
101779 
101780 --
101781 BEGIN
101782 --
101783 IF g_log_enabled THEN
101784       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_216';
101785 END IF;
101786 --
101787 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101788 
101789       trace
101790          (p_msg      => 'BEGIN of AcctLineType_216'
101791          ,p_level    => C_LEVEL_PROCEDURE
101792          ,p_module   => l_log_module);
101793 
101794 END IF;
101795 --
101796 l_component_type             := 'AMB_JLT';
101797 l_component_code             := 'PIN';
101798 l_component_type_code        := 'S';
101799 l_component_appl_id          :=  555;
101800 l_amb_context_code           := 'DEFAULT';
101804 l_line_definition_owner_code := 'S';
101801 l_entity_code                := 'INVENTORY';
101802 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
101803 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
101805 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
101806 --
101807 l_balance_type_code          := 'A';
101808 l_segment                     := NULL;
101809 l_ccid                        := NULL;
101810 l_adr_transaction_coa_id      := NULL;
101811 l_adr_accounting_coa_id       := NULL;
101812 l_adr_flexfield_segment_code  := NULL;
101813 l_adr_flex_value_set_id       := NULL;
101814 l_adr_value_type_code         := NULL;
101815 l_adr_value_combination_id    := NULL;
101816 l_adr_value_segment_code      := NULL;
101817 
101818 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
101819 l_bflow_class_code           := '';    -- 4219869 Business Flow
101820 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
101821 l_budgetary_control_flag     := 'N';
101822 
101823 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
101824 l_bflow_applied_to_amt       := NULL; -- 5132302
101825 l_entered_amt_idx            := NULL;          -- 4262811
101826 l_accted_amt_idx             := NULL;          -- 4262811
101827 l_acc_rev_flag               := NULL;          -- 4262811
101828 l_accrual_line_num           := NULL;          -- 4262811
101829 l_tmp_amt                    := NULL;          -- 4262811
101830 --
101831  
101832 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
101833     l_balance_type_code <> 'B' THEN
101834 IF NVL(p_source_2,'
101835 ') =  'PIN'
101836  THEN 
101837 
101838    --
101839    XLA_AE_LINES_PKG.SetNewLine;
101840 
101841    p_balance_type_code          := l_balance_type_code;
101842    -- set the flag so later we will know whether the gain loss line needs to be created
101843    
101844    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
101845      p_actual_flag :='A';
101846    END IF;
101847 
101848    --
101849    -- bulk performance
101850    --
101851    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
101852                                       p_header_num   => 0); -- 4262811
101853    --
101854    -- set accounting line options
101855    --
101856    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
101857            p_natural_side_code          => 'D'
101858          , p_gain_or_loss_flag          => 'N'
101859          , p_gl_transfer_mode_code      => 'D'
101860          , p_acct_entry_type_code       => 'A'
101861          , p_switch_side_flag           => 'Y'
101862          , p_merge_duplicate_code       => 'W'
101863          );
101864    --
101865    l_acc_rev_natural_side_code := 'C';  -- 4262811
101866    -- 
101867    --
101868    -- set accounting line type info
101869    --
101870    xla_ae_lines_pkg.SetAcctLineType
101871       (p_component_type             => l_component_type
101872       ,p_event_type_code            => l_event_type_code
101873       ,p_line_definition_owner_code => l_line_definition_owner_code
101874       ,p_line_definition_code       => l_line_definition_code
101875       ,p_accounting_line_code       => l_component_code
101876       ,p_accounting_line_type_code  => l_component_type_code
101877       ,p_accounting_line_appl_id    => l_component_appl_id
101878       ,p_amb_context_code           => l_amb_context_code
101879       ,p_entity_code                => l_entity_code
101880       ,p_event_class_code           => l_event_class_code);
101881    --
101882    -- set accounting class
101883    --
101884    xla_ae_lines_pkg.SetAcctClass(
101885            p_accounting_class_code  => 'PROFIT_IN_INVENTORY'
101886          , p_ae_header_id           => l_ae_header_id
101887          );
101888 
101889    --
101890    -- set rounding class
101891    --
101892    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
101893                       'PROFIT_IN_INVENTORY';
101894 
101895    --
101896    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
101897    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
101898    --
101899    -- bulk performance
101900    --
101901    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
101902 
101903    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
101904       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
101905 
101906    -- 4955764
101907    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101908       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
101909 
101910    -- 4458381 Public Sector Enh
101911    
101912    --
101913    -- set accounting attributes for the line type
101914    --
101915    l_entered_amt_idx := 3;
101916    l_accted_amt_idx  := 8;
101917    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
101918    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
101919    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
101920    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
101921    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
101922    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
101923    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
101927    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
101924    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
101925    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
101926    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
101928    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
101929    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
101930    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
101931    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
101932    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
101933    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
101934 
101935    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
101936    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
101937 
101938    ---------------------------------------------------------------------------------------------------------------
101939    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
101940    ---------------------------------------------------------------------------------------------------------------
101941    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
101942 
101943    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101944    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101945 
101946    IF xla_accounting_cache_pkg.GetValueChar
101947          (p_source_code         => 'LEDGER_CATEGORY_CODE'
101948          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
101949    AND l_bflow_method_code = 'PRIOR_ENTRY'
101950 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
101951    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
101952          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
101953        )
101954    THEN
101955          xla_ae_lines_pkg.BflowUpgEntry
101956            (p_business_method_code    => l_bflow_method_code
101957            ,p_business_class_code     => l_bflow_class_code
101958            ,p_balance_type            => l_balance_type_code);
101959    ELSE
101960       NULL;
101961 -- No business flow processing for business flow method of NONE.
101962    END IF;
101963 
101964    --
101965    -- call analytical criteria
101966    --
101967    
101968    --
101969    -- call description
101970    --
101971    -- No description or it is inherited.
101972    --
101973    -- call ADRs
101974    -- Bug 4922099
101975    --
101976    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101977         (NVL(l_actual_upg_option, 'N') = 'O') OR
101978         (NVL(l_enc_upg_option, 'N') = 'O')
101979       )
101980    THEN
101981    NULL;
101982    --
101983    --
101984    
101985   l_ccid := AcctDerRule_30(
101986            p_application_id           => p_application_id
101987          , p_ae_header_id             => l_ae_header_id 
101988 , p_source_1 => p_source_1
101989 , p_source_2 => p_source_2
101990          , x_transaction_coa_id       => l_adr_transaction_coa_id
101991          , x_accounting_coa_id        => l_adr_accounting_coa_id
101992          , x_value_type_code          => l_adr_value_type_code
101993          , p_side                     => 'NA'
101994    );
101995 
101996    xla_ae_lines_pkg.set_ccid(
101997     p_code_combination_id          => l_ccid
101998   , p_value_type_code              => l_adr_value_type_code
101999   , p_transaction_coa_id           => l_adr_transaction_coa_id
102000   , p_accounting_coa_id            => l_adr_accounting_coa_id
102001   , p_adr_code                     => 'PIN'
102002   , p_adr_type_code                => 'S'
102003   , p_component_type               => l_component_type
102004   , p_component_code               => l_component_code
102005   , p_component_type_code          => l_component_type_code
102006   , p_component_appl_id            => l_component_appl_id
102007   , p_amb_context_code             => l_amb_context_code
102008   , p_side                         => 'NA'
102009   );
102010 
102011 
102012    --
102013    --
102014    END IF;
102015    --
102016    -- Bug 4922099
102017    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
102018           (NVL(l_enc_upg_option, 'N') = 'O')
102019         ) AND
102020         (l_bflow_method_code = 'PRIOR_ENTRY')
102021       )
102022    THEN
102023       IF
102024       --
102025       1 = 2
102026       --
102027       THEN
102028       xla_accounting_err_pkg.build_message
102029                                     (p_appli_s_name            => 'XLA'
102030                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102031                                     ,p_token_1                 => 'LINE_NUMBER'
102032                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
102033                                     ,p_token_2                 => 'LINE_TYPE_NAME'
102034                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
102035                                                                              l_component_type
102036                                                                             ,l_component_code
102037                                                                             ,l_component_type_code
102038                                                                             ,l_component_appl_id
102042                                                                            )
102039                                                                             ,l_amb_context_code
102040                                                                             ,l_entity_code
102041                                                                             ,l_event_class_code
102043                                     ,p_token_3                 => 'OWNER'
102044                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
102045                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
102046                                                                           ,p_lookup_code    => l_component_type_code
102047                                                                          )
102048                                     ,p_token_4                 => 'PRODUCT_NAME'
102049                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
102050                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
102051                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
102052                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
102053                                     ,p_ae_header_id            =>  NULL
102054                                        );
102055 
102056         IF (C_LEVEL_ERROR>= g_log_level) THEN
102057                  trace
102058                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102059                       ,p_level    => C_LEVEL_ERROR
102060                       ,p_module   => l_log_module);
102061         END IF;
102062       END IF;
102063    END IF;
102064    --
102065    --
102066    ------------------------------------------------------------------------------------------------
102067    -- 4219869 Business Flow
102068    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
102069    -- Prior Entry.  Currently, the following code is always generated.
102070    ------------------------------------------------------------------------------------------------
102071    XLA_AE_LINES_PKG.ValidateCurrentLine;
102072 
102073    ------------------------------------------------------------------------------------
102074    -- 4219869 Business Flow
102075    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
102076    ------------------------------------------------------------------------------------
102077    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102078 
102079    ----------------------------------------------------------------------------------
102080    -- 4219869 Business Flow
102081    -- Update journal entry status -- Need to generate this within IF <condition>
102082    ----------------------------------------------------------------------------------
102083    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102084          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
102085          ,p_balance_type_code => l_balance_type_code
102086          );
102087 
102088    -------------------------------------------------------------------------------------------
102089    -- 4262811 - Generate the Accrual Reversal lines
102090    -------------------------------------------------------------------------------------------
102091    BEGIN
102092       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
102093                               (g_array_event(p_event_id).array_value_num('header_index'));
102094       IF l_acc_rev_flag IS NULL THEN
102095          l_acc_rev_flag := 'N';
102096       END IF;
102097    EXCEPTION
102098       WHEN OTHERS THEN
102099          l_acc_rev_flag := 'N';
102100    END;
102101    --
102102    IF (l_acc_rev_flag = 'Y') THEN
102103 
102104        -- 4645092  ------------------------------------------------------------------------------
102105        -- To allow MPA report to determine if it should generate report process
102106        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
102107        ------------------------------------------------------------------------------------------
102108 
102109        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
102110        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
102111    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
102112    -- call ADRs
102113    -- Bug 4922099
102114    --
102115    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102116         (NVL(l_actual_upg_option, 'N') = 'O') OR
102117         (NVL(l_enc_upg_option, 'N') = 'O')
102118       )
102119    THEN
102120    NULL;
102121    --
102122    --
102123    
102124   l_ccid := AcctDerRule_30(
102125            p_application_id           => p_application_id
102126          , p_ae_header_id             => l_ae_header_id 
102127 , p_source_1 => p_source_1
102128 , p_source_2 => p_source_2
102129          , x_transaction_coa_id       => l_adr_transaction_coa_id
102130          , x_accounting_coa_id        => l_adr_accounting_coa_id
102131          , x_value_type_code          => l_adr_value_type_code
102132          , p_side                     => 'NA'
102133    );
102134 
102135    xla_ae_lines_pkg.set_ccid(
102136     p_code_combination_id          => l_ccid
102137   , p_value_type_code              => l_adr_value_type_code
102138   , p_transaction_coa_id           => l_adr_transaction_coa_id
102142   , p_component_type               => l_component_type
102139   , p_accounting_coa_id            => l_adr_accounting_coa_id
102140   , p_adr_code                     => 'PIN'
102141   , p_adr_type_code                => 'S'
102143   , p_component_code               => l_component_code
102144   , p_component_type_code          => l_component_type_code
102145   , p_component_appl_id            => l_component_appl_id
102146   , p_amb_context_code             => l_amb_context_code
102147   , p_side                         => 'NA'
102148   );
102149 
102150 
102151    --
102152    --
102153    END IF;
102154 
102155        --
102156        -- Update the line information that should be overwritten
102157        --
102158        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
102159                                          p_header_num   => 1);
102160        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
102161 
102162        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
102163 
102164        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
102165           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
102166        END IF;
102167 
102168       --
102169       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
102170       --
102171       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
102172           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
102173       ELSE
102174           ---------------------------------------------------------------------------------------------------
102175           -- 4262811a Switch Sign
102176           ---------------------------------------------------------------------------------------------------
102177           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
102178           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102179                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102180           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102181                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102182           -- 5132302
102183           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
102184                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102185 
102186       END IF;
102187 
102188       -- 4955764
102189       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102190       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
102191 
102192 
102193       XLA_AE_LINES_PKG.ValidateCurrentLine;
102194       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102195 
102196       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102197                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
102198                ,p_balance_type_code => l_balance_type_code);
102199 
102200    END IF;
102201 
102202    -----------------------------------------------------------------------------------------
102203    -- 4262811 Multiperiod Accounting
102204    -----------------------------------------------------------------------------------------
102205      -- No MPA option is assigned.
102206 
102207 
102208 END IF;
102209 END IF;
102210 --
102211 
102212 --
102213 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102214    trace
102215       (p_msg      => 'END of AcctLineType_216'
102216       ,p_level    => C_LEVEL_PROCEDURE
102217       ,p_module   => l_log_module);
102218 END IF;
102219 --
102220 EXCEPTION
102221   WHEN xla_exceptions_pkg.application_exception THEN
102222       RAISE;
102223   WHEN OTHERS THEN
102224        xla_exceptions_pkg.raise_message
102225            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_216');
102226 END AcctLineType_216;
102227 --
102228 
102229 ---------------------------------------
102230 --
102231 -- PRIVATE FUNCTION
102232 --         AcctLineType_217
102233 --
102234 ---------------------------------------
102235 PROCEDURE AcctLineType_217 (
102236   p_application_id        IN NUMBER
102237  ,p_event_id              IN NUMBER
102238  ,p_calculate_acctd_flag  IN VARCHAR2
102239  ,p_calculate_g_l_flag    IN VARCHAR2
102240  ,p_actual_flag           IN OUT VARCHAR2
102241  ,p_balance_type_code     OUT VARCHAR2
102242  ,p_gain_or_loss_ref      OUT VARCHAR2
102243  
102244 --Transaction Account
102245  , p_source_1            IN NUMBER
102246 --Journal Line Type
102247  , p_source_2            IN VARCHAR2
102248 --Entered Amount
102249  , p_source_3            IN NUMBER
102250 --First Distribution Identifier
102251  , p_source_5            IN NUMBER
102252 --Distribution Type
102253  , p_source_6            IN VARCHAR2
102254 --Currency Code
102255  , p_source_7            IN VARCHAR2
102256 --Currency Conversion Date
102257  , p_source_8            IN DATE
102258 --Currency Conversion Rate
102259  , p_source_9            IN NUMBER
102260 --Currency Conversion Type
102261  , p_source_10            IN VARCHAR2
102262 --Accounted Amount
102266 
102263  , p_source_11            IN NUMBER
102264 )
102265 IS
102267 l_component_type              VARCHAR2(80);
102268 l_component_code              VARCHAR2(30);
102269 l_component_type_code         VARCHAR2(1);
102270 l_component_appl_id           INTEGER;
102271 l_amb_context_code            VARCHAR2(30);
102272 l_entity_code                 VARCHAR2(30);
102273 l_event_class_code            VARCHAR2(30);
102274 l_ae_header_id                NUMBER;
102275 l_event_type_code             VARCHAR2(30);
102276 l_line_definition_code        VARCHAR2(30);
102277 l_line_definition_owner_code  VARCHAR2(1);
102278 --
102279 -- adr variables
102280 l_segment                     VARCHAR2(30);
102281 l_ccid                        NUMBER;
102282 l_adr_transaction_coa_id      NUMBER;
102283 l_adr_accounting_coa_id       NUMBER;
102284 l_adr_flexfield_segment_code  VARCHAR2(30);
102285 l_adr_flex_value_set_id       NUMBER;
102286 l_adr_value_type_code         VARCHAR2(30);
102287 l_adr_value_combination_id    NUMBER;
102288 l_adr_value_segment_code      VARCHAR2(30);
102289 
102290 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
102291 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
102292 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
102293 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
102294 
102295 -- 4262811 Variables ------------------------------------------------------------------------------------------
102296 l_entered_amt_idx             NUMBER;
102297 l_accted_amt_idx              NUMBER;
102298 l_acc_rev_flag                VARCHAR2(1);
102299 l_accrual_line_num            NUMBER;
102300 l_tmp_amt                     NUMBER;
102301 l_acc_rev_natural_side_code   VARCHAR2(1);
102302 
102303 l_num_entries                 NUMBER;
102304 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
102305 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
102306 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
102307 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
102308 l_recog_line_1                NUMBER;
102309 l_recog_line_2                NUMBER;
102310 
102311 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
102312 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
102313 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
102314 
102315 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
102316 
102317 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
102318 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
102319 
102320 ---------------------------------------------------------------------------------------------------------------
102321 
102322 
102323 --
102324 -- bulk performance
102325 --
102326 l_balance_type_code           VARCHAR2(1);
102327 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
102328 l_log_module                  VARCHAR2(240);
102329 
102330 --
102331 -- Upgrade strategy
102332 --
102333 l_actual_upg_option           VARCHAR2(1);
102334 l_enc_upg_option           VARCHAR2(1);
102335 
102336 --
102337 BEGIN
102338 --
102339 IF g_log_enabled THEN
102340       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_217';
102341 END IF;
102342 --
102343 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102344 
102345       trace
102346          (p_msg      => 'BEGIN of AcctLineType_217'
102347          ,p_level    => C_LEVEL_PROCEDURE
102348          ,p_module   => l_log_module);
102349 
102350 END IF;
102351 --
102352 l_component_type             := 'AMB_JLT';
102353 l_component_code             := 'PIN';
102354 l_component_type_code        := 'S';
102355 l_component_appl_id          :=  555;
102356 l_amb_context_code           := 'DEFAULT';
102357 l_entity_code                := 'INVENTORY';
102358 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
102359 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
102360 l_line_definition_owner_code := 'S';
102361 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
102362 --
102363 l_balance_type_code          := 'A';
102364 l_segment                     := NULL;
102365 l_ccid                        := NULL;
102366 l_adr_transaction_coa_id      := NULL;
102367 l_adr_accounting_coa_id       := NULL;
102368 l_adr_flexfield_segment_code  := NULL;
102369 l_adr_flex_value_set_id       := NULL;
102370 l_adr_value_type_code         := NULL;
102371 l_adr_value_combination_id    := NULL;
102372 l_adr_value_segment_code      := NULL;
102373 
102374 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
102375 l_bflow_class_code           := '';    -- 4219869 Business Flow
102376 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
102377 l_budgetary_control_flag     := 'N';
102378 
102379 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
102380 l_bflow_applied_to_amt       := NULL; -- 5132302
102381 l_entered_amt_idx            := NULL;          -- 4262811
102382 l_accted_amt_idx             := NULL;          -- 4262811
102383 l_acc_rev_flag               := NULL;          -- 4262811
102384 l_accrual_line_num           := NULL;          -- 4262811
102385 l_tmp_amt                    := NULL;          -- 4262811
102386 --
102387  
102391 ') =  'PIN'
102388 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
102389     l_balance_type_code <> 'B' THEN
102390 IF NVL(p_source_2,'
102392  THEN 
102393 
102394    --
102395    XLA_AE_LINES_PKG.SetNewLine;
102396 
102397    p_balance_type_code          := l_balance_type_code;
102398    -- set the flag so later we will know whether the gain loss line needs to be created
102399    
102400    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
102401      p_actual_flag :='A';
102402    END IF;
102403 
102404    --
102405    -- bulk performance
102406    --
102407    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
102408                                       p_header_num   => 0); -- 4262811
102409    --
102410    -- set accounting line options
102411    --
102412    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
102413            p_natural_side_code          => 'D'
102414          , p_gain_or_loss_flag          => 'N'
102415          , p_gl_transfer_mode_code      => 'D'
102416          , p_acct_entry_type_code       => 'A'
102417          , p_switch_side_flag           => 'Y'
102418          , p_merge_duplicate_code       => 'W'
102419          );
102420    --
102421    l_acc_rev_natural_side_code := 'C';  -- 4262811
102422    -- 
102423    --
102424    -- set accounting line type info
102425    --
102426    xla_ae_lines_pkg.SetAcctLineType
102427       (p_component_type             => l_component_type
102428       ,p_event_type_code            => l_event_type_code
102429       ,p_line_definition_owner_code => l_line_definition_owner_code
102430       ,p_line_definition_code       => l_line_definition_code
102431       ,p_accounting_line_code       => l_component_code
102432       ,p_accounting_line_type_code  => l_component_type_code
102433       ,p_accounting_line_appl_id    => l_component_appl_id
102434       ,p_amb_context_code           => l_amb_context_code
102435       ,p_entity_code                => l_entity_code
102436       ,p_event_class_code           => l_event_class_code);
102437    --
102438    -- set accounting class
102439    --
102440    xla_ae_lines_pkg.SetAcctClass(
102441            p_accounting_class_code  => 'PROFIT_IN_INVENTORY'
102442          , p_ae_header_id           => l_ae_header_id
102443          );
102444 
102445    --
102446    -- set rounding class
102447    --
102448    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
102449                       'PROFIT_IN_INVENTORY';
102450 
102451    --
102452    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
102453    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
102454    --
102455    -- bulk performance
102456    --
102457    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
102458 
102459    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
102460       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
102461 
102462    -- 4955764
102463    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102464       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
102465 
102466    -- 4458381 Public Sector Enh
102467    
102468    --
102469    -- set accounting attributes for the line type
102470    --
102471    l_entered_amt_idx := 3;
102472    l_accted_amt_idx  := 8;
102473    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
102474    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
102475    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
102476    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
102477    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
102478    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
102479    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
102480    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
102481    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
102482    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
102483    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
102484    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
102485    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
102486    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
102487    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
102488    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
102489    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
102490 
102491    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
102492    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
102493 
102494    ---------------------------------------------------------------------------------------------------------------
102495    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
102496    ---------------------------------------------------------------------------------------------------------------
102497    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
102498 
102499    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102500    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102501 
102502    IF xla_accounting_cache_pkg.GetValueChar
102506 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
102503          (p_source_code         => 'LEDGER_CATEGORY_CODE'
102504          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
102505    AND l_bflow_method_code = 'PRIOR_ENTRY'
102507    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
102508          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
102509        )
102510    THEN
102511          xla_ae_lines_pkg.BflowUpgEntry
102512            (p_business_method_code    => l_bflow_method_code
102513            ,p_business_class_code     => l_bflow_class_code
102514            ,p_balance_type            => l_balance_type_code);
102515    ELSE
102516       NULL;
102517 -- No business flow processing for business flow method of NONE.
102518    END IF;
102519 
102520    --
102521    -- call analytical criteria
102522    --
102523    
102524    --
102525    -- call description
102526    --
102527    -- No description or it is inherited.
102528    --
102529    -- call ADRs
102530    -- Bug 4922099
102531    --
102532    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102533         (NVL(l_actual_upg_option, 'N') = 'O') OR
102534         (NVL(l_enc_upg_option, 'N') = 'O')
102535       )
102536    THEN
102537    NULL;
102538    --
102539    --
102540    
102541   l_ccid := AcctDerRule_30(
102542            p_application_id           => p_application_id
102543          , p_ae_header_id             => l_ae_header_id 
102544 , p_source_1 => p_source_1
102545 , p_source_2 => p_source_2
102546          , x_transaction_coa_id       => l_adr_transaction_coa_id
102547          , x_accounting_coa_id        => l_adr_accounting_coa_id
102548          , x_value_type_code          => l_adr_value_type_code
102549          , p_side                     => 'NA'
102550    );
102551 
102552    xla_ae_lines_pkg.set_ccid(
102553     p_code_combination_id          => l_ccid
102554   , p_value_type_code              => l_adr_value_type_code
102555   , p_transaction_coa_id           => l_adr_transaction_coa_id
102556   , p_accounting_coa_id            => l_adr_accounting_coa_id
102557   , p_adr_code                     => 'PIN'
102558   , p_adr_type_code                => 'S'
102559   , p_component_type               => l_component_type
102560   , p_component_code               => l_component_code
102561   , p_component_type_code          => l_component_type_code
102562   , p_component_appl_id            => l_component_appl_id
102563   , p_amb_context_code             => l_amb_context_code
102564   , p_side                         => 'NA'
102565   );
102566 
102567 
102568    --
102569    --
102570    END IF;
102571    --
102572    -- Bug 4922099
102573    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
102574           (NVL(l_enc_upg_option, 'N') = 'O')
102575         ) AND
102576         (l_bflow_method_code = 'PRIOR_ENTRY')
102577       )
102578    THEN
102579       IF
102580       --
102581       1 = 2
102582       --
102583       THEN
102584       xla_accounting_err_pkg.build_message
102585                                     (p_appli_s_name            => 'XLA'
102586                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102587                                     ,p_token_1                 => 'LINE_NUMBER'
102588                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
102589                                     ,p_token_2                 => 'LINE_TYPE_NAME'
102590                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
102591                                                                              l_component_type
102592                                                                             ,l_component_code
102593                                                                             ,l_component_type_code
102594                                                                             ,l_component_appl_id
102595                                                                             ,l_amb_context_code
102596                                                                             ,l_entity_code
102597                                                                             ,l_event_class_code
102598                                                                            )
102599                                     ,p_token_3                 => 'OWNER'
102600                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
102601                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
102602                                                                           ,p_lookup_code    => l_component_type_code
102603                                                                          )
102604                                     ,p_token_4                 => 'PRODUCT_NAME'
102605                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
102606                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
102607                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
102608                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
102609                                     ,p_ae_header_id            =>  NULL
102610                                        );
102611 
102612         IF (C_LEVEL_ERROR>= g_log_level) THEN
102613                  trace
102617         END IF;
102614                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102615                       ,p_level    => C_LEVEL_ERROR
102616                       ,p_module   => l_log_module);
102618       END IF;
102619    END IF;
102620    --
102621    --
102622    ------------------------------------------------------------------------------------------------
102623    -- 4219869 Business Flow
102624    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
102625    -- Prior Entry.  Currently, the following code is always generated.
102626    ------------------------------------------------------------------------------------------------
102627    XLA_AE_LINES_PKG.ValidateCurrentLine;
102628 
102629    ------------------------------------------------------------------------------------
102630    -- 4219869 Business Flow
102631    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
102632    ------------------------------------------------------------------------------------
102633    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102634 
102635    ----------------------------------------------------------------------------------
102636    -- 4219869 Business Flow
102637    -- Update journal entry status -- Need to generate this within IF <condition>
102638    ----------------------------------------------------------------------------------
102639    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102640          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
102641          ,p_balance_type_code => l_balance_type_code
102642          );
102643 
102644    -------------------------------------------------------------------------------------------
102645    -- 4262811 - Generate the Accrual Reversal lines
102646    -------------------------------------------------------------------------------------------
102647    BEGIN
102648       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
102649                               (g_array_event(p_event_id).array_value_num('header_index'));
102650       IF l_acc_rev_flag IS NULL THEN
102651          l_acc_rev_flag := 'N';
102652       END IF;
102653    EXCEPTION
102654       WHEN OTHERS THEN
102655          l_acc_rev_flag := 'N';
102656    END;
102657    --
102658    IF (l_acc_rev_flag = 'Y') THEN
102659 
102660        -- 4645092  ------------------------------------------------------------------------------
102661        -- To allow MPA report to determine if it should generate report process
102662        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
102663        ------------------------------------------------------------------------------------------
102664 
102665        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
102666        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
102667    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
102668    -- call ADRs
102669    -- Bug 4922099
102670    --
102671    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102672         (NVL(l_actual_upg_option, 'N') = 'O') OR
102673         (NVL(l_enc_upg_option, 'N') = 'O')
102674       )
102675    THEN
102676    NULL;
102677    --
102678    --
102679    
102680   l_ccid := AcctDerRule_30(
102681            p_application_id           => p_application_id
102682          , p_ae_header_id             => l_ae_header_id 
102683 , p_source_1 => p_source_1
102684 , p_source_2 => p_source_2
102685          , x_transaction_coa_id       => l_adr_transaction_coa_id
102686          , x_accounting_coa_id        => l_adr_accounting_coa_id
102687          , x_value_type_code          => l_adr_value_type_code
102688          , p_side                     => 'NA'
102689    );
102690 
102691    xla_ae_lines_pkg.set_ccid(
102692     p_code_combination_id          => l_ccid
102693   , p_value_type_code              => l_adr_value_type_code
102694   , p_transaction_coa_id           => l_adr_transaction_coa_id
102695   , p_accounting_coa_id            => l_adr_accounting_coa_id
102696   , p_adr_code                     => 'PIN'
102697   , p_adr_type_code                => 'S'
102698   , p_component_type               => l_component_type
102699   , p_component_code               => l_component_code
102700   , p_component_type_code          => l_component_type_code
102701   , p_component_appl_id            => l_component_appl_id
102702   , p_amb_context_code             => l_amb_context_code
102703   , p_side                         => 'NA'
102704   );
102705 
102706 
102707    --
102708    --
102709    END IF;
102710 
102711        --
102712        -- Update the line information that should be overwritten
102713        --
102714        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
102715                                          p_header_num   => 1);
102716        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
102717 
102718        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
102719 
102720        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
102721           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
102722        END IF;
102723 
102724       --
102725       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
102726       --
102727       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
102731           -- 4262811a Switch Sign
102728           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
102729       ELSE
102730           ---------------------------------------------------------------------------------------------------
102732           ---------------------------------------------------------------------------------------------------
102733           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
102734           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102735                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102736           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102737                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102738           -- 5132302
102739           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
102740                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102741 
102742       END IF;
102743 
102744       -- 4955764
102745       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102746       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
102747 
102748 
102749       XLA_AE_LINES_PKG.ValidateCurrentLine;
102750       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102751 
102752       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102753                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
102754                ,p_balance_type_code => l_balance_type_code);
102755 
102756    END IF;
102757 
102758    -----------------------------------------------------------------------------------------
102759    -- 4262811 Multiperiod Accounting
102760    -----------------------------------------------------------------------------------------
102761      -- No MPA option is assigned.
102762 
102763 
102764 END IF;
102765 END IF;
102766 --
102767 
102768 --
102769 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102770    trace
102771       (p_msg      => 'END of AcctLineType_217'
102772       ,p_level    => C_LEVEL_PROCEDURE
102773       ,p_module   => l_log_module);
102774 END IF;
102775 --
102776 EXCEPTION
102777   WHEN xla_exceptions_pkg.application_exception THEN
102778       RAISE;
102779   WHEN OTHERS THEN
102780        xla_exceptions_pkg.raise_message
102781            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_217');
102782 END AcctLineType_217;
102783 --
102784 
102785 ---------------------------------------
102786 --
102787 -- PRIVATE FUNCTION
102788 --         AcctLineType_218
102789 --
102790 ---------------------------------------
102791 PROCEDURE AcctLineType_218 (
102792   p_application_id        IN NUMBER
102793  ,p_event_id              IN NUMBER
102794  ,p_calculate_acctd_flag  IN VARCHAR2
102795  ,p_calculate_g_l_flag    IN VARCHAR2
102796  ,p_actual_flag           IN OUT VARCHAR2
102797  ,p_balance_type_code     OUT VARCHAR2
102798  ,p_gain_or_loss_ref      OUT VARCHAR2
102799  
102800 --Transaction Account
102801  , p_source_1            IN NUMBER
102802 --Journal Line Type
102803  , p_source_2            IN VARCHAR2
102804 --Entered Amount
102805  , p_source_3            IN NUMBER
102806 --First Distribution Identifier
102807  , p_source_5            IN NUMBER
102808 --Distribution Type
102809  , p_source_6            IN VARCHAR2
102810 --Currency Code
102811  , p_source_7            IN VARCHAR2
102812 --Currency Conversion Date
102813  , p_source_8            IN DATE
102814 --Currency Conversion Rate
102815  , p_source_9            IN NUMBER
102816 --Currency Conversion Type
102817  , p_source_10            IN VARCHAR2
102818 --Accounted Amount
102819  , p_source_11            IN NUMBER
102820 )
102821 IS
102822 
102823 l_component_type              VARCHAR2(80);
102824 l_component_code              VARCHAR2(30);
102825 l_component_type_code         VARCHAR2(1);
102826 l_component_appl_id           INTEGER;
102827 l_amb_context_code            VARCHAR2(30);
102828 l_entity_code                 VARCHAR2(30);
102829 l_event_class_code            VARCHAR2(30);
102830 l_ae_header_id                NUMBER;
102831 l_event_type_code             VARCHAR2(30);
102832 l_line_definition_code        VARCHAR2(30);
102833 l_line_definition_owner_code  VARCHAR2(1);
102834 --
102835 -- adr variables
102836 l_segment                     VARCHAR2(30);
102837 l_ccid                        NUMBER;
102838 l_adr_transaction_coa_id      NUMBER;
102839 l_adr_accounting_coa_id       NUMBER;
102840 l_adr_flexfield_segment_code  VARCHAR2(30);
102841 l_adr_flex_value_set_id       NUMBER;
102842 l_adr_value_type_code         VARCHAR2(30);
102843 l_adr_value_combination_id    NUMBER;
102844 l_adr_value_segment_code      VARCHAR2(30);
102845 
102846 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
102847 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
102848 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
102849 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
102850 
102851 -- 4262811 Variables ------------------------------------------------------------------------------------------
102852 l_entered_amt_idx             NUMBER;
102856 l_tmp_amt                     NUMBER;
102853 l_accted_amt_idx              NUMBER;
102854 l_acc_rev_flag                VARCHAR2(1);
102855 l_accrual_line_num            NUMBER;
102857 l_acc_rev_natural_side_code   VARCHAR2(1);
102858 
102859 l_num_entries                 NUMBER;
102860 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
102861 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
102862 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
102863 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
102864 l_recog_line_1                NUMBER;
102865 l_recog_line_2                NUMBER;
102866 
102867 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
102868 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
102869 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
102870 
102871 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
102872 
102873 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
102874 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
102875 
102876 ---------------------------------------------------------------------------------------------------------------
102877 
102878 
102879 --
102880 -- bulk performance
102881 --
102882 l_balance_type_code           VARCHAR2(1);
102883 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
102884 l_log_module                  VARCHAR2(240);
102885 
102886 --
102887 -- Upgrade strategy
102888 --
102889 l_actual_upg_option           VARCHAR2(1);
102890 l_enc_upg_option           VARCHAR2(1);
102891 
102892 --
102893 BEGIN
102894 --
102895 IF g_log_enabled THEN
102896       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_218';
102897 END IF;
102898 --
102899 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102900 
102901       trace
102902          (p_msg      => 'BEGIN of AcctLineType_218'
102903          ,p_level    => C_LEVEL_PROCEDURE
102904          ,p_module   => l_log_module);
102905 
102906 END IF;
102907 --
102908 l_component_type             := 'AMB_JLT';
102909 l_component_code             := 'PPV';
102910 l_component_type_code        := 'S';
102911 l_component_appl_id          :=  555;
102912 l_amb_context_code           := 'DEFAULT';
102913 l_entity_code                := 'INVENTORY';
102914 l_event_class_code           := 'DIR_INTERORG_RCPT';
102915 l_event_type_code            := 'DIR_INTERORG_RCPT_TP';
102916 l_line_definition_owner_code := 'S';
102917 l_line_definition_code       := 'DIRECT_XFER_RECV_TP';
102918 --
102919 l_balance_type_code          := 'A';
102920 l_segment                     := NULL;
102921 l_ccid                        := NULL;
102922 l_adr_transaction_coa_id      := NULL;
102923 l_adr_accounting_coa_id       := NULL;
102924 l_adr_flexfield_segment_code  := NULL;
102925 l_adr_flex_value_set_id       := NULL;
102926 l_adr_value_type_code         := NULL;
102927 l_adr_value_combination_id    := NULL;
102928 l_adr_value_segment_code      := NULL;
102929 
102930 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
102931 l_bflow_class_code           := '';    -- 4219869 Business Flow
102932 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
102933 l_budgetary_control_flag     := 'N';
102934 
102935 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
102936 l_bflow_applied_to_amt       := NULL; -- 5132302
102937 l_entered_amt_idx            := NULL;          -- 4262811
102938 l_accted_amt_idx             := NULL;          -- 4262811
102939 l_acc_rev_flag               := NULL;          -- 4262811
102940 l_accrual_line_num           := NULL;          -- 4262811
102941 l_tmp_amt                    := NULL;          -- 4262811
102942 --
102943  
102944 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
102945     l_balance_type_code <> 'B' THEN
102946 IF NVL(p_source_2,'
102947 ') =  'PPV'
102948  THEN 
102949 
102950    --
102951    XLA_AE_LINES_PKG.SetNewLine;
102952 
102953    p_balance_type_code          := l_balance_type_code;
102954    -- set the flag so later we will know whether the gain loss line needs to be created
102955    
102956    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
102957      p_actual_flag :='A';
102958    END IF;
102959 
102960    --
102961    -- bulk performance
102962    --
102963    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
102964                                       p_header_num   => 0); -- 4262811
102965    --
102966    -- set accounting line options
102967    --
102968    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
102969            p_natural_side_code          => 'D'
102970          , p_gain_or_loss_flag          => 'N'
102971          , p_gl_transfer_mode_code      => 'D'
102972          , p_acct_entry_type_code       => 'A'
102973          , p_switch_side_flag           => 'Y'
102974          , p_merge_duplicate_code       => 'W'
102975          );
102976    --
102977    l_acc_rev_natural_side_code := 'C';  -- 4262811
102978    -- 
102979    --
102980    -- set accounting line type info
102981    --
102982    xla_ae_lines_pkg.SetAcctLineType
102983       (p_component_type             => l_component_type
102984       ,p_event_type_code            => l_event_type_code
102985       ,p_line_definition_owner_code => l_line_definition_owner_code
102989       ,p_accounting_line_appl_id    => l_component_appl_id
102986       ,p_line_definition_code       => l_line_definition_code
102987       ,p_accounting_line_code       => l_component_code
102988       ,p_accounting_line_type_code  => l_component_type_code
102990       ,p_amb_context_code           => l_amb_context_code
102991       ,p_entity_code                => l_entity_code
102992       ,p_event_class_code           => l_event_class_code);
102993    --
102994    -- set accounting class
102995    --
102996    xla_ae_lines_pkg.SetAcctClass(
102997            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
102998          , p_ae_header_id           => l_ae_header_id
102999          );
103000 
103001    --
103002    -- set rounding class
103003    --
103004    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
103005                       'PURCHASE_PRICE_VARIANCE';
103006 
103007    --
103008    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
103009    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
103010    --
103011    -- bulk performance
103012    --
103013    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
103014 
103015    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
103016       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
103017 
103018    -- 4955764
103019    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103020       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
103021 
103022    -- 4458381 Public Sector Enh
103023    
103024    --
103025    -- set accounting attributes for the line type
103026    --
103027    l_entered_amt_idx := 3;
103028    l_accted_amt_idx  := 8;
103029    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
103030    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
103031    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
103032    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
103033    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
103034    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
103035    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
103036    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
103037    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
103038    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
103039    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
103040    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
103041    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
103042    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
103043    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
103044    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
103045    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
103046 
103047    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
103048    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
103049 
103050    ---------------------------------------------------------------------------------------------------------------
103051    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
103052    ---------------------------------------------------------------------------------------------------------------
103053    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
103054 
103055    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103056    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103057 
103058    IF xla_accounting_cache_pkg.GetValueChar
103059          (p_source_code         => 'LEDGER_CATEGORY_CODE'
103060          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
103061    AND l_bflow_method_code = 'PRIOR_ENTRY'
103062 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
103063    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
103064          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
103065        )
103066    THEN
103067          xla_ae_lines_pkg.BflowUpgEntry
103068            (p_business_method_code    => l_bflow_method_code
103069            ,p_business_class_code     => l_bflow_class_code
103070            ,p_balance_type            => l_balance_type_code);
103071    ELSE
103072       NULL;
103073 -- No business flow processing for business flow method of NONE.
103074    END IF;
103075 
103076    --
103077    -- call analytical criteria
103078    --
103079    
103080    --
103081    -- call description
103082    --
103083    -- No description or it is inherited.
103084    --
103085    -- call ADRs
103086    -- Bug 4922099
103087    --
103088    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103089         (NVL(l_actual_upg_option, 'N') = 'O') OR
103090         (NVL(l_enc_upg_option, 'N') = 'O')
103091       )
103092    THEN
103093    NULL;
103094    --
103095    --
103096    
103097   l_ccid := AcctDerRule_31(
103098            p_application_id           => p_application_id
103099          , p_ae_header_id             => l_ae_header_id 
103100 , p_source_1 => p_source_1
103101 , p_source_2 => p_source_2
103102          , x_transaction_coa_id       => l_adr_transaction_coa_id
103106    );
103103          , x_accounting_coa_id        => l_adr_accounting_coa_id
103104          , x_value_type_code          => l_adr_value_type_code
103105          , p_side                     => 'NA'
103107 
103108    xla_ae_lines_pkg.set_ccid(
103109     p_code_combination_id          => l_ccid
103110   , p_value_type_code              => l_adr_value_type_code
103111   , p_transaction_coa_id           => l_adr_transaction_coa_id
103112   , p_accounting_coa_id            => l_adr_accounting_coa_id
103113   , p_adr_code                     => 'PPV'
103114   , p_adr_type_code                => 'S'
103115   , p_component_type               => l_component_type
103116   , p_component_code               => l_component_code
103117   , p_component_type_code          => l_component_type_code
103118   , p_component_appl_id            => l_component_appl_id
103119   , p_amb_context_code             => l_amb_context_code
103120   , p_side                         => 'NA'
103121   );
103122 
103123 
103124    --
103125    --
103126    END IF;
103127    --
103128    -- Bug 4922099
103129    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
103130           (NVL(l_enc_upg_option, 'N') = 'O')
103131         ) AND
103132         (l_bflow_method_code = 'PRIOR_ENTRY')
103133       )
103134    THEN
103135       IF
103136       --
103137       1 = 2
103138       --
103139       THEN
103140       xla_accounting_err_pkg.build_message
103141                                     (p_appli_s_name            => 'XLA'
103142                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103143                                     ,p_token_1                 => 'LINE_NUMBER'
103144                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
103145                                     ,p_token_2                 => 'LINE_TYPE_NAME'
103146                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
103147                                                                              l_component_type
103148                                                                             ,l_component_code
103149                                                                             ,l_component_type_code
103150                                                                             ,l_component_appl_id
103151                                                                             ,l_amb_context_code
103152                                                                             ,l_entity_code
103153                                                                             ,l_event_class_code
103154                                                                            )
103155                                     ,p_token_3                 => 'OWNER'
103156                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
103157                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
103158                                                                           ,p_lookup_code    => l_component_type_code
103159                                                                          )
103160                                     ,p_token_4                 => 'PRODUCT_NAME'
103161                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
103162                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
103163                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
103164                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
103165                                     ,p_ae_header_id            =>  NULL
103166                                        );
103167 
103168         IF (C_LEVEL_ERROR>= g_log_level) THEN
103169                  trace
103170                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103171                       ,p_level    => C_LEVEL_ERROR
103172                       ,p_module   => l_log_module);
103173         END IF;
103174       END IF;
103175    END IF;
103176    --
103177    --
103178    ------------------------------------------------------------------------------------------------
103179    -- 4219869 Business Flow
103180    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
103181    -- Prior Entry.  Currently, the following code is always generated.
103182    ------------------------------------------------------------------------------------------------
103183    XLA_AE_LINES_PKG.ValidateCurrentLine;
103184 
103185    ------------------------------------------------------------------------------------
103186    -- 4219869 Business Flow
103187    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
103188    ------------------------------------------------------------------------------------
103189    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103190 
103191    ----------------------------------------------------------------------------------
103192    -- 4219869 Business Flow
103193    -- Update journal entry status -- Need to generate this within IF <condition>
103194    ----------------------------------------------------------------------------------
103195    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103196          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
103197          ,p_balance_type_code => l_balance_type_code
103198          );
103199 
103203    BEGIN
103200    -------------------------------------------------------------------------------------------
103201    -- 4262811 - Generate the Accrual Reversal lines
103202    -------------------------------------------------------------------------------------------
103204       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
103205                               (g_array_event(p_event_id).array_value_num('header_index'));
103206       IF l_acc_rev_flag IS NULL THEN
103207          l_acc_rev_flag := 'N';
103208       END IF;
103209    EXCEPTION
103210       WHEN OTHERS THEN
103211          l_acc_rev_flag := 'N';
103212    END;
103213    --
103214    IF (l_acc_rev_flag = 'Y') THEN
103215 
103216        -- 4645092  ------------------------------------------------------------------------------
103217        -- To allow MPA report to determine if it should generate report process
103218        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
103219        ------------------------------------------------------------------------------------------
103220 
103221        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
103222        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
103223    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
103224    -- call ADRs
103225    -- Bug 4922099
103226    --
103227    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103228         (NVL(l_actual_upg_option, 'N') = 'O') OR
103229         (NVL(l_enc_upg_option, 'N') = 'O')
103230       )
103231    THEN
103232    NULL;
103233    --
103234    --
103235    
103236   l_ccid := AcctDerRule_31(
103237            p_application_id           => p_application_id
103238          , p_ae_header_id             => l_ae_header_id 
103239 , p_source_1 => p_source_1
103240 , p_source_2 => p_source_2
103241          , x_transaction_coa_id       => l_adr_transaction_coa_id
103242          , x_accounting_coa_id        => l_adr_accounting_coa_id
103243          , x_value_type_code          => l_adr_value_type_code
103244          , p_side                     => 'NA'
103245    );
103246 
103247    xla_ae_lines_pkg.set_ccid(
103248     p_code_combination_id          => l_ccid
103249   , p_value_type_code              => l_adr_value_type_code
103250   , p_transaction_coa_id           => l_adr_transaction_coa_id
103251   , p_accounting_coa_id            => l_adr_accounting_coa_id
103252   , p_adr_code                     => 'PPV'
103253   , p_adr_type_code                => 'S'
103254   , p_component_type               => l_component_type
103255   , p_component_code               => l_component_code
103256   , p_component_type_code          => l_component_type_code
103257   , p_component_appl_id            => l_component_appl_id
103258   , p_amb_context_code             => l_amb_context_code
103259   , p_side                         => 'NA'
103260   );
103261 
103262 
103263    --
103264    --
103265    END IF;
103266 
103267        --
103268        -- Update the line information that should be overwritten
103269        --
103270        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
103271                                          p_header_num   => 1);
103272        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
103273 
103274        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
103275 
103276        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
103277           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
103278        END IF;
103279 
103280       --
103281       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
103282       --
103283       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
103284           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
103285       ELSE
103286           ---------------------------------------------------------------------------------------------------
103287           -- 4262811a Switch Sign
103288           ---------------------------------------------------------------------------------------------------
103289           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
103290           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103291                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103292           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103293                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103294           -- 5132302
103295           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
103296                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103297 
103298       END IF;
103299 
103300       -- 4955764
103301       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103302       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
103303 
103304 
103305       XLA_AE_LINES_PKG.ValidateCurrentLine;
103306       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103307 
103308       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103312    END IF;
103309                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
103310                ,p_balance_type_code => l_balance_type_code);
103311 
103313 
103314    -----------------------------------------------------------------------------------------
103315    -- 4262811 Multiperiod Accounting
103316    -----------------------------------------------------------------------------------------
103317      -- No MPA option is assigned.
103318 
103319 
103320 END IF;
103321 END IF;
103322 --
103323 
103324 --
103325 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103326    trace
103327       (p_msg      => 'END of AcctLineType_218'
103328       ,p_level    => C_LEVEL_PROCEDURE
103329       ,p_module   => l_log_module);
103330 END IF;
103331 --
103332 EXCEPTION
103333   WHEN xla_exceptions_pkg.application_exception THEN
103334       RAISE;
103335   WHEN OTHERS THEN
103336        xla_exceptions_pkg.raise_message
103337            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_218');
103338 END AcctLineType_218;
103339 --
103340 
103341 ---------------------------------------
103342 --
103343 -- PRIVATE FUNCTION
103344 --         AcctLineType_219
103345 --
103346 ---------------------------------------
103347 PROCEDURE AcctLineType_219 (
103348   p_application_id        IN NUMBER
103349  ,p_event_id              IN NUMBER
103350  ,p_calculate_acctd_flag  IN VARCHAR2
103351  ,p_calculate_g_l_flag    IN VARCHAR2
103352  ,p_actual_flag           IN OUT VARCHAR2
103353  ,p_balance_type_code     OUT VARCHAR2
103354  ,p_gain_or_loss_ref      OUT VARCHAR2
103355  
103356 --Transaction Account
103357  , p_source_1            IN NUMBER
103358 --Journal Line Type
103359  , p_source_2            IN VARCHAR2
103360 --Entered Amount
103361  , p_source_3            IN NUMBER
103362 --First Distribution Identifier
103363  , p_source_5            IN NUMBER
103364 --Distribution Type
103365  , p_source_6            IN VARCHAR2
103366 --Currency Code
103367  , p_source_7            IN VARCHAR2
103368 --Currency Conversion Date
103369  , p_source_8            IN DATE
103370 --Currency Conversion Rate
103371  , p_source_9            IN NUMBER
103372 --Currency Conversion Type
103373  , p_source_10            IN VARCHAR2
103374 --Accounted Amount
103375  , p_source_11            IN NUMBER
103376 )
103377 IS
103378 
103379 l_component_type              VARCHAR2(80);
103380 l_component_code              VARCHAR2(30);
103381 l_component_type_code         VARCHAR2(1);
103382 l_component_appl_id           INTEGER;
103383 l_amb_context_code            VARCHAR2(30);
103384 l_entity_code                 VARCHAR2(30);
103385 l_event_class_code            VARCHAR2(30);
103386 l_ae_header_id                NUMBER;
103387 l_event_type_code             VARCHAR2(30);
103388 l_line_definition_code        VARCHAR2(30);
103389 l_line_definition_owner_code  VARCHAR2(1);
103390 --
103391 -- adr variables
103392 l_segment                     VARCHAR2(30);
103393 l_ccid                        NUMBER;
103394 l_adr_transaction_coa_id      NUMBER;
103395 l_adr_accounting_coa_id       NUMBER;
103396 l_adr_flexfield_segment_code  VARCHAR2(30);
103397 l_adr_flex_value_set_id       NUMBER;
103398 l_adr_value_type_code         VARCHAR2(30);
103399 l_adr_value_combination_id    NUMBER;
103400 l_adr_value_segment_code      VARCHAR2(30);
103401 
103402 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
103403 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
103404 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
103405 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
103406 
103407 -- 4262811 Variables ------------------------------------------------------------------------------------------
103408 l_entered_amt_idx             NUMBER;
103409 l_accted_amt_idx              NUMBER;
103410 l_acc_rev_flag                VARCHAR2(1);
103411 l_accrual_line_num            NUMBER;
103412 l_tmp_amt                     NUMBER;
103413 l_acc_rev_natural_side_code   VARCHAR2(1);
103414 
103415 l_num_entries                 NUMBER;
103416 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
103417 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
103418 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
103419 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
103420 l_recog_line_1                NUMBER;
103421 l_recog_line_2                NUMBER;
103422 
103423 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
103424 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
103425 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
103426 
103427 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
103428 
103429 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
103430 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
103431 
103432 ---------------------------------------------------------------------------------------------------------------
103433 
103434 
103435 --
103436 -- bulk performance
103437 --
103438 l_balance_type_code           VARCHAR2(1);
103439 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
103440 l_log_module                  VARCHAR2(240);
103441 
103442 --
103446 l_enc_upg_option           VARCHAR2(1);
103443 -- Upgrade strategy
103444 --
103445 l_actual_upg_option           VARCHAR2(1);
103447 
103448 --
103449 BEGIN
103450 --
103451 IF g_log_enabled THEN
103452       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_219';
103453 END IF;
103454 --
103455 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103456 
103457       trace
103458          (p_msg      => 'BEGIN of AcctLineType_219'
103459          ,p_level    => C_LEVEL_PROCEDURE
103460          ,p_module   => l_log_module);
103461 
103462 END IF;
103463 --
103464 l_component_type             := 'AMB_JLT';
103465 l_component_code             := 'PPV';
103466 l_component_type_code        := 'S';
103467 l_component_appl_id          :=  555;
103468 l_amb_context_code           := 'DEFAULT';
103469 l_entity_code                := 'PURCHASING';
103470 l_event_class_code           := 'DELIVER';
103471 l_event_type_code            := 'RET_TO_RECEIVING';
103472 l_line_definition_owner_code := 'S';
103473 l_line_definition_code       := 'PO_RETURN';
103474 --
103475 l_balance_type_code          := 'A';
103476 l_segment                     := NULL;
103477 l_ccid                        := NULL;
103478 l_adr_transaction_coa_id      := NULL;
103479 l_adr_accounting_coa_id       := NULL;
103480 l_adr_flexfield_segment_code  := NULL;
103481 l_adr_flex_value_set_id       := NULL;
103482 l_adr_value_type_code         := NULL;
103483 l_adr_value_combination_id    := NULL;
103484 l_adr_value_segment_code      := NULL;
103485 
103486 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
103487 l_bflow_class_code           := '';    -- 4219869 Business Flow
103488 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
103489 l_budgetary_control_flag     := 'N';
103490 
103491 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
103492 l_bflow_applied_to_amt       := NULL; -- 5132302
103493 l_entered_amt_idx            := NULL;          -- 4262811
103494 l_accted_amt_idx             := NULL;          -- 4262811
103495 l_acc_rev_flag               := NULL;          -- 4262811
103496 l_accrual_line_num           := NULL;          -- 4262811
103497 l_tmp_amt                    := NULL;          -- 4262811
103498 --
103499  
103500 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
103501     l_balance_type_code <> 'B' THEN
103502 IF NVL(p_source_2,'
103503 ') =  'PPV'
103504  THEN 
103505 
103506    --
103507    XLA_AE_LINES_PKG.SetNewLine;
103508 
103509    p_balance_type_code          := l_balance_type_code;
103510    -- set the flag so later we will know whether the gain loss line needs to be created
103511    
103512    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
103513      p_actual_flag :='A';
103514    END IF;
103515 
103516    --
103517    -- bulk performance
103518    --
103519    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
103520                                       p_header_num   => 0); -- 4262811
103521    --
103522    -- set accounting line options
103523    --
103524    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
103525            p_natural_side_code          => 'D'
103526          , p_gain_or_loss_flag          => 'N'
103527          , p_gl_transfer_mode_code      => 'D'
103528          , p_acct_entry_type_code       => 'A'
103529          , p_switch_side_flag           => 'Y'
103530          , p_merge_duplicate_code       => 'W'
103531          );
103532    --
103533    l_acc_rev_natural_side_code := 'C';  -- 4262811
103534    -- 
103535    --
103536    -- set accounting line type info
103537    --
103538    xla_ae_lines_pkg.SetAcctLineType
103539       (p_component_type             => l_component_type
103540       ,p_event_type_code            => l_event_type_code
103541       ,p_line_definition_owner_code => l_line_definition_owner_code
103542       ,p_line_definition_code       => l_line_definition_code
103543       ,p_accounting_line_code       => l_component_code
103544       ,p_accounting_line_type_code  => l_component_type_code
103545       ,p_accounting_line_appl_id    => l_component_appl_id
103546       ,p_amb_context_code           => l_amb_context_code
103547       ,p_entity_code                => l_entity_code
103548       ,p_event_class_code           => l_event_class_code);
103549    --
103550    -- set accounting class
103551    --
103552    xla_ae_lines_pkg.SetAcctClass(
103553            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
103554          , p_ae_header_id           => l_ae_header_id
103555          );
103556 
103557    --
103558    -- set rounding class
103559    --
103560    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
103561                       'PURCHASE_PRICE_VARIANCE';
103562 
103563    --
103564    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
103565    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
103566    --
103567    -- bulk performance
103568    --
103569    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
103570 
103571    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
103572       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
103573 
103574    -- 4955764
103575    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103576       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
103577 
103581    -- set accounting attributes for the line type
103578    -- 4458381 Public Sector Enh
103579    
103580    --
103582    --
103583    l_entered_amt_idx := 3;
103584    l_accted_amt_idx  := 8;
103585    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
103586    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
103587    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
103588    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
103589    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
103590    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
103591    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
103592    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
103593    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
103594    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
103595    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
103596    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
103597    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
103598    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
103599    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
103600    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
103601    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
103602 
103603    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
103604    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
103605 
103606    ---------------------------------------------------------------------------------------------------------------
103607    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
103608    ---------------------------------------------------------------------------------------------------------------
103609    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
103610 
103611    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103612    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103613 
103614    IF xla_accounting_cache_pkg.GetValueChar
103615          (p_source_code         => 'LEDGER_CATEGORY_CODE'
103616          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
103617    AND l_bflow_method_code = 'PRIOR_ENTRY'
103618 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
103619    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
103620          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
103621        )
103622    THEN
103623          xla_ae_lines_pkg.BflowUpgEntry
103624            (p_business_method_code    => l_bflow_method_code
103625            ,p_business_class_code     => l_bflow_class_code
103626            ,p_balance_type            => l_balance_type_code);
103627    ELSE
103628       NULL;
103629 -- No business flow processing for business flow method of NONE.
103630    END IF;
103631 
103632    --
103633    -- call analytical criteria
103634    --
103635    
103636    --
103637    -- call description
103638    --
103639    -- No description or it is inherited.
103640    --
103641    -- call ADRs
103642    -- Bug 4922099
103643    --
103644    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103645         (NVL(l_actual_upg_option, 'N') = 'O') OR
103646         (NVL(l_enc_upg_option, 'N') = 'O')
103647       )
103648    THEN
103649    NULL;
103650    --
103651    --
103652    
103653   l_ccid := AcctDerRule_31(
103654            p_application_id           => p_application_id
103655          , p_ae_header_id             => l_ae_header_id 
103656 , p_source_1 => p_source_1
103657 , p_source_2 => p_source_2
103658          , x_transaction_coa_id       => l_adr_transaction_coa_id
103659          , x_accounting_coa_id        => l_adr_accounting_coa_id
103660          , x_value_type_code          => l_adr_value_type_code
103661          , p_side                     => 'NA'
103662    );
103663 
103664    xla_ae_lines_pkg.set_ccid(
103665     p_code_combination_id          => l_ccid
103666   , p_value_type_code              => l_adr_value_type_code
103667   , p_transaction_coa_id           => l_adr_transaction_coa_id
103668   , p_accounting_coa_id            => l_adr_accounting_coa_id
103669   , p_adr_code                     => 'PPV'
103670   , p_adr_type_code                => 'S'
103671   , p_component_type               => l_component_type
103672   , p_component_code               => l_component_code
103673   , p_component_type_code          => l_component_type_code
103674   , p_component_appl_id            => l_component_appl_id
103675   , p_amb_context_code             => l_amb_context_code
103676   , p_side                         => 'NA'
103677   );
103678 
103679 
103680    --
103681    --
103682    END IF;
103683    --
103684    -- Bug 4922099
103685    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
103686           (NVL(l_enc_upg_option, 'N') = 'O')
103687         ) AND
103688         (l_bflow_method_code = 'PRIOR_ENTRY')
103689       )
103690    THEN
103691       IF
103692       --
103693       1 = 2
103694       --
103695       THEN
103696       xla_accounting_err_pkg.build_message
103697                                     (p_appli_s_name            => 'XLA'
103698                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103699                                     ,p_token_1                 => 'LINE_NUMBER'
103703                                                                              l_component_type
103700                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
103701                                     ,p_token_2                 => 'LINE_TYPE_NAME'
103702                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
103704                                                                             ,l_component_code
103705                                                                             ,l_component_type_code
103706                                                                             ,l_component_appl_id
103707                                                                             ,l_amb_context_code
103708                                                                             ,l_entity_code
103709                                                                             ,l_event_class_code
103710                                                                            )
103711                                     ,p_token_3                 => 'OWNER'
103712                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
103713                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
103714                                                                           ,p_lookup_code    => l_component_type_code
103715                                                                          )
103716                                     ,p_token_4                 => 'PRODUCT_NAME'
103717                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
103718                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
103719                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
103720                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
103721                                     ,p_ae_header_id            =>  NULL
103722                                        );
103723 
103724         IF (C_LEVEL_ERROR>= g_log_level) THEN
103725                  trace
103726                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103727                       ,p_level    => C_LEVEL_ERROR
103728                       ,p_module   => l_log_module);
103729         END IF;
103730       END IF;
103731    END IF;
103732    --
103733    --
103734    ------------------------------------------------------------------------------------------------
103735    -- 4219869 Business Flow
103736    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
103737    -- Prior Entry.  Currently, the following code is always generated.
103738    ------------------------------------------------------------------------------------------------
103739    XLA_AE_LINES_PKG.ValidateCurrentLine;
103740 
103741    ------------------------------------------------------------------------------------
103742    -- 4219869 Business Flow
103743    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
103744    ------------------------------------------------------------------------------------
103745    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103746 
103747    ----------------------------------------------------------------------------------
103748    -- 4219869 Business Flow
103749    -- Update journal entry status -- Need to generate this within IF <condition>
103750    ----------------------------------------------------------------------------------
103751    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103752          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
103753          ,p_balance_type_code => l_balance_type_code
103754          );
103755 
103756    -------------------------------------------------------------------------------------------
103757    -- 4262811 - Generate the Accrual Reversal lines
103758    -------------------------------------------------------------------------------------------
103759    BEGIN
103760       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
103761                               (g_array_event(p_event_id).array_value_num('header_index'));
103762       IF l_acc_rev_flag IS NULL THEN
103763          l_acc_rev_flag := 'N';
103764       END IF;
103765    EXCEPTION
103766       WHEN OTHERS THEN
103767          l_acc_rev_flag := 'N';
103768    END;
103769    --
103770    IF (l_acc_rev_flag = 'Y') THEN
103771 
103772        -- 4645092  ------------------------------------------------------------------------------
103773        -- To allow MPA report to determine if it should generate report process
103774        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
103775        ------------------------------------------------------------------------------------------
103776 
103777        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
103778        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
103779    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
103780    -- call ADRs
103781    -- Bug 4922099
103782    --
103783    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103784         (NVL(l_actual_upg_option, 'N') = 'O') OR
103785         (NVL(l_enc_upg_option, 'N') = 'O')
103786       )
103787    THEN
103788    NULL;
103789    --
103790    --
103791    
103792   l_ccid := AcctDerRule_31(
103793            p_application_id           => p_application_id
103797          , x_transaction_coa_id       => l_adr_transaction_coa_id
103794          , p_ae_header_id             => l_ae_header_id 
103795 , p_source_1 => p_source_1
103796 , p_source_2 => p_source_2
103798          , x_accounting_coa_id        => l_adr_accounting_coa_id
103799          , x_value_type_code          => l_adr_value_type_code
103800          , p_side                     => 'NA'
103801    );
103802 
103803    xla_ae_lines_pkg.set_ccid(
103804     p_code_combination_id          => l_ccid
103805   , p_value_type_code              => l_adr_value_type_code
103806   , p_transaction_coa_id           => l_adr_transaction_coa_id
103807   , p_accounting_coa_id            => l_adr_accounting_coa_id
103808   , p_adr_code                     => 'PPV'
103809   , p_adr_type_code                => 'S'
103810   , p_component_type               => l_component_type
103811   , p_component_code               => l_component_code
103812   , p_component_type_code          => l_component_type_code
103813   , p_component_appl_id            => l_component_appl_id
103814   , p_amb_context_code             => l_amb_context_code
103815   , p_side                         => 'NA'
103816   );
103817 
103818 
103819    --
103820    --
103821    END IF;
103822 
103823        --
103824        -- Update the line information that should be overwritten
103825        --
103826        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
103827                                          p_header_num   => 1);
103828        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
103829 
103830        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
103831 
103832        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
103833           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
103834        END IF;
103835 
103836       --
103837       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
103838       --
103839       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
103840           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
103841       ELSE
103842           ---------------------------------------------------------------------------------------------------
103843           -- 4262811a Switch Sign
103844           ---------------------------------------------------------------------------------------------------
103845           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
103846           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103847                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103848           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103849                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103850           -- 5132302
103851           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
103852                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103853 
103854       END IF;
103855 
103856       -- 4955764
103857       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103858       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
103859 
103860 
103861       XLA_AE_LINES_PKG.ValidateCurrentLine;
103862       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103863 
103864       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103865                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
103866                ,p_balance_type_code => l_balance_type_code);
103867 
103868    END IF;
103869 
103870    -----------------------------------------------------------------------------------------
103871    -- 4262811 Multiperiod Accounting
103872    -----------------------------------------------------------------------------------------
103873      -- No MPA option is assigned.
103874 
103875 
103876 END IF;
103877 END IF;
103878 --
103879 
103880 --
103881 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103882    trace
103883       (p_msg      => 'END of AcctLineType_219'
103884       ,p_level    => C_LEVEL_PROCEDURE
103885       ,p_module   => l_log_module);
103886 END IF;
103887 --
103888 EXCEPTION
103889   WHEN xla_exceptions_pkg.application_exception THEN
103890       RAISE;
103891   WHEN OTHERS THEN
103892        xla_exceptions_pkg.raise_message
103893            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_219');
103894 END AcctLineType_219;
103895 --
103896 
103897 ---------------------------------------
103898 --
103899 -- PRIVATE FUNCTION
103900 --         AcctLineType_220
103901 --
103902 ---------------------------------------
103903 PROCEDURE AcctLineType_220 (
103904   p_application_id        IN NUMBER
103905  ,p_event_id              IN NUMBER
103906  ,p_calculate_acctd_flag  IN VARCHAR2
103907  ,p_calculate_g_l_flag    IN VARCHAR2
103908  ,p_actual_flag           IN OUT VARCHAR2
103909  ,p_balance_type_code     OUT VARCHAR2
103910  ,p_gain_or_loss_ref      OUT VARCHAR2
103911  
103912 --Transaction Account
103916 --Entered Amount
103913  , p_source_1            IN NUMBER
103914 --Journal Line Type
103915  , p_source_2            IN VARCHAR2
103917  , p_source_3            IN NUMBER
103918 --First Distribution Identifier
103919  , p_source_5            IN NUMBER
103920 --Distribution Type
103921  , p_source_6            IN VARCHAR2
103922 --Currency Code
103923  , p_source_7            IN VARCHAR2
103924 --Currency Conversion Date
103925  , p_source_8            IN DATE
103926 --Currency Conversion Rate
103927  , p_source_9            IN NUMBER
103928 --Currency Conversion Type
103929  , p_source_10            IN VARCHAR2
103930 --Accounted Amount
103931  , p_source_11            IN NUMBER
103932 )
103933 IS
103934 
103935 l_component_type              VARCHAR2(80);
103936 l_component_code              VARCHAR2(30);
103937 l_component_type_code         VARCHAR2(1);
103938 l_component_appl_id           INTEGER;
103939 l_amb_context_code            VARCHAR2(30);
103940 l_entity_code                 VARCHAR2(30);
103941 l_event_class_code            VARCHAR2(30);
103942 l_ae_header_id                NUMBER;
103943 l_event_type_code             VARCHAR2(30);
103944 l_line_definition_code        VARCHAR2(30);
103945 l_line_definition_owner_code  VARCHAR2(1);
103946 --
103947 -- adr variables
103948 l_segment                     VARCHAR2(30);
103949 l_ccid                        NUMBER;
103950 l_adr_transaction_coa_id      NUMBER;
103951 l_adr_accounting_coa_id       NUMBER;
103952 l_adr_flexfield_segment_code  VARCHAR2(30);
103953 l_adr_flex_value_set_id       NUMBER;
103954 l_adr_value_type_code         VARCHAR2(30);
103955 l_adr_value_combination_id    NUMBER;
103956 l_adr_value_segment_code      VARCHAR2(30);
103957 
103958 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
103959 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
103960 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
103961 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
103962 
103963 -- 4262811 Variables ------------------------------------------------------------------------------------------
103964 l_entered_amt_idx             NUMBER;
103965 l_accted_amt_idx              NUMBER;
103966 l_acc_rev_flag                VARCHAR2(1);
103967 l_accrual_line_num            NUMBER;
103968 l_tmp_amt                     NUMBER;
103969 l_acc_rev_natural_side_code   VARCHAR2(1);
103970 
103971 l_num_entries                 NUMBER;
103972 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
103973 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
103974 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
103975 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
103976 l_recog_line_1                NUMBER;
103977 l_recog_line_2                NUMBER;
103978 
103979 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
103980 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
103981 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
103982 
103983 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
103984 
103985 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
103986 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
103987 
103988 ---------------------------------------------------------------------------------------------------------------
103989 
103990 
103991 --
103992 -- bulk performance
103993 --
103994 l_balance_type_code           VARCHAR2(1);
103995 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
103996 l_log_module                  VARCHAR2(240);
103997 
103998 --
103999 -- Upgrade strategy
104000 --
104001 l_actual_upg_option           VARCHAR2(1);
104002 l_enc_upg_option           VARCHAR2(1);
104003 
104004 --
104005 BEGIN
104006 --
104007 IF g_log_enabled THEN
104008       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_220';
104009 END IF;
104010 --
104011 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104012 
104013       trace
104014          (p_msg      => 'BEGIN of AcctLineType_220'
104015          ,p_level    => C_LEVEL_PROCEDURE
104016          ,p_module   => l_log_module);
104017 
104018 END IF;
104019 --
104020 l_component_type             := 'AMB_JLT';
104021 l_component_code             := 'PPV';
104022 l_component_type_code        := 'S';
104023 l_component_appl_id          :=  555;
104024 l_amb_context_code           := 'DEFAULT';
104025 l_entity_code                := 'INVENTORY';
104026 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
104027 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_TP';
104028 l_line_definition_owner_code := 'S';
104029 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT_TP';
104030 --
104031 l_balance_type_code          := 'A';
104032 l_segment                     := NULL;
104033 l_ccid                        := NULL;
104034 l_adr_transaction_coa_id      := NULL;
104035 l_adr_accounting_coa_id       := NULL;
104036 l_adr_flexfield_segment_code  := NULL;
104037 l_adr_flex_value_set_id       := NULL;
104038 l_adr_value_type_code         := NULL;
104039 l_adr_value_combination_id    := NULL;
104040 l_adr_value_segment_code      := NULL;
104041 
104042 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
104043 l_bflow_class_code           := '';    -- 4219869 Business Flow
104044 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
104048 l_bflow_applied_to_amt       := NULL; -- 5132302
104045 l_budgetary_control_flag     := 'N';
104046 
104047 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
104049 l_entered_amt_idx            := NULL;          -- 4262811
104050 l_accted_amt_idx             := NULL;          -- 4262811
104051 l_acc_rev_flag               := NULL;          -- 4262811
104052 l_accrual_line_num           := NULL;          -- 4262811
104053 l_tmp_amt                    := NULL;          -- 4262811
104054 --
104055  
104056 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
104057     l_balance_type_code <> 'B' THEN
104058 IF NVL(p_source_2,'
104059 ') =  'PPV'
104060  THEN 
104061 
104062    --
104063    XLA_AE_LINES_PKG.SetNewLine;
104064 
104065    p_balance_type_code          := l_balance_type_code;
104066    -- set the flag so later we will know whether the gain loss line needs to be created
104067    
104068    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
104069      p_actual_flag :='A';
104070    END IF;
104071 
104072    --
104073    -- bulk performance
104074    --
104075    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
104076                                       p_header_num   => 0); -- 4262811
104077    --
104078    -- set accounting line options
104079    --
104080    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
104081            p_natural_side_code          => 'D'
104082          , p_gain_or_loss_flag          => 'N'
104083          , p_gl_transfer_mode_code      => 'D'
104084          , p_acct_entry_type_code       => 'A'
104085          , p_switch_side_flag           => 'Y'
104086          , p_merge_duplicate_code       => 'W'
104087          );
104088    --
104089    l_acc_rev_natural_side_code := 'C';  -- 4262811
104090    -- 
104091    --
104092    -- set accounting line type info
104093    --
104094    xla_ae_lines_pkg.SetAcctLineType
104095       (p_component_type             => l_component_type
104096       ,p_event_type_code            => l_event_type_code
104097       ,p_line_definition_owner_code => l_line_definition_owner_code
104098       ,p_line_definition_code       => l_line_definition_code
104099       ,p_accounting_line_code       => l_component_code
104100       ,p_accounting_line_type_code  => l_component_type_code
104101       ,p_accounting_line_appl_id    => l_component_appl_id
104102       ,p_amb_context_code           => l_amb_context_code
104103       ,p_entity_code                => l_entity_code
104104       ,p_event_class_code           => l_event_class_code);
104105    --
104106    -- set accounting class
104107    --
104108    xla_ae_lines_pkg.SetAcctClass(
104109            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
104110          , p_ae_header_id           => l_ae_header_id
104111          );
104112 
104113    --
104114    -- set rounding class
104115    --
104116    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
104117                       'PURCHASE_PRICE_VARIANCE';
104118 
104119    --
104120    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
104121    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
104122    --
104123    -- bulk performance
104124    --
104125    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
104126 
104127    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
104128       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
104129 
104130    -- 4955764
104131    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104132       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
104133 
104134    -- 4458381 Public Sector Enh
104135    
104136    --
104137    -- set accounting attributes for the line type
104138    --
104139    l_entered_amt_idx := 3;
104140    l_accted_amt_idx  := 8;
104141    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
104142    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
104143    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
104144    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
104145    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
104146    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
104147    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
104148    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
104149    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
104150    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
104151    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
104152    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
104153    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
104154    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
104155    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
104156    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
104157    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
104158 
104159    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
104160    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
104161 
104162    ---------------------------------------------------------------------------------------------------------------
104163    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
104167    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104164    ---------------------------------------------------------------------------------------------------------------
104165    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
104166 
104168    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104169 
104170    IF xla_accounting_cache_pkg.GetValueChar
104171          (p_source_code         => 'LEDGER_CATEGORY_CODE'
104172          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
104173    AND l_bflow_method_code = 'PRIOR_ENTRY'
104174 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
104175    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
104176          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
104177        )
104178    THEN
104179          xla_ae_lines_pkg.BflowUpgEntry
104180            (p_business_method_code    => l_bflow_method_code
104181            ,p_business_class_code     => l_bflow_class_code
104182            ,p_balance_type            => l_balance_type_code);
104183    ELSE
104184       NULL;
104185 -- No business flow processing for business flow method of NONE.
104186    END IF;
104187 
104188    --
104189    -- call analytical criteria
104190    --
104191    
104192    --
104193    -- call description
104194    --
104195    -- No description or it is inherited.
104196    --
104197    -- call ADRs
104198    -- Bug 4922099
104199    --
104200    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104201         (NVL(l_actual_upg_option, 'N') = 'O') OR
104202         (NVL(l_enc_upg_option, 'N') = 'O')
104203       )
104204    THEN
104205    NULL;
104206    --
104207    --
104208    
104209   l_ccid := AcctDerRule_31(
104210            p_application_id           => p_application_id
104211          , p_ae_header_id             => l_ae_header_id 
104212 , p_source_1 => p_source_1
104213 , p_source_2 => p_source_2
104214          , x_transaction_coa_id       => l_adr_transaction_coa_id
104215          , x_accounting_coa_id        => l_adr_accounting_coa_id
104216          , x_value_type_code          => l_adr_value_type_code
104217          , p_side                     => 'NA'
104218    );
104219 
104220    xla_ae_lines_pkg.set_ccid(
104221     p_code_combination_id          => l_ccid
104222   , p_value_type_code              => l_adr_value_type_code
104223   , p_transaction_coa_id           => l_adr_transaction_coa_id
104224   , p_accounting_coa_id            => l_adr_accounting_coa_id
104225   , p_adr_code                     => 'PPV'
104226   , p_adr_type_code                => 'S'
104227   , p_component_type               => l_component_type
104228   , p_component_code               => l_component_code
104229   , p_component_type_code          => l_component_type_code
104230   , p_component_appl_id            => l_component_appl_id
104231   , p_amb_context_code             => l_amb_context_code
104232   , p_side                         => 'NA'
104233   );
104234 
104235 
104236    --
104237    --
104238    END IF;
104239    --
104240    -- Bug 4922099
104241    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
104242           (NVL(l_enc_upg_option, 'N') = 'O')
104243         ) AND
104244         (l_bflow_method_code = 'PRIOR_ENTRY')
104245       )
104246    THEN
104247       IF
104248       --
104249       1 = 2
104250       --
104251       THEN
104252       xla_accounting_err_pkg.build_message
104253                                     (p_appli_s_name            => 'XLA'
104254                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104255                                     ,p_token_1                 => 'LINE_NUMBER'
104256                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
104257                                     ,p_token_2                 => 'LINE_TYPE_NAME'
104258                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
104259                                                                              l_component_type
104260                                                                             ,l_component_code
104261                                                                             ,l_component_type_code
104262                                                                             ,l_component_appl_id
104263                                                                             ,l_amb_context_code
104264                                                                             ,l_entity_code
104265                                                                             ,l_event_class_code
104266                                                                            )
104267                                     ,p_token_3                 => 'OWNER'
104268                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
104269                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
104270                                                                           ,p_lookup_code    => l_component_type_code
104271                                                                          )
104272                                     ,p_token_4                 => 'PRODUCT_NAME'
104273                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
104277                                     ,p_ae_header_id            =>  NULL
104274                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
104275                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
104276                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
104278                                        );
104279 
104280         IF (C_LEVEL_ERROR>= g_log_level) THEN
104281                  trace
104282                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104283                       ,p_level    => C_LEVEL_ERROR
104284                       ,p_module   => l_log_module);
104285         END IF;
104286       END IF;
104287    END IF;
104288    --
104289    --
104290    ------------------------------------------------------------------------------------------------
104291    -- 4219869 Business Flow
104292    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
104293    -- Prior Entry.  Currently, the following code is always generated.
104294    ------------------------------------------------------------------------------------------------
104295    XLA_AE_LINES_PKG.ValidateCurrentLine;
104296 
104297    ------------------------------------------------------------------------------------
104298    -- 4219869 Business Flow
104299    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
104300    ------------------------------------------------------------------------------------
104301    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104302 
104303    ----------------------------------------------------------------------------------
104304    -- 4219869 Business Flow
104305    -- Update journal entry status -- Need to generate this within IF <condition>
104306    ----------------------------------------------------------------------------------
104307    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104308          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
104309          ,p_balance_type_code => l_balance_type_code
104310          );
104311 
104312    -------------------------------------------------------------------------------------------
104313    -- 4262811 - Generate the Accrual Reversal lines
104314    -------------------------------------------------------------------------------------------
104315    BEGIN
104316       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
104317                               (g_array_event(p_event_id).array_value_num('header_index'));
104318       IF l_acc_rev_flag IS NULL THEN
104319          l_acc_rev_flag := 'N';
104320       END IF;
104321    EXCEPTION
104322       WHEN OTHERS THEN
104323          l_acc_rev_flag := 'N';
104324    END;
104325    --
104326    IF (l_acc_rev_flag = 'Y') THEN
104327 
104328        -- 4645092  ------------------------------------------------------------------------------
104329        -- To allow MPA report to determine if it should generate report process
104330        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
104331        ------------------------------------------------------------------------------------------
104332 
104333        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
104334        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
104335    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
104336    -- call ADRs
104337    -- Bug 4922099
104338    --
104339    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104340         (NVL(l_actual_upg_option, 'N') = 'O') OR
104341         (NVL(l_enc_upg_option, 'N') = 'O')
104342       )
104343    THEN
104344    NULL;
104345    --
104346    --
104347    
104348   l_ccid := AcctDerRule_31(
104349            p_application_id           => p_application_id
104350          , p_ae_header_id             => l_ae_header_id 
104351 , p_source_1 => p_source_1
104352 , p_source_2 => p_source_2
104353          , x_transaction_coa_id       => l_adr_transaction_coa_id
104354          , x_accounting_coa_id        => l_adr_accounting_coa_id
104355          , x_value_type_code          => l_adr_value_type_code
104356          , p_side                     => 'NA'
104357    );
104358 
104359    xla_ae_lines_pkg.set_ccid(
104360     p_code_combination_id          => l_ccid
104361   , p_value_type_code              => l_adr_value_type_code
104362   , p_transaction_coa_id           => l_adr_transaction_coa_id
104363   , p_accounting_coa_id            => l_adr_accounting_coa_id
104364   , p_adr_code                     => 'PPV'
104365   , p_adr_type_code                => 'S'
104366   , p_component_type               => l_component_type
104367   , p_component_code               => l_component_code
104368   , p_component_type_code          => l_component_type_code
104369   , p_component_appl_id            => l_component_appl_id
104370   , p_amb_context_code             => l_amb_context_code
104371   , p_side                         => 'NA'
104372   );
104373 
104374 
104375    --
104376    --
104377    END IF;
104378 
104379        --
104380        -- Update the line information that should be overwritten
104381        --
104382        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
104383                                          p_header_num   => 1);
104384        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
104385 
104389           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
104386        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
104387 
104388        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
104390        END IF;
104391 
104392       --
104393       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
104394       --
104395       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
104396           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
104397       ELSE
104398           ---------------------------------------------------------------------------------------------------
104399           -- 4262811a Switch Sign
104400           ---------------------------------------------------------------------------------------------------
104401           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
104402           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104403                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104404           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104405                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104406           -- 5132302
104407           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
104408                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104409 
104410       END IF;
104411 
104412       -- 4955764
104413       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104414       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
104415 
104416 
104417       XLA_AE_LINES_PKG.ValidateCurrentLine;
104418       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104419 
104420       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104421                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
104422                ,p_balance_type_code => l_balance_type_code);
104423 
104424    END IF;
104425 
104426    -----------------------------------------------------------------------------------------
104427    -- 4262811 Multiperiod Accounting
104428    -----------------------------------------------------------------------------------------
104429      -- No MPA option is assigned.
104430 
104431 
104432 END IF;
104433 END IF;
104434 --
104435 
104436 --
104437 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104438    trace
104439       (p_msg      => 'END of AcctLineType_220'
104440       ,p_level    => C_LEVEL_PROCEDURE
104441       ,p_module   => l_log_module);
104442 END IF;
104443 --
104444 EXCEPTION
104445   WHEN xla_exceptions_pkg.application_exception THEN
104446       RAISE;
104447   WHEN OTHERS THEN
104448        xla_exceptions_pkg.raise_message
104449            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_220');
104450 END AcctLineType_220;
104451 --
104452 
104453 ---------------------------------------
104454 --
104455 -- PRIVATE FUNCTION
104456 --         AcctLineType_221
104457 --
104458 ---------------------------------------
104459 PROCEDURE AcctLineType_221 (
104460   p_application_id        IN NUMBER
104461  ,p_event_id              IN NUMBER
104462  ,p_calculate_acctd_flag  IN VARCHAR2
104463  ,p_calculate_g_l_flag    IN VARCHAR2
104464  ,p_actual_flag           IN OUT VARCHAR2
104465  ,p_balance_type_code     OUT VARCHAR2
104466  ,p_gain_or_loss_ref      OUT VARCHAR2
104467  
104468 --Transaction Account
104469  , p_source_1            IN NUMBER
104470 --Journal Line Type
104471  , p_source_2            IN VARCHAR2
104472 --Entered Amount
104473  , p_source_3            IN NUMBER
104474 --First Distribution Identifier
104475  , p_source_5            IN NUMBER
104476 --Distribution Type
104477  , p_source_6            IN VARCHAR2
104478 --Currency Code
104479  , p_source_7            IN VARCHAR2
104480 --Currency Conversion Date
104481  , p_source_8            IN DATE
104482 --Currency Conversion Rate
104483  , p_source_9            IN NUMBER
104484 --Currency Conversion Type
104485  , p_source_10            IN VARCHAR2
104486 --Accounted Amount
104487  , p_source_11            IN NUMBER
104488 )
104489 IS
104490 
104491 l_component_type              VARCHAR2(80);
104492 l_component_code              VARCHAR2(30);
104493 l_component_type_code         VARCHAR2(1);
104494 l_component_appl_id           INTEGER;
104495 l_amb_context_code            VARCHAR2(30);
104496 l_entity_code                 VARCHAR2(30);
104497 l_event_class_code            VARCHAR2(30);
104498 l_ae_header_id                NUMBER;
104499 l_event_type_code             VARCHAR2(30);
104500 l_line_definition_code        VARCHAR2(30);
104501 l_line_definition_owner_code  VARCHAR2(1);
104502 --
104503 -- adr variables
104504 l_segment                     VARCHAR2(30);
104505 l_ccid                        NUMBER;
104506 l_adr_transaction_coa_id      NUMBER;
104507 l_adr_accounting_coa_id       NUMBER;
104508 l_adr_flexfield_segment_code  VARCHAR2(30);
104509 l_adr_flex_value_set_id       NUMBER;
104510 l_adr_value_type_code         VARCHAR2(30);
104514 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
104511 l_adr_value_combination_id    NUMBER;
104512 l_adr_value_segment_code      VARCHAR2(30);
104513 
104515 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
104516 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
104517 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
104518 
104519 -- 4262811 Variables ------------------------------------------------------------------------------------------
104520 l_entered_amt_idx             NUMBER;
104521 l_accted_amt_idx              NUMBER;
104522 l_acc_rev_flag                VARCHAR2(1);
104523 l_accrual_line_num            NUMBER;
104524 l_tmp_amt                     NUMBER;
104525 l_acc_rev_natural_side_code   VARCHAR2(1);
104526 
104527 l_num_entries                 NUMBER;
104528 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
104529 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
104530 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
104531 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
104532 l_recog_line_1                NUMBER;
104533 l_recog_line_2                NUMBER;
104534 
104535 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
104536 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
104537 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
104538 
104539 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
104540 
104541 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
104542 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
104543 
104544 ---------------------------------------------------------------------------------------------------------------
104545 
104546 
104547 --
104548 -- bulk performance
104549 --
104550 l_balance_type_code           VARCHAR2(1);
104551 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
104552 l_log_module                  VARCHAR2(240);
104553 
104554 --
104555 -- Upgrade strategy
104556 --
104557 l_actual_upg_option           VARCHAR2(1);
104558 l_enc_upg_option           VARCHAR2(1);
104559 
104560 --
104561 BEGIN
104562 --
104563 IF g_log_enabled THEN
104564       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_221';
104565 END IF;
104566 --
104567 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104568 
104569       trace
104570          (p_msg      => 'BEGIN of AcctLineType_221'
104571          ,p_level    => C_LEVEL_PROCEDURE
104572          ,p_module   => l_log_module);
104573 
104574 END IF;
104575 --
104576 l_component_type             := 'AMB_JLT';
104577 l_component_code             := 'PPV';
104578 l_component_type_code        := 'S';
104579 l_component_appl_id          :=  555;
104580 l_amb_context_code           := 'DEFAULT';
104581 l_entity_code                := 'INVENTORY';
104582 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
104583 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_TP';
104584 l_line_definition_owner_code := 'S';
104585 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP_TP';
104586 --
104587 l_balance_type_code          := 'A';
104588 l_segment                     := NULL;
104589 l_ccid                        := NULL;
104590 l_adr_transaction_coa_id      := NULL;
104591 l_adr_accounting_coa_id       := NULL;
104592 l_adr_flexfield_segment_code  := NULL;
104593 l_adr_flex_value_set_id       := NULL;
104594 l_adr_value_type_code         := NULL;
104595 l_adr_value_combination_id    := NULL;
104596 l_adr_value_segment_code      := NULL;
104597 
104598 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
104599 l_bflow_class_code           := '';    -- 4219869 Business Flow
104600 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
104601 l_budgetary_control_flag     := 'N';
104602 
104603 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
104604 l_bflow_applied_to_amt       := NULL; -- 5132302
104605 l_entered_amt_idx            := NULL;          -- 4262811
104606 l_accted_amt_idx             := NULL;          -- 4262811
104607 l_acc_rev_flag               := NULL;          -- 4262811
104608 l_accrual_line_num           := NULL;          -- 4262811
104609 l_tmp_amt                    := NULL;          -- 4262811
104610 --
104611  
104612 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
104613     l_balance_type_code <> 'B' THEN
104614 IF NVL(p_source_2,'
104615 ') =  'PPV'
104616  THEN 
104617 
104618    --
104619    XLA_AE_LINES_PKG.SetNewLine;
104620 
104621    p_balance_type_code          := l_balance_type_code;
104622    -- set the flag so later we will know whether the gain loss line needs to be created
104623    
104624    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
104625      p_actual_flag :='A';
104626    END IF;
104627 
104628    --
104629    -- bulk performance
104630    --
104631    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
104632                                       p_header_num   => 0); -- 4262811
104633    --
104634    -- set accounting line options
104635    --
104636    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
104637            p_natural_side_code          => 'D'
104638          , p_gain_or_loss_flag          => 'N'
104639          , p_gl_transfer_mode_code      => 'D'
104640          , p_acct_entry_type_code       => 'A'
104644    --
104641          , p_switch_side_flag           => 'Y'
104642          , p_merge_duplicate_code       => 'W'
104643          );
104645    l_acc_rev_natural_side_code := 'C';  -- 4262811
104646    -- 
104647    --
104648    -- set accounting line type info
104649    --
104650    xla_ae_lines_pkg.SetAcctLineType
104651       (p_component_type             => l_component_type
104652       ,p_event_type_code            => l_event_type_code
104653       ,p_line_definition_owner_code => l_line_definition_owner_code
104654       ,p_line_definition_code       => l_line_definition_code
104655       ,p_accounting_line_code       => l_component_code
104656       ,p_accounting_line_type_code  => l_component_type_code
104657       ,p_accounting_line_appl_id    => l_component_appl_id
104658       ,p_amb_context_code           => l_amb_context_code
104659       ,p_entity_code                => l_entity_code
104660       ,p_event_class_code           => l_event_class_code);
104661    --
104662    -- set accounting class
104663    --
104664    xla_ae_lines_pkg.SetAcctClass(
104665            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
104666          , p_ae_header_id           => l_ae_header_id
104667          );
104668 
104669    --
104670    -- set rounding class
104671    --
104672    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
104673                       'PURCHASE_PRICE_VARIANCE';
104674 
104675    --
104676    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
104677    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
104678    --
104679    -- bulk performance
104680    --
104681    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
104682 
104683    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
104684       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
104685 
104686    -- 4955764
104687    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104688       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
104689 
104690    -- 4458381 Public Sector Enh
104691    
104692    --
104693    -- set accounting attributes for the line type
104694    --
104695    l_entered_amt_idx := 3;
104696    l_accted_amt_idx  := 8;
104697    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
104698    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
104699    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
104700    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
104701    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
104702    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
104703    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
104704    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
104705    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
104706    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
104707    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
104708    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
104709    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
104710    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
104711    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
104712    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
104713    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
104714 
104715    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
104716    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
104717 
104718    ---------------------------------------------------------------------------------------------------------------
104719    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
104720    ---------------------------------------------------------------------------------------------------------------
104721    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
104722 
104723    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104724    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104725 
104726    IF xla_accounting_cache_pkg.GetValueChar
104727          (p_source_code         => 'LEDGER_CATEGORY_CODE'
104728          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
104729    AND l_bflow_method_code = 'PRIOR_ENTRY'
104730 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
104731    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
104732          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
104733        )
104734    THEN
104735          xla_ae_lines_pkg.BflowUpgEntry
104736            (p_business_method_code    => l_bflow_method_code
104737            ,p_business_class_code     => l_bflow_class_code
104738            ,p_balance_type            => l_balance_type_code);
104739    ELSE
104740       NULL;
104741 -- No business flow processing for business flow method of NONE.
104742    END IF;
104743 
104744    --
104745    -- call analytical criteria
104746    --
104747    
104748    --
104749    -- call description
104750    --
104751    -- No description or it is inherited.
104752    --
104753    -- call ADRs
104754    -- Bug 4922099
104755    --
104759       )
104756    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104757         (NVL(l_actual_upg_option, 'N') = 'O') OR
104758         (NVL(l_enc_upg_option, 'N') = 'O')
104760    THEN
104761    NULL;
104762    --
104763    --
104764    
104765   l_ccid := AcctDerRule_31(
104766            p_application_id           => p_application_id
104767          , p_ae_header_id             => l_ae_header_id 
104768 , p_source_1 => p_source_1
104769 , p_source_2 => p_source_2
104770          , x_transaction_coa_id       => l_adr_transaction_coa_id
104771          , x_accounting_coa_id        => l_adr_accounting_coa_id
104772          , x_value_type_code          => l_adr_value_type_code
104773          , p_side                     => 'NA'
104774    );
104775 
104776    xla_ae_lines_pkg.set_ccid(
104777     p_code_combination_id          => l_ccid
104778   , p_value_type_code              => l_adr_value_type_code
104779   , p_transaction_coa_id           => l_adr_transaction_coa_id
104780   , p_accounting_coa_id            => l_adr_accounting_coa_id
104781   , p_adr_code                     => 'PPV'
104782   , p_adr_type_code                => 'S'
104783   , p_component_type               => l_component_type
104784   , p_component_code               => l_component_code
104785   , p_component_type_code          => l_component_type_code
104786   , p_component_appl_id            => l_component_appl_id
104787   , p_amb_context_code             => l_amb_context_code
104788   , p_side                         => 'NA'
104789   );
104790 
104791 
104792    --
104793    --
104794    END IF;
104795    --
104796    -- Bug 4922099
104797    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
104798           (NVL(l_enc_upg_option, 'N') = 'O')
104799         ) AND
104800         (l_bflow_method_code = 'PRIOR_ENTRY')
104801       )
104802    THEN
104803       IF
104804       --
104805       1 = 2
104806       --
104807       THEN
104808       xla_accounting_err_pkg.build_message
104809                                     (p_appli_s_name            => 'XLA'
104810                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104811                                     ,p_token_1                 => 'LINE_NUMBER'
104812                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
104813                                     ,p_token_2                 => 'LINE_TYPE_NAME'
104814                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
104815                                                                              l_component_type
104816                                                                             ,l_component_code
104817                                                                             ,l_component_type_code
104818                                                                             ,l_component_appl_id
104819                                                                             ,l_amb_context_code
104820                                                                             ,l_entity_code
104821                                                                             ,l_event_class_code
104822                                                                            )
104823                                     ,p_token_3                 => 'OWNER'
104824                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
104825                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
104826                                                                           ,p_lookup_code    => l_component_type_code
104827                                                                          )
104828                                     ,p_token_4                 => 'PRODUCT_NAME'
104829                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
104830                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
104831                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
104832                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
104833                                     ,p_ae_header_id            =>  NULL
104834                                        );
104835 
104836         IF (C_LEVEL_ERROR>= g_log_level) THEN
104837                  trace
104838                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104839                       ,p_level    => C_LEVEL_ERROR
104840                       ,p_module   => l_log_module);
104841         END IF;
104842       END IF;
104843    END IF;
104844    --
104845    --
104846    ------------------------------------------------------------------------------------------------
104847    -- 4219869 Business Flow
104848    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
104849    -- Prior Entry.  Currently, the following code is always generated.
104850    ------------------------------------------------------------------------------------------------
104851    XLA_AE_LINES_PKG.ValidateCurrentLine;
104852 
104853    ------------------------------------------------------------------------------------
104854    -- 4219869 Business Flow
104855    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
104856    ------------------------------------------------------------------------------------
104860    -- 4219869 Business Flow
104857    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104858 
104859    ----------------------------------------------------------------------------------
104861    -- Update journal entry status -- Need to generate this within IF <condition>
104862    ----------------------------------------------------------------------------------
104863    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104864          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
104865          ,p_balance_type_code => l_balance_type_code
104866          );
104867 
104868    -------------------------------------------------------------------------------------------
104869    -- 4262811 - Generate the Accrual Reversal lines
104870    -------------------------------------------------------------------------------------------
104871    BEGIN
104872       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
104873                               (g_array_event(p_event_id).array_value_num('header_index'));
104874       IF l_acc_rev_flag IS NULL THEN
104875          l_acc_rev_flag := 'N';
104876       END IF;
104877    EXCEPTION
104878       WHEN OTHERS THEN
104879          l_acc_rev_flag := 'N';
104880    END;
104881    --
104882    IF (l_acc_rev_flag = 'Y') THEN
104883 
104884        -- 4645092  ------------------------------------------------------------------------------
104885        -- To allow MPA report to determine if it should generate report process
104886        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
104887        ------------------------------------------------------------------------------------------
104888 
104889        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
104890        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
104891    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
104892    -- call ADRs
104893    -- Bug 4922099
104894    --
104895    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104896         (NVL(l_actual_upg_option, 'N') = 'O') OR
104897         (NVL(l_enc_upg_option, 'N') = 'O')
104898       )
104899    THEN
104900    NULL;
104901    --
104902    --
104903    
104904   l_ccid := AcctDerRule_31(
104905            p_application_id           => p_application_id
104906          , p_ae_header_id             => l_ae_header_id 
104907 , p_source_1 => p_source_1
104908 , p_source_2 => p_source_2
104909          , x_transaction_coa_id       => l_adr_transaction_coa_id
104910          , x_accounting_coa_id        => l_adr_accounting_coa_id
104911          , x_value_type_code          => l_adr_value_type_code
104912          , p_side                     => 'NA'
104913    );
104914 
104915    xla_ae_lines_pkg.set_ccid(
104916     p_code_combination_id          => l_ccid
104917   , p_value_type_code              => l_adr_value_type_code
104918   , p_transaction_coa_id           => l_adr_transaction_coa_id
104919   , p_accounting_coa_id            => l_adr_accounting_coa_id
104920   , p_adr_code                     => 'PPV'
104921   , p_adr_type_code                => 'S'
104922   , p_component_type               => l_component_type
104923   , p_component_code               => l_component_code
104924   , p_component_type_code          => l_component_type_code
104925   , p_component_appl_id            => l_component_appl_id
104926   , p_amb_context_code             => l_amb_context_code
104927   , p_side                         => 'NA'
104928   );
104929 
104930 
104931    --
104932    --
104933    END IF;
104934 
104935        --
104936        -- Update the line information that should be overwritten
104937        --
104938        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
104939                                          p_header_num   => 1);
104940        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
104941 
104942        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
104943 
104944        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
104945           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
104946        END IF;
104947 
104948       --
104949       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
104950       --
104951       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
104952           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
104953       ELSE
104954           ---------------------------------------------------------------------------------------------------
104955           -- 4262811a Switch Sign
104956           ---------------------------------------------------------------------------------------------------
104957           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
104958           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104959                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104960           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104961                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104962           -- 5132302
104963           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
104967 
104964                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104965 
104966       END IF;
104968       -- 4955764
104969       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104970       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
104971 
104972 
104973       XLA_AE_LINES_PKG.ValidateCurrentLine;
104974       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104975 
104976       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104977                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
104978                ,p_balance_type_code => l_balance_type_code);
104979 
104980    END IF;
104981 
104982    -----------------------------------------------------------------------------------------
104983    -- 4262811 Multiperiod Accounting
104984    -----------------------------------------------------------------------------------------
104985      -- No MPA option is assigned.
104986 
104987 
104988 END IF;
104989 END IF;
104990 --
104991 
104992 --
104993 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104994    trace
104995       (p_msg      => 'END of AcctLineType_221'
104996       ,p_level    => C_LEVEL_PROCEDURE
104997       ,p_module   => l_log_module);
104998 END IF;
104999 --
105000 EXCEPTION
105001   WHEN xla_exceptions_pkg.application_exception THEN
105002       RAISE;
105003   WHEN OTHERS THEN
105004        xla_exceptions_pkg.raise_message
105005            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_221');
105006 END AcctLineType_221;
105007 --
105008 
105009 ---------------------------------------
105010 --
105011 -- PRIVATE FUNCTION
105012 --         AcctLineType_222
105013 --
105014 ---------------------------------------
105015 PROCEDURE AcctLineType_222 (
105016   p_application_id        IN NUMBER
105017  ,p_event_id              IN NUMBER
105018  ,p_calculate_acctd_flag  IN VARCHAR2
105019  ,p_calculate_g_l_flag    IN VARCHAR2
105020  ,p_actual_flag           IN OUT VARCHAR2
105021  ,p_balance_type_code     OUT VARCHAR2
105022  ,p_gain_or_loss_ref      OUT VARCHAR2
105023  
105024 --Transaction Account
105025  , p_source_1            IN NUMBER
105026 --Journal Line Type
105027  , p_source_2            IN VARCHAR2
105028 --Entered Amount
105029  , p_source_3            IN NUMBER
105030 --First Distribution Identifier
105031  , p_source_5            IN NUMBER
105032 --Distribution Type
105033  , p_source_6            IN VARCHAR2
105034 --Currency Code
105035  , p_source_7            IN VARCHAR2
105036 --Currency Conversion Date
105037  , p_source_8            IN DATE
105038 --Currency Conversion Rate
105039  , p_source_9            IN NUMBER
105040 --Currency Conversion Type
105041  , p_source_10            IN VARCHAR2
105042 --Accounted Amount
105043  , p_source_11            IN NUMBER
105044 )
105045 IS
105046 
105047 l_component_type              VARCHAR2(80);
105048 l_component_code              VARCHAR2(30);
105049 l_component_type_code         VARCHAR2(1);
105050 l_component_appl_id           INTEGER;
105051 l_amb_context_code            VARCHAR2(30);
105052 l_entity_code                 VARCHAR2(30);
105053 l_event_class_code            VARCHAR2(30);
105054 l_ae_header_id                NUMBER;
105055 l_event_type_code             VARCHAR2(30);
105056 l_line_definition_code        VARCHAR2(30);
105057 l_line_definition_owner_code  VARCHAR2(1);
105058 --
105059 -- adr variables
105060 l_segment                     VARCHAR2(30);
105061 l_ccid                        NUMBER;
105062 l_adr_transaction_coa_id      NUMBER;
105063 l_adr_accounting_coa_id       NUMBER;
105064 l_adr_flexfield_segment_code  VARCHAR2(30);
105065 l_adr_flex_value_set_id       NUMBER;
105066 l_adr_value_type_code         VARCHAR2(30);
105067 l_adr_value_combination_id    NUMBER;
105068 l_adr_value_segment_code      VARCHAR2(30);
105069 
105070 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
105071 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
105072 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
105073 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
105074 
105075 -- 4262811 Variables ------------------------------------------------------------------------------------------
105076 l_entered_amt_idx             NUMBER;
105077 l_accted_amt_idx              NUMBER;
105078 l_acc_rev_flag                VARCHAR2(1);
105079 l_accrual_line_num            NUMBER;
105080 l_tmp_amt                     NUMBER;
105081 l_acc_rev_natural_side_code   VARCHAR2(1);
105082 
105083 l_num_entries                 NUMBER;
105084 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
105085 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
105086 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
105087 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
105088 l_recog_line_1                NUMBER;
105089 l_recog_line_2                NUMBER;
105090 
105091 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
105092 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
105093 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
105094 
105095 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
105096 
105097 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
105101 
105098 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
105099 
105100 ---------------------------------------------------------------------------------------------------------------
105102 
105103 --
105104 -- bulk performance
105105 --
105106 l_balance_type_code           VARCHAR2(1);
105107 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
105108 l_log_module                  VARCHAR2(240);
105109 
105110 --
105111 -- Upgrade strategy
105112 --
105113 l_actual_upg_option           VARCHAR2(1);
105114 l_enc_upg_option           VARCHAR2(1);
105115 
105116 --
105117 BEGIN
105118 --
105119 IF g_log_enabled THEN
105120       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_222';
105121 END IF;
105122 --
105123 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105124 
105125       trace
105126          (p_msg      => 'BEGIN of AcctLineType_222'
105127          ,p_level    => C_LEVEL_PROCEDURE
105128          ,p_module   => l_log_module);
105129 
105130 END IF;
105131 --
105132 l_component_type             := 'AMB_JLT';
105133 l_component_code             := 'PPV';
105134 l_component_type_code        := 'S';
105135 l_component_appl_id          :=  555;
105136 l_amb_context_code           := 'DEFAULT';
105137 l_entity_code                := 'INVENTORY';
105138 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
105139 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
105140 l_line_definition_owner_code := 'S';
105141 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
105142 --
105143 l_balance_type_code          := 'A';
105144 l_segment                     := NULL;
105145 l_ccid                        := NULL;
105146 l_adr_transaction_coa_id      := NULL;
105147 l_adr_accounting_coa_id       := NULL;
105148 l_adr_flexfield_segment_code  := NULL;
105149 l_adr_flex_value_set_id       := NULL;
105150 l_adr_value_type_code         := NULL;
105151 l_adr_value_combination_id    := NULL;
105152 l_adr_value_segment_code      := NULL;
105153 
105154 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
105155 l_bflow_class_code           := '';    -- 4219869 Business Flow
105156 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
105157 l_budgetary_control_flag     := 'N';
105158 
105159 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
105160 l_bflow_applied_to_amt       := NULL; -- 5132302
105161 l_entered_amt_idx            := NULL;          -- 4262811
105162 l_accted_amt_idx             := NULL;          -- 4262811
105163 l_acc_rev_flag               := NULL;          -- 4262811
105164 l_accrual_line_num           := NULL;          -- 4262811
105165 l_tmp_amt                    := NULL;          -- 4262811
105166 --
105167  
105168 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
105169     l_balance_type_code <> 'B' THEN
105170 IF NVL(p_source_2,'
105171 ') =  'PPV'
105172  THEN 
105173 
105174    --
105175    XLA_AE_LINES_PKG.SetNewLine;
105176 
105177    p_balance_type_code          := l_balance_type_code;
105178    -- set the flag so later we will know whether the gain loss line needs to be created
105179    
105180    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
105181      p_actual_flag :='A';
105182    END IF;
105183 
105184    --
105185    -- bulk performance
105186    --
105187    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
105188                                       p_header_num   => 0); -- 4262811
105189    --
105190    -- set accounting line options
105191    --
105192    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
105193            p_natural_side_code          => 'D'
105194          , p_gain_or_loss_flag          => 'N'
105195          , p_gl_transfer_mode_code      => 'D'
105196          , p_acct_entry_type_code       => 'A'
105197          , p_switch_side_flag           => 'Y'
105198          , p_merge_duplicate_code       => 'W'
105199          );
105200    --
105201    l_acc_rev_natural_side_code := 'C';  -- 4262811
105202    -- 
105203    --
105204    -- set accounting line type info
105205    --
105206    xla_ae_lines_pkg.SetAcctLineType
105207       (p_component_type             => l_component_type
105208       ,p_event_type_code            => l_event_type_code
105209       ,p_line_definition_owner_code => l_line_definition_owner_code
105210       ,p_line_definition_code       => l_line_definition_code
105211       ,p_accounting_line_code       => l_component_code
105212       ,p_accounting_line_type_code  => l_component_type_code
105213       ,p_accounting_line_appl_id    => l_component_appl_id
105214       ,p_amb_context_code           => l_amb_context_code
105215       ,p_entity_code                => l_entity_code
105216       ,p_event_class_code           => l_event_class_code);
105217    --
105218    -- set accounting class
105219    --
105220    xla_ae_lines_pkg.SetAcctClass(
105221            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
105222          , p_ae_header_id           => l_ae_header_id
105223          );
105224 
105225    --
105226    -- set rounding class
105227    --
105228    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
105229                       'PURCHASE_PRICE_VARIANCE';
105230 
105231    --
105232    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
105236    --
105233    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
105234    --
105235    -- bulk performance
105237    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
105238 
105239    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
105240       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
105241 
105242    -- 4955764
105243    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105244       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
105245 
105246    -- 4458381 Public Sector Enh
105247    
105248    --
105249    -- set accounting attributes for the line type
105250    --
105251    l_entered_amt_idx := 3;
105252    l_accted_amt_idx  := 8;
105253    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
105254    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
105255    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
105256    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
105257    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
105258    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
105259    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
105260    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
105261    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
105262    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
105263    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
105264    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
105265    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
105266    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
105267    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
105268    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
105269    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
105270 
105271    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
105272    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
105273 
105274    ---------------------------------------------------------------------------------------------------------------
105275    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
105276    ---------------------------------------------------------------------------------------------------------------
105277    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
105278 
105279    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105280    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105281 
105282    IF xla_accounting_cache_pkg.GetValueChar
105283          (p_source_code         => 'LEDGER_CATEGORY_CODE'
105284          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
105285    AND l_bflow_method_code = 'PRIOR_ENTRY'
105286 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
105287    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
105288          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
105289        )
105290    THEN
105291          xla_ae_lines_pkg.BflowUpgEntry
105292            (p_business_method_code    => l_bflow_method_code
105293            ,p_business_class_code     => l_bflow_class_code
105294            ,p_balance_type            => l_balance_type_code);
105295    ELSE
105296       NULL;
105297 -- No business flow processing for business flow method of NONE.
105298    END IF;
105299 
105300    --
105301    -- call analytical criteria
105302    --
105303    
105304    --
105305    -- call description
105306    --
105307    -- No description or it is inherited.
105308    --
105309    -- call ADRs
105310    -- Bug 4922099
105311    --
105312    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105313         (NVL(l_actual_upg_option, 'N') = 'O') OR
105314         (NVL(l_enc_upg_option, 'N') = 'O')
105315       )
105316    THEN
105317    NULL;
105318    --
105319    --
105320    
105321   l_ccid := AcctDerRule_31(
105322            p_application_id           => p_application_id
105323          , p_ae_header_id             => l_ae_header_id 
105324 , p_source_1 => p_source_1
105325 , p_source_2 => p_source_2
105326          , x_transaction_coa_id       => l_adr_transaction_coa_id
105327          , x_accounting_coa_id        => l_adr_accounting_coa_id
105328          , x_value_type_code          => l_adr_value_type_code
105329          , p_side                     => 'NA'
105330    );
105331 
105332    xla_ae_lines_pkg.set_ccid(
105333     p_code_combination_id          => l_ccid
105334   , p_value_type_code              => l_adr_value_type_code
105335   , p_transaction_coa_id           => l_adr_transaction_coa_id
105336   , p_accounting_coa_id            => l_adr_accounting_coa_id
105337   , p_adr_code                     => 'PPV'
105338   , p_adr_type_code                => 'S'
105339   , p_component_type               => l_component_type
105340   , p_component_code               => l_component_code
105341   , p_component_type_code          => l_component_type_code
105342   , p_component_appl_id            => l_component_appl_id
105343   , p_amb_context_code             => l_amb_context_code
105344   , p_side                         => 'NA'
105345   );
105346 
105347 
105351    --
105348    --
105349    --
105350    END IF;
105352    -- Bug 4922099
105353    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
105354           (NVL(l_enc_upg_option, 'N') = 'O')
105355         ) AND
105356         (l_bflow_method_code = 'PRIOR_ENTRY')
105357       )
105358    THEN
105359       IF
105360       --
105361       1 = 2
105362       --
105363       THEN
105364       xla_accounting_err_pkg.build_message
105365                                     (p_appli_s_name            => 'XLA'
105366                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105367                                     ,p_token_1                 => 'LINE_NUMBER'
105368                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
105369                                     ,p_token_2                 => 'LINE_TYPE_NAME'
105370                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
105371                                                                              l_component_type
105372                                                                             ,l_component_code
105373                                                                             ,l_component_type_code
105374                                                                             ,l_component_appl_id
105375                                                                             ,l_amb_context_code
105376                                                                             ,l_entity_code
105377                                                                             ,l_event_class_code
105378                                                                            )
105379                                     ,p_token_3                 => 'OWNER'
105380                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
105381                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
105382                                                                           ,p_lookup_code    => l_component_type_code
105383                                                                          )
105384                                     ,p_token_4                 => 'PRODUCT_NAME'
105385                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
105386                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
105387                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
105388                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
105389                                     ,p_ae_header_id            =>  NULL
105390                                        );
105391 
105392         IF (C_LEVEL_ERROR>= g_log_level) THEN
105393                  trace
105394                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105395                       ,p_level    => C_LEVEL_ERROR
105396                       ,p_module   => l_log_module);
105397         END IF;
105398       END IF;
105399    END IF;
105400    --
105401    --
105402    ------------------------------------------------------------------------------------------------
105403    -- 4219869 Business Flow
105404    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
105405    -- Prior Entry.  Currently, the following code is always generated.
105406    ------------------------------------------------------------------------------------------------
105407    XLA_AE_LINES_PKG.ValidateCurrentLine;
105408 
105409    ------------------------------------------------------------------------------------
105410    -- 4219869 Business Flow
105411    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
105412    ------------------------------------------------------------------------------------
105413    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105414 
105415    ----------------------------------------------------------------------------------
105416    -- 4219869 Business Flow
105417    -- Update journal entry status -- Need to generate this within IF <condition>
105418    ----------------------------------------------------------------------------------
105419    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105420          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
105421          ,p_balance_type_code => l_balance_type_code
105422          );
105423 
105424    -------------------------------------------------------------------------------------------
105425    -- 4262811 - Generate the Accrual Reversal lines
105426    -------------------------------------------------------------------------------------------
105427    BEGIN
105428       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
105429                               (g_array_event(p_event_id).array_value_num('header_index'));
105430       IF l_acc_rev_flag IS NULL THEN
105431          l_acc_rev_flag := 'N';
105432       END IF;
105433    EXCEPTION
105434       WHEN OTHERS THEN
105435          l_acc_rev_flag := 'N';
105436    END;
105437    --
105438    IF (l_acc_rev_flag = 'Y') THEN
105439 
105440        -- 4645092  ------------------------------------------------------------------------------
105441        -- To allow MPA report to determine if it should generate report process
105445        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
105442        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
105443        ------------------------------------------------------------------------------------------
105444 
105446        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
105447    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
105448    -- call ADRs
105449    -- Bug 4922099
105450    --
105451    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105452         (NVL(l_actual_upg_option, 'N') = 'O') OR
105453         (NVL(l_enc_upg_option, 'N') = 'O')
105454       )
105455    THEN
105456    NULL;
105457    --
105458    --
105459    
105460   l_ccid := AcctDerRule_31(
105461            p_application_id           => p_application_id
105462          , p_ae_header_id             => l_ae_header_id 
105463 , p_source_1 => p_source_1
105464 , p_source_2 => p_source_2
105465          , x_transaction_coa_id       => l_adr_transaction_coa_id
105466          , x_accounting_coa_id        => l_adr_accounting_coa_id
105467          , x_value_type_code          => l_adr_value_type_code
105468          , p_side                     => 'NA'
105469    );
105470 
105471    xla_ae_lines_pkg.set_ccid(
105472     p_code_combination_id          => l_ccid
105473   , p_value_type_code              => l_adr_value_type_code
105474   , p_transaction_coa_id           => l_adr_transaction_coa_id
105475   , p_accounting_coa_id            => l_adr_accounting_coa_id
105476   , p_adr_code                     => 'PPV'
105477   , p_adr_type_code                => 'S'
105478   , p_component_type               => l_component_type
105479   , p_component_code               => l_component_code
105480   , p_component_type_code          => l_component_type_code
105481   , p_component_appl_id            => l_component_appl_id
105482   , p_amb_context_code             => l_amb_context_code
105483   , p_side                         => 'NA'
105484   );
105485 
105486 
105487    --
105488    --
105489    END IF;
105490 
105491        --
105492        -- Update the line information that should be overwritten
105493        --
105494        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
105495                                          p_header_num   => 1);
105496        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
105497 
105498        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
105499 
105500        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
105501           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
105502        END IF;
105503 
105504       --
105505       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
105506       --
105507       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
105508           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
105509       ELSE
105510           ---------------------------------------------------------------------------------------------------
105511           -- 4262811a Switch Sign
105512           ---------------------------------------------------------------------------------------------------
105513           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
105514           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105515                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105516           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105517                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105518           -- 5132302
105519           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
105520                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105521 
105522       END IF;
105523 
105524       -- 4955764
105525       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105526       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
105527 
105528 
105529       XLA_AE_LINES_PKG.ValidateCurrentLine;
105530       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105531 
105532       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105533                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
105534                ,p_balance_type_code => l_balance_type_code);
105535 
105536    END IF;
105537 
105538    -----------------------------------------------------------------------------------------
105539    -- 4262811 Multiperiod Accounting
105540    -----------------------------------------------------------------------------------------
105541      -- No MPA option is assigned.
105542 
105543 
105544 END IF;
105545 END IF;
105546 --
105547 
105548 --
105549 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105550    trace
105551       (p_msg      => 'END of AcctLineType_222'
105552       ,p_level    => C_LEVEL_PROCEDURE
105553       ,p_module   => l_log_module);
105554 END IF;
105555 --
105556 EXCEPTION
105557   WHEN xla_exceptions_pkg.application_exception THEN
105558       RAISE;
105559   WHEN OTHERS THEN
105560        xla_exceptions_pkg.raise_message
105564 
105561            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_222');
105562 END AcctLineType_222;
105563 --
105565 ---------------------------------------
105566 --
105567 -- PRIVATE FUNCTION
105568 --         AcctLineType_223
105569 --
105570 ---------------------------------------
105571 PROCEDURE AcctLineType_223 (
105572   p_application_id        IN NUMBER
105573  ,p_event_id              IN NUMBER
105574  ,p_calculate_acctd_flag  IN VARCHAR2
105575  ,p_calculate_g_l_flag    IN VARCHAR2
105576  ,p_actual_flag           IN OUT VARCHAR2
105577  ,p_balance_type_code     OUT VARCHAR2
105578  ,p_gain_or_loss_ref      OUT VARCHAR2
105579  
105580 --Transaction Account
105581  , p_source_1            IN NUMBER
105582 --Journal Line Type
105583  , p_source_2            IN VARCHAR2
105584 --Entered Amount
105585  , p_source_3            IN NUMBER
105586 --First Distribution Identifier
105587  , p_source_5            IN NUMBER
105588 --Distribution Type
105589  , p_source_6            IN VARCHAR2
105590 --Currency Code
105591  , p_source_7            IN VARCHAR2
105592 --Currency Conversion Date
105593  , p_source_8            IN DATE
105594 --Currency Conversion Rate
105595  , p_source_9            IN NUMBER
105596 --Currency Conversion Type
105597  , p_source_10            IN VARCHAR2
105598 --Accounted Amount
105599  , p_source_11            IN NUMBER
105600 )
105601 IS
105602 
105603 l_component_type              VARCHAR2(80);
105604 l_component_code              VARCHAR2(30);
105605 l_component_type_code         VARCHAR2(1);
105606 l_component_appl_id           INTEGER;
105607 l_amb_context_code            VARCHAR2(30);
105608 l_entity_code                 VARCHAR2(30);
105609 l_event_class_code            VARCHAR2(30);
105610 l_ae_header_id                NUMBER;
105611 l_event_type_code             VARCHAR2(30);
105612 l_line_definition_code        VARCHAR2(30);
105613 l_line_definition_owner_code  VARCHAR2(1);
105614 --
105615 -- adr variables
105616 l_segment                     VARCHAR2(30);
105617 l_ccid                        NUMBER;
105618 l_adr_transaction_coa_id      NUMBER;
105619 l_adr_accounting_coa_id       NUMBER;
105620 l_adr_flexfield_segment_code  VARCHAR2(30);
105621 l_adr_flex_value_set_id       NUMBER;
105622 l_adr_value_type_code         VARCHAR2(30);
105623 l_adr_value_combination_id    NUMBER;
105624 l_adr_value_segment_code      VARCHAR2(30);
105625 
105626 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
105627 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
105628 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
105629 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
105630 
105631 -- 4262811 Variables ------------------------------------------------------------------------------------------
105632 l_entered_amt_idx             NUMBER;
105633 l_accted_amt_idx              NUMBER;
105634 l_acc_rev_flag                VARCHAR2(1);
105635 l_accrual_line_num            NUMBER;
105636 l_tmp_amt                     NUMBER;
105637 l_acc_rev_natural_side_code   VARCHAR2(1);
105638 
105639 l_num_entries                 NUMBER;
105640 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
105641 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
105642 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
105643 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
105644 l_recog_line_1                NUMBER;
105645 l_recog_line_2                NUMBER;
105646 
105647 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
105648 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
105649 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
105650 
105651 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
105652 
105653 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
105654 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
105655 
105656 ---------------------------------------------------------------------------------------------------------------
105657 
105658 
105659 --
105660 -- bulk performance
105661 --
105662 l_balance_type_code           VARCHAR2(1);
105663 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
105664 l_log_module                  VARCHAR2(240);
105665 
105666 --
105667 -- Upgrade strategy
105668 --
105669 l_actual_upg_option           VARCHAR2(1);
105670 l_enc_upg_option           VARCHAR2(1);
105671 
105672 --
105673 BEGIN
105674 --
105675 IF g_log_enabled THEN
105676       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_223';
105677 END IF;
105678 --
105679 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105680 
105681       trace
105682          (p_msg      => 'BEGIN of AcctLineType_223'
105683          ,p_level    => C_LEVEL_PROCEDURE
105684          ,p_module   => l_log_module);
105685 
105686 END IF;
105687 --
105688 l_component_type             := 'AMB_JLT';
105689 l_component_code             := 'PPV';
105690 l_component_type_code        := 'S';
105691 l_component_appl_id          :=  555;
105692 l_amb_context_code           := 'DEFAULT';
105693 l_entity_code                := 'PURCHASING';
105694 l_event_class_code           := 'DELIVER';
105695 l_event_type_code            := 'INT_REQ_RECEIPT_ADJ';
105696 l_line_definition_owner_code := 'S';
105697 l_line_definition_code       := 'INT_REQ_RCPT_ADJ';
105701 l_ccid                        := NULL;
105698 --
105699 l_balance_type_code          := 'A';
105700 l_segment                     := NULL;
105702 l_adr_transaction_coa_id      := NULL;
105703 l_adr_accounting_coa_id       := NULL;
105704 l_adr_flexfield_segment_code  := NULL;
105705 l_adr_flex_value_set_id       := NULL;
105706 l_adr_value_type_code         := NULL;
105707 l_adr_value_combination_id    := NULL;
105708 l_adr_value_segment_code      := NULL;
105709 
105710 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
105711 l_bflow_class_code           := '';    -- 4219869 Business Flow
105712 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
105713 l_budgetary_control_flag     := 'N';
105714 
105715 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
105716 l_bflow_applied_to_amt       := NULL; -- 5132302
105717 l_entered_amt_idx            := NULL;          -- 4262811
105718 l_accted_amt_idx             := NULL;          -- 4262811
105719 l_acc_rev_flag               := NULL;          -- 4262811
105720 l_accrual_line_num           := NULL;          -- 4262811
105721 l_tmp_amt                    := NULL;          -- 4262811
105722 --
105723  
105724 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
105725     l_balance_type_code <> 'B' THEN
105726 IF NVL(p_source_2,'
105727 ') =  'PPV'
105728  THEN 
105729 
105730    --
105731    XLA_AE_LINES_PKG.SetNewLine;
105732 
105733    p_balance_type_code          := l_balance_type_code;
105734    -- set the flag so later we will know whether the gain loss line needs to be created
105735    
105736    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
105737      p_actual_flag :='A';
105738    END IF;
105739 
105740    --
105741    -- bulk performance
105742    --
105743    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
105744                                       p_header_num   => 0); -- 4262811
105745    --
105746    -- set accounting line options
105747    --
105748    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
105749            p_natural_side_code          => 'D'
105750          , p_gain_or_loss_flag          => 'N'
105751          , p_gl_transfer_mode_code      => 'D'
105752          , p_acct_entry_type_code       => 'A'
105753          , p_switch_side_flag           => 'Y'
105754          , p_merge_duplicate_code       => 'W'
105755          );
105756    --
105757    l_acc_rev_natural_side_code := 'C';  -- 4262811
105758    -- 
105759    --
105760    -- set accounting line type info
105761    --
105762    xla_ae_lines_pkg.SetAcctLineType
105763       (p_component_type             => l_component_type
105764       ,p_event_type_code            => l_event_type_code
105765       ,p_line_definition_owner_code => l_line_definition_owner_code
105766       ,p_line_definition_code       => l_line_definition_code
105767       ,p_accounting_line_code       => l_component_code
105768       ,p_accounting_line_type_code  => l_component_type_code
105769       ,p_accounting_line_appl_id    => l_component_appl_id
105770       ,p_amb_context_code           => l_amb_context_code
105771       ,p_entity_code                => l_entity_code
105772       ,p_event_class_code           => l_event_class_code);
105773    --
105774    -- set accounting class
105775    --
105776    xla_ae_lines_pkg.SetAcctClass(
105777            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
105778          , p_ae_header_id           => l_ae_header_id
105779          );
105780 
105781    --
105782    -- set rounding class
105783    --
105784    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
105785                       'PURCHASE_PRICE_VARIANCE';
105786 
105787    --
105788    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
105789    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
105790    --
105791    -- bulk performance
105792    --
105793    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
105794 
105795    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
105796       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
105797 
105798    -- 4955764
105799    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105800       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
105801 
105802    -- 4458381 Public Sector Enh
105803    
105804    --
105805    -- set accounting attributes for the line type
105806    --
105807    l_entered_amt_idx := 3;
105808    l_accted_amt_idx  := 8;
105809    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
105810    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
105811    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
105812    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
105813    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
105814    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
105815    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
105816    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
105817    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
105818    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
105819    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
105820    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
105824    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
105821    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
105822    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
105823    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
105825    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
105826 
105827    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
105828    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
105829 
105830    ---------------------------------------------------------------------------------------------------------------
105831    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
105832    ---------------------------------------------------------------------------------------------------------------
105833    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
105834 
105835    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105836    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105837 
105838    IF xla_accounting_cache_pkg.GetValueChar
105839          (p_source_code         => 'LEDGER_CATEGORY_CODE'
105840          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
105841    AND l_bflow_method_code = 'PRIOR_ENTRY'
105842 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
105843    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
105844          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
105845        )
105846    THEN
105847          xla_ae_lines_pkg.BflowUpgEntry
105848            (p_business_method_code    => l_bflow_method_code
105849            ,p_business_class_code     => l_bflow_class_code
105850            ,p_balance_type            => l_balance_type_code);
105851    ELSE
105852       NULL;
105853 -- No business flow processing for business flow method of NONE.
105854    END IF;
105855 
105856    --
105857    -- call analytical criteria
105858    --
105859    
105860    --
105861    -- call description
105862    --
105863    -- No description or it is inherited.
105864    --
105865    -- call ADRs
105866    -- Bug 4922099
105867    --
105868    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105869         (NVL(l_actual_upg_option, 'N') = 'O') OR
105870         (NVL(l_enc_upg_option, 'N') = 'O')
105871       )
105872    THEN
105873    NULL;
105874    --
105875    --
105876    
105877   l_ccid := AcctDerRule_31(
105878            p_application_id           => p_application_id
105879          , p_ae_header_id             => l_ae_header_id 
105880 , p_source_1 => p_source_1
105881 , p_source_2 => p_source_2
105882          , x_transaction_coa_id       => l_adr_transaction_coa_id
105883          , x_accounting_coa_id        => l_adr_accounting_coa_id
105884          , x_value_type_code          => l_adr_value_type_code
105885          , p_side                     => 'NA'
105886    );
105887 
105888    xla_ae_lines_pkg.set_ccid(
105889     p_code_combination_id          => l_ccid
105890   , p_value_type_code              => l_adr_value_type_code
105891   , p_transaction_coa_id           => l_adr_transaction_coa_id
105892   , p_accounting_coa_id            => l_adr_accounting_coa_id
105893   , p_adr_code                     => 'PPV'
105894   , p_adr_type_code                => 'S'
105895   , p_component_type               => l_component_type
105896   , p_component_code               => l_component_code
105897   , p_component_type_code          => l_component_type_code
105898   , p_component_appl_id            => l_component_appl_id
105899   , p_amb_context_code             => l_amb_context_code
105900   , p_side                         => 'NA'
105901   );
105902 
105903 
105904    --
105905    --
105906    END IF;
105907    --
105908    -- Bug 4922099
105909    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
105910           (NVL(l_enc_upg_option, 'N') = 'O')
105911         ) AND
105912         (l_bflow_method_code = 'PRIOR_ENTRY')
105913       )
105914    THEN
105915       IF
105916       --
105917       1 = 2
105918       --
105919       THEN
105920       xla_accounting_err_pkg.build_message
105921                                     (p_appli_s_name            => 'XLA'
105922                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105923                                     ,p_token_1                 => 'LINE_NUMBER'
105924                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
105925                                     ,p_token_2                 => 'LINE_TYPE_NAME'
105926                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
105927                                                                              l_component_type
105928                                                                             ,l_component_code
105929                                                                             ,l_component_type_code
105930                                                                             ,l_component_appl_id
105931                                                                             ,l_amb_context_code
105932                                                                             ,l_entity_code
105933                                                                             ,l_event_class_code
105937                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
105934                                                                            )
105935                                     ,p_token_3                 => 'OWNER'
105936                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
105938                                                                           ,p_lookup_code    => l_component_type_code
105939                                                                          )
105940                                     ,p_token_4                 => 'PRODUCT_NAME'
105941                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
105942                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
105943                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
105944                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
105945                                     ,p_ae_header_id            =>  NULL
105946                                        );
105947 
105948         IF (C_LEVEL_ERROR>= g_log_level) THEN
105949                  trace
105950                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105951                       ,p_level    => C_LEVEL_ERROR
105952                       ,p_module   => l_log_module);
105953         END IF;
105954       END IF;
105955    END IF;
105956    --
105957    --
105958    ------------------------------------------------------------------------------------------------
105959    -- 4219869 Business Flow
105960    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
105961    -- Prior Entry.  Currently, the following code is always generated.
105962    ------------------------------------------------------------------------------------------------
105963    XLA_AE_LINES_PKG.ValidateCurrentLine;
105964 
105965    ------------------------------------------------------------------------------------
105966    -- 4219869 Business Flow
105967    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
105968    ------------------------------------------------------------------------------------
105969    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105970 
105971    ----------------------------------------------------------------------------------
105972    -- 4219869 Business Flow
105973    -- Update journal entry status -- Need to generate this within IF <condition>
105974    ----------------------------------------------------------------------------------
105975    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105976          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
105977          ,p_balance_type_code => l_balance_type_code
105978          );
105979 
105980    -------------------------------------------------------------------------------------------
105981    -- 4262811 - Generate the Accrual Reversal lines
105982    -------------------------------------------------------------------------------------------
105983    BEGIN
105984       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
105985                               (g_array_event(p_event_id).array_value_num('header_index'));
105986       IF l_acc_rev_flag IS NULL THEN
105987          l_acc_rev_flag := 'N';
105988       END IF;
105989    EXCEPTION
105990       WHEN OTHERS THEN
105991          l_acc_rev_flag := 'N';
105992    END;
105993    --
105994    IF (l_acc_rev_flag = 'Y') THEN
105995 
105996        -- 4645092  ------------------------------------------------------------------------------
105997        -- To allow MPA report to determine if it should generate report process
105998        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
105999        ------------------------------------------------------------------------------------------
106000 
106001        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
106002        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
106003    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
106004    -- call ADRs
106005    -- Bug 4922099
106006    --
106007    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106008         (NVL(l_actual_upg_option, 'N') = 'O') OR
106009         (NVL(l_enc_upg_option, 'N') = 'O')
106010       )
106011    THEN
106012    NULL;
106013    --
106014    --
106015    
106016   l_ccid := AcctDerRule_31(
106017            p_application_id           => p_application_id
106018          , p_ae_header_id             => l_ae_header_id 
106019 , p_source_1 => p_source_1
106020 , p_source_2 => p_source_2
106021          , x_transaction_coa_id       => l_adr_transaction_coa_id
106022          , x_accounting_coa_id        => l_adr_accounting_coa_id
106023          , x_value_type_code          => l_adr_value_type_code
106024          , p_side                     => 'NA'
106025    );
106026 
106027    xla_ae_lines_pkg.set_ccid(
106028     p_code_combination_id          => l_ccid
106029   , p_value_type_code              => l_adr_value_type_code
106030   , p_transaction_coa_id           => l_adr_transaction_coa_id
106031   , p_accounting_coa_id            => l_adr_accounting_coa_id
106032   , p_adr_code                     => 'PPV'
106033   , p_adr_type_code                => 'S'
106034   , p_component_type               => l_component_type
106035   , p_component_code               => l_component_code
106039   , p_side                         => 'NA'
106036   , p_component_type_code          => l_component_type_code
106037   , p_component_appl_id            => l_component_appl_id
106038   , p_amb_context_code             => l_amb_context_code
106040   );
106041 
106042 
106043    --
106044    --
106045    END IF;
106046 
106047        --
106048        -- Update the line information that should be overwritten
106049        --
106050        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
106051                                          p_header_num   => 1);
106052        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
106053 
106054        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
106055 
106056        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
106057           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
106058        END IF;
106059 
106060       --
106061       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
106062       --
106063       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
106064           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
106065       ELSE
106066           ---------------------------------------------------------------------------------------------------
106067           -- 4262811a Switch Sign
106068           ---------------------------------------------------------------------------------------------------
106069           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
106070           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
106071                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106072           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
106073                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106074           -- 5132302
106075           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
106076                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106077 
106078       END IF;
106079 
106080       -- 4955764
106081       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106082       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
106083 
106084 
106085       XLA_AE_LINES_PKG.ValidateCurrentLine;
106086       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106087 
106088       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106089                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
106090                ,p_balance_type_code => l_balance_type_code);
106091 
106092    END IF;
106093 
106094    -----------------------------------------------------------------------------------------
106095    -- 4262811 Multiperiod Accounting
106096    -----------------------------------------------------------------------------------------
106097      -- No MPA option is assigned.
106098 
106099 
106100 END IF;
106101 END IF;
106102 --
106103 
106104 --
106105 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106106    trace
106107       (p_msg      => 'END of AcctLineType_223'
106108       ,p_level    => C_LEVEL_PROCEDURE
106109       ,p_module   => l_log_module);
106110 END IF;
106111 --
106112 EXCEPTION
106113   WHEN xla_exceptions_pkg.application_exception THEN
106114       RAISE;
106115   WHEN OTHERS THEN
106116        xla_exceptions_pkg.raise_message
106117            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_223');
106118 END AcctLineType_223;
106119 --
106120 
106121 ---------------------------------------
106122 --
106123 -- PRIVATE FUNCTION
106124 --         AcctLineType_224
106125 --
106126 ---------------------------------------
106127 PROCEDURE AcctLineType_224 (
106128   p_application_id        IN NUMBER
106129  ,p_event_id              IN NUMBER
106130  ,p_calculate_acctd_flag  IN VARCHAR2
106131  ,p_calculate_g_l_flag    IN VARCHAR2
106132  ,p_actual_flag           IN OUT VARCHAR2
106133  ,p_balance_type_code     OUT VARCHAR2
106134  ,p_gain_or_loss_ref      OUT VARCHAR2
106135  
106136 --Transaction Account
106137  , p_source_1            IN NUMBER
106138 --Journal Line Type
106139  , p_source_2            IN VARCHAR2
106140 --Entered Amount
106141  , p_source_3            IN NUMBER
106142 --First Distribution Identifier
106143  , p_source_5            IN NUMBER
106144 --Distribution Type
106145  , p_source_6            IN VARCHAR2
106146 --Currency Code
106147  , p_source_7            IN VARCHAR2
106148 --Currency Conversion Date
106149  , p_source_8            IN DATE
106150 --Currency Conversion Rate
106151  , p_source_9            IN NUMBER
106152 --Currency Conversion Type
106153  , p_source_10            IN VARCHAR2
106154 --Accounted Amount
106155  , p_source_11            IN NUMBER
106156 )
106157 IS
106158 
106159 l_component_type              VARCHAR2(80);
106160 l_component_code              VARCHAR2(30);
106161 l_component_type_code         VARCHAR2(1);
106162 l_component_appl_id           INTEGER;
106163 l_amb_context_code            VARCHAR2(30);
106164 l_entity_code                 VARCHAR2(30);
106165 l_event_class_code            VARCHAR2(30);
106169 l_line_definition_owner_code  VARCHAR2(1);
106166 l_ae_header_id                NUMBER;
106167 l_event_type_code             VARCHAR2(30);
106168 l_line_definition_code        VARCHAR2(30);
106170 --
106171 -- adr variables
106172 l_segment                     VARCHAR2(30);
106173 l_ccid                        NUMBER;
106174 l_adr_transaction_coa_id      NUMBER;
106175 l_adr_accounting_coa_id       NUMBER;
106176 l_adr_flexfield_segment_code  VARCHAR2(30);
106177 l_adr_flex_value_set_id       NUMBER;
106178 l_adr_value_type_code         VARCHAR2(30);
106179 l_adr_value_combination_id    NUMBER;
106180 l_adr_value_segment_code      VARCHAR2(30);
106181 
106182 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
106183 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
106184 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
106185 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
106186 
106187 -- 4262811 Variables ------------------------------------------------------------------------------------------
106188 l_entered_amt_idx             NUMBER;
106189 l_accted_amt_idx              NUMBER;
106190 l_acc_rev_flag                VARCHAR2(1);
106191 l_accrual_line_num            NUMBER;
106192 l_tmp_amt                     NUMBER;
106193 l_acc_rev_natural_side_code   VARCHAR2(1);
106194 
106195 l_num_entries                 NUMBER;
106196 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
106197 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
106198 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
106199 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
106200 l_recog_line_1                NUMBER;
106201 l_recog_line_2                NUMBER;
106202 
106203 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
106204 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
106205 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
106206 
106207 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
106208 
106209 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
106210 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
106211 
106212 ---------------------------------------------------------------------------------------------------------------
106213 
106214 
106215 --
106216 -- bulk performance
106217 --
106218 l_balance_type_code           VARCHAR2(1);
106219 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
106220 l_log_module                  VARCHAR2(240);
106221 
106222 --
106223 -- Upgrade strategy
106224 --
106225 l_actual_upg_option           VARCHAR2(1);
106226 l_enc_upg_option           VARCHAR2(1);
106227 
106228 --
106229 BEGIN
106230 --
106231 IF g_log_enabled THEN
106232       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_224';
106233 END IF;
106234 --
106235 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106236 
106237       trace
106238          (p_msg      => 'BEGIN of AcctLineType_224'
106239          ,p_level    => C_LEVEL_PROCEDURE
106240          ,p_module   => l_log_module);
106241 
106242 END IF;
106243 --
106244 l_component_type             := 'AMB_JLT';
106245 l_component_code             := 'PPV';
106246 l_component_type_code        := 'S';
106247 l_component_appl_id          :=  555;
106248 l_amb_context_code           := 'DEFAULT';
106249 l_entity_code                := 'INVENTORY';
106250 l_event_class_code           := 'DIR_INTERORG_RCPT';
106251 l_event_type_code            := 'DIR_INTERORG_RCPT';
106252 l_line_definition_owner_code := 'S';
106253 l_line_definition_code       := 'DIRECT_XFER_RECV';
106254 --
106255 l_balance_type_code          := 'A';
106256 l_segment                     := NULL;
106257 l_ccid                        := NULL;
106258 l_adr_transaction_coa_id      := NULL;
106259 l_adr_accounting_coa_id       := NULL;
106260 l_adr_flexfield_segment_code  := NULL;
106261 l_adr_flex_value_set_id       := NULL;
106262 l_adr_value_type_code         := NULL;
106263 l_adr_value_combination_id    := NULL;
106264 l_adr_value_segment_code      := NULL;
106265 
106266 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
106267 l_bflow_class_code           := '';    -- 4219869 Business Flow
106268 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
106269 l_budgetary_control_flag     := 'N';
106270 
106271 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
106272 l_bflow_applied_to_amt       := NULL; -- 5132302
106273 l_entered_amt_idx            := NULL;          -- 4262811
106274 l_accted_amt_idx             := NULL;          -- 4262811
106275 l_acc_rev_flag               := NULL;          -- 4262811
106276 l_accrual_line_num           := NULL;          -- 4262811
106277 l_tmp_amt                    := NULL;          -- 4262811
106278 --
106279  
106280 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
106281     l_balance_type_code <> 'B' THEN
106282 IF NVL(p_source_2,'
106283 ') =  'PPV'
106284  THEN 
106285 
106286    --
106287    XLA_AE_LINES_PKG.SetNewLine;
106288 
106289    p_balance_type_code          := l_balance_type_code;
106290    -- set the flag so later we will know whether the gain loss line needs to be created
106291    
106292    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
106293      p_actual_flag :='A';
106297    -- bulk performance
106294    END IF;
106295 
106296    --
106298    --
106299    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
106300                                       p_header_num   => 0); -- 4262811
106301    --
106302    -- set accounting line options
106303    --
106304    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
106305            p_natural_side_code          => 'D'
106306          , p_gain_or_loss_flag          => 'N'
106307          , p_gl_transfer_mode_code      => 'D'
106308          , p_acct_entry_type_code       => 'A'
106309          , p_switch_side_flag           => 'Y'
106310          , p_merge_duplicate_code       => 'W'
106311          );
106312    --
106313    l_acc_rev_natural_side_code := 'C';  -- 4262811
106314    -- 
106315    --
106316    -- set accounting line type info
106317    --
106318    xla_ae_lines_pkg.SetAcctLineType
106319       (p_component_type             => l_component_type
106320       ,p_event_type_code            => l_event_type_code
106321       ,p_line_definition_owner_code => l_line_definition_owner_code
106322       ,p_line_definition_code       => l_line_definition_code
106323       ,p_accounting_line_code       => l_component_code
106324       ,p_accounting_line_type_code  => l_component_type_code
106325       ,p_accounting_line_appl_id    => l_component_appl_id
106326       ,p_amb_context_code           => l_amb_context_code
106327       ,p_entity_code                => l_entity_code
106328       ,p_event_class_code           => l_event_class_code);
106329    --
106330    -- set accounting class
106331    --
106332    xla_ae_lines_pkg.SetAcctClass(
106333            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
106334          , p_ae_header_id           => l_ae_header_id
106335          );
106336 
106337    --
106338    -- set rounding class
106339    --
106340    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
106341                       'PURCHASE_PRICE_VARIANCE';
106342 
106343    --
106344    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
106345    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
106346    --
106347    -- bulk performance
106348    --
106349    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
106350 
106351    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
106352       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
106353 
106354    -- 4955764
106355    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106356       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
106357 
106358    -- 4458381 Public Sector Enh
106359    
106360    --
106361    -- set accounting attributes for the line type
106362    --
106363    l_entered_amt_idx := 3;
106364    l_accted_amt_idx  := 8;
106365    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
106366    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
106367    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
106368    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
106369    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
106370    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
106371    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
106372    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
106373    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
106374    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
106375    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
106376    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
106377    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
106378    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
106379    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
106380    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
106381    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
106382 
106383    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
106384    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
106385 
106386    ---------------------------------------------------------------------------------------------------------------
106387    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
106388    ---------------------------------------------------------------------------------------------------------------
106389    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
106390 
106391    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106392    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106393 
106394    IF xla_accounting_cache_pkg.GetValueChar
106395          (p_source_code         => 'LEDGER_CATEGORY_CODE'
106396          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
106397    AND l_bflow_method_code = 'PRIOR_ENTRY'
106398 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
106399    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
106400          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
106401        )
106402    THEN
106406            ,p_balance_type            => l_balance_type_code);
106403          xla_ae_lines_pkg.BflowUpgEntry
106404            (p_business_method_code    => l_bflow_method_code
106405            ,p_business_class_code     => l_bflow_class_code
106407    ELSE
106408       NULL;
106409 -- No business flow processing for business flow method of NONE.
106410    END IF;
106411 
106412    --
106413    -- call analytical criteria
106414    --
106415    
106416    --
106417    -- call description
106418    --
106419    -- No description or it is inherited.
106420    --
106421    -- call ADRs
106422    -- Bug 4922099
106423    --
106424    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106425         (NVL(l_actual_upg_option, 'N') = 'O') OR
106426         (NVL(l_enc_upg_option, 'N') = 'O')
106427       )
106428    THEN
106429    NULL;
106430    --
106431    --
106432    
106433   l_ccid := AcctDerRule_31(
106434            p_application_id           => p_application_id
106435          , p_ae_header_id             => l_ae_header_id 
106436 , p_source_1 => p_source_1
106437 , p_source_2 => p_source_2
106438          , x_transaction_coa_id       => l_adr_transaction_coa_id
106439          , x_accounting_coa_id        => l_adr_accounting_coa_id
106440          , x_value_type_code          => l_adr_value_type_code
106441          , p_side                     => 'NA'
106442    );
106443 
106444    xla_ae_lines_pkg.set_ccid(
106445     p_code_combination_id          => l_ccid
106446   , p_value_type_code              => l_adr_value_type_code
106447   , p_transaction_coa_id           => l_adr_transaction_coa_id
106448   , p_accounting_coa_id            => l_adr_accounting_coa_id
106449   , p_adr_code                     => 'PPV'
106450   , p_adr_type_code                => 'S'
106451   , p_component_type               => l_component_type
106452   , p_component_code               => l_component_code
106453   , p_component_type_code          => l_component_type_code
106454   , p_component_appl_id            => l_component_appl_id
106455   , p_amb_context_code             => l_amb_context_code
106456   , p_side                         => 'NA'
106457   );
106458 
106459 
106460    --
106461    --
106462    END IF;
106463    --
106464    -- Bug 4922099
106465    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
106466           (NVL(l_enc_upg_option, 'N') = 'O')
106467         ) AND
106468         (l_bflow_method_code = 'PRIOR_ENTRY')
106469       )
106470    THEN
106471       IF
106472       --
106473       1 = 2
106474       --
106475       THEN
106476       xla_accounting_err_pkg.build_message
106477                                     (p_appli_s_name            => 'XLA'
106478                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106479                                     ,p_token_1                 => 'LINE_NUMBER'
106480                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
106481                                     ,p_token_2                 => 'LINE_TYPE_NAME'
106482                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
106483                                                                              l_component_type
106484                                                                             ,l_component_code
106485                                                                             ,l_component_type_code
106486                                                                             ,l_component_appl_id
106487                                                                             ,l_amb_context_code
106488                                                                             ,l_entity_code
106489                                                                             ,l_event_class_code
106490                                                                            )
106491                                     ,p_token_3                 => 'OWNER'
106492                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
106493                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
106494                                                                           ,p_lookup_code    => l_component_type_code
106495                                                                          )
106496                                     ,p_token_4                 => 'PRODUCT_NAME'
106497                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
106498                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
106499                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
106500                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
106501                                     ,p_ae_header_id            =>  NULL
106502                                        );
106503 
106504         IF (C_LEVEL_ERROR>= g_log_level) THEN
106505                  trace
106506                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106507                       ,p_level    => C_LEVEL_ERROR
106508                       ,p_module   => l_log_module);
106509         END IF;
106510       END IF;
106511    END IF;
106512    --
106513    --
106517    -- Prior Entry.  Currently, the following code is always generated.
106514    ------------------------------------------------------------------------------------------------
106515    -- 4219869 Business Flow
106516    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
106518    ------------------------------------------------------------------------------------------------
106519    XLA_AE_LINES_PKG.ValidateCurrentLine;
106520 
106521    ------------------------------------------------------------------------------------
106522    -- 4219869 Business Flow
106523    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
106524    ------------------------------------------------------------------------------------
106525    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106526 
106527    ----------------------------------------------------------------------------------
106528    -- 4219869 Business Flow
106529    -- Update journal entry status -- Need to generate this within IF <condition>
106530    ----------------------------------------------------------------------------------
106531    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106532          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
106533          ,p_balance_type_code => l_balance_type_code
106534          );
106535 
106536    -------------------------------------------------------------------------------------------
106537    -- 4262811 - Generate the Accrual Reversal lines
106538    -------------------------------------------------------------------------------------------
106539    BEGIN
106540       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
106541                               (g_array_event(p_event_id).array_value_num('header_index'));
106542       IF l_acc_rev_flag IS NULL THEN
106543          l_acc_rev_flag := 'N';
106544       END IF;
106545    EXCEPTION
106546       WHEN OTHERS THEN
106547          l_acc_rev_flag := 'N';
106548    END;
106549    --
106550    IF (l_acc_rev_flag = 'Y') THEN
106551 
106552        -- 4645092  ------------------------------------------------------------------------------
106553        -- To allow MPA report to determine if it should generate report process
106554        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
106555        ------------------------------------------------------------------------------------------
106556 
106557        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
106558        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
106559    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
106560    -- call ADRs
106561    -- Bug 4922099
106562    --
106563    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106564         (NVL(l_actual_upg_option, 'N') = 'O') OR
106565         (NVL(l_enc_upg_option, 'N') = 'O')
106566       )
106567    THEN
106568    NULL;
106569    --
106570    --
106571    
106572   l_ccid := AcctDerRule_31(
106573            p_application_id           => p_application_id
106574          , p_ae_header_id             => l_ae_header_id 
106575 , p_source_1 => p_source_1
106576 , p_source_2 => p_source_2
106577          , x_transaction_coa_id       => l_adr_transaction_coa_id
106578          , x_accounting_coa_id        => l_adr_accounting_coa_id
106579          , x_value_type_code          => l_adr_value_type_code
106580          , p_side                     => 'NA'
106581    );
106582 
106583    xla_ae_lines_pkg.set_ccid(
106584     p_code_combination_id          => l_ccid
106585   , p_value_type_code              => l_adr_value_type_code
106586   , p_transaction_coa_id           => l_adr_transaction_coa_id
106587   , p_accounting_coa_id            => l_adr_accounting_coa_id
106588   , p_adr_code                     => 'PPV'
106589   , p_adr_type_code                => 'S'
106590   , p_component_type               => l_component_type
106591   , p_component_code               => l_component_code
106592   , p_component_type_code          => l_component_type_code
106593   , p_component_appl_id            => l_component_appl_id
106594   , p_amb_context_code             => l_amb_context_code
106595   , p_side                         => 'NA'
106596   );
106597 
106598 
106599    --
106600    --
106601    END IF;
106602 
106603        --
106604        -- Update the line information that should be overwritten
106605        --
106606        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
106607                                          p_header_num   => 1);
106608        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
106609 
106610        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
106611 
106612        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
106613           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
106614        END IF;
106615 
106616       --
106617       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
106618       --
106619       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
106620           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
106621       ELSE
106622           ---------------------------------------------------------------------------------------------------
106623           -- 4262811a Switch Sign
106624           ---------------------------------------------------------------------------------------------------
106628           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
106625           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
106626           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
106627                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106629                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106630           -- 5132302
106631           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
106632                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106633 
106634       END IF;
106635 
106636       -- 4955764
106637       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106638       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
106639 
106640 
106641       XLA_AE_LINES_PKG.ValidateCurrentLine;
106642       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106643 
106644       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106645                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
106646                ,p_balance_type_code => l_balance_type_code);
106647 
106648    END IF;
106649 
106650    -----------------------------------------------------------------------------------------
106651    -- 4262811 Multiperiod Accounting
106652    -----------------------------------------------------------------------------------------
106653      -- No MPA option is assigned.
106654 
106655 
106656 END IF;
106657 END IF;
106658 --
106659 
106660 --
106661 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106662    trace
106663       (p_msg      => 'END of AcctLineType_224'
106664       ,p_level    => C_LEVEL_PROCEDURE
106665       ,p_module   => l_log_module);
106666 END IF;
106667 --
106668 EXCEPTION
106669   WHEN xla_exceptions_pkg.application_exception THEN
106670       RAISE;
106671   WHEN OTHERS THEN
106672        xla_exceptions_pkg.raise_message
106673            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_224');
106674 END AcctLineType_224;
106675 --
106676 
106677 ---------------------------------------
106678 --
106679 -- PRIVATE FUNCTION
106680 --         AcctLineType_225
106681 --
106682 ---------------------------------------
106683 PROCEDURE AcctLineType_225 (
106684   p_application_id        IN NUMBER
106685  ,p_event_id              IN NUMBER
106686  ,p_calculate_acctd_flag  IN VARCHAR2
106687  ,p_calculate_g_l_flag    IN VARCHAR2
106688  ,p_actual_flag           IN OUT VARCHAR2
106689  ,p_balance_type_code     OUT VARCHAR2
106690  ,p_gain_or_loss_ref      OUT VARCHAR2
106691  
106692 --Transaction Account
106693  , p_source_1            IN NUMBER
106694 --Journal Line Type
106695  , p_source_2            IN VARCHAR2
106696 --Entered Amount
106697  , p_source_3            IN NUMBER
106698 --First Distribution Identifier
106699  , p_source_5            IN NUMBER
106700 --Distribution Type
106701  , p_source_6            IN VARCHAR2
106702 --Currency Code
106703  , p_source_7            IN VARCHAR2
106704 --Currency Conversion Date
106705  , p_source_8            IN DATE
106706 --Currency Conversion Rate
106707  , p_source_9            IN NUMBER
106708 --Currency Conversion Type
106709  , p_source_10            IN VARCHAR2
106710 --Accounted Amount
106711  , p_source_11            IN NUMBER
106712 )
106713 IS
106714 
106715 l_component_type              VARCHAR2(80);
106716 l_component_code              VARCHAR2(30);
106717 l_component_type_code         VARCHAR2(1);
106718 l_component_appl_id           INTEGER;
106719 l_amb_context_code            VARCHAR2(30);
106720 l_entity_code                 VARCHAR2(30);
106721 l_event_class_code            VARCHAR2(30);
106722 l_ae_header_id                NUMBER;
106723 l_event_type_code             VARCHAR2(30);
106724 l_line_definition_code        VARCHAR2(30);
106725 l_line_definition_owner_code  VARCHAR2(1);
106726 --
106727 -- adr variables
106728 l_segment                     VARCHAR2(30);
106729 l_ccid                        NUMBER;
106730 l_adr_transaction_coa_id      NUMBER;
106731 l_adr_accounting_coa_id       NUMBER;
106732 l_adr_flexfield_segment_code  VARCHAR2(30);
106733 l_adr_flex_value_set_id       NUMBER;
106734 l_adr_value_type_code         VARCHAR2(30);
106735 l_adr_value_combination_id    NUMBER;
106736 l_adr_value_segment_code      VARCHAR2(30);
106737 
106738 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
106739 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
106740 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
106741 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
106742 
106743 -- 4262811 Variables ------------------------------------------------------------------------------------------
106744 l_entered_amt_idx             NUMBER;
106745 l_accted_amt_idx              NUMBER;
106746 l_acc_rev_flag                VARCHAR2(1);
106747 l_accrual_line_num            NUMBER;
106748 l_tmp_amt                     NUMBER;
106749 l_acc_rev_natural_side_code   VARCHAR2(1);
106750 
106751 l_num_entries                 NUMBER;
106752 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
106753 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
106757 l_recog_line_2                NUMBER;
106754 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
106755 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
106756 l_recog_line_1                NUMBER;
106758 
106759 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
106760 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
106761 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
106762 
106763 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
106764 
106765 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
106766 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
106767 
106768 ---------------------------------------------------------------------------------------------------------------
106769 
106770 
106771 --
106772 -- bulk performance
106773 --
106774 l_balance_type_code           VARCHAR2(1);
106775 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
106776 l_log_module                  VARCHAR2(240);
106777 
106778 --
106779 -- Upgrade strategy
106780 --
106781 l_actual_upg_option           VARCHAR2(1);
106782 l_enc_upg_option           VARCHAR2(1);
106783 
106784 --
106785 BEGIN
106786 --
106787 IF g_log_enabled THEN
106788       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_225';
106789 END IF;
106790 --
106791 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106792 
106793       trace
106794          (p_msg      => 'BEGIN of AcctLineType_225'
106795          ,p_level    => C_LEVEL_PROCEDURE
106796          ,p_module   => l_log_module);
106797 
106798 END IF;
106799 --
106800 l_component_type             := 'AMB_JLT';
106801 l_component_code             := 'PPV';
106802 l_component_type_code        := 'S';
106803 l_component_appl_id          :=  555;
106804 l_amb_context_code           := 'DEFAULT';
106805 l_entity_code                := 'PURCHASING';
106806 l_event_class_code           := 'DELIVER';
106807 l_event_type_code            := 'XFER_TO_REGULAR';
106808 l_line_definition_owner_code := 'S';
106809 l_line_definition_code       := 'XFER_TO_REG';
106810 --
106811 l_balance_type_code          := 'A';
106812 l_segment                     := NULL;
106813 l_ccid                        := NULL;
106814 l_adr_transaction_coa_id      := NULL;
106815 l_adr_accounting_coa_id       := NULL;
106816 l_adr_flexfield_segment_code  := NULL;
106817 l_adr_flex_value_set_id       := NULL;
106818 l_adr_value_type_code         := NULL;
106819 l_adr_value_combination_id    := NULL;
106820 l_adr_value_segment_code      := NULL;
106821 
106822 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
106823 l_bflow_class_code           := '';    -- 4219869 Business Flow
106824 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
106825 l_budgetary_control_flag     := 'N';
106826 
106827 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
106828 l_bflow_applied_to_amt       := NULL; -- 5132302
106829 l_entered_amt_idx            := NULL;          -- 4262811
106830 l_accted_amt_idx             := NULL;          -- 4262811
106831 l_acc_rev_flag               := NULL;          -- 4262811
106832 l_accrual_line_num           := NULL;          -- 4262811
106833 l_tmp_amt                    := NULL;          -- 4262811
106834 --
106835  
106836 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
106837     l_balance_type_code <> 'B' THEN
106838 IF NVL(p_source_2,'
106839 ') =  'PPV'
106840  THEN 
106841 
106842    --
106843    XLA_AE_LINES_PKG.SetNewLine;
106844 
106845    p_balance_type_code          := l_balance_type_code;
106846    -- set the flag so later we will know whether the gain loss line needs to be created
106847    
106848    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
106849      p_actual_flag :='A';
106850    END IF;
106851 
106852    --
106853    -- bulk performance
106854    --
106855    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
106856                                       p_header_num   => 0); -- 4262811
106857    --
106858    -- set accounting line options
106859    --
106860    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
106861            p_natural_side_code          => 'D'
106862          , p_gain_or_loss_flag          => 'N'
106863          , p_gl_transfer_mode_code      => 'D'
106864          , p_acct_entry_type_code       => 'A'
106865          , p_switch_side_flag           => 'Y'
106866          , p_merge_duplicate_code       => 'W'
106867          );
106868    --
106869    l_acc_rev_natural_side_code := 'C';  -- 4262811
106870    -- 
106871    --
106872    -- set accounting line type info
106873    --
106874    xla_ae_lines_pkg.SetAcctLineType
106875       (p_component_type             => l_component_type
106876       ,p_event_type_code            => l_event_type_code
106877       ,p_line_definition_owner_code => l_line_definition_owner_code
106878       ,p_line_definition_code       => l_line_definition_code
106879       ,p_accounting_line_code       => l_component_code
106880       ,p_accounting_line_type_code  => l_component_type_code
106881       ,p_accounting_line_appl_id    => l_component_appl_id
106882       ,p_amb_context_code           => l_amb_context_code
106883       ,p_entity_code                => l_entity_code
106884       ,p_event_class_code           => l_event_class_code);
106885    --
106889            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
106886    -- set accounting class
106887    --
106888    xla_ae_lines_pkg.SetAcctClass(
106890          , p_ae_header_id           => l_ae_header_id
106891          );
106892 
106893    --
106894    -- set rounding class
106895    --
106896    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
106897                       'PURCHASE_PRICE_VARIANCE';
106898 
106899    --
106900    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
106901    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
106902    --
106903    -- bulk performance
106904    --
106905    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
106906 
106907    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
106908       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
106909 
106910    -- 4955764
106911    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106912       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
106913 
106914    -- 4458381 Public Sector Enh
106915    
106916    --
106917    -- set accounting attributes for the line type
106918    --
106919    l_entered_amt_idx := 3;
106920    l_accted_amt_idx  := 8;
106921    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
106922    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
106923    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
106924    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
106925    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
106926    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
106927    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
106928    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
106929    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
106930    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
106931    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
106932    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
106933    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
106934    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
106935    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
106936    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
106937    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
106938 
106939    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
106940    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
106941 
106942    ---------------------------------------------------------------------------------------------------------------
106943    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
106944    ---------------------------------------------------------------------------------------------------------------
106945    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
106946 
106947    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106948    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106949 
106950    IF xla_accounting_cache_pkg.GetValueChar
106951          (p_source_code         => 'LEDGER_CATEGORY_CODE'
106952          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
106953    AND l_bflow_method_code = 'PRIOR_ENTRY'
106954 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
106955    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
106956          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
106957        )
106958    THEN
106959          xla_ae_lines_pkg.BflowUpgEntry
106960            (p_business_method_code    => l_bflow_method_code
106961            ,p_business_class_code     => l_bflow_class_code
106962            ,p_balance_type            => l_balance_type_code);
106963    ELSE
106964       NULL;
106965 -- No business flow processing for business flow method of NONE.
106966    END IF;
106967 
106968    --
106969    -- call analytical criteria
106970    --
106971    
106972    --
106973    -- call description
106974    --
106975    -- No description or it is inherited.
106976    --
106977    -- call ADRs
106978    -- Bug 4922099
106979    --
106980    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106981         (NVL(l_actual_upg_option, 'N') = 'O') OR
106982         (NVL(l_enc_upg_option, 'N') = 'O')
106983       )
106984    THEN
106985    NULL;
106986    --
106987    --
106988    
106989   l_ccid := AcctDerRule_31(
106990            p_application_id           => p_application_id
106991          , p_ae_header_id             => l_ae_header_id 
106992 , p_source_1 => p_source_1
106993 , p_source_2 => p_source_2
106994          , x_transaction_coa_id       => l_adr_transaction_coa_id
106995          , x_accounting_coa_id        => l_adr_accounting_coa_id
106996          , x_value_type_code          => l_adr_value_type_code
106997          , p_side                     => 'NA'
106998    );
106999 
107000    xla_ae_lines_pkg.set_ccid(
107001     p_code_combination_id          => l_ccid
107002   , p_value_type_code              => l_adr_value_type_code
107006   , p_adr_type_code                => 'S'
107003   , p_transaction_coa_id           => l_adr_transaction_coa_id
107004   , p_accounting_coa_id            => l_adr_accounting_coa_id
107005   , p_adr_code                     => 'PPV'
107007   , p_component_type               => l_component_type
107008   , p_component_code               => l_component_code
107009   , p_component_type_code          => l_component_type_code
107010   , p_component_appl_id            => l_component_appl_id
107011   , p_amb_context_code             => l_amb_context_code
107012   , p_side                         => 'NA'
107013   );
107014 
107015 
107016    --
107017    --
107018    END IF;
107019    --
107020    -- Bug 4922099
107021    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
107022           (NVL(l_enc_upg_option, 'N') = 'O')
107023         ) AND
107024         (l_bflow_method_code = 'PRIOR_ENTRY')
107025       )
107026    THEN
107027       IF
107028       --
107029       1 = 2
107030       --
107031       THEN
107032       xla_accounting_err_pkg.build_message
107033                                     (p_appli_s_name            => 'XLA'
107034                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
107035                                     ,p_token_1                 => 'LINE_NUMBER'
107036                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
107037                                     ,p_token_2                 => 'LINE_TYPE_NAME'
107038                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
107039                                                                              l_component_type
107040                                                                             ,l_component_code
107041                                                                             ,l_component_type_code
107042                                                                             ,l_component_appl_id
107043                                                                             ,l_amb_context_code
107044                                                                             ,l_entity_code
107045                                                                             ,l_event_class_code
107046                                                                            )
107047                                     ,p_token_3                 => 'OWNER'
107048                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
107049                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
107050                                                                           ,p_lookup_code    => l_component_type_code
107051                                                                          )
107052                                     ,p_token_4                 => 'PRODUCT_NAME'
107053                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
107054                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
107055                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
107056                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
107057                                     ,p_ae_header_id            =>  NULL
107058                                        );
107059 
107060         IF (C_LEVEL_ERROR>= g_log_level) THEN
107061                  trace
107062                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
107063                       ,p_level    => C_LEVEL_ERROR
107064                       ,p_module   => l_log_module);
107065         END IF;
107066       END IF;
107067    END IF;
107068    --
107069    --
107070    ------------------------------------------------------------------------------------------------
107071    -- 4219869 Business Flow
107072    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
107073    -- Prior Entry.  Currently, the following code is always generated.
107074    ------------------------------------------------------------------------------------------------
107075    XLA_AE_LINES_PKG.ValidateCurrentLine;
107076 
107077    ------------------------------------------------------------------------------------
107078    -- 4219869 Business Flow
107079    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
107080    ------------------------------------------------------------------------------------
107081    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107082 
107083    ----------------------------------------------------------------------------------
107084    -- 4219869 Business Flow
107085    -- Update journal entry status -- Need to generate this within IF <condition>
107086    ----------------------------------------------------------------------------------
107087    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107088          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
107089          ,p_balance_type_code => l_balance_type_code
107090          );
107091 
107092    -------------------------------------------------------------------------------------------
107093    -- 4262811 - Generate the Accrual Reversal lines
107094    -------------------------------------------------------------------------------------------
107095    BEGIN
107096       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
107100       END IF;
107097                               (g_array_event(p_event_id).array_value_num('header_index'));
107098       IF l_acc_rev_flag IS NULL THEN
107099          l_acc_rev_flag := 'N';
107101    EXCEPTION
107102       WHEN OTHERS THEN
107103          l_acc_rev_flag := 'N';
107104    END;
107105    --
107106    IF (l_acc_rev_flag = 'Y') THEN
107107 
107108        -- 4645092  ------------------------------------------------------------------------------
107109        -- To allow MPA report to determine if it should generate report process
107110        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
107111        ------------------------------------------------------------------------------------------
107112 
107113        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
107114        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
107115    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
107116    -- call ADRs
107117    -- Bug 4922099
107118    --
107119    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
107120         (NVL(l_actual_upg_option, 'N') = 'O') OR
107121         (NVL(l_enc_upg_option, 'N') = 'O')
107122       )
107123    THEN
107124    NULL;
107125    --
107126    --
107127    
107128   l_ccid := AcctDerRule_31(
107129            p_application_id           => p_application_id
107130          , p_ae_header_id             => l_ae_header_id 
107131 , p_source_1 => p_source_1
107132 , p_source_2 => p_source_2
107133          , x_transaction_coa_id       => l_adr_transaction_coa_id
107134          , x_accounting_coa_id        => l_adr_accounting_coa_id
107135          , x_value_type_code          => l_adr_value_type_code
107136          , p_side                     => 'NA'
107137    );
107138 
107139    xla_ae_lines_pkg.set_ccid(
107140     p_code_combination_id          => l_ccid
107141   , p_value_type_code              => l_adr_value_type_code
107142   , p_transaction_coa_id           => l_adr_transaction_coa_id
107143   , p_accounting_coa_id            => l_adr_accounting_coa_id
107144   , p_adr_code                     => 'PPV'
107145   , p_adr_type_code                => 'S'
107146   , p_component_type               => l_component_type
107147   , p_component_code               => l_component_code
107148   , p_component_type_code          => l_component_type_code
107149   , p_component_appl_id            => l_component_appl_id
107150   , p_amb_context_code             => l_amb_context_code
107151   , p_side                         => 'NA'
107152   );
107153 
107154 
107155    --
107156    --
107157    END IF;
107158 
107159        --
107160        -- Update the line information that should be overwritten
107161        --
107162        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
107163                                          p_header_num   => 1);
107164        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
107165 
107166        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
107167 
107168        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
107169           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
107170        END IF;
107171 
107172       --
107173       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
107174       --
107175       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
107176           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
107177       ELSE
107178           ---------------------------------------------------------------------------------------------------
107179           -- 4262811a Switch Sign
107180           ---------------------------------------------------------------------------------------------------
107181           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
107182           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107183                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107184           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107185                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107186           -- 5132302
107187           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
107188                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107189 
107190       END IF;
107191 
107192       -- 4955764
107193       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
107194       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
107195 
107196 
107197       XLA_AE_LINES_PKG.ValidateCurrentLine;
107198       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107199 
107200       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107201                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
107202                ,p_balance_type_code => l_balance_type_code);
107203 
107204    END IF;
107205 
107206    -----------------------------------------------------------------------------------------
107207    -- 4262811 Multiperiod Accounting
107208    -----------------------------------------------------------------------------------------
107209      -- No MPA option is assigned.
107210 
107211 
107215 
107212 END IF;
107213 END IF;
107214 --
107216 --
107217 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107218    trace
107219       (p_msg      => 'END of AcctLineType_225'
107220       ,p_level    => C_LEVEL_PROCEDURE
107221       ,p_module   => l_log_module);
107222 END IF;
107223 --
107224 EXCEPTION
107225   WHEN xla_exceptions_pkg.application_exception THEN
107226       RAISE;
107227   WHEN OTHERS THEN
107228        xla_exceptions_pkg.raise_message
107229            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_225');
107230 END AcctLineType_225;
107231 --
107232 
107233 ---------------------------------------
107234 --
107235 -- PRIVATE FUNCTION
107236 --         AcctLineType_226
107237 --
107238 ---------------------------------------
107239 PROCEDURE AcctLineType_226 (
107240   p_application_id        IN NUMBER
107241  ,p_event_id              IN NUMBER
107242  ,p_calculate_acctd_flag  IN VARCHAR2
107243  ,p_calculate_g_l_flag    IN VARCHAR2
107244  ,p_actual_flag           IN OUT VARCHAR2
107245  ,p_balance_type_code     OUT VARCHAR2
107246  ,p_gain_or_loss_ref      OUT VARCHAR2
107247  
107248 --Transaction Account
107249  , p_source_1            IN NUMBER
107250 --Journal Line Type
107251  , p_source_2            IN VARCHAR2
107252 --Entered Amount
107253  , p_source_3            IN NUMBER
107254 --First Distribution Identifier
107255  , p_source_5            IN NUMBER
107256 --Distribution Type
107257  , p_source_6            IN VARCHAR2
107258 --Currency Code
107259  , p_source_7            IN VARCHAR2
107260 --Currency Conversion Date
107261  , p_source_8            IN DATE
107262 --Currency Conversion Rate
107263  , p_source_9            IN NUMBER
107264 --Currency Conversion Type
107265  , p_source_10            IN VARCHAR2
107266 --Accounted Amount
107267  , p_source_11            IN NUMBER
107268 )
107269 IS
107270 
107271 l_component_type              VARCHAR2(80);
107272 l_component_code              VARCHAR2(30);
107273 l_component_type_code         VARCHAR2(1);
107274 l_component_appl_id           INTEGER;
107275 l_amb_context_code            VARCHAR2(30);
107276 l_entity_code                 VARCHAR2(30);
107277 l_event_class_code            VARCHAR2(30);
107278 l_ae_header_id                NUMBER;
107279 l_event_type_code             VARCHAR2(30);
107280 l_line_definition_code        VARCHAR2(30);
107281 l_line_definition_owner_code  VARCHAR2(1);
107282 --
107283 -- adr variables
107284 l_segment                     VARCHAR2(30);
107285 l_ccid                        NUMBER;
107286 l_adr_transaction_coa_id      NUMBER;
107287 l_adr_accounting_coa_id       NUMBER;
107288 l_adr_flexfield_segment_code  VARCHAR2(30);
107289 l_adr_flex_value_set_id       NUMBER;
107290 l_adr_value_type_code         VARCHAR2(30);
107291 l_adr_value_combination_id    NUMBER;
107292 l_adr_value_segment_code      VARCHAR2(30);
107293 
107294 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
107295 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
107296 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
107297 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
107298 
107299 -- 4262811 Variables ------------------------------------------------------------------------------------------
107300 l_entered_amt_idx             NUMBER;
107301 l_accted_amt_idx              NUMBER;
107302 l_acc_rev_flag                VARCHAR2(1);
107303 l_accrual_line_num            NUMBER;
107304 l_tmp_amt                     NUMBER;
107305 l_acc_rev_natural_side_code   VARCHAR2(1);
107306 
107307 l_num_entries                 NUMBER;
107308 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
107309 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
107310 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
107311 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
107312 l_recog_line_1                NUMBER;
107313 l_recog_line_2                NUMBER;
107314 
107315 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
107316 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
107317 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
107318 
107319 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
107320 
107321 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
107322 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
107323 
107324 ---------------------------------------------------------------------------------------------------------------
107325 
107326 
107327 --
107328 -- bulk performance
107329 --
107330 l_balance_type_code           VARCHAR2(1);
107331 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
107332 l_log_module                  VARCHAR2(240);
107333 
107334 --
107335 -- Upgrade strategy
107336 --
107337 l_actual_upg_option           VARCHAR2(1);
107338 l_enc_upg_option           VARCHAR2(1);
107339 
107340 --
107341 BEGIN
107342 --
107343 IF g_log_enabled THEN
107344       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_226';
107345 END IF;
107346 --
107347 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107348 
107349       trace
107350          (p_msg      => 'BEGIN of AcctLineType_226'
107351          ,p_level    => C_LEVEL_PROCEDURE
107352          ,p_module   => l_log_module);
107356 l_component_type             := 'AMB_JLT';
107353 
107354 END IF;
107355 --
107357 l_component_code             := 'PPV';
107358 l_component_type_code        := 'S';
107359 l_component_appl_id          :=  555;
107360 l_amb_context_code           := 'DEFAULT';
107361 l_entity_code                := 'INVENTORY';
107362 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
107363 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
107364 l_line_definition_owner_code := 'S';
107365 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
107366 --
107367 l_balance_type_code          := 'A';
107368 l_segment                     := NULL;
107369 l_ccid                        := NULL;
107370 l_adr_transaction_coa_id      := NULL;
107371 l_adr_accounting_coa_id       := NULL;
107372 l_adr_flexfield_segment_code  := NULL;
107373 l_adr_flex_value_set_id       := NULL;
107374 l_adr_value_type_code         := NULL;
107375 l_adr_value_combination_id    := NULL;
107376 l_adr_value_segment_code      := NULL;
107377 
107378 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
107379 l_bflow_class_code           := '';    -- 4219869 Business Flow
107380 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
107381 l_budgetary_control_flag     := 'N';
107382 
107383 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
107384 l_bflow_applied_to_amt       := NULL; -- 5132302
107385 l_entered_amt_idx            := NULL;          -- 4262811
107386 l_accted_amt_idx             := NULL;          -- 4262811
107387 l_acc_rev_flag               := NULL;          -- 4262811
107388 l_accrual_line_num           := NULL;          -- 4262811
107389 l_tmp_amt                    := NULL;          -- 4262811
107390 --
107391  
107392 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
107393     l_balance_type_code <> 'B' THEN
107394 IF NVL(p_source_2,'
107395 ') =  'PPV'
107396  THEN 
107397 
107398    --
107399    XLA_AE_LINES_PKG.SetNewLine;
107400 
107401    p_balance_type_code          := l_balance_type_code;
107402    -- set the flag so later we will know whether the gain loss line needs to be created
107403    
107404    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
107405      p_actual_flag :='A';
107406    END IF;
107407 
107408    --
107409    -- bulk performance
107410    --
107411    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
107412                                       p_header_num   => 0); -- 4262811
107413    --
107414    -- set accounting line options
107415    --
107416    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
107417            p_natural_side_code          => 'D'
107418          , p_gain_or_loss_flag          => 'N'
107419          , p_gl_transfer_mode_code      => 'D'
107420          , p_acct_entry_type_code       => 'A'
107421          , p_switch_side_flag           => 'Y'
107422          , p_merge_duplicate_code       => 'W'
107423          );
107424    --
107425    l_acc_rev_natural_side_code := 'C';  -- 4262811
107426    -- 
107427    --
107428    -- set accounting line type info
107429    --
107430    xla_ae_lines_pkg.SetAcctLineType
107431       (p_component_type             => l_component_type
107432       ,p_event_type_code            => l_event_type_code
107433       ,p_line_definition_owner_code => l_line_definition_owner_code
107434       ,p_line_definition_code       => l_line_definition_code
107435       ,p_accounting_line_code       => l_component_code
107436       ,p_accounting_line_type_code  => l_component_type_code
107437       ,p_accounting_line_appl_id    => l_component_appl_id
107438       ,p_amb_context_code           => l_amb_context_code
107439       ,p_entity_code                => l_entity_code
107440       ,p_event_class_code           => l_event_class_code);
107441    --
107442    -- set accounting class
107443    --
107444    xla_ae_lines_pkg.SetAcctClass(
107445            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
107446          , p_ae_header_id           => l_ae_header_id
107447          );
107448 
107449    --
107450    -- set rounding class
107451    --
107452    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
107453                       'PURCHASE_PRICE_VARIANCE';
107454 
107455    --
107456    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
107457    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
107458    --
107459    -- bulk performance
107460    --
107461    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
107462 
107463    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
107464       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
107465 
107466    -- 4955764
107467    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
107468       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
107469 
107470    -- 4458381 Public Sector Enh
107471    
107472    --
107473    -- set accounting attributes for the line type
107474    --
107475    l_entered_amt_idx := 3;
107476    l_accted_amt_idx  := 8;
107477    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
107478    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
107482    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
107479    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
107480    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
107481    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
107483    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
107484    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
107485    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
107486    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
107487    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
107488    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
107489    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
107490    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
107491    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
107492    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
107493    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
107494 
107495    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
107496    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
107497 
107498    ---------------------------------------------------------------------------------------------------------------
107499    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
107500    ---------------------------------------------------------------------------------------------------------------
107501    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
107502 
107503    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
107504    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
107505 
107506    IF xla_accounting_cache_pkg.GetValueChar
107507          (p_source_code         => 'LEDGER_CATEGORY_CODE'
107508          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
107509    AND l_bflow_method_code = 'PRIOR_ENTRY'
107510 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
107511    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
107512          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
107513        )
107514    THEN
107515          xla_ae_lines_pkg.BflowUpgEntry
107516            (p_business_method_code    => l_bflow_method_code
107517            ,p_business_class_code     => l_bflow_class_code
107518            ,p_balance_type            => l_balance_type_code);
107519    ELSE
107520       NULL;
107521 -- No business flow processing for business flow method of NONE.
107522    END IF;
107523 
107524    --
107525    -- call analytical criteria
107526    --
107527    
107528    --
107529    -- call description
107530    --
107531    -- No description or it is inherited.
107532    --
107533    -- call ADRs
107534    -- Bug 4922099
107535    --
107536    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
107537         (NVL(l_actual_upg_option, 'N') = 'O') OR
107538         (NVL(l_enc_upg_option, 'N') = 'O')
107539       )
107540    THEN
107541    NULL;
107542    --
107543    --
107544    
107545   l_ccid := AcctDerRule_31(
107546            p_application_id           => p_application_id
107547          , p_ae_header_id             => l_ae_header_id 
107548 , p_source_1 => p_source_1
107549 , p_source_2 => p_source_2
107550          , x_transaction_coa_id       => l_adr_transaction_coa_id
107551          , x_accounting_coa_id        => l_adr_accounting_coa_id
107552          , x_value_type_code          => l_adr_value_type_code
107553          , p_side                     => 'NA'
107554    );
107555 
107556    xla_ae_lines_pkg.set_ccid(
107557     p_code_combination_id          => l_ccid
107558   , p_value_type_code              => l_adr_value_type_code
107559   , p_transaction_coa_id           => l_adr_transaction_coa_id
107560   , p_accounting_coa_id            => l_adr_accounting_coa_id
107561   , p_adr_code                     => 'PPV'
107562   , p_adr_type_code                => 'S'
107563   , p_component_type               => l_component_type
107564   , p_component_code               => l_component_code
107565   , p_component_type_code          => l_component_type_code
107566   , p_component_appl_id            => l_component_appl_id
107567   , p_amb_context_code             => l_amb_context_code
107568   , p_side                         => 'NA'
107569   );
107570 
107571 
107572    --
107573    --
107574    END IF;
107575    --
107576    -- Bug 4922099
107577    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
107578           (NVL(l_enc_upg_option, 'N') = 'O')
107579         ) AND
107580         (l_bflow_method_code = 'PRIOR_ENTRY')
107581       )
107582    THEN
107583       IF
107584       --
107585       1 = 2
107586       --
107587       THEN
107588       xla_accounting_err_pkg.build_message
107589                                     (p_appli_s_name            => 'XLA'
107590                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
107591                                     ,p_token_1                 => 'LINE_NUMBER'
107592                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
107593                                     ,p_token_2                 => 'LINE_TYPE_NAME'
107594                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
107598                                                                             ,l_component_appl_id
107595                                                                              l_component_type
107596                                                                             ,l_component_code
107597                                                                             ,l_component_type_code
107599                                                                             ,l_amb_context_code
107600                                                                             ,l_entity_code
107601                                                                             ,l_event_class_code
107602                                                                            )
107603                                     ,p_token_3                 => 'OWNER'
107604                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
107605                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
107606                                                                           ,p_lookup_code    => l_component_type_code
107607                                                                          )
107608                                     ,p_token_4                 => 'PRODUCT_NAME'
107609                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
107610                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
107611                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
107612                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
107613                                     ,p_ae_header_id            =>  NULL
107614                                        );
107615 
107616         IF (C_LEVEL_ERROR>= g_log_level) THEN
107617                  trace
107618                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
107619                       ,p_level    => C_LEVEL_ERROR
107620                       ,p_module   => l_log_module);
107621         END IF;
107622       END IF;
107623    END IF;
107624    --
107625    --
107626    ------------------------------------------------------------------------------------------------
107627    -- 4219869 Business Flow
107628    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
107629    -- Prior Entry.  Currently, the following code is always generated.
107630    ------------------------------------------------------------------------------------------------
107631    XLA_AE_LINES_PKG.ValidateCurrentLine;
107632 
107633    ------------------------------------------------------------------------------------
107634    -- 4219869 Business Flow
107635    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
107636    ------------------------------------------------------------------------------------
107637    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107638 
107639    ----------------------------------------------------------------------------------
107640    -- 4219869 Business Flow
107641    -- Update journal entry status -- Need to generate this within IF <condition>
107642    ----------------------------------------------------------------------------------
107643    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107644          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
107645          ,p_balance_type_code => l_balance_type_code
107646          );
107647 
107648    -------------------------------------------------------------------------------------------
107649    -- 4262811 - Generate the Accrual Reversal lines
107650    -------------------------------------------------------------------------------------------
107651    BEGIN
107652       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
107653                               (g_array_event(p_event_id).array_value_num('header_index'));
107654       IF l_acc_rev_flag IS NULL THEN
107655          l_acc_rev_flag := 'N';
107656       END IF;
107657    EXCEPTION
107658       WHEN OTHERS THEN
107659          l_acc_rev_flag := 'N';
107660    END;
107661    --
107662    IF (l_acc_rev_flag = 'Y') THEN
107663 
107664        -- 4645092  ------------------------------------------------------------------------------
107665        -- To allow MPA report to determine if it should generate report process
107666        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
107667        ------------------------------------------------------------------------------------------
107668 
107669        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
107670        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
107671    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
107672    -- call ADRs
107673    -- Bug 4922099
107674    --
107675    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
107676         (NVL(l_actual_upg_option, 'N') = 'O') OR
107677         (NVL(l_enc_upg_option, 'N') = 'O')
107678       )
107679    THEN
107680    NULL;
107681    --
107682    --
107683    
107684   l_ccid := AcctDerRule_31(
107685            p_application_id           => p_application_id
107686          , p_ae_header_id             => l_ae_header_id 
107687 , p_source_1 => p_source_1
107688 , p_source_2 => p_source_2
107689          , x_transaction_coa_id       => l_adr_transaction_coa_id
107690          , x_accounting_coa_id        => l_adr_accounting_coa_id
107691          , x_value_type_code          => l_adr_value_type_code
107692          , p_side                     => 'NA'
107696     p_code_combination_id          => l_ccid
107693    );
107694 
107695    xla_ae_lines_pkg.set_ccid(
107697   , p_value_type_code              => l_adr_value_type_code
107698   , p_transaction_coa_id           => l_adr_transaction_coa_id
107699   , p_accounting_coa_id            => l_adr_accounting_coa_id
107700   , p_adr_code                     => 'PPV'
107701   , p_adr_type_code                => 'S'
107702   , p_component_type               => l_component_type
107703   , p_component_code               => l_component_code
107704   , p_component_type_code          => l_component_type_code
107705   , p_component_appl_id            => l_component_appl_id
107706   , p_amb_context_code             => l_amb_context_code
107707   , p_side                         => 'NA'
107708   );
107709 
107710 
107711    --
107712    --
107713    END IF;
107714 
107715        --
107716        -- Update the line information that should be overwritten
107717        --
107718        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
107719                                          p_header_num   => 1);
107720        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
107721 
107722        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
107723 
107724        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
107725           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
107726        END IF;
107727 
107728       --
107729       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
107730       --
107731       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
107732           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
107733       ELSE
107734           ---------------------------------------------------------------------------------------------------
107735           -- 4262811a Switch Sign
107736           ---------------------------------------------------------------------------------------------------
107737           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
107738           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107739                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107740           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107741                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107742           -- 5132302
107743           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
107744                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107745 
107746       END IF;
107747 
107748       -- 4955764
107749       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
107750       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
107751 
107752 
107753       XLA_AE_LINES_PKG.ValidateCurrentLine;
107754       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107755 
107756       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107757                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
107758                ,p_balance_type_code => l_balance_type_code);
107759 
107760    END IF;
107761 
107762    -----------------------------------------------------------------------------------------
107763    -- 4262811 Multiperiod Accounting
107764    -----------------------------------------------------------------------------------------
107765      -- No MPA option is assigned.
107766 
107767 
107768 END IF;
107769 END IF;
107770 --
107771 
107772 --
107773 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107774    trace
107775       (p_msg      => 'END of AcctLineType_226'
107776       ,p_level    => C_LEVEL_PROCEDURE
107777       ,p_module   => l_log_module);
107778 END IF;
107779 --
107780 EXCEPTION
107781   WHEN xla_exceptions_pkg.application_exception THEN
107782       RAISE;
107783   WHEN OTHERS THEN
107784        xla_exceptions_pkg.raise_message
107785            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_226');
107786 END AcctLineType_226;
107787 --
107788 
107789 ---------------------------------------
107790 --
107791 -- PRIVATE FUNCTION
107792 --         AcctLineType_227
107793 --
107794 ---------------------------------------
107795 PROCEDURE AcctLineType_227 (
107796   p_application_id        IN NUMBER
107797  ,p_event_id              IN NUMBER
107798  ,p_calculate_acctd_flag  IN VARCHAR2
107799  ,p_calculate_g_l_flag    IN VARCHAR2
107800  ,p_actual_flag           IN OUT VARCHAR2
107801  ,p_balance_type_code     OUT VARCHAR2
107802  ,p_gain_or_loss_ref      OUT VARCHAR2
107803  
107804 --Transaction Account
107805  , p_source_1            IN NUMBER
107806 --Journal Line Type
107807  , p_source_2            IN VARCHAR2
107808 --Entered Amount
107809  , p_source_3            IN NUMBER
107810 --First Distribution Identifier
107811  , p_source_5            IN NUMBER
107812 --Distribution Type
107813  , p_source_6            IN VARCHAR2
107814 --Currency Code
107815  , p_source_7            IN VARCHAR2
107816 --Currency Conversion Date
107817  , p_source_8            IN DATE
107821  , p_source_10            IN VARCHAR2
107818 --Currency Conversion Rate
107819  , p_source_9            IN NUMBER
107820 --Currency Conversion Type
107822 --Accounted Amount
107823  , p_source_11            IN NUMBER
107824 )
107825 IS
107826 
107827 l_component_type              VARCHAR2(80);
107828 l_component_code              VARCHAR2(30);
107829 l_component_type_code         VARCHAR2(1);
107830 l_component_appl_id           INTEGER;
107831 l_amb_context_code            VARCHAR2(30);
107832 l_entity_code                 VARCHAR2(30);
107833 l_event_class_code            VARCHAR2(30);
107834 l_ae_header_id                NUMBER;
107835 l_event_type_code             VARCHAR2(30);
107836 l_line_definition_code        VARCHAR2(30);
107837 l_line_definition_owner_code  VARCHAR2(1);
107838 --
107839 -- adr variables
107840 l_segment                     VARCHAR2(30);
107841 l_ccid                        NUMBER;
107842 l_adr_transaction_coa_id      NUMBER;
107843 l_adr_accounting_coa_id       NUMBER;
107844 l_adr_flexfield_segment_code  VARCHAR2(30);
107845 l_adr_flex_value_set_id       NUMBER;
107846 l_adr_value_type_code         VARCHAR2(30);
107847 l_adr_value_combination_id    NUMBER;
107848 l_adr_value_segment_code      VARCHAR2(30);
107849 
107850 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
107851 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
107852 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
107853 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
107854 
107855 -- 4262811 Variables ------------------------------------------------------------------------------------------
107856 l_entered_amt_idx             NUMBER;
107857 l_accted_amt_idx              NUMBER;
107858 l_acc_rev_flag                VARCHAR2(1);
107859 l_accrual_line_num            NUMBER;
107860 l_tmp_amt                     NUMBER;
107861 l_acc_rev_natural_side_code   VARCHAR2(1);
107862 
107863 l_num_entries                 NUMBER;
107864 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
107865 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
107866 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
107867 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
107868 l_recog_line_1                NUMBER;
107869 l_recog_line_2                NUMBER;
107870 
107871 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
107872 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
107873 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
107874 
107875 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
107876 
107877 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
107878 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
107879 
107880 ---------------------------------------------------------------------------------------------------------------
107881 
107882 
107883 --
107884 -- bulk performance
107885 --
107886 l_balance_type_code           VARCHAR2(1);
107887 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
107888 l_log_module                  VARCHAR2(240);
107889 
107890 --
107891 -- Upgrade strategy
107892 --
107893 l_actual_upg_option           VARCHAR2(1);
107894 l_enc_upg_option           VARCHAR2(1);
107895 
107896 --
107897 BEGIN
107898 --
107899 IF g_log_enabled THEN
107900       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_227';
107901 END IF;
107902 --
107903 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107904 
107905       trace
107906          (p_msg      => 'BEGIN of AcctLineType_227'
107907          ,p_level    => C_LEVEL_PROCEDURE
107908          ,p_module   => l_log_module);
107909 
107910 END IF;
107911 --
107912 l_component_type             := 'AMB_JLT';
107913 l_component_code             := 'PPV';
107914 l_component_type_code        := 'S';
107915 l_component_appl_id          :=  555;
107916 l_amb_context_code           := 'DEFAULT';
107917 l_entity_code                := 'PURCHASING';
107918 l_event_class_code           := 'DELIVER';
107919 l_event_type_code            := 'PO_RECEIPT_ADJ';
107920 l_line_definition_owner_code := 'S';
107921 l_line_definition_code       := 'PO_RECEIPT_ADJ';
107922 --
107923 l_balance_type_code          := 'A';
107924 l_segment                     := NULL;
107925 l_ccid                        := NULL;
107926 l_adr_transaction_coa_id      := NULL;
107927 l_adr_accounting_coa_id       := NULL;
107928 l_adr_flexfield_segment_code  := NULL;
107929 l_adr_flex_value_set_id       := NULL;
107930 l_adr_value_type_code         := NULL;
107931 l_adr_value_combination_id    := NULL;
107932 l_adr_value_segment_code      := NULL;
107933 
107934 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
107935 l_bflow_class_code           := '';    -- 4219869 Business Flow
107936 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
107937 l_budgetary_control_flag     := 'N';
107938 
107939 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
107940 l_bflow_applied_to_amt       := NULL; -- 5132302
107941 l_entered_amt_idx            := NULL;          -- 4262811
107942 l_accted_amt_idx             := NULL;          -- 4262811
107943 l_acc_rev_flag               := NULL;          -- 4262811
107944 l_accrual_line_num           := NULL;          -- 4262811
107945 l_tmp_amt                    := NULL;          -- 4262811
107949     l_balance_type_code <> 'B' THEN
107946 --
107947  
107948 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
107950 IF NVL(p_source_2,'
107951 ') =  'PPV'
107952  THEN 
107953 
107954    --
107955    XLA_AE_LINES_PKG.SetNewLine;
107956 
107957    p_balance_type_code          := l_balance_type_code;
107958    -- set the flag so later we will know whether the gain loss line needs to be created
107959    
107960    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
107961      p_actual_flag :='A';
107962    END IF;
107963 
107964    --
107965    -- bulk performance
107966    --
107967    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
107968                                       p_header_num   => 0); -- 4262811
107969    --
107970    -- set accounting line options
107971    --
107972    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
107973            p_natural_side_code          => 'D'
107974          , p_gain_or_loss_flag          => 'N'
107975          , p_gl_transfer_mode_code      => 'D'
107976          , p_acct_entry_type_code       => 'A'
107977          , p_switch_side_flag           => 'Y'
107978          , p_merge_duplicate_code       => 'W'
107979          );
107980    --
107981    l_acc_rev_natural_side_code := 'C';  -- 4262811
107982    -- 
107983    --
107984    -- set accounting line type info
107985    --
107986    xla_ae_lines_pkg.SetAcctLineType
107987       (p_component_type             => l_component_type
107988       ,p_event_type_code            => l_event_type_code
107989       ,p_line_definition_owner_code => l_line_definition_owner_code
107990       ,p_line_definition_code       => l_line_definition_code
107991       ,p_accounting_line_code       => l_component_code
107992       ,p_accounting_line_type_code  => l_component_type_code
107993       ,p_accounting_line_appl_id    => l_component_appl_id
107994       ,p_amb_context_code           => l_amb_context_code
107995       ,p_entity_code                => l_entity_code
107996       ,p_event_class_code           => l_event_class_code);
107997    --
107998    -- set accounting class
107999    --
108000    xla_ae_lines_pkg.SetAcctClass(
108001            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
108002          , p_ae_header_id           => l_ae_header_id
108003          );
108004 
108005    --
108006    -- set rounding class
108007    --
108008    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
108009                       'PURCHASE_PRICE_VARIANCE';
108010 
108011    --
108012    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
108013    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
108014    --
108015    -- bulk performance
108016    --
108017    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
108018 
108019    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
108020       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
108021 
108022    -- 4955764
108023    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
108024       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
108025 
108026    -- 4458381 Public Sector Enh
108027    
108028    --
108029    -- set accounting attributes for the line type
108030    --
108031    l_entered_amt_idx := 3;
108032    l_accted_amt_idx  := 8;
108033    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
108034    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
108035    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
108036    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
108037    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
108038    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
108039    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
108040    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
108041    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
108042    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
108043    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
108044    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
108045    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
108046    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
108047    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
108048    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
108049    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
108050 
108051    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
108052    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
108053 
108054    ---------------------------------------------------------------------------------------------------------------
108055    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
108056    ---------------------------------------------------------------------------------------------------------------
108057    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
108058 
108059    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
108063          (p_source_code         => 'LEDGER_CATEGORY_CODE'
108060    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
108061 
108062    IF xla_accounting_cache_pkg.GetValueChar
108064          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
108065    AND l_bflow_method_code = 'PRIOR_ENTRY'
108066 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
108067    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
108068          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
108069        )
108070    THEN
108071          xla_ae_lines_pkg.BflowUpgEntry
108072            (p_business_method_code    => l_bflow_method_code
108073            ,p_business_class_code     => l_bflow_class_code
108074            ,p_balance_type            => l_balance_type_code);
108075    ELSE
108076       NULL;
108077 -- No business flow processing for business flow method of NONE.
108078    END IF;
108079 
108080    --
108081    -- call analytical criteria
108082    --
108083    
108084    --
108085    -- call description
108086    --
108087    -- No description or it is inherited.
108088    --
108089    -- call ADRs
108090    -- Bug 4922099
108091    --
108092    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
108093         (NVL(l_actual_upg_option, 'N') = 'O') OR
108094         (NVL(l_enc_upg_option, 'N') = 'O')
108095       )
108096    THEN
108097    NULL;
108098    --
108099    --
108100    
108101   l_ccid := AcctDerRule_31(
108102            p_application_id           => p_application_id
108103          , p_ae_header_id             => l_ae_header_id 
108104 , p_source_1 => p_source_1
108105 , p_source_2 => p_source_2
108106          , x_transaction_coa_id       => l_adr_transaction_coa_id
108107          , x_accounting_coa_id        => l_adr_accounting_coa_id
108108          , x_value_type_code          => l_adr_value_type_code
108109          , p_side                     => 'NA'
108110    );
108111 
108112    xla_ae_lines_pkg.set_ccid(
108113     p_code_combination_id          => l_ccid
108114   , p_value_type_code              => l_adr_value_type_code
108115   , p_transaction_coa_id           => l_adr_transaction_coa_id
108116   , p_accounting_coa_id            => l_adr_accounting_coa_id
108117   , p_adr_code                     => 'PPV'
108118   , p_adr_type_code                => 'S'
108119   , p_component_type               => l_component_type
108120   , p_component_code               => l_component_code
108121   , p_component_type_code          => l_component_type_code
108122   , p_component_appl_id            => l_component_appl_id
108123   , p_amb_context_code             => l_amb_context_code
108124   , p_side                         => 'NA'
108125   );
108126 
108127 
108128    --
108129    --
108130    END IF;
108131    --
108132    -- Bug 4922099
108133    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
108134           (NVL(l_enc_upg_option, 'N') = 'O')
108135         ) AND
108136         (l_bflow_method_code = 'PRIOR_ENTRY')
108137       )
108138    THEN
108139       IF
108140       --
108141       1 = 2
108142       --
108143       THEN
108144       xla_accounting_err_pkg.build_message
108145                                     (p_appli_s_name            => 'XLA'
108146                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108147                                     ,p_token_1                 => 'LINE_NUMBER'
108148                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
108149                                     ,p_token_2                 => 'LINE_TYPE_NAME'
108150                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
108151                                                                              l_component_type
108152                                                                             ,l_component_code
108153                                                                             ,l_component_type_code
108154                                                                             ,l_component_appl_id
108155                                                                             ,l_amb_context_code
108156                                                                             ,l_entity_code
108157                                                                             ,l_event_class_code
108158                                                                            )
108159                                     ,p_token_3                 => 'OWNER'
108160                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
108161                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
108162                                                                           ,p_lookup_code    => l_component_type_code
108163                                                                          )
108164                                     ,p_token_4                 => 'PRODUCT_NAME'
108165                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
108166                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
108167                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
108168                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
108172         IF (C_LEVEL_ERROR>= g_log_level) THEN
108169                                     ,p_ae_header_id            =>  NULL
108170                                        );
108171 
108173                  trace
108174                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108175                       ,p_level    => C_LEVEL_ERROR
108176                       ,p_module   => l_log_module);
108177         END IF;
108178       END IF;
108179    END IF;
108180    --
108181    --
108182    ------------------------------------------------------------------------------------------------
108183    -- 4219869 Business Flow
108184    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
108185    -- Prior Entry.  Currently, the following code is always generated.
108186    ------------------------------------------------------------------------------------------------
108187    XLA_AE_LINES_PKG.ValidateCurrentLine;
108188 
108189    ------------------------------------------------------------------------------------
108190    -- 4219869 Business Flow
108191    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
108192    ------------------------------------------------------------------------------------
108193    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108194 
108195    ----------------------------------------------------------------------------------
108196    -- 4219869 Business Flow
108197    -- Update journal entry status -- Need to generate this within IF <condition>
108198    ----------------------------------------------------------------------------------
108199    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108200          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
108201          ,p_balance_type_code => l_balance_type_code
108202          );
108203 
108204    -------------------------------------------------------------------------------------------
108205    -- 4262811 - Generate the Accrual Reversal lines
108206    -------------------------------------------------------------------------------------------
108207    BEGIN
108208       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
108209                               (g_array_event(p_event_id).array_value_num('header_index'));
108210       IF l_acc_rev_flag IS NULL THEN
108211          l_acc_rev_flag := 'N';
108212       END IF;
108213    EXCEPTION
108214       WHEN OTHERS THEN
108215          l_acc_rev_flag := 'N';
108216    END;
108217    --
108218    IF (l_acc_rev_flag = 'Y') THEN
108219 
108220        -- 4645092  ------------------------------------------------------------------------------
108221        -- To allow MPA report to determine if it should generate report process
108222        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
108223        ------------------------------------------------------------------------------------------
108224 
108225        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
108226        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
108227    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
108228    -- call ADRs
108229    -- Bug 4922099
108230    --
108231    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
108232         (NVL(l_actual_upg_option, 'N') = 'O') OR
108233         (NVL(l_enc_upg_option, 'N') = 'O')
108234       )
108235    THEN
108236    NULL;
108237    --
108238    --
108239    
108240   l_ccid := AcctDerRule_31(
108241            p_application_id           => p_application_id
108242          , p_ae_header_id             => l_ae_header_id 
108243 , p_source_1 => p_source_1
108244 , p_source_2 => p_source_2
108245          , x_transaction_coa_id       => l_adr_transaction_coa_id
108246          , x_accounting_coa_id        => l_adr_accounting_coa_id
108247          , x_value_type_code          => l_adr_value_type_code
108248          , p_side                     => 'NA'
108249    );
108250 
108251    xla_ae_lines_pkg.set_ccid(
108252     p_code_combination_id          => l_ccid
108253   , p_value_type_code              => l_adr_value_type_code
108254   , p_transaction_coa_id           => l_adr_transaction_coa_id
108255   , p_accounting_coa_id            => l_adr_accounting_coa_id
108256   , p_adr_code                     => 'PPV'
108257   , p_adr_type_code                => 'S'
108258   , p_component_type               => l_component_type
108259   , p_component_code               => l_component_code
108260   , p_component_type_code          => l_component_type_code
108261   , p_component_appl_id            => l_component_appl_id
108262   , p_amb_context_code             => l_amb_context_code
108263   , p_side                         => 'NA'
108264   );
108265 
108266 
108267    --
108268    --
108269    END IF;
108270 
108271        --
108272        -- Update the line information that should be overwritten
108273        --
108274        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
108275                                          p_header_num   => 1);
108276        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
108277 
108278        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
108279 
108280        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
108281           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
108282        END IF;
108283 
108284       --
108288           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
108285       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
108286       --
108287       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
108289       ELSE
108290           ---------------------------------------------------------------------------------------------------
108291           -- 4262811a Switch Sign
108292           ---------------------------------------------------------------------------------------------------
108293           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
108294           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108295                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108296           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108297                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108298           -- 5132302
108299           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
108300                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108301 
108302       END IF;
108303 
108304       -- 4955764
108305       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
108306       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
108307 
108308 
108309       XLA_AE_LINES_PKG.ValidateCurrentLine;
108310       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108311 
108312       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108313                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
108314                ,p_balance_type_code => l_balance_type_code);
108315 
108316    END IF;
108317 
108318    -----------------------------------------------------------------------------------------
108319    -- 4262811 Multiperiod Accounting
108320    -----------------------------------------------------------------------------------------
108321      -- No MPA option is assigned.
108322 
108323 
108324 END IF;
108325 END IF;
108326 --
108327 
108328 --
108329 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108330    trace
108331       (p_msg      => 'END of AcctLineType_227'
108332       ,p_level    => C_LEVEL_PROCEDURE
108333       ,p_module   => l_log_module);
108334 END IF;
108335 --
108336 EXCEPTION
108337   WHEN xla_exceptions_pkg.application_exception THEN
108338       RAISE;
108339   WHEN OTHERS THEN
108340        xla_exceptions_pkg.raise_message
108341            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_227');
108342 END AcctLineType_227;
108343 --
108344 
108345 ---------------------------------------
108346 --
108347 -- PRIVATE FUNCTION
108348 --         AcctLineType_228
108349 --
108350 ---------------------------------------
108351 PROCEDURE AcctLineType_228 (
108352   p_application_id        IN NUMBER
108353  ,p_event_id              IN NUMBER
108354  ,p_calculate_acctd_flag  IN VARCHAR2
108355  ,p_calculate_g_l_flag    IN VARCHAR2
108356  ,p_actual_flag           IN OUT VARCHAR2
108357  ,p_balance_type_code     OUT VARCHAR2
108358  ,p_gain_or_loss_ref      OUT VARCHAR2
108359  
108360 --Transaction Account
108361  , p_source_1            IN NUMBER
108362 --Journal Line Type
108363  , p_source_2            IN VARCHAR2
108364 --Entered Amount
108365  , p_source_3            IN NUMBER
108366 --First Distribution Identifier
108367  , p_source_5            IN NUMBER
108368 --Distribution Type
108369  , p_source_6            IN VARCHAR2
108370 --Currency Code
108371  , p_source_7            IN VARCHAR2
108372 --Currency Conversion Date
108373  , p_source_8            IN DATE
108374 --Currency Conversion Rate
108375  , p_source_9            IN NUMBER
108376 --Currency Conversion Type
108377  , p_source_10            IN VARCHAR2
108378 --Accounted Amount
108379  , p_source_11            IN NUMBER
108380 )
108381 IS
108382 
108383 l_component_type              VARCHAR2(80);
108384 l_component_code              VARCHAR2(30);
108385 l_component_type_code         VARCHAR2(1);
108386 l_component_appl_id           INTEGER;
108387 l_amb_context_code            VARCHAR2(30);
108388 l_entity_code                 VARCHAR2(30);
108389 l_event_class_code            VARCHAR2(30);
108390 l_ae_header_id                NUMBER;
108391 l_event_type_code             VARCHAR2(30);
108392 l_line_definition_code        VARCHAR2(30);
108393 l_line_definition_owner_code  VARCHAR2(1);
108394 --
108395 -- adr variables
108396 l_segment                     VARCHAR2(30);
108397 l_ccid                        NUMBER;
108398 l_adr_transaction_coa_id      NUMBER;
108399 l_adr_accounting_coa_id       NUMBER;
108400 l_adr_flexfield_segment_code  VARCHAR2(30);
108401 l_adr_flex_value_set_id       NUMBER;
108402 l_adr_value_type_code         VARCHAR2(30);
108403 l_adr_value_combination_id    NUMBER;
108404 l_adr_value_segment_code      VARCHAR2(30);
108405 
108406 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
108407 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
108408 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
108409 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
108410 
108414 l_acc_rev_flag                VARCHAR2(1);
108411 -- 4262811 Variables ------------------------------------------------------------------------------------------
108412 l_entered_amt_idx             NUMBER;
108413 l_accted_amt_idx              NUMBER;
108415 l_accrual_line_num            NUMBER;
108416 l_tmp_amt                     NUMBER;
108417 l_acc_rev_natural_side_code   VARCHAR2(1);
108418 
108419 l_num_entries                 NUMBER;
108420 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
108421 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
108422 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
108423 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
108424 l_recog_line_1                NUMBER;
108425 l_recog_line_2                NUMBER;
108426 
108427 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
108428 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
108429 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
108430 
108431 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
108432 
108433 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
108434 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
108435 
108436 ---------------------------------------------------------------------------------------------------------------
108437 
108438 
108439 --
108440 -- bulk performance
108441 --
108442 l_balance_type_code           VARCHAR2(1);
108443 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
108444 l_log_module                  VARCHAR2(240);
108445 
108446 --
108447 -- Upgrade strategy
108448 --
108449 l_actual_upg_option           VARCHAR2(1);
108450 l_enc_upg_option           VARCHAR2(1);
108451 
108452 --
108453 BEGIN
108454 --
108455 IF g_log_enabled THEN
108456       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_228';
108457 END IF;
108458 --
108459 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108460 
108461       trace
108462          (p_msg      => 'BEGIN of AcctLineType_228'
108463          ,p_level    => C_LEVEL_PROCEDURE
108464          ,p_module   => l_log_module);
108465 
108466 END IF;
108467 --
108468 l_component_type             := 'AMB_JLT';
108469 l_component_code             := 'PPV';
108470 l_component_type_code        := 'S';
108471 l_component_appl_id          :=  555;
108472 l_amb_context_code           := 'DEFAULT';
108473 l_entity_code                := 'PURCHASING';
108474 l_event_class_code           := 'DELIVER';
108475 l_event_type_code            := 'PO_RECEIPT';
108476 l_line_definition_owner_code := 'S';
108477 l_line_definition_code       := 'DELIVER';
108478 --
108479 l_balance_type_code          := 'A';
108480 l_segment                     := NULL;
108481 l_ccid                        := NULL;
108482 l_adr_transaction_coa_id      := NULL;
108483 l_adr_accounting_coa_id       := NULL;
108484 l_adr_flexfield_segment_code  := NULL;
108485 l_adr_flex_value_set_id       := NULL;
108486 l_adr_value_type_code         := NULL;
108487 l_adr_value_combination_id    := NULL;
108488 l_adr_value_segment_code      := NULL;
108489 
108490 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
108491 l_bflow_class_code           := '';    -- 4219869 Business Flow
108492 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
108493 l_budgetary_control_flag     := 'N';
108494 
108495 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
108496 l_bflow_applied_to_amt       := NULL; -- 5132302
108497 l_entered_amt_idx            := NULL;          -- 4262811
108498 l_accted_amt_idx             := NULL;          -- 4262811
108499 l_acc_rev_flag               := NULL;          -- 4262811
108500 l_accrual_line_num           := NULL;          -- 4262811
108501 l_tmp_amt                    := NULL;          -- 4262811
108502 --
108503  
108504 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
108505     l_balance_type_code <> 'B' THEN
108506 IF NVL(p_source_2,'
108507 ') =  'PPV'
108508  THEN 
108509 
108510    --
108511    XLA_AE_LINES_PKG.SetNewLine;
108512 
108513    p_balance_type_code          := l_balance_type_code;
108514    -- set the flag so later we will know whether the gain loss line needs to be created
108515    
108516    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
108517      p_actual_flag :='A';
108518    END IF;
108519 
108520    --
108521    -- bulk performance
108522    --
108523    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
108524                                       p_header_num   => 0); -- 4262811
108525    --
108526    -- set accounting line options
108527    --
108528    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
108529            p_natural_side_code          => 'D'
108530          , p_gain_or_loss_flag          => 'N'
108531          , p_gl_transfer_mode_code      => 'D'
108532          , p_acct_entry_type_code       => 'A'
108533          , p_switch_side_flag           => 'Y'
108534          , p_merge_duplicate_code       => 'W'
108535          );
108536    --
108537    l_acc_rev_natural_side_code := 'C';  -- 4262811
108538    -- 
108539    --
108540    -- set accounting line type info
108541    --
108542    xla_ae_lines_pkg.SetAcctLineType
108546       ,p_line_definition_code       => l_line_definition_code
108543       (p_component_type             => l_component_type
108544       ,p_event_type_code            => l_event_type_code
108545       ,p_line_definition_owner_code => l_line_definition_owner_code
108547       ,p_accounting_line_code       => l_component_code
108548       ,p_accounting_line_type_code  => l_component_type_code
108549       ,p_accounting_line_appl_id    => l_component_appl_id
108550       ,p_amb_context_code           => l_amb_context_code
108551       ,p_entity_code                => l_entity_code
108552       ,p_event_class_code           => l_event_class_code);
108553    --
108554    -- set accounting class
108555    --
108556    xla_ae_lines_pkg.SetAcctClass(
108557            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
108558          , p_ae_header_id           => l_ae_header_id
108559          );
108560 
108561    --
108562    -- set rounding class
108563    --
108564    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
108565                       'PURCHASE_PRICE_VARIANCE';
108566 
108567    --
108568    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
108569    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
108570    --
108571    -- bulk performance
108572    --
108573    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
108574 
108575    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
108576       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
108577 
108578    -- 4955764
108579    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
108580       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
108581 
108582    -- 4458381 Public Sector Enh
108583    
108584    --
108585    -- set accounting attributes for the line type
108586    --
108587    l_entered_amt_idx := 3;
108588    l_accted_amt_idx  := 8;
108589    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
108590    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
108591    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
108592    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
108593    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
108594    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
108595    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
108596    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
108597    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
108598    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
108599    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
108600    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
108601    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
108602    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
108603    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
108604    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
108605    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
108606 
108607    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
108608    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
108609 
108610    ---------------------------------------------------------------------------------------------------------------
108611    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
108612    ---------------------------------------------------------------------------------------------------------------
108613    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
108614 
108615    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
108616    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
108617 
108618    IF xla_accounting_cache_pkg.GetValueChar
108619          (p_source_code         => 'LEDGER_CATEGORY_CODE'
108620          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
108621    AND l_bflow_method_code = 'PRIOR_ENTRY'
108622 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
108623    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
108624          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
108625        )
108626    THEN
108627          xla_ae_lines_pkg.BflowUpgEntry
108628            (p_business_method_code    => l_bflow_method_code
108629            ,p_business_class_code     => l_bflow_class_code
108630            ,p_balance_type            => l_balance_type_code);
108631    ELSE
108632       NULL;
108633 -- No business flow processing for business flow method of NONE.
108634    END IF;
108635 
108636    --
108637    -- call analytical criteria
108638    --
108639    
108640    --
108641    -- call description
108642    --
108643    -- No description or it is inherited.
108644    --
108645    -- call ADRs
108646    -- Bug 4922099
108647    --
108648    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
108649         (NVL(l_actual_upg_option, 'N') = 'O') OR
108650         (NVL(l_enc_upg_option, 'N') = 'O')
108651       )
108652    THEN
108653    NULL;
108654    --
108655    --
108656    
108657   l_ccid := AcctDerRule_31(
108661 , p_source_2 => p_source_2
108658            p_application_id           => p_application_id
108659          , p_ae_header_id             => l_ae_header_id 
108660 , p_source_1 => p_source_1
108662          , x_transaction_coa_id       => l_adr_transaction_coa_id
108663          , x_accounting_coa_id        => l_adr_accounting_coa_id
108664          , x_value_type_code          => l_adr_value_type_code
108665          , p_side                     => 'NA'
108666    );
108667 
108668    xla_ae_lines_pkg.set_ccid(
108669     p_code_combination_id          => l_ccid
108670   , p_value_type_code              => l_adr_value_type_code
108671   , p_transaction_coa_id           => l_adr_transaction_coa_id
108672   , p_accounting_coa_id            => l_adr_accounting_coa_id
108673   , p_adr_code                     => 'PPV'
108674   , p_adr_type_code                => 'S'
108675   , p_component_type               => l_component_type
108676   , p_component_code               => l_component_code
108677   , p_component_type_code          => l_component_type_code
108678   , p_component_appl_id            => l_component_appl_id
108679   , p_amb_context_code             => l_amb_context_code
108680   , p_side                         => 'NA'
108681   );
108682 
108683 
108684    --
108685    --
108686    END IF;
108687    --
108688    -- Bug 4922099
108689    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
108690           (NVL(l_enc_upg_option, 'N') = 'O')
108691         ) AND
108692         (l_bflow_method_code = 'PRIOR_ENTRY')
108693       )
108694    THEN
108695       IF
108696       --
108697       1 = 2
108698       --
108699       THEN
108700       xla_accounting_err_pkg.build_message
108701                                     (p_appli_s_name            => 'XLA'
108702                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108703                                     ,p_token_1                 => 'LINE_NUMBER'
108704                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
108705                                     ,p_token_2                 => 'LINE_TYPE_NAME'
108706                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
108707                                                                              l_component_type
108708                                                                             ,l_component_code
108709                                                                             ,l_component_type_code
108710                                                                             ,l_component_appl_id
108711                                                                             ,l_amb_context_code
108712                                                                             ,l_entity_code
108713                                                                             ,l_event_class_code
108714                                                                            )
108715                                     ,p_token_3                 => 'OWNER'
108716                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
108717                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
108718                                                                           ,p_lookup_code    => l_component_type_code
108719                                                                          )
108720                                     ,p_token_4                 => 'PRODUCT_NAME'
108721                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
108722                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
108723                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
108724                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
108725                                     ,p_ae_header_id            =>  NULL
108726                                        );
108727 
108728         IF (C_LEVEL_ERROR>= g_log_level) THEN
108729                  trace
108730                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108731                       ,p_level    => C_LEVEL_ERROR
108732                       ,p_module   => l_log_module);
108733         END IF;
108734       END IF;
108735    END IF;
108736    --
108737    --
108738    ------------------------------------------------------------------------------------------------
108739    -- 4219869 Business Flow
108740    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
108741    -- Prior Entry.  Currently, the following code is always generated.
108742    ------------------------------------------------------------------------------------------------
108743    XLA_AE_LINES_PKG.ValidateCurrentLine;
108744 
108745    ------------------------------------------------------------------------------------
108746    -- 4219869 Business Flow
108747    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
108748    ------------------------------------------------------------------------------------
108749    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108750 
108751    ----------------------------------------------------------------------------------
108752    -- 4219869 Business Flow
108753    -- Update journal entry status -- Need to generate this within IF <condition>
108754    ----------------------------------------------------------------------------------
108755    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108759 
108756          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
108757          ,p_balance_type_code => l_balance_type_code
108758          );
108760    -------------------------------------------------------------------------------------------
108761    -- 4262811 - Generate the Accrual Reversal lines
108762    -------------------------------------------------------------------------------------------
108763    BEGIN
108764       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
108765                               (g_array_event(p_event_id).array_value_num('header_index'));
108766       IF l_acc_rev_flag IS NULL THEN
108767          l_acc_rev_flag := 'N';
108768       END IF;
108769    EXCEPTION
108770       WHEN OTHERS THEN
108771          l_acc_rev_flag := 'N';
108772    END;
108773    --
108774    IF (l_acc_rev_flag = 'Y') THEN
108775 
108776        -- 4645092  ------------------------------------------------------------------------------
108777        -- To allow MPA report to determine if it should generate report process
108778        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
108779        ------------------------------------------------------------------------------------------
108780 
108781        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
108782        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
108783    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
108784    -- call ADRs
108785    -- Bug 4922099
108786    --
108787    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
108788         (NVL(l_actual_upg_option, 'N') = 'O') OR
108789         (NVL(l_enc_upg_option, 'N') = 'O')
108790       )
108791    THEN
108792    NULL;
108793    --
108794    --
108795    
108796   l_ccid := AcctDerRule_31(
108797            p_application_id           => p_application_id
108798          , p_ae_header_id             => l_ae_header_id 
108799 , p_source_1 => p_source_1
108800 , p_source_2 => p_source_2
108801          , x_transaction_coa_id       => l_adr_transaction_coa_id
108802          , x_accounting_coa_id        => l_adr_accounting_coa_id
108803          , x_value_type_code          => l_adr_value_type_code
108804          , p_side                     => 'NA'
108805    );
108806 
108807    xla_ae_lines_pkg.set_ccid(
108808     p_code_combination_id          => l_ccid
108809   , p_value_type_code              => l_adr_value_type_code
108810   , p_transaction_coa_id           => l_adr_transaction_coa_id
108811   , p_accounting_coa_id            => l_adr_accounting_coa_id
108812   , p_adr_code                     => 'PPV'
108813   , p_adr_type_code                => 'S'
108814   , p_component_type               => l_component_type
108815   , p_component_code               => l_component_code
108816   , p_component_type_code          => l_component_type_code
108817   , p_component_appl_id            => l_component_appl_id
108818   , p_amb_context_code             => l_amb_context_code
108819   , p_side                         => 'NA'
108820   );
108821 
108822 
108823    --
108824    --
108825    END IF;
108826 
108827        --
108828        -- Update the line information that should be overwritten
108829        --
108830        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
108831                                          p_header_num   => 1);
108832        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
108833 
108834        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
108835 
108836        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
108837           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
108838        END IF;
108839 
108840       --
108841       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
108842       --
108843       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
108844           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
108845       ELSE
108846           ---------------------------------------------------------------------------------------------------
108847           -- 4262811a Switch Sign
108848           ---------------------------------------------------------------------------------------------------
108849           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
108850           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108851                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108852           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108853                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108854           -- 5132302
108855           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
108856                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108857 
108858       END IF;
108859 
108860       -- 4955764
108861       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
108862       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
108863 
108864 
108865       XLA_AE_LINES_PKG.ValidateCurrentLine;
108869                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
108866       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108867 
108868       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108870                ,p_balance_type_code => l_balance_type_code);
108871 
108872    END IF;
108873 
108874    -----------------------------------------------------------------------------------------
108875    -- 4262811 Multiperiod Accounting
108876    -----------------------------------------------------------------------------------------
108877      -- No MPA option is assigned.
108878 
108879 
108880 END IF;
108881 END IF;
108882 --
108883 
108884 --
108885 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108886    trace
108887       (p_msg      => 'END of AcctLineType_228'
108888       ,p_level    => C_LEVEL_PROCEDURE
108889       ,p_module   => l_log_module);
108890 END IF;
108891 --
108892 EXCEPTION
108893   WHEN xla_exceptions_pkg.application_exception THEN
108894       RAISE;
108895   WHEN OTHERS THEN
108896        xla_exceptions_pkg.raise_message
108897            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_228');
108898 END AcctLineType_228;
108899 --
108900 
108901 ---------------------------------------
108902 --
108903 -- PRIVATE FUNCTION
108904 --         AcctLineType_229
108905 --
108906 ---------------------------------------
108907 PROCEDURE AcctLineType_229 (
108908   p_application_id        IN NUMBER
108909  ,p_event_id              IN NUMBER
108910  ,p_calculate_acctd_flag  IN VARCHAR2
108911  ,p_calculate_g_l_flag    IN VARCHAR2
108912  ,p_actual_flag           IN OUT VARCHAR2
108913  ,p_balance_type_code     OUT VARCHAR2
108914  ,p_gain_or_loss_ref      OUT VARCHAR2
108915  
108916 --Transaction Account
108917  , p_source_1            IN NUMBER
108918 --Journal Line Type
108919  , p_source_2            IN VARCHAR2
108920 --Entered Amount
108921  , p_source_3            IN NUMBER
108922 --First Distribution Identifier
108923  , p_source_5            IN NUMBER
108924 --Distribution Type
108925  , p_source_6            IN VARCHAR2
108926 --Currency Code
108927  , p_source_7            IN VARCHAR2
108928 --Currency Conversion Date
108929  , p_source_8            IN DATE
108930 --Currency Conversion Rate
108931  , p_source_9            IN NUMBER
108932 --Currency Conversion Type
108933  , p_source_10            IN VARCHAR2
108934 --Accounted Amount
108935  , p_source_11            IN NUMBER
108936 )
108937 IS
108938 
108939 l_component_type              VARCHAR2(80);
108940 l_component_code              VARCHAR2(30);
108941 l_component_type_code         VARCHAR2(1);
108942 l_component_appl_id           INTEGER;
108943 l_amb_context_code            VARCHAR2(30);
108944 l_entity_code                 VARCHAR2(30);
108945 l_event_class_code            VARCHAR2(30);
108946 l_ae_header_id                NUMBER;
108947 l_event_type_code             VARCHAR2(30);
108948 l_line_definition_code        VARCHAR2(30);
108949 l_line_definition_owner_code  VARCHAR2(1);
108950 --
108951 -- adr variables
108952 l_segment                     VARCHAR2(30);
108953 l_ccid                        NUMBER;
108954 l_adr_transaction_coa_id      NUMBER;
108955 l_adr_accounting_coa_id       NUMBER;
108956 l_adr_flexfield_segment_code  VARCHAR2(30);
108957 l_adr_flex_value_set_id       NUMBER;
108958 l_adr_value_type_code         VARCHAR2(30);
108959 l_adr_value_combination_id    NUMBER;
108960 l_adr_value_segment_code      VARCHAR2(30);
108961 
108962 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
108963 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
108964 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
108965 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
108966 
108967 -- 4262811 Variables ------------------------------------------------------------------------------------------
108968 l_entered_amt_idx             NUMBER;
108969 l_accted_amt_idx              NUMBER;
108970 l_acc_rev_flag                VARCHAR2(1);
108971 l_accrual_line_num            NUMBER;
108972 l_tmp_amt                     NUMBER;
108973 l_acc_rev_natural_side_code   VARCHAR2(1);
108974 
108975 l_num_entries                 NUMBER;
108976 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
108977 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
108978 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
108979 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
108980 l_recog_line_1                NUMBER;
108981 l_recog_line_2                NUMBER;
108982 
108983 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
108984 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
108985 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
108986 
108987 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
108988 
108989 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
108990 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
108991 
108992 ---------------------------------------------------------------------------------------------------------------
108993 
108994 
108995 --
108996 -- bulk performance
108997 --
108998 l_balance_type_code           VARCHAR2(1);
109002 --
108999 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
109000 l_log_module                  VARCHAR2(240);
109001 
109003 -- Upgrade strategy
109004 --
109005 l_actual_upg_option           VARCHAR2(1);
109006 l_enc_upg_option           VARCHAR2(1);
109007 
109008 --
109009 BEGIN
109010 --
109011 IF g_log_enabled THEN
109012       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_229';
109013 END IF;
109014 --
109015 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
109016 
109017       trace
109018          (p_msg      => 'BEGIN of AcctLineType_229'
109019          ,p_level    => C_LEVEL_PROCEDURE
109020          ,p_module   => l_log_module);
109021 
109022 END IF;
109023 --
109024 l_component_type             := 'AMB_JLT';
109025 l_component_code             := 'PPV';
109026 l_component_type_code        := 'S';
109027 l_component_appl_id          :=  555;
109028 l_amb_context_code           := 'DEFAULT';
109029 l_entity_code                := 'PURCHASING';
109030 l_event_class_code           := 'DELIVER';
109031 l_event_type_code            := 'XFER_TO_CONSIGNED';
109032 l_line_definition_owner_code := 'S';
109033 l_line_definition_code       := 'XFER_TO_CONSIGN';
109034 --
109035 l_balance_type_code          := 'A';
109036 l_segment                     := NULL;
109037 l_ccid                        := NULL;
109038 l_adr_transaction_coa_id      := NULL;
109039 l_adr_accounting_coa_id       := NULL;
109040 l_adr_flexfield_segment_code  := NULL;
109041 l_adr_flex_value_set_id       := NULL;
109042 l_adr_value_type_code         := NULL;
109043 l_adr_value_combination_id    := NULL;
109044 l_adr_value_segment_code      := NULL;
109045 
109046 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
109047 l_bflow_class_code           := '';    -- 4219869 Business Flow
109048 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
109049 l_budgetary_control_flag     := 'N';
109050 
109051 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
109052 l_bflow_applied_to_amt       := NULL; -- 5132302
109053 l_entered_amt_idx            := NULL;          -- 4262811
109054 l_accted_amt_idx             := NULL;          -- 4262811
109055 l_acc_rev_flag               := NULL;          -- 4262811
109056 l_accrual_line_num           := NULL;          -- 4262811
109057 l_tmp_amt                    := NULL;          -- 4262811
109058 --
109059  
109060 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
109061     l_balance_type_code <> 'B' THEN
109062 IF NVL(p_source_2,'
109063 ') =  'PPV'
109064  THEN 
109065 
109066    --
109067    XLA_AE_LINES_PKG.SetNewLine;
109068 
109069    p_balance_type_code          := l_balance_type_code;
109070    -- set the flag so later we will know whether the gain loss line needs to be created
109071    
109072    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
109073      p_actual_flag :='A';
109074    END IF;
109075 
109076    --
109077    -- bulk performance
109078    --
109079    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
109080                                       p_header_num   => 0); -- 4262811
109081    --
109082    -- set accounting line options
109083    --
109084    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
109085            p_natural_side_code          => 'D'
109086          , p_gain_or_loss_flag          => 'N'
109087          , p_gl_transfer_mode_code      => 'D'
109088          , p_acct_entry_type_code       => 'A'
109089          , p_switch_side_flag           => 'Y'
109090          , p_merge_duplicate_code       => 'W'
109091          );
109092    --
109093    l_acc_rev_natural_side_code := 'C';  -- 4262811
109094    -- 
109095    --
109096    -- set accounting line type info
109097    --
109098    xla_ae_lines_pkg.SetAcctLineType
109099       (p_component_type             => l_component_type
109100       ,p_event_type_code            => l_event_type_code
109101       ,p_line_definition_owner_code => l_line_definition_owner_code
109102       ,p_line_definition_code       => l_line_definition_code
109103       ,p_accounting_line_code       => l_component_code
109104       ,p_accounting_line_type_code  => l_component_type_code
109105       ,p_accounting_line_appl_id    => l_component_appl_id
109106       ,p_amb_context_code           => l_amb_context_code
109107       ,p_entity_code                => l_entity_code
109108       ,p_event_class_code           => l_event_class_code);
109109    --
109110    -- set accounting class
109111    --
109112    xla_ae_lines_pkg.SetAcctClass(
109113            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
109114          , p_ae_header_id           => l_ae_header_id
109115          );
109116 
109117    --
109118    -- set rounding class
109119    --
109120    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
109121                       'PURCHASE_PRICE_VARIANCE';
109122 
109123    --
109124    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
109125    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
109126    --
109127    -- bulk performance
109128    --
109129    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
109130 
109131    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
109135    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
109132       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
109133 
109134    -- 4955764
109136       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
109137 
109138    -- 4458381 Public Sector Enh
109139    
109140    --
109141    -- set accounting attributes for the line type
109142    --
109143    l_entered_amt_idx := 3;
109144    l_accted_amt_idx  := 8;
109145    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
109146    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
109147    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
109148    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
109149    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
109150    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
109151    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
109152    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
109153    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
109154    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
109155    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
109156    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
109157    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
109158    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
109159    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
109160    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
109161    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
109162 
109163    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
109164    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
109165 
109166    ---------------------------------------------------------------------------------------------------------------
109167    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
109168    ---------------------------------------------------------------------------------------------------------------
109169    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
109170 
109171    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109172    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109173 
109174    IF xla_accounting_cache_pkg.GetValueChar
109175          (p_source_code         => 'LEDGER_CATEGORY_CODE'
109176          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
109177    AND l_bflow_method_code = 'PRIOR_ENTRY'
109178 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
109179    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
109180          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
109181        )
109182    THEN
109183          xla_ae_lines_pkg.BflowUpgEntry
109184            (p_business_method_code    => l_bflow_method_code
109185            ,p_business_class_code     => l_bflow_class_code
109186            ,p_balance_type            => l_balance_type_code);
109187    ELSE
109188       NULL;
109189 -- No business flow processing for business flow method of NONE.
109190    END IF;
109191 
109192    --
109193    -- call analytical criteria
109194    --
109195    
109196    --
109197    -- call description
109198    --
109199    -- No description or it is inherited.
109200    --
109201    -- call ADRs
109202    -- Bug 4922099
109203    --
109204    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109205         (NVL(l_actual_upg_option, 'N') = 'O') OR
109206         (NVL(l_enc_upg_option, 'N') = 'O')
109207       )
109208    THEN
109209    NULL;
109210    --
109211    --
109212    
109213   l_ccid := AcctDerRule_31(
109214            p_application_id           => p_application_id
109215          , p_ae_header_id             => l_ae_header_id 
109216 , p_source_1 => p_source_1
109217 , p_source_2 => p_source_2
109218          , x_transaction_coa_id       => l_adr_transaction_coa_id
109219          , x_accounting_coa_id        => l_adr_accounting_coa_id
109220          , x_value_type_code          => l_adr_value_type_code
109221          , p_side                     => 'NA'
109222    );
109223 
109224    xla_ae_lines_pkg.set_ccid(
109225     p_code_combination_id          => l_ccid
109226   , p_value_type_code              => l_adr_value_type_code
109227   , p_transaction_coa_id           => l_adr_transaction_coa_id
109228   , p_accounting_coa_id            => l_adr_accounting_coa_id
109229   , p_adr_code                     => 'PPV'
109230   , p_adr_type_code                => 'S'
109231   , p_component_type               => l_component_type
109232   , p_component_code               => l_component_code
109233   , p_component_type_code          => l_component_type_code
109234   , p_component_appl_id            => l_component_appl_id
109235   , p_amb_context_code             => l_amb_context_code
109236   , p_side                         => 'NA'
109237   );
109238 
109239 
109240    --
109241    --
109242    END IF;
109243    --
109244    -- Bug 4922099
109245    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
109246           (NVL(l_enc_upg_option, 'N') = 'O')
109247         ) AND
109248         (l_bflow_method_code = 'PRIOR_ENTRY')
109249       )
109250    THEN
109251       IF
109252       --
109253       1 = 2
109254       --
109255       THEN
109259                                     ,p_token_1                 => 'LINE_NUMBER'
109256       xla_accounting_err_pkg.build_message
109257                                     (p_appli_s_name            => 'XLA'
109258                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109260                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
109261                                     ,p_token_2                 => 'LINE_TYPE_NAME'
109262                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
109263                                                                              l_component_type
109264                                                                             ,l_component_code
109265                                                                             ,l_component_type_code
109266                                                                             ,l_component_appl_id
109267                                                                             ,l_amb_context_code
109268                                                                             ,l_entity_code
109269                                                                             ,l_event_class_code
109270                                                                            )
109271                                     ,p_token_3                 => 'OWNER'
109272                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
109273                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
109274                                                                           ,p_lookup_code    => l_component_type_code
109275                                                                          )
109276                                     ,p_token_4                 => 'PRODUCT_NAME'
109277                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
109278                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
109279                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
109280                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
109281                                     ,p_ae_header_id            =>  NULL
109282                                        );
109283 
109284         IF (C_LEVEL_ERROR>= g_log_level) THEN
109285                  trace
109286                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109287                       ,p_level    => C_LEVEL_ERROR
109288                       ,p_module   => l_log_module);
109289         END IF;
109290       END IF;
109291    END IF;
109292    --
109293    --
109294    ------------------------------------------------------------------------------------------------
109295    -- 4219869 Business Flow
109296    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
109297    -- Prior Entry.  Currently, the following code is always generated.
109298    ------------------------------------------------------------------------------------------------
109299    XLA_AE_LINES_PKG.ValidateCurrentLine;
109300 
109301    ------------------------------------------------------------------------------------
109302    -- 4219869 Business Flow
109303    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
109304    ------------------------------------------------------------------------------------
109305    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
109306 
109307    ----------------------------------------------------------------------------------
109308    -- 4219869 Business Flow
109309    -- Update journal entry status -- Need to generate this within IF <condition>
109310    ----------------------------------------------------------------------------------
109311    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
109312          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
109313          ,p_balance_type_code => l_balance_type_code
109314          );
109315 
109316    -------------------------------------------------------------------------------------------
109317    -- 4262811 - Generate the Accrual Reversal lines
109318    -------------------------------------------------------------------------------------------
109319    BEGIN
109320       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
109321                               (g_array_event(p_event_id).array_value_num('header_index'));
109322       IF l_acc_rev_flag IS NULL THEN
109323          l_acc_rev_flag := 'N';
109324       END IF;
109325    EXCEPTION
109326       WHEN OTHERS THEN
109327          l_acc_rev_flag := 'N';
109328    END;
109329    --
109330    IF (l_acc_rev_flag = 'Y') THEN
109331 
109332        -- 4645092  ------------------------------------------------------------------------------
109333        -- To allow MPA report to determine if it should generate report process
109334        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
109335        ------------------------------------------------------------------------------------------
109336 
109337        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
109338        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
109339    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
109340    -- call ADRs
109341    -- Bug 4922099
109342    --
109343    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109344         (NVL(l_actual_upg_option, 'N') = 'O') OR
109348    NULL;
109345         (NVL(l_enc_upg_option, 'N') = 'O')
109346       )
109347    THEN
109349    --
109350    --
109351    
109352   l_ccid := AcctDerRule_31(
109353            p_application_id           => p_application_id
109354          , p_ae_header_id             => l_ae_header_id 
109355 , p_source_1 => p_source_1
109356 , p_source_2 => p_source_2
109357          , x_transaction_coa_id       => l_adr_transaction_coa_id
109358          , x_accounting_coa_id        => l_adr_accounting_coa_id
109359          , x_value_type_code          => l_adr_value_type_code
109360          , p_side                     => 'NA'
109361    );
109362 
109363    xla_ae_lines_pkg.set_ccid(
109364     p_code_combination_id          => l_ccid
109365   , p_value_type_code              => l_adr_value_type_code
109366   , p_transaction_coa_id           => l_adr_transaction_coa_id
109367   , p_accounting_coa_id            => l_adr_accounting_coa_id
109368   , p_adr_code                     => 'PPV'
109369   , p_adr_type_code                => 'S'
109370   , p_component_type               => l_component_type
109371   , p_component_code               => l_component_code
109372   , p_component_type_code          => l_component_type_code
109373   , p_component_appl_id            => l_component_appl_id
109374   , p_amb_context_code             => l_amb_context_code
109375   , p_side                         => 'NA'
109376   );
109377 
109378 
109379    --
109380    --
109381    END IF;
109382 
109383        --
109384        -- Update the line information that should be overwritten
109385        --
109386        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
109387                                          p_header_num   => 1);
109388        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
109389 
109390        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
109391 
109392        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
109393           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
109394        END IF;
109395 
109396       --
109397       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
109398       --
109399       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
109400           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
109401       ELSE
109402           ---------------------------------------------------------------------------------------------------
109403           -- 4262811a Switch Sign
109404           ---------------------------------------------------------------------------------------------------
109405           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
109406           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
109407                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109408           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
109409                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109410           -- 5132302
109411           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
109412                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109413 
109414       END IF;
109415 
109416       -- 4955764
109417       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
109418       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
109419 
109420 
109421       XLA_AE_LINES_PKG.ValidateCurrentLine;
109422       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
109423 
109424       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
109425                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
109426                ,p_balance_type_code => l_balance_type_code);
109427 
109428    END IF;
109429 
109430    -----------------------------------------------------------------------------------------
109431    -- 4262811 Multiperiod Accounting
109432    -----------------------------------------------------------------------------------------
109433      -- No MPA option is assigned.
109434 
109435 
109436 END IF;
109437 END IF;
109438 --
109439 
109440 --
109441 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
109442    trace
109443       (p_msg      => 'END of AcctLineType_229'
109444       ,p_level    => C_LEVEL_PROCEDURE
109445       ,p_module   => l_log_module);
109446 END IF;
109447 --
109448 EXCEPTION
109449   WHEN xla_exceptions_pkg.application_exception THEN
109450       RAISE;
109451   WHEN OTHERS THEN
109452        xla_exceptions_pkg.raise_message
109453            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_229');
109454 END AcctLineType_229;
109455 --
109456 
109457 ---------------------------------------
109458 --
109459 -- PRIVATE FUNCTION
109460 --         AcctLineType_230
109461 --
109462 ---------------------------------------
109463 PROCEDURE AcctLineType_230 (
109464   p_application_id        IN NUMBER
109465  ,p_event_id              IN NUMBER
109466  ,p_calculate_acctd_flag  IN VARCHAR2
109467  ,p_calculate_g_l_flag    IN VARCHAR2
109468  ,p_actual_flag           IN OUT VARCHAR2
109472 --Transaction Account
109469  ,p_balance_type_code     OUT VARCHAR2
109470  ,p_gain_or_loss_ref      OUT VARCHAR2
109471  
109473  , p_source_1            IN NUMBER
109474 --Journal Line Type
109475  , p_source_2            IN VARCHAR2
109476 --Entered Amount
109477  , p_source_3            IN NUMBER
109478 --First Distribution Identifier
109479  , p_source_5            IN NUMBER
109480 --Distribution Type
109481  , p_source_6            IN VARCHAR2
109482 --Currency Code
109483  , p_source_7            IN VARCHAR2
109484 --Currency Conversion Date
109485  , p_source_8            IN DATE
109486 --Currency Conversion Rate
109487  , p_source_9            IN NUMBER
109488 --Currency Conversion Type
109489  , p_source_10            IN VARCHAR2
109490 --Accounted Amount
109491  , p_source_11            IN NUMBER
109492 )
109493 IS
109494 
109495 l_component_type              VARCHAR2(80);
109496 l_component_code              VARCHAR2(30);
109497 l_component_type_code         VARCHAR2(1);
109498 l_component_appl_id           INTEGER;
109499 l_amb_context_code            VARCHAR2(30);
109500 l_entity_code                 VARCHAR2(30);
109501 l_event_class_code            VARCHAR2(30);
109502 l_ae_header_id                NUMBER;
109503 l_event_type_code             VARCHAR2(30);
109504 l_line_definition_code        VARCHAR2(30);
109505 l_line_definition_owner_code  VARCHAR2(1);
109506 --
109507 -- adr variables
109508 l_segment                     VARCHAR2(30);
109509 l_ccid                        NUMBER;
109510 l_adr_transaction_coa_id      NUMBER;
109511 l_adr_accounting_coa_id       NUMBER;
109512 l_adr_flexfield_segment_code  VARCHAR2(30);
109513 l_adr_flex_value_set_id       NUMBER;
109514 l_adr_value_type_code         VARCHAR2(30);
109515 l_adr_value_combination_id    NUMBER;
109516 l_adr_value_segment_code      VARCHAR2(30);
109517 
109518 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
109519 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
109520 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
109521 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
109522 
109523 -- 4262811 Variables ------------------------------------------------------------------------------------------
109524 l_entered_amt_idx             NUMBER;
109525 l_accted_amt_idx              NUMBER;
109526 l_acc_rev_flag                VARCHAR2(1);
109527 l_accrual_line_num            NUMBER;
109528 l_tmp_amt                     NUMBER;
109529 l_acc_rev_natural_side_code   VARCHAR2(1);
109530 
109531 l_num_entries                 NUMBER;
109532 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
109533 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
109534 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
109535 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
109536 l_recog_line_1                NUMBER;
109537 l_recog_line_2                NUMBER;
109538 
109539 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
109540 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
109541 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
109542 
109543 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
109544 
109545 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
109546 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
109547 
109548 ---------------------------------------------------------------------------------------------------------------
109549 
109550 
109551 --
109552 -- bulk performance
109553 --
109554 l_balance_type_code           VARCHAR2(1);
109555 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
109556 l_log_module                  VARCHAR2(240);
109557 
109558 --
109559 -- Upgrade strategy
109560 --
109561 l_actual_upg_option           VARCHAR2(1);
109562 l_enc_upg_option           VARCHAR2(1);
109563 
109564 --
109565 BEGIN
109566 --
109567 IF g_log_enabled THEN
109568       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_230';
109569 END IF;
109570 --
109571 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
109572 
109573       trace
109574          (p_msg      => 'BEGIN of AcctLineType_230'
109575          ,p_level    => C_LEVEL_PROCEDURE
109576          ,p_module   => l_log_module);
109577 
109578 END IF;
109579 --
109580 l_component_type             := 'AMB_JLT';
109581 l_component_code             := 'RCA';
109582 l_component_type_code        := 'S';
109583 l_component_appl_id          :=  555;
109584 l_amb_context_code           := 'DEFAULT';
109585 l_entity_code                := 'PRODUCTION';
109586 l_event_class_code           := 'BATCH_MATERIAL';
109587 l_event_type_code            := 'CERT';
109588 l_line_definition_owner_code := 'S';
109589 l_line_definition_code       := 'BATCH_COMPLETION';
109590 --
109591 l_balance_type_code          := 'A';
109592 l_segment                     := NULL;
109593 l_ccid                        := NULL;
109594 l_adr_transaction_coa_id      := NULL;
109595 l_adr_accounting_coa_id       := NULL;
109596 l_adr_flexfield_segment_code  := NULL;
109597 l_adr_flex_value_set_id       := NULL;
109598 l_adr_value_type_code         := NULL;
109599 l_adr_value_combination_id    := NULL;
109600 l_adr_value_segment_code      := NULL;
109601 
109605 l_budgetary_control_flag     := 'N';
109602 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
109603 l_bflow_class_code           := '';    -- 4219869 Business Flow
109604 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
109606 
109607 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
109608 l_bflow_applied_to_amt       := NULL; -- 5132302
109609 l_entered_amt_idx            := NULL;          -- 4262811
109610 l_accted_amt_idx             := NULL;          -- 4262811
109611 l_acc_rev_flag               := NULL;          -- 4262811
109612 l_accrual_line_num           := NULL;          -- 4262811
109613 l_tmp_amt                    := NULL;          -- 4262811
109614 --
109615  
109616 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
109617     l_balance_type_code <> 'B' THEN
109618 IF NVL(p_source_2,'
109619 ') =  'RCA'
109620  THEN 
109621 
109622    --
109623    XLA_AE_LINES_PKG.SetNewLine;
109624 
109625    p_balance_type_code          := l_balance_type_code;
109626    -- set the flag so later we will know whether the gain loss line needs to be created
109627    
109628    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
109629      p_actual_flag :='A';
109630    END IF;
109631 
109632    --
109633    -- bulk performance
109634    --
109635    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
109636                                       p_header_num   => 0); -- 4262811
109637    --
109638    -- set accounting line options
109639    --
109640    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
109641            p_natural_side_code          => 'D'
109642          , p_gain_or_loss_flag          => 'N'
109643          , p_gl_transfer_mode_code      => 'D'
109644          , p_acct_entry_type_code       => 'A'
109645          , p_switch_side_flag           => 'Y'
109646          , p_merge_duplicate_code       => 'W'
109647          );
109648    --
109649    l_acc_rev_natural_side_code := 'C';  -- 4262811
109650    -- 
109651    --
109652    -- set accounting line type info
109653    --
109654    xla_ae_lines_pkg.SetAcctLineType
109655       (p_component_type             => l_component_type
109656       ,p_event_type_code            => l_event_type_code
109657       ,p_line_definition_owner_code => l_line_definition_owner_code
109658       ,p_line_definition_code       => l_line_definition_code
109659       ,p_accounting_line_code       => l_component_code
109660       ,p_accounting_line_type_code  => l_component_type_code
109661       ,p_accounting_line_appl_id    => l_component_appl_id
109662       ,p_amb_context_code           => l_amb_context_code
109663       ,p_entity_code                => l_entity_code
109664       ,p_event_class_code           => l_event_class_code);
109665    --
109666    -- set accounting class
109667    --
109668    xla_ae_lines_pkg.SetAcctClass(
109669            p_accounting_class_code  => 'RCA'
109670          , p_ae_header_id           => l_ae_header_id
109671          );
109672 
109673    --
109674    -- set rounding class
109675    --
109676    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
109677                       'RCA';
109678 
109679    --
109680    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
109681    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
109682    --
109683    -- bulk performance
109684    --
109685    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
109686 
109687    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
109688       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
109689 
109690    -- 4955764
109691    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
109692       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
109693 
109694    -- 4458381 Public Sector Enh
109695    
109696    --
109697    -- set accounting attributes for the line type
109698    --
109699    l_entered_amt_idx := 3;
109700    l_accted_amt_idx  := 8;
109701    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
109702    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
109703    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
109704    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
109705    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
109706    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
109707    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
109708    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
109709    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
109710    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
109711    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
109712    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
109713    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
109714    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
109715    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
109716    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
109717    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
109718 
109719    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
109723    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
109720    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
109721 
109722    ---------------------------------------------------------------------------------------------------------------
109724    ---------------------------------------------------------------------------------------------------------------
109725    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
109726 
109727    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109728    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109729 
109730    IF xla_accounting_cache_pkg.GetValueChar
109731          (p_source_code         => 'LEDGER_CATEGORY_CODE'
109732          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
109733    AND l_bflow_method_code = 'PRIOR_ENTRY'
109734 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
109735    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
109736          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
109737        )
109738    THEN
109739          xla_ae_lines_pkg.BflowUpgEntry
109740            (p_business_method_code    => l_bflow_method_code
109741            ,p_business_class_code     => l_bflow_class_code
109742            ,p_balance_type            => l_balance_type_code);
109743    ELSE
109744       NULL;
109745 -- No business flow processing for business flow method of NONE.
109746    END IF;
109747 
109748    --
109749    -- call analytical criteria
109750    --
109751    
109752    --
109753    -- call description
109754    --
109755    -- No description or it is inherited.
109756    --
109757    -- call ADRs
109758    -- Bug 4922099
109759    --
109760    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109761         (NVL(l_actual_upg_option, 'N') = 'O') OR
109762         (NVL(l_enc_upg_option, 'N') = 'O')
109763       )
109764    THEN
109765    NULL;
109766    --
109767    --
109768    
109769   l_ccid := AcctDerRule_32(
109770            p_application_id           => p_application_id
109771          , p_ae_header_id             => l_ae_header_id 
109772 , p_source_1 => p_source_1
109773 , p_source_2 => p_source_2
109774          , x_transaction_coa_id       => l_adr_transaction_coa_id
109775          , x_accounting_coa_id        => l_adr_accounting_coa_id
109776          , x_value_type_code          => l_adr_value_type_code
109777          , p_side                     => 'NA'
109778    );
109779 
109780    xla_ae_lines_pkg.set_ccid(
109781     p_code_combination_id          => l_ccid
109782   , p_value_type_code              => l_adr_value_type_code
109783   , p_transaction_coa_id           => l_adr_transaction_coa_id
109784   , p_accounting_coa_id            => l_adr_accounting_coa_id
109785   , p_adr_code                     => 'RCA'
109786   , p_adr_type_code                => 'S'
109787   , p_component_type               => l_component_type
109788   , p_component_code               => l_component_code
109789   , p_component_type_code          => l_component_type_code
109790   , p_component_appl_id            => l_component_appl_id
109791   , p_amb_context_code             => l_amb_context_code
109792   , p_side                         => 'NA'
109793   );
109794 
109795 
109796    --
109797    --
109798    END IF;
109799    --
109800    -- Bug 4922099
109801    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
109802           (NVL(l_enc_upg_option, 'N') = 'O')
109803         ) AND
109804         (l_bflow_method_code = 'PRIOR_ENTRY')
109805       )
109806    THEN
109807       IF
109808       --
109809       1 = 2
109810       --
109811       THEN
109812       xla_accounting_err_pkg.build_message
109813                                     (p_appli_s_name            => 'XLA'
109814                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109815                                     ,p_token_1                 => 'LINE_NUMBER'
109816                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
109817                                     ,p_token_2                 => 'LINE_TYPE_NAME'
109818                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
109819                                                                              l_component_type
109820                                                                             ,l_component_code
109821                                                                             ,l_component_type_code
109822                                                                             ,l_component_appl_id
109823                                                                             ,l_amb_context_code
109824                                                                             ,l_entity_code
109825                                                                             ,l_event_class_code
109826                                                                            )
109827                                     ,p_token_3                 => 'OWNER'
109828                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
109829                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
109830                                                                           ,p_lookup_code    => l_component_type_code
109834                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
109831                                                                          )
109832                                     ,p_token_4                 => 'PRODUCT_NAME'
109833                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
109835                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
109836                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
109837                                     ,p_ae_header_id            =>  NULL
109838                                        );
109839 
109840         IF (C_LEVEL_ERROR>= g_log_level) THEN
109841                  trace
109842                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109843                       ,p_level    => C_LEVEL_ERROR
109844                       ,p_module   => l_log_module);
109845         END IF;
109846       END IF;
109847    END IF;
109848    --
109849    --
109850    ------------------------------------------------------------------------------------------------
109851    -- 4219869 Business Flow
109852    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
109853    -- Prior Entry.  Currently, the following code is always generated.
109854    ------------------------------------------------------------------------------------------------
109855    XLA_AE_LINES_PKG.ValidateCurrentLine;
109856 
109857    ------------------------------------------------------------------------------------
109858    -- 4219869 Business Flow
109859    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
109860    ------------------------------------------------------------------------------------
109861    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
109862 
109863    ----------------------------------------------------------------------------------
109864    -- 4219869 Business Flow
109865    -- Update journal entry status -- Need to generate this within IF <condition>
109866    ----------------------------------------------------------------------------------
109867    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
109868          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
109869          ,p_balance_type_code => l_balance_type_code
109870          );
109871 
109872    -------------------------------------------------------------------------------------------
109873    -- 4262811 - Generate the Accrual Reversal lines
109874    -------------------------------------------------------------------------------------------
109875    BEGIN
109876       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
109877                               (g_array_event(p_event_id).array_value_num('header_index'));
109878       IF l_acc_rev_flag IS NULL THEN
109879          l_acc_rev_flag := 'N';
109880       END IF;
109881    EXCEPTION
109882       WHEN OTHERS THEN
109883          l_acc_rev_flag := 'N';
109884    END;
109885    --
109886    IF (l_acc_rev_flag = 'Y') THEN
109887 
109888        -- 4645092  ------------------------------------------------------------------------------
109889        -- To allow MPA report to determine if it should generate report process
109890        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
109891        ------------------------------------------------------------------------------------------
109892 
109893        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
109894        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
109895    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
109896    -- call ADRs
109897    -- Bug 4922099
109898    --
109899    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109900         (NVL(l_actual_upg_option, 'N') = 'O') OR
109901         (NVL(l_enc_upg_option, 'N') = 'O')
109902       )
109903    THEN
109904    NULL;
109905    --
109906    --
109907    
109908   l_ccid := AcctDerRule_32(
109909            p_application_id           => p_application_id
109910          , p_ae_header_id             => l_ae_header_id 
109911 , p_source_1 => p_source_1
109912 , p_source_2 => p_source_2
109913          , x_transaction_coa_id       => l_adr_transaction_coa_id
109914          , x_accounting_coa_id        => l_adr_accounting_coa_id
109915          , x_value_type_code          => l_adr_value_type_code
109916          , p_side                     => 'NA'
109917    );
109918 
109919    xla_ae_lines_pkg.set_ccid(
109920     p_code_combination_id          => l_ccid
109921   , p_value_type_code              => l_adr_value_type_code
109922   , p_transaction_coa_id           => l_adr_transaction_coa_id
109923   , p_accounting_coa_id            => l_adr_accounting_coa_id
109924   , p_adr_code                     => 'RCA'
109925   , p_adr_type_code                => 'S'
109926   , p_component_type               => l_component_type
109927   , p_component_code               => l_component_code
109928   , p_component_type_code          => l_component_type_code
109929   , p_component_appl_id            => l_component_appl_id
109930   , p_amb_context_code             => l_amb_context_code
109931   , p_side                         => 'NA'
109932   );
109933 
109934 
109935    --
109936    --
109937    END IF;
109938 
109939        --
109940        -- Update the line information that should be overwritten
109941        --
109942        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
109946        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
109943                                          p_header_num   => 1);
109944        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
109945 
109947 
109948        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
109949           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
109950        END IF;
109951 
109952       --
109953       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
109954       --
109955       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
109956           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
109957       ELSE
109958           ---------------------------------------------------------------------------------------------------
109959           -- 4262811a Switch Sign
109960           ---------------------------------------------------------------------------------------------------
109961           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
109962           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
109963                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109964           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
109965                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109966           -- 5132302
109967           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
109968                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109969 
109970       END IF;
109971 
109972       -- 4955764
109973       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
109974       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
109975 
109976 
109977       XLA_AE_LINES_PKG.ValidateCurrentLine;
109978       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
109979 
109980       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
109981                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
109982                ,p_balance_type_code => l_balance_type_code);
109983 
109984    END IF;
109985 
109986    -----------------------------------------------------------------------------------------
109987    -- 4262811 Multiperiod Accounting
109988    -----------------------------------------------------------------------------------------
109989      -- No MPA option is assigned.
109990 
109991 
109992 END IF;
109993 END IF;
109994 --
109995 
109996 --
109997 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
109998    trace
109999       (p_msg      => 'END of AcctLineType_230'
110000       ,p_level    => C_LEVEL_PROCEDURE
110001       ,p_module   => l_log_module);
110002 END IF;
110003 --
110004 EXCEPTION
110005   WHEN xla_exceptions_pkg.application_exception THEN
110006       RAISE;
110007   WHEN OTHERS THEN
110008        xla_exceptions_pkg.raise_message
110009            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_230');
110010 END AcctLineType_230;
110011 --
110012 
110013 ---------------------------------------
110014 --
110015 -- PRIVATE FUNCTION
110016 --         AcctLineType_231
110017 --
110018 ---------------------------------------
110019 PROCEDURE AcctLineType_231 (
110020   p_application_id        IN NUMBER
110021  ,p_event_id              IN NUMBER
110022  ,p_calculate_acctd_flag  IN VARCHAR2
110023  ,p_calculate_g_l_flag    IN VARCHAR2
110024  ,p_actual_flag           IN OUT VARCHAR2
110025  ,p_balance_type_code     OUT VARCHAR2
110026  ,p_gain_or_loss_ref      OUT VARCHAR2
110027  
110028 --Transaction Account
110029  , p_source_1            IN NUMBER
110030 --Journal Line Type
110031  , p_source_2            IN VARCHAR2
110032 --Entered Amount
110033  , p_source_3            IN NUMBER
110034 --First Distribution Identifier
110035  , p_source_5            IN NUMBER
110036 --Distribution Type
110037  , p_source_6            IN VARCHAR2
110038 --Currency Code
110039  , p_source_7            IN VARCHAR2
110040 --Currency Conversion Date
110041  , p_source_8            IN DATE
110042 --Currency Conversion Rate
110043  , p_source_9            IN NUMBER
110044 --Currency Conversion Type
110045  , p_source_10            IN VARCHAR2
110046 --Accounted Amount
110047  , p_source_11            IN NUMBER
110048 )
110049 IS
110050 
110051 l_component_type              VARCHAR2(80);
110052 l_component_code              VARCHAR2(30);
110053 l_component_type_code         VARCHAR2(1);
110054 l_component_appl_id           INTEGER;
110055 l_amb_context_code            VARCHAR2(30);
110056 l_entity_code                 VARCHAR2(30);
110057 l_event_class_code            VARCHAR2(30);
110058 l_ae_header_id                NUMBER;
110059 l_event_type_code             VARCHAR2(30);
110060 l_line_definition_code        VARCHAR2(30);
110061 l_line_definition_owner_code  VARCHAR2(1);
110062 --
110063 -- adr variables
110064 l_segment                     VARCHAR2(30);
110065 l_ccid                        NUMBER;
110066 l_adr_transaction_coa_id      NUMBER;
110067 l_adr_accounting_coa_id       NUMBER;
110071 l_adr_value_combination_id    NUMBER;
110068 l_adr_flexfield_segment_code  VARCHAR2(30);
110069 l_adr_flex_value_set_id       NUMBER;
110070 l_adr_value_type_code         VARCHAR2(30);
110072 l_adr_value_segment_code      VARCHAR2(30);
110073 
110074 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
110075 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
110076 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
110077 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
110078 
110079 -- 4262811 Variables ------------------------------------------------------------------------------------------
110080 l_entered_amt_idx             NUMBER;
110081 l_accted_amt_idx              NUMBER;
110082 l_acc_rev_flag                VARCHAR2(1);
110083 l_accrual_line_num            NUMBER;
110084 l_tmp_amt                     NUMBER;
110085 l_acc_rev_natural_side_code   VARCHAR2(1);
110086 
110087 l_num_entries                 NUMBER;
110088 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
110089 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
110090 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
110091 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
110092 l_recog_line_1                NUMBER;
110093 l_recog_line_2                NUMBER;
110094 
110095 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
110096 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
110097 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
110098 
110099 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
110100 
110101 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
110102 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
110103 
110104 ---------------------------------------------------------------------------------------------------------------
110105 
110106 
110107 --
110108 -- bulk performance
110109 --
110110 l_balance_type_code           VARCHAR2(1);
110111 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
110112 l_log_module                  VARCHAR2(240);
110113 
110114 --
110115 -- Upgrade strategy
110116 --
110117 l_actual_upg_option           VARCHAR2(1);
110118 l_enc_upg_option           VARCHAR2(1);
110119 
110120 --
110121 BEGIN
110122 --
110123 IF g_log_enabled THEN
110124       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_231';
110125 END IF;
110126 --
110127 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
110128 
110129       trace
110130          (p_msg      => 'BEGIN of AcctLineType_231'
110131          ,p_level    => C_LEVEL_PROCEDURE
110132          ,p_module   => l_log_module);
110133 
110134 END IF;
110135 --
110136 l_component_type             := 'AMB_JLT';
110137 l_component_code             := 'RCA';
110138 l_component_type_code        := 'S';
110139 l_component_appl_id          :=  555;
110140 l_amb_context_code           := 'DEFAULT';
110141 l_entity_code                := 'PRODUCTION';
110142 l_event_class_code           := 'BATCH_RESOURCE';
110143 l_event_type_code            := 'STEP';
110144 l_line_definition_owner_code := 'S';
110145 l_line_definition_code       := 'BATCH_STEP';
110146 --
110147 l_balance_type_code          := 'A';
110148 l_segment                     := NULL;
110149 l_ccid                        := NULL;
110150 l_adr_transaction_coa_id      := NULL;
110151 l_adr_accounting_coa_id       := NULL;
110152 l_adr_flexfield_segment_code  := NULL;
110153 l_adr_flex_value_set_id       := NULL;
110154 l_adr_value_type_code         := NULL;
110155 l_adr_value_combination_id    := NULL;
110156 l_adr_value_segment_code      := NULL;
110157 
110158 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
110159 l_bflow_class_code           := '';    -- 4219869 Business Flow
110160 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
110161 l_budgetary_control_flag     := 'N';
110162 
110163 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
110164 l_bflow_applied_to_amt       := NULL; -- 5132302
110165 l_entered_amt_idx            := NULL;          -- 4262811
110166 l_accted_amt_idx             := NULL;          -- 4262811
110167 l_acc_rev_flag               := NULL;          -- 4262811
110168 l_accrual_line_num           := NULL;          -- 4262811
110169 l_tmp_amt                    := NULL;          -- 4262811
110170 --
110171  
110172 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
110173     l_balance_type_code <> 'B' THEN
110174 IF NVL(p_source_2,'
110175 ') =  'RCA'
110176  THEN 
110177 
110178    --
110179    XLA_AE_LINES_PKG.SetNewLine;
110180 
110181    p_balance_type_code          := l_balance_type_code;
110182    -- set the flag so later we will know whether the gain loss line needs to be created
110183    
110184    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
110185      p_actual_flag :='A';
110186    END IF;
110187 
110188    --
110189    -- bulk performance
110190    --
110191    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
110192                                       p_header_num   => 0); -- 4262811
110193    --
110194    -- set accounting line options
110195    --
110196    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
110200          , p_acct_entry_type_code       => 'A'
110197            p_natural_side_code          => 'D'
110198          , p_gain_or_loss_flag          => 'N'
110199          , p_gl_transfer_mode_code      => 'D'
110201          , p_switch_side_flag           => 'Y'
110202          , p_merge_duplicate_code       => 'W'
110203          );
110204    --
110205    l_acc_rev_natural_side_code := 'C';  -- 4262811
110206    -- 
110207    --
110208    -- set accounting line type info
110209    --
110210    xla_ae_lines_pkg.SetAcctLineType
110211       (p_component_type             => l_component_type
110212       ,p_event_type_code            => l_event_type_code
110213       ,p_line_definition_owner_code => l_line_definition_owner_code
110214       ,p_line_definition_code       => l_line_definition_code
110215       ,p_accounting_line_code       => l_component_code
110216       ,p_accounting_line_type_code  => l_component_type_code
110217       ,p_accounting_line_appl_id    => l_component_appl_id
110218       ,p_amb_context_code           => l_amb_context_code
110219       ,p_entity_code                => l_entity_code
110220       ,p_event_class_code           => l_event_class_code);
110221    --
110222    -- set accounting class
110223    --
110224    xla_ae_lines_pkg.SetAcctClass(
110225            p_accounting_class_code  => 'RCA'
110226          , p_ae_header_id           => l_ae_header_id
110227          );
110228 
110229    --
110230    -- set rounding class
110231    --
110232    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
110233                       'RCA';
110234 
110235    --
110236    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
110237    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
110238    --
110239    -- bulk performance
110240    --
110241    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
110242 
110243    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
110244       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
110245 
110246    -- 4955764
110247    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
110248       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
110249 
110250    -- 4458381 Public Sector Enh
110251    
110252    --
110253    -- set accounting attributes for the line type
110254    --
110255    l_entered_amt_idx := 3;
110256    l_accted_amt_idx  := 8;
110257    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
110258    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
110259    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
110260    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
110261    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
110262    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
110263    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
110264    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
110265    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
110266    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
110267    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
110268    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
110269    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
110270    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
110271    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
110272    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
110273    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
110274 
110275    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
110276    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
110277 
110278    ---------------------------------------------------------------------------------------------------------------
110279    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
110280    ---------------------------------------------------------------------------------------------------------------
110281    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
110282 
110283    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
110284    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
110285 
110286    IF xla_accounting_cache_pkg.GetValueChar
110287          (p_source_code         => 'LEDGER_CATEGORY_CODE'
110288          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
110289    AND l_bflow_method_code = 'PRIOR_ENTRY'
110290 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
110291    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
110292          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
110293        )
110294    THEN
110295          xla_ae_lines_pkg.BflowUpgEntry
110296            (p_business_method_code    => l_bflow_method_code
110297            ,p_business_class_code     => l_bflow_class_code
110298            ,p_balance_type            => l_balance_type_code);
110299    ELSE
110300       NULL;
110301 -- No business flow processing for business flow method of NONE.
110302    END IF;
110303 
110304    --
110305    -- call analytical criteria
110306    --
110307    
110308    --
110309    -- call description
110310    --
110314    -- Bug 4922099
110311    -- No description or it is inherited.
110312    --
110313    -- call ADRs
110315    --
110316    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
110317         (NVL(l_actual_upg_option, 'N') = 'O') OR
110318         (NVL(l_enc_upg_option, 'N') = 'O')
110319       )
110320    THEN
110321    NULL;
110322    --
110323    --
110324    
110325   l_ccid := AcctDerRule_32(
110326            p_application_id           => p_application_id
110327          , p_ae_header_id             => l_ae_header_id 
110328 , p_source_1 => p_source_1
110329 , p_source_2 => p_source_2
110330          , x_transaction_coa_id       => l_adr_transaction_coa_id
110331          , x_accounting_coa_id        => l_adr_accounting_coa_id
110332          , x_value_type_code          => l_adr_value_type_code
110333          , p_side                     => 'NA'
110334    );
110335 
110336    xla_ae_lines_pkg.set_ccid(
110337     p_code_combination_id          => l_ccid
110338   , p_value_type_code              => l_adr_value_type_code
110339   , p_transaction_coa_id           => l_adr_transaction_coa_id
110340   , p_accounting_coa_id            => l_adr_accounting_coa_id
110341   , p_adr_code                     => 'RCA'
110342   , p_adr_type_code                => 'S'
110343   , p_component_type               => l_component_type
110344   , p_component_code               => l_component_code
110345   , p_component_type_code          => l_component_type_code
110346   , p_component_appl_id            => l_component_appl_id
110347   , p_amb_context_code             => l_amb_context_code
110348   , p_side                         => 'NA'
110349   );
110350 
110351 
110352    --
110353    --
110354    END IF;
110355    --
110356    -- Bug 4922099
110357    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
110358           (NVL(l_enc_upg_option, 'N') = 'O')
110359         ) AND
110360         (l_bflow_method_code = 'PRIOR_ENTRY')
110361       )
110362    THEN
110363       IF
110364       --
110365       1 = 2
110366       --
110367       THEN
110368       xla_accounting_err_pkg.build_message
110369                                     (p_appli_s_name            => 'XLA'
110370                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
110371                                     ,p_token_1                 => 'LINE_NUMBER'
110372                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
110373                                     ,p_token_2                 => 'LINE_TYPE_NAME'
110374                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
110375                                                                              l_component_type
110376                                                                             ,l_component_code
110377                                                                             ,l_component_type_code
110378                                                                             ,l_component_appl_id
110379                                                                             ,l_amb_context_code
110380                                                                             ,l_entity_code
110381                                                                             ,l_event_class_code
110382                                                                            )
110383                                     ,p_token_3                 => 'OWNER'
110384                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
110385                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
110386                                                                           ,p_lookup_code    => l_component_type_code
110387                                                                          )
110388                                     ,p_token_4                 => 'PRODUCT_NAME'
110389                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
110390                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
110391                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
110392                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
110393                                     ,p_ae_header_id            =>  NULL
110394                                        );
110395 
110396         IF (C_LEVEL_ERROR>= g_log_level) THEN
110397                  trace
110398                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
110399                       ,p_level    => C_LEVEL_ERROR
110400                       ,p_module   => l_log_module);
110401         END IF;
110402       END IF;
110403    END IF;
110404    --
110405    --
110406    ------------------------------------------------------------------------------------------------
110407    -- 4219869 Business Flow
110408    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
110409    -- Prior Entry.  Currently, the following code is always generated.
110410    ------------------------------------------------------------------------------------------------
110411    XLA_AE_LINES_PKG.ValidateCurrentLine;
110412 
110413    ------------------------------------------------------------------------------------
110414    -- 4219869 Business Flow
110415    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
110419    ----------------------------------------------------------------------------------
110416    ------------------------------------------------------------------------------------
110417    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
110418 
110420    -- 4219869 Business Flow
110421    -- Update journal entry status -- Need to generate this within IF <condition>
110422    ----------------------------------------------------------------------------------
110423    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
110424          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
110425          ,p_balance_type_code => l_balance_type_code
110426          );
110427 
110428    -------------------------------------------------------------------------------------------
110429    -- 4262811 - Generate the Accrual Reversal lines
110430    -------------------------------------------------------------------------------------------
110431    BEGIN
110432       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
110433                               (g_array_event(p_event_id).array_value_num('header_index'));
110434       IF l_acc_rev_flag IS NULL THEN
110435          l_acc_rev_flag := 'N';
110436       END IF;
110437    EXCEPTION
110438       WHEN OTHERS THEN
110439          l_acc_rev_flag := 'N';
110440    END;
110441    --
110442    IF (l_acc_rev_flag = 'Y') THEN
110443 
110444        -- 4645092  ------------------------------------------------------------------------------
110445        -- To allow MPA report to determine if it should generate report process
110446        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
110447        ------------------------------------------------------------------------------------------
110448 
110449        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
110450        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
110451    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
110452    -- call ADRs
110453    -- Bug 4922099
110454    --
110455    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
110456         (NVL(l_actual_upg_option, 'N') = 'O') OR
110457         (NVL(l_enc_upg_option, 'N') = 'O')
110458       )
110459    THEN
110460    NULL;
110461    --
110462    --
110463    
110464   l_ccid := AcctDerRule_32(
110465            p_application_id           => p_application_id
110466          , p_ae_header_id             => l_ae_header_id 
110467 , p_source_1 => p_source_1
110468 , p_source_2 => p_source_2
110469          , x_transaction_coa_id       => l_adr_transaction_coa_id
110470          , x_accounting_coa_id        => l_adr_accounting_coa_id
110471          , x_value_type_code          => l_adr_value_type_code
110472          , p_side                     => 'NA'
110473    );
110474 
110475    xla_ae_lines_pkg.set_ccid(
110476     p_code_combination_id          => l_ccid
110477   , p_value_type_code              => l_adr_value_type_code
110478   , p_transaction_coa_id           => l_adr_transaction_coa_id
110479   , p_accounting_coa_id            => l_adr_accounting_coa_id
110480   , p_adr_code                     => 'RCA'
110481   , p_adr_type_code                => 'S'
110482   , p_component_type               => l_component_type
110483   , p_component_code               => l_component_code
110484   , p_component_type_code          => l_component_type_code
110485   , p_component_appl_id            => l_component_appl_id
110486   , p_amb_context_code             => l_amb_context_code
110487   , p_side                         => 'NA'
110488   );
110489 
110490 
110491    --
110492    --
110493    END IF;
110494 
110495        --
110496        -- Update the line information that should be overwritten
110497        --
110498        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
110499                                          p_header_num   => 1);
110500        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
110501 
110502        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
110503 
110504        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
110505           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
110506        END IF;
110507 
110508       --
110509       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
110510       --
110511       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
110512           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
110513       ELSE
110514           ---------------------------------------------------------------------------------------------------
110515           -- 4262811a Switch Sign
110516           ---------------------------------------------------------------------------------------------------
110517           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
110518           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
110519                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110520           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
110521                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110522           -- 5132302
110523           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
110527 
110524                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110525 
110526       END IF;
110528       -- 4955764
110529       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
110530       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
110531 
110532 
110533       XLA_AE_LINES_PKG.ValidateCurrentLine;
110534       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
110535 
110536       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
110537                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
110538                ,p_balance_type_code => l_balance_type_code);
110539 
110540    END IF;
110541 
110542    -----------------------------------------------------------------------------------------
110543    -- 4262811 Multiperiod Accounting
110544    -----------------------------------------------------------------------------------------
110545      -- No MPA option is assigned.
110546 
110547 
110548 END IF;
110549 END IF;
110550 --
110551 
110552 --
110553 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
110554    trace
110555       (p_msg      => 'END of AcctLineType_231'
110556       ,p_level    => C_LEVEL_PROCEDURE
110557       ,p_module   => l_log_module);
110558 END IF;
110559 --
110560 EXCEPTION
110561   WHEN xla_exceptions_pkg.application_exception THEN
110562       RAISE;
110563   WHEN OTHERS THEN
110564        xla_exceptions_pkg.raise_message
110565            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_231');
110566 END AcctLineType_231;
110567 --
110568 
110569 ---------------------------------------
110570 --
110571 -- PRIVATE FUNCTION
110572 --         AcctLineType_232
110573 --
110574 ---------------------------------------
110575 PROCEDURE AcctLineType_232 (
110576   p_application_id        IN NUMBER
110577  ,p_event_id              IN NUMBER
110578  ,p_calculate_acctd_flag  IN VARCHAR2
110579  ,p_calculate_g_l_flag    IN VARCHAR2
110580  ,p_actual_flag           IN OUT VARCHAR2
110581  ,p_balance_type_code     OUT VARCHAR2
110582  ,p_gain_or_loss_ref      OUT VARCHAR2
110583  
110584 --Transaction Account
110585  , p_source_1            IN NUMBER
110586 --Journal Line Type
110587  , p_source_2            IN VARCHAR2
110588 --Entered Amount
110589  , p_source_3            IN NUMBER
110590 --First Distribution Identifier
110591  , p_source_5            IN NUMBER
110592 --Distribution Type
110593  , p_source_6            IN VARCHAR2
110594 --Currency Code
110595  , p_source_7            IN VARCHAR2
110596 --Currency Conversion Date
110597  , p_source_8            IN DATE
110598 --Currency Conversion Rate
110599  , p_source_9            IN NUMBER
110600 --Currency Conversion Type
110601  , p_source_10            IN VARCHAR2
110602 --Accounted Amount
110603  , p_source_11            IN NUMBER
110604 )
110605 IS
110606 
110607 l_component_type              VARCHAR2(80);
110608 l_component_code              VARCHAR2(30);
110609 l_component_type_code         VARCHAR2(1);
110610 l_component_appl_id           INTEGER;
110611 l_amb_context_code            VARCHAR2(30);
110612 l_entity_code                 VARCHAR2(30);
110613 l_event_class_code            VARCHAR2(30);
110614 l_ae_header_id                NUMBER;
110615 l_event_type_code             VARCHAR2(30);
110616 l_line_definition_code        VARCHAR2(30);
110617 l_line_definition_owner_code  VARCHAR2(1);
110618 --
110619 -- adr variables
110620 l_segment                     VARCHAR2(30);
110621 l_ccid                        NUMBER;
110622 l_adr_transaction_coa_id      NUMBER;
110623 l_adr_accounting_coa_id       NUMBER;
110624 l_adr_flexfield_segment_code  VARCHAR2(30);
110625 l_adr_flex_value_set_id       NUMBER;
110626 l_adr_value_type_code         VARCHAR2(30);
110627 l_adr_value_combination_id    NUMBER;
110628 l_adr_value_segment_code      VARCHAR2(30);
110629 
110630 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
110631 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
110632 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
110633 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
110634 
110635 -- 4262811 Variables ------------------------------------------------------------------------------------------
110636 l_entered_amt_idx             NUMBER;
110637 l_accted_amt_idx              NUMBER;
110638 l_acc_rev_flag                VARCHAR2(1);
110639 l_accrual_line_num            NUMBER;
110640 l_tmp_amt                     NUMBER;
110641 l_acc_rev_natural_side_code   VARCHAR2(1);
110642 
110643 l_num_entries                 NUMBER;
110644 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
110645 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
110646 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
110647 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
110648 l_recog_line_1                NUMBER;
110649 l_recog_line_2                NUMBER;
110650 
110651 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
110652 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
110653 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
110654 
110658 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
110655 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
110656 
110657 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
110659 
110660 ---------------------------------------------------------------------------------------------------------------
110661 
110662 
110663 --
110664 -- bulk performance
110665 --
110666 l_balance_type_code           VARCHAR2(1);
110667 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
110668 l_log_module                  VARCHAR2(240);
110669 
110670 --
110671 -- Upgrade strategy
110672 --
110673 l_actual_upg_option           VARCHAR2(1);
110674 l_enc_upg_option           VARCHAR2(1);
110675 
110676 --
110677 BEGIN
110678 --
110679 IF g_log_enabled THEN
110680       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_232';
110681 END IF;
110682 --
110683 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
110684 
110685       trace
110686          (p_msg      => 'BEGIN of AcctLineType_232'
110687          ,p_level    => C_LEVEL_PROCEDURE
110688          ,p_module   => l_log_module);
110689 
110690 END IF;
110691 --
110692 l_component_type             := 'AMB_JLT';
110693 l_component_code             := 'RMV';
110694 l_component_type_code        := 'S';
110695 l_component_appl_id          :=  555;
110696 l_amb_context_code           := 'DEFAULT';
110697 l_entity_code                := 'PRODUCTION';
110698 l_event_class_code           := 'BATCH_CLOSE';
110699 l_event_type_code            := 'CLOS';
110700 l_line_definition_owner_code := 'S';
110701 l_line_definition_code       := 'BATCH_CLOSE';
110702 --
110703 l_balance_type_code          := 'A';
110704 l_segment                     := NULL;
110705 l_ccid                        := NULL;
110706 l_adr_transaction_coa_id      := NULL;
110707 l_adr_accounting_coa_id       := NULL;
110708 l_adr_flexfield_segment_code  := NULL;
110709 l_adr_flex_value_set_id       := NULL;
110710 l_adr_value_type_code         := NULL;
110711 l_adr_value_combination_id    := NULL;
110712 l_adr_value_segment_code      := NULL;
110713 
110714 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
110715 l_bflow_class_code           := '';    -- 4219869 Business Flow
110716 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
110717 l_budgetary_control_flag     := 'N';
110718 
110719 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
110720 l_bflow_applied_to_amt       := NULL; -- 5132302
110721 l_entered_amt_idx            := NULL;          -- 4262811
110722 l_accted_amt_idx             := NULL;          -- 4262811
110723 l_acc_rev_flag               := NULL;          -- 4262811
110724 l_accrual_line_num           := NULL;          -- 4262811
110725 l_tmp_amt                    := NULL;          -- 4262811
110726 --
110727  
110728 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
110729     l_balance_type_code <> 'B' THEN
110730 IF NVL(p_source_2,'
110731 ') =  'RMV'
110732  THEN 
110733 
110734    --
110735    XLA_AE_LINES_PKG.SetNewLine;
110736 
110737    p_balance_type_code          := l_balance_type_code;
110738    -- set the flag so later we will know whether the gain loss line needs to be created
110739    
110740    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
110741      p_actual_flag :='A';
110742    END IF;
110743 
110744    --
110745    -- bulk performance
110746    --
110747    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
110748                                       p_header_num   => 0); -- 4262811
110749    --
110750    -- set accounting line options
110751    --
110752    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
110753            p_natural_side_code          => 'D'
110754          , p_gain_or_loss_flag          => 'N'
110755          , p_gl_transfer_mode_code      => 'D'
110756          , p_acct_entry_type_code       => 'A'
110757          , p_switch_side_flag           => 'Y'
110758          , p_merge_duplicate_code       => 'W'
110759          );
110760    --
110761    l_acc_rev_natural_side_code := 'C';  -- 4262811
110762    -- 
110763    --
110764    -- set accounting line type info
110765    --
110766    xla_ae_lines_pkg.SetAcctLineType
110767       (p_component_type             => l_component_type
110768       ,p_event_type_code            => l_event_type_code
110769       ,p_line_definition_owner_code => l_line_definition_owner_code
110770       ,p_line_definition_code       => l_line_definition_code
110771       ,p_accounting_line_code       => l_component_code
110772       ,p_accounting_line_type_code  => l_component_type_code
110773       ,p_accounting_line_appl_id    => l_component_appl_id
110774       ,p_amb_context_code           => l_amb_context_code
110775       ,p_entity_code                => l_entity_code
110776       ,p_event_class_code           => l_event_class_code);
110777    --
110778    -- set accounting class
110779    --
110780    xla_ae_lines_pkg.SetAcctClass(
110781            p_accounting_class_code  => 'RMV'
110782          , p_ae_header_id           => l_ae_header_id
110783          );
110784 
110785    --
110786    -- set rounding class
110787    --
110788    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
110789                       'RMV';
110790 
110791    --
110795    -- bulk performance
110792    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
110793    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
110794    --
110796    --
110797    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
110798 
110799    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
110800       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
110801 
110802    -- 4955764
110803    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
110804       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
110805 
110806    -- 4458381 Public Sector Enh
110807    
110808    --
110809    -- set accounting attributes for the line type
110810    --
110811    l_entered_amt_idx := 3;
110812    l_accted_amt_idx  := 8;
110813    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
110814    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
110815    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
110816    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
110817    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
110818    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
110819    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
110820    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
110821    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
110822    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
110823    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
110824    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
110825    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
110826    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
110827    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
110828    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
110829    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
110830 
110831    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
110832    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
110833 
110834    ---------------------------------------------------------------------------------------------------------------
110835    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
110836    ---------------------------------------------------------------------------------------------------------------
110837    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
110838 
110839    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
110840    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
110841 
110842    IF xla_accounting_cache_pkg.GetValueChar
110843          (p_source_code         => 'LEDGER_CATEGORY_CODE'
110844          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
110845    AND l_bflow_method_code = 'PRIOR_ENTRY'
110846 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
110847    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
110848          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
110849        )
110850    THEN
110851          xla_ae_lines_pkg.BflowUpgEntry
110852            (p_business_method_code    => l_bflow_method_code
110853            ,p_business_class_code     => l_bflow_class_code
110854            ,p_balance_type            => l_balance_type_code);
110855    ELSE
110856       NULL;
110857 -- No business flow processing for business flow method of NONE.
110858    END IF;
110859 
110860    --
110861    -- call analytical criteria
110862    --
110863    
110864    --
110865    -- call description
110866    --
110867    -- No description or it is inherited.
110868    --
110869    -- call ADRs
110870    -- Bug 4922099
110871    --
110872    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
110873         (NVL(l_actual_upg_option, 'N') = 'O') OR
110874         (NVL(l_enc_upg_option, 'N') = 'O')
110875       )
110876    THEN
110877    NULL;
110878    --
110879    --
110880    
110881   l_ccid := AcctDerRule_33(
110882            p_application_id           => p_application_id
110883          , p_ae_header_id             => l_ae_header_id 
110884 , p_source_1 => p_source_1
110885 , p_source_2 => p_source_2
110886          , x_transaction_coa_id       => l_adr_transaction_coa_id
110887          , x_accounting_coa_id        => l_adr_accounting_coa_id
110888          , x_value_type_code          => l_adr_value_type_code
110889          , p_side                     => 'NA'
110890    );
110891 
110892    xla_ae_lines_pkg.set_ccid(
110893     p_code_combination_id          => l_ccid
110894   , p_value_type_code              => l_adr_value_type_code
110895   , p_transaction_coa_id           => l_adr_transaction_coa_id
110896   , p_accounting_coa_id            => l_adr_accounting_coa_id
110897   , p_adr_code                     => 'RMV'
110898   , p_adr_type_code                => 'S'
110899   , p_component_type               => l_component_type
110900   , p_component_code               => l_component_code
110901   , p_component_type_code          => l_component_type_code
110902   , p_component_appl_id            => l_component_appl_id
110903   , p_amb_context_code             => l_amb_context_code
110904   , p_side                         => 'NA'
110908    --
110905   );
110906 
110907 
110909    --
110910    END IF;
110911    --
110912    -- Bug 4922099
110913    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
110914           (NVL(l_enc_upg_option, 'N') = 'O')
110915         ) AND
110916         (l_bflow_method_code = 'PRIOR_ENTRY')
110917       )
110918    THEN
110919       IF
110920       --
110921       1 = 2
110922       --
110923       THEN
110924       xla_accounting_err_pkg.build_message
110925                                     (p_appli_s_name            => 'XLA'
110926                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
110927                                     ,p_token_1                 => 'LINE_NUMBER'
110928                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
110929                                     ,p_token_2                 => 'LINE_TYPE_NAME'
110930                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
110931                                                                              l_component_type
110932                                                                             ,l_component_code
110933                                                                             ,l_component_type_code
110934                                                                             ,l_component_appl_id
110935                                                                             ,l_amb_context_code
110936                                                                             ,l_entity_code
110937                                                                             ,l_event_class_code
110938                                                                            )
110939                                     ,p_token_3                 => 'OWNER'
110940                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
110941                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
110942                                                                           ,p_lookup_code    => l_component_type_code
110943                                                                          )
110944                                     ,p_token_4                 => 'PRODUCT_NAME'
110945                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
110946                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
110947                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
110948                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
110949                                     ,p_ae_header_id            =>  NULL
110950                                        );
110951 
110952         IF (C_LEVEL_ERROR>= g_log_level) THEN
110953                  trace
110954                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
110955                       ,p_level    => C_LEVEL_ERROR
110956                       ,p_module   => l_log_module);
110957         END IF;
110958       END IF;
110959    END IF;
110960    --
110961    --
110962    ------------------------------------------------------------------------------------------------
110963    -- 4219869 Business Flow
110964    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
110965    -- Prior Entry.  Currently, the following code is always generated.
110966    ------------------------------------------------------------------------------------------------
110967    XLA_AE_LINES_PKG.ValidateCurrentLine;
110968 
110969    ------------------------------------------------------------------------------------
110970    -- 4219869 Business Flow
110971    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
110972    ------------------------------------------------------------------------------------
110973    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
110974 
110975    ----------------------------------------------------------------------------------
110976    -- 4219869 Business Flow
110977    -- Update journal entry status -- Need to generate this within IF <condition>
110978    ----------------------------------------------------------------------------------
110979    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
110980          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
110981          ,p_balance_type_code => l_balance_type_code
110982          );
110983 
110984    -------------------------------------------------------------------------------------------
110985    -- 4262811 - Generate the Accrual Reversal lines
110986    -------------------------------------------------------------------------------------------
110987    BEGIN
110988       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
110989                               (g_array_event(p_event_id).array_value_num('header_index'));
110990       IF l_acc_rev_flag IS NULL THEN
110991          l_acc_rev_flag := 'N';
110992       END IF;
110993    EXCEPTION
110994       WHEN OTHERS THEN
110995          l_acc_rev_flag := 'N';
110996    END;
110997    --
110998    IF (l_acc_rev_flag = 'Y') THEN
110999 
111000        -- 4645092  ------------------------------------------------------------------------------
111001        -- To allow MPA report to determine if it should generate report process
111002        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
111003        ------------------------------------------------------------------------------------------
111007    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
111004 
111005        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
111006        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
111008    -- call ADRs
111009    -- Bug 4922099
111010    --
111011    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111012         (NVL(l_actual_upg_option, 'N') = 'O') OR
111013         (NVL(l_enc_upg_option, 'N') = 'O')
111014       )
111015    THEN
111016    NULL;
111017    --
111018    --
111019    
111020   l_ccid := AcctDerRule_33(
111021            p_application_id           => p_application_id
111022          , p_ae_header_id             => l_ae_header_id 
111023 , p_source_1 => p_source_1
111024 , p_source_2 => p_source_2
111025          , x_transaction_coa_id       => l_adr_transaction_coa_id
111026          , x_accounting_coa_id        => l_adr_accounting_coa_id
111027          , x_value_type_code          => l_adr_value_type_code
111028          , p_side                     => 'NA'
111029    );
111030 
111031    xla_ae_lines_pkg.set_ccid(
111032     p_code_combination_id          => l_ccid
111033   , p_value_type_code              => l_adr_value_type_code
111034   , p_transaction_coa_id           => l_adr_transaction_coa_id
111035   , p_accounting_coa_id            => l_adr_accounting_coa_id
111036   , p_adr_code                     => 'RMV'
111037   , p_adr_type_code                => 'S'
111038   , p_component_type               => l_component_type
111039   , p_component_code               => l_component_code
111040   , p_component_type_code          => l_component_type_code
111041   , p_component_appl_id            => l_component_appl_id
111042   , p_amb_context_code             => l_amb_context_code
111043   , p_side                         => 'NA'
111044   );
111045 
111046 
111047    --
111048    --
111049    END IF;
111050 
111051        --
111052        -- Update the line information that should be overwritten
111053        --
111054        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
111055                                          p_header_num   => 1);
111056        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
111057 
111058        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
111059 
111060        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
111061           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
111062        END IF;
111063 
111064       --
111065       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
111066       --
111067       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
111068           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
111069       ELSE
111070           ---------------------------------------------------------------------------------------------------
111071           -- 4262811a Switch Sign
111072           ---------------------------------------------------------------------------------------------------
111073           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
111074           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111075                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111076           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111077                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111078           -- 5132302
111079           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
111080                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111081 
111082       END IF;
111083 
111084       -- 4955764
111085       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111086       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
111087 
111088 
111089       XLA_AE_LINES_PKG.ValidateCurrentLine;
111090       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111091 
111092       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111093                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
111094                ,p_balance_type_code => l_balance_type_code);
111095 
111096    END IF;
111097 
111098    -----------------------------------------------------------------------------------------
111099    -- 4262811 Multiperiod Accounting
111100    -----------------------------------------------------------------------------------------
111101      -- No MPA option is assigned.
111102 
111103 
111104 END IF;
111105 END IF;
111106 --
111107 
111108 --
111109 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111110    trace
111111       (p_msg      => 'END of AcctLineType_232'
111112       ,p_level    => C_LEVEL_PROCEDURE
111113       ,p_module   => l_log_module);
111114 END IF;
111115 --
111116 EXCEPTION
111117   WHEN xla_exceptions_pkg.application_exception THEN
111118       RAISE;
111119   WHEN OTHERS THEN
111120        xla_exceptions_pkg.raise_message
111121            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_232');
111125 ---------------------------------------
111122 END AcctLineType_232;
111123 --
111124 
111126 --
111127 -- PRIVATE FUNCTION
111128 --         AcctLineType_233
111129 --
111130 ---------------------------------------
111131 PROCEDURE AcctLineType_233 (
111132   p_application_id        IN NUMBER
111133  ,p_event_id              IN NUMBER
111134  ,p_calculate_acctd_flag  IN VARCHAR2
111135  ,p_calculate_g_l_flag    IN VARCHAR2
111136  ,p_actual_flag           IN OUT VARCHAR2
111137  ,p_balance_type_code     OUT VARCHAR2
111138  ,p_gain_or_loss_ref      OUT VARCHAR2
111139  
111140 --Transaction Account
111141  , p_source_1            IN NUMBER
111142 --Journal Line Type
111143  , p_source_2            IN VARCHAR2
111144 --Entered Amount
111145  , p_source_3            IN NUMBER
111146 --First Distribution Identifier
111147  , p_source_5            IN NUMBER
111148 --Distribution Type
111149  , p_source_6            IN VARCHAR2
111150 --Currency Code
111151  , p_source_7            IN VARCHAR2
111152 --Currency Conversion Date
111153  , p_source_8            IN DATE
111154 --Currency Conversion Rate
111155  , p_source_9            IN NUMBER
111156 --Currency Conversion Type
111157  , p_source_10            IN VARCHAR2
111158 --Accounted Amount
111159  , p_source_11            IN NUMBER
111160 )
111161 IS
111162 
111163 l_component_type              VARCHAR2(80);
111164 l_component_code              VARCHAR2(30);
111165 l_component_type_code         VARCHAR2(1);
111166 l_component_appl_id           INTEGER;
111167 l_amb_context_code            VARCHAR2(30);
111168 l_entity_code                 VARCHAR2(30);
111169 l_event_class_code            VARCHAR2(30);
111170 l_ae_header_id                NUMBER;
111171 l_event_type_code             VARCHAR2(30);
111172 l_line_definition_code        VARCHAR2(30);
111173 l_line_definition_owner_code  VARCHAR2(1);
111174 --
111175 -- adr variables
111176 l_segment                     VARCHAR2(30);
111177 l_ccid                        NUMBER;
111178 l_adr_transaction_coa_id      NUMBER;
111179 l_adr_accounting_coa_id       NUMBER;
111180 l_adr_flexfield_segment_code  VARCHAR2(30);
111181 l_adr_flex_value_set_id       NUMBER;
111182 l_adr_value_type_code         VARCHAR2(30);
111183 l_adr_value_combination_id    NUMBER;
111184 l_adr_value_segment_code      VARCHAR2(30);
111185 
111186 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
111187 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
111188 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
111189 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
111190 
111191 -- 4262811 Variables ------------------------------------------------------------------------------------------
111192 l_entered_amt_idx             NUMBER;
111193 l_accted_amt_idx              NUMBER;
111194 l_acc_rev_flag                VARCHAR2(1);
111195 l_accrual_line_num            NUMBER;
111196 l_tmp_amt                     NUMBER;
111197 l_acc_rev_natural_side_code   VARCHAR2(1);
111198 
111199 l_num_entries                 NUMBER;
111200 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
111201 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
111202 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
111203 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
111204 l_recog_line_1                NUMBER;
111205 l_recog_line_2                NUMBER;
111206 
111207 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
111208 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
111209 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
111210 
111211 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
111212 
111213 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
111214 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
111215 
111216 ---------------------------------------------------------------------------------------------------------------
111217 
111218 
111219 --
111220 -- bulk performance
111221 --
111222 l_balance_type_code           VARCHAR2(1);
111223 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
111224 l_log_module                  VARCHAR2(240);
111225 
111226 --
111227 -- Upgrade strategy
111228 --
111229 l_actual_upg_option           VARCHAR2(1);
111230 l_enc_upg_option           VARCHAR2(1);
111231 
111232 --
111233 BEGIN
111234 --
111235 IF g_log_enabled THEN
111236       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_233';
111237 END IF;
111238 --
111239 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111240 
111241       trace
111242          (p_msg      => 'BEGIN of AcctLineType_233'
111243          ,p_level    => C_LEVEL_PROCEDURE
111244          ,p_module   => l_log_module);
111245 
111246 END IF;
111247 --
111248 l_component_type             := 'AMB_JLT';
111249 l_component_code             := 'RPADJ';
111250 l_component_type_code        := 'S';
111251 l_component_appl_id          :=  555;
111252 l_amb_context_code           := 'DEFAULT';
111253 l_entity_code                := 'PURCHASING';
111254 l_event_class_code           := 'DELIVER';
111255 l_event_type_code            := 'RETRO_PRICE_UPD';
111256 l_line_definition_owner_code := 'S';
111257 l_line_definition_code       := 'RETRO_PRICE_UPD';
111258 --
111262 l_adr_transaction_coa_id      := NULL;
111259 l_balance_type_code          := 'A';
111260 l_segment                     := NULL;
111261 l_ccid                        := NULL;
111263 l_adr_accounting_coa_id       := NULL;
111264 l_adr_flexfield_segment_code  := NULL;
111265 l_adr_flex_value_set_id       := NULL;
111266 l_adr_value_type_code         := NULL;
111267 l_adr_value_combination_id    := NULL;
111268 l_adr_value_segment_code      := NULL;
111269 
111270 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
111271 l_bflow_class_code           := '';    -- 4219869 Business Flow
111272 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
111273 l_budgetary_control_flag     := 'N';
111274 
111275 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
111276 l_bflow_applied_to_amt       := NULL; -- 5132302
111277 l_entered_amt_idx            := NULL;          -- 4262811
111278 l_accted_amt_idx             := NULL;          -- 4262811
111279 l_acc_rev_flag               := NULL;          -- 4262811
111280 l_accrual_line_num           := NULL;          -- 4262811
111281 l_tmp_amt                    := NULL;          -- 4262811
111282 --
111283  
111284 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
111285     l_balance_type_code <> 'B' THEN
111286 IF NVL(p_source_2,'
111287 ') =  'RPADJ'
111288  THEN 
111289 
111290    --
111291    XLA_AE_LINES_PKG.SetNewLine;
111292 
111293    p_balance_type_code          := l_balance_type_code;
111294    -- set the flag so later we will know whether the gain loss line needs to be created
111295    
111296    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
111297      p_actual_flag :='A';
111298    END IF;
111299 
111300    --
111301    -- bulk performance
111302    --
111303    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
111304                                       p_header_num   => 0); -- 4262811
111305    --
111306    -- set accounting line options
111307    --
111308    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
111309            p_natural_side_code          => 'D'
111310          , p_gain_or_loss_flag          => 'N'
111311          , p_gl_transfer_mode_code      => 'D'
111312          , p_acct_entry_type_code       => 'A'
111313          , p_switch_side_flag           => 'Y'
111314          , p_merge_duplicate_code       => 'W'
111315          );
111316    --
111317    l_acc_rev_natural_side_code := 'C';  -- 4262811
111318    -- 
111319    --
111320    -- set accounting line type info
111321    --
111322    xla_ae_lines_pkg.SetAcctLineType
111323       (p_component_type             => l_component_type
111324       ,p_event_type_code            => l_event_type_code
111325       ,p_line_definition_owner_code => l_line_definition_owner_code
111326       ,p_line_definition_code       => l_line_definition_code
111327       ,p_accounting_line_code       => l_component_code
111328       ,p_accounting_line_type_code  => l_component_type_code
111329       ,p_accounting_line_appl_id    => l_component_appl_id
111330       ,p_amb_context_code           => l_amb_context_code
111331       ,p_entity_code                => l_entity_code
111332       ,p_event_class_code           => l_event_class_code);
111333    --
111334    -- set accounting class
111335    --
111336    xla_ae_lines_pkg.SetAcctClass(
111337            p_accounting_class_code  => 'RETROACTIVE_PRICE_ADJUSTMENT'
111338          , p_ae_header_id           => l_ae_header_id
111339          );
111340 
111341    --
111342    -- set rounding class
111343    --
111344    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
111345                       'RETROACTIVE_PRICE_ADJUSTMENT';
111346 
111347    --
111348    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
111349    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
111350    --
111351    -- bulk performance
111352    --
111353    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
111354 
111355    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
111356       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
111357 
111358    -- 4955764
111359    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111360       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
111361 
111362    -- 4458381 Public Sector Enh
111363    
111364    --
111365    -- set accounting attributes for the line type
111366    --
111367    l_entered_amt_idx := 3;
111368    l_accted_amt_idx  := 8;
111369    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
111370    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
111371    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
111372    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
111373    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
111374    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
111375    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
111376    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
111377    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
111378    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
111379    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
111380    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
111381    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
111385    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
111382    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
111383    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
111384    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
111386 
111387    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
111388    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
111389 
111390    ---------------------------------------------------------------------------------------------------------------
111391    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
111392    ---------------------------------------------------------------------------------------------------------------
111393    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
111394 
111395    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111396    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111397 
111398    IF xla_accounting_cache_pkg.GetValueChar
111399          (p_source_code         => 'LEDGER_CATEGORY_CODE'
111400          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
111401    AND l_bflow_method_code = 'PRIOR_ENTRY'
111402 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
111403    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
111404          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
111405        )
111406    THEN
111407          xla_ae_lines_pkg.BflowUpgEntry
111408            (p_business_method_code    => l_bflow_method_code
111409            ,p_business_class_code     => l_bflow_class_code
111410            ,p_balance_type            => l_balance_type_code);
111411    ELSE
111412       NULL;
111413 -- No business flow processing for business flow method of NONE.
111414    END IF;
111415 
111416    --
111417    -- call analytical criteria
111418    --
111419    
111420    --
111421    -- call description
111422    --
111423    -- No description or it is inherited.
111424    --
111425    -- call ADRs
111426    -- Bug 4922099
111427    --
111428    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111429         (NVL(l_actual_upg_option, 'N') = 'O') OR
111430         (NVL(l_enc_upg_option, 'N') = 'O')
111431       )
111432    THEN
111433    NULL;
111434    --
111435    --
111436    
111437   l_ccid := AcctDerRule_34(
111438            p_application_id           => p_application_id
111439          , p_ae_header_id             => l_ae_header_id 
111440 , p_source_1 => p_source_1
111441 , p_source_2 => p_source_2
111442          , x_transaction_coa_id       => l_adr_transaction_coa_id
111443          , x_accounting_coa_id        => l_adr_accounting_coa_id
111444          , x_value_type_code          => l_adr_value_type_code
111445          , p_side                     => 'NA'
111446    );
111447 
111448    xla_ae_lines_pkg.set_ccid(
111449     p_code_combination_id          => l_ccid
111450   , p_value_type_code              => l_adr_value_type_code
111451   , p_transaction_coa_id           => l_adr_transaction_coa_id
111452   , p_accounting_coa_id            => l_adr_accounting_coa_id
111453   , p_adr_code                     => 'RPADJ'
111454   , p_adr_type_code                => 'S'
111455   , p_component_type               => l_component_type
111456   , p_component_code               => l_component_code
111457   , p_component_type_code          => l_component_type_code
111458   , p_component_appl_id            => l_component_appl_id
111459   , p_amb_context_code             => l_amb_context_code
111460   , p_side                         => 'NA'
111461   );
111462 
111463 
111464    --
111465    --
111466    END IF;
111467    --
111468    -- Bug 4922099
111469    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
111470           (NVL(l_enc_upg_option, 'N') = 'O')
111471         ) AND
111472         (l_bflow_method_code = 'PRIOR_ENTRY')
111473       )
111474    THEN
111475       IF
111476       --
111477       1 = 2
111478       --
111479       THEN
111480       xla_accounting_err_pkg.build_message
111481                                     (p_appli_s_name            => 'XLA'
111482                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111483                                     ,p_token_1                 => 'LINE_NUMBER'
111484                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
111485                                     ,p_token_2                 => 'LINE_TYPE_NAME'
111486                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
111487                                                                              l_component_type
111488                                                                             ,l_component_code
111489                                                                             ,l_component_type_code
111490                                                                             ,l_component_appl_id
111491                                                                             ,l_amb_context_code
111492                                                                             ,l_entity_code
111493                                                                             ,l_event_class_code
111494                                                                            )
111498                                                                           ,p_lookup_code    => l_component_type_code
111495                                     ,p_token_3                 => 'OWNER'
111496                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
111497                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
111499                                                                          )
111500                                     ,p_token_4                 => 'PRODUCT_NAME'
111501                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
111502                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
111503                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
111504                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
111505                                     ,p_ae_header_id            =>  NULL
111506                                        );
111507 
111508         IF (C_LEVEL_ERROR>= g_log_level) THEN
111509                  trace
111510                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111511                       ,p_level    => C_LEVEL_ERROR
111512                       ,p_module   => l_log_module);
111513         END IF;
111514       END IF;
111515    END IF;
111516    --
111517    --
111518    ------------------------------------------------------------------------------------------------
111519    -- 4219869 Business Flow
111520    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
111521    -- Prior Entry.  Currently, the following code is always generated.
111522    ------------------------------------------------------------------------------------------------
111523    XLA_AE_LINES_PKG.ValidateCurrentLine;
111524 
111525    ------------------------------------------------------------------------------------
111526    -- 4219869 Business Flow
111527    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
111528    ------------------------------------------------------------------------------------
111529    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111530 
111531    ----------------------------------------------------------------------------------
111532    -- 4219869 Business Flow
111533    -- Update journal entry status -- Need to generate this within IF <condition>
111534    ----------------------------------------------------------------------------------
111535    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111536          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
111537          ,p_balance_type_code => l_balance_type_code
111538          );
111539 
111540    -------------------------------------------------------------------------------------------
111541    -- 4262811 - Generate the Accrual Reversal lines
111542    -------------------------------------------------------------------------------------------
111543    BEGIN
111544       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
111545                               (g_array_event(p_event_id).array_value_num('header_index'));
111546       IF l_acc_rev_flag IS NULL THEN
111547          l_acc_rev_flag := 'N';
111548       END IF;
111549    EXCEPTION
111550       WHEN OTHERS THEN
111551          l_acc_rev_flag := 'N';
111552    END;
111553    --
111554    IF (l_acc_rev_flag = 'Y') THEN
111555 
111556        -- 4645092  ------------------------------------------------------------------------------
111557        -- To allow MPA report to determine if it should generate report process
111558        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
111559        ------------------------------------------------------------------------------------------
111560 
111561        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
111562        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
111563    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
111564    -- call ADRs
111565    -- Bug 4922099
111566    --
111567    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111568         (NVL(l_actual_upg_option, 'N') = 'O') OR
111569         (NVL(l_enc_upg_option, 'N') = 'O')
111570       )
111571    THEN
111572    NULL;
111573    --
111574    --
111575    
111576   l_ccid := AcctDerRule_34(
111577            p_application_id           => p_application_id
111578          , p_ae_header_id             => l_ae_header_id 
111579 , p_source_1 => p_source_1
111580 , p_source_2 => p_source_2
111581          , x_transaction_coa_id       => l_adr_transaction_coa_id
111582          , x_accounting_coa_id        => l_adr_accounting_coa_id
111583          , x_value_type_code          => l_adr_value_type_code
111584          , p_side                     => 'NA'
111585    );
111586 
111587    xla_ae_lines_pkg.set_ccid(
111588     p_code_combination_id          => l_ccid
111589   , p_value_type_code              => l_adr_value_type_code
111590   , p_transaction_coa_id           => l_adr_transaction_coa_id
111591   , p_accounting_coa_id            => l_adr_accounting_coa_id
111592   , p_adr_code                     => 'RPADJ'
111593   , p_adr_type_code                => 'S'
111594   , p_component_type               => l_component_type
111595   , p_component_code               => l_component_code
111599   , p_side                         => 'NA'
111596   , p_component_type_code          => l_component_type_code
111597   , p_component_appl_id            => l_component_appl_id
111598   , p_amb_context_code             => l_amb_context_code
111600   );
111601 
111602 
111603    --
111604    --
111605    END IF;
111606 
111607        --
111608        -- Update the line information that should be overwritten
111609        --
111610        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
111611                                          p_header_num   => 1);
111612        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
111613 
111614        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
111615 
111616        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
111617           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
111618        END IF;
111619 
111620       --
111621       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
111622       --
111623       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
111624           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
111625       ELSE
111626           ---------------------------------------------------------------------------------------------------
111627           -- 4262811a Switch Sign
111628           ---------------------------------------------------------------------------------------------------
111629           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
111630           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111631                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111632           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111633                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111634           -- 5132302
111635           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
111636                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111637 
111638       END IF;
111639 
111640       -- 4955764
111641       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111642       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
111643 
111644 
111645       XLA_AE_LINES_PKG.ValidateCurrentLine;
111646       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111647 
111648       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111649                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
111650                ,p_balance_type_code => l_balance_type_code);
111651 
111652    END IF;
111653 
111654    -----------------------------------------------------------------------------------------
111655    -- 4262811 Multiperiod Accounting
111656    -----------------------------------------------------------------------------------------
111657      -- No MPA option is assigned.
111658 
111659 
111660 END IF;
111661 END IF;
111662 --
111663 
111664 --
111665 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111666    trace
111667       (p_msg      => 'END of AcctLineType_233'
111668       ,p_level    => C_LEVEL_PROCEDURE
111669       ,p_module   => l_log_module);
111670 END IF;
111671 --
111672 EXCEPTION
111673   WHEN xla_exceptions_pkg.application_exception THEN
111674       RAISE;
111675   WHEN OTHERS THEN
111676        xla_exceptions_pkg.raise_message
111677            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_233');
111678 END AcctLineType_233;
111679 --
111680 
111681 ---------------------------------------
111682 --
111683 -- PRIVATE FUNCTION
111684 --         AcctLineType_234
111685 --
111686 ---------------------------------------
111687 PROCEDURE AcctLineType_234 (
111688   p_application_id        IN NUMBER
111689  ,p_event_id              IN NUMBER
111690  ,p_calculate_acctd_flag  IN VARCHAR2
111691  ,p_calculate_g_l_flag    IN VARCHAR2
111692  ,p_actual_flag           IN OUT VARCHAR2
111693  ,p_balance_type_code     OUT VARCHAR2
111694  ,p_gain_or_loss_ref      OUT VARCHAR2
111695  
111696 --Transaction Account
111697  , p_source_1            IN NUMBER
111698 --Journal Line Type
111699  , p_source_2            IN VARCHAR2
111700 --Entered Amount
111701  , p_source_3            IN NUMBER
111702 --First Distribution Identifier
111703  , p_source_5            IN NUMBER
111704 --Distribution Type
111705  , p_source_6            IN VARCHAR2
111706 --Currency Code
111707  , p_source_7            IN VARCHAR2
111708 --Currency Conversion Date
111709  , p_source_8            IN DATE
111710 --Currency Conversion Rate
111711  , p_source_9            IN NUMBER
111712 --Currency Conversion Type
111713  , p_source_10            IN VARCHAR2
111714 --Accounted Amount
111715  , p_source_11            IN NUMBER
111716 )
111717 IS
111718 
111719 l_component_type              VARCHAR2(80);
111720 l_component_code              VARCHAR2(30);
111721 l_component_type_code         VARCHAR2(1);
111722 l_component_appl_id           INTEGER;
111726 l_ae_header_id                NUMBER;
111723 l_amb_context_code            VARCHAR2(30);
111724 l_entity_code                 VARCHAR2(30);
111725 l_event_class_code            VARCHAR2(30);
111727 l_event_type_code             VARCHAR2(30);
111728 l_line_definition_code        VARCHAR2(30);
111729 l_line_definition_owner_code  VARCHAR2(1);
111730 --
111731 -- adr variables
111732 l_segment                     VARCHAR2(30);
111733 l_ccid                        NUMBER;
111734 l_adr_transaction_coa_id      NUMBER;
111735 l_adr_accounting_coa_id       NUMBER;
111736 l_adr_flexfield_segment_code  VARCHAR2(30);
111737 l_adr_flex_value_set_id       NUMBER;
111738 l_adr_value_type_code         VARCHAR2(30);
111739 l_adr_value_combination_id    NUMBER;
111740 l_adr_value_segment_code      VARCHAR2(30);
111741 
111742 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
111743 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
111744 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
111745 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
111746 
111747 -- 4262811 Variables ------------------------------------------------------------------------------------------
111748 l_entered_amt_idx             NUMBER;
111749 l_accted_amt_idx              NUMBER;
111750 l_acc_rev_flag                VARCHAR2(1);
111751 l_accrual_line_num            NUMBER;
111752 l_tmp_amt                     NUMBER;
111753 l_acc_rev_natural_side_code   VARCHAR2(1);
111754 
111755 l_num_entries                 NUMBER;
111756 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
111757 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
111758 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
111759 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
111760 l_recog_line_1                NUMBER;
111761 l_recog_line_2                NUMBER;
111762 
111763 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
111764 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
111765 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
111766 
111767 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
111768 
111769 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
111770 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
111771 
111772 ---------------------------------------------------------------------------------------------------------------
111773 
111774 
111775 --
111776 -- bulk performance
111777 --
111778 l_balance_type_code           VARCHAR2(1);
111779 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
111780 l_log_module                  VARCHAR2(240);
111781 
111782 --
111783 -- Upgrade strategy
111784 --
111785 l_actual_upg_option           VARCHAR2(1);
111786 l_enc_upg_option           VARCHAR2(1);
111787 
111788 --
111789 BEGIN
111790 --
111791 IF g_log_enabled THEN
111792       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_234';
111793 END IF;
111794 --
111795 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111796 
111797       trace
111798          (p_msg      => 'BEGIN of AcctLineType_234'
111799          ,p_level    => C_LEVEL_PROCEDURE
111800          ,p_module   => l_log_module);
111801 
111802 END IF;
111803 --
111804 l_component_type             := 'AMB_JLT';
111805 l_component_code             := 'RPADJ';
111806 l_component_type_code        := 'S';
111807 l_component_appl_id          :=  555;
111808 l_amb_context_code           := 'DEFAULT';
111809 l_entity_code                := 'PURCHASING';
111810 l_event_class_code           := 'RECEIVE';
111811 l_event_type_code            := 'ADJUST_DELIVER';
111812 l_line_definition_owner_code := 'S';
111813 l_line_definition_code       := 'ADJUST_DELIVER';
111814 --
111815 l_balance_type_code          := 'A';
111816 l_segment                     := NULL;
111817 l_ccid                        := NULL;
111818 l_adr_transaction_coa_id      := NULL;
111819 l_adr_accounting_coa_id       := NULL;
111820 l_adr_flexfield_segment_code  := NULL;
111821 l_adr_flex_value_set_id       := NULL;
111822 l_adr_value_type_code         := NULL;
111823 l_adr_value_combination_id    := NULL;
111824 l_adr_value_segment_code      := NULL;
111825 
111826 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
111827 l_bflow_class_code           := '';    -- 4219869 Business Flow
111828 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
111829 l_budgetary_control_flag     := 'N';
111830 
111831 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
111832 l_bflow_applied_to_amt       := NULL; -- 5132302
111833 l_entered_amt_idx            := NULL;          -- 4262811
111834 l_accted_amt_idx             := NULL;          -- 4262811
111835 l_acc_rev_flag               := NULL;          -- 4262811
111836 l_accrual_line_num           := NULL;          -- 4262811
111837 l_tmp_amt                    := NULL;          -- 4262811
111838 --
111839  
111840 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
111841     l_balance_type_code <> 'B' THEN
111842 IF NVL(p_source_2,'
111843 ') =  'RPADJ'
111844  THEN 
111845 
111846    --
111847    XLA_AE_LINES_PKG.SetNewLine;
111848 
111849    p_balance_type_code          := l_balance_type_code;
111850    -- set the flag so later we will know whether the gain loss line needs to be created
111851    
111852    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
111856    --
111853      p_actual_flag :='A';
111854    END IF;
111855 
111857    -- bulk performance
111858    --
111859    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
111860                                       p_header_num   => 0); -- 4262811
111861    --
111862    -- set accounting line options
111863    --
111864    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
111865            p_natural_side_code          => 'D'
111866          , p_gain_or_loss_flag          => 'N'
111867          , p_gl_transfer_mode_code      => 'D'
111868          , p_acct_entry_type_code       => 'A'
111869          , p_switch_side_flag           => 'Y'
111870          , p_merge_duplicate_code       => 'W'
111871          );
111872    --
111873    l_acc_rev_natural_side_code := 'C';  -- 4262811
111874    -- 
111875    --
111876    -- set accounting line type info
111877    --
111878    xla_ae_lines_pkg.SetAcctLineType
111879       (p_component_type             => l_component_type
111880       ,p_event_type_code            => l_event_type_code
111881       ,p_line_definition_owner_code => l_line_definition_owner_code
111882       ,p_line_definition_code       => l_line_definition_code
111883       ,p_accounting_line_code       => l_component_code
111884       ,p_accounting_line_type_code  => l_component_type_code
111885       ,p_accounting_line_appl_id    => l_component_appl_id
111886       ,p_amb_context_code           => l_amb_context_code
111887       ,p_entity_code                => l_entity_code
111888       ,p_event_class_code           => l_event_class_code);
111889    --
111890    -- set accounting class
111891    --
111892    xla_ae_lines_pkg.SetAcctClass(
111893            p_accounting_class_code  => 'RETROACTIVE_PRICE_ADJUSTMENT'
111894          , p_ae_header_id           => l_ae_header_id
111895          );
111896 
111897    --
111898    -- set rounding class
111899    --
111900    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
111901                       'RETROACTIVE_PRICE_ADJUSTMENT';
111902 
111903    --
111904    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
111905    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
111906    --
111907    -- bulk performance
111908    --
111909    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
111910 
111911    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
111912       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
111913 
111914    -- 4955764
111915    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111916       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
111917 
111918    -- 4458381 Public Sector Enh
111919    
111920    --
111921    -- set accounting attributes for the line type
111922    --
111923    l_entered_amt_idx := 3;
111924    l_accted_amt_idx  := 8;
111925    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
111926    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
111927    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
111928    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
111929    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
111930    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
111931    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
111932    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
111933    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
111934    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
111935    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
111936    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
111937    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
111938    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
111939    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
111940    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
111941    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
111942 
111943    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
111944    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
111945 
111946    ---------------------------------------------------------------------------------------------------------------
111947    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
111948    ---------------------------------------------------------------------------------------------------------------
111949    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
111950 
111951    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111952    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111953 
111954    IF xla_accounting_cache_pkg.GetValueChar
111955          (p_source_code         => 'LEDGER_CATEGORY_CODE'
111956          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
111957    AND l_bflow_method_code = 'PRIOR_ENTRY'
111958 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
111959    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
111960          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
111961        )
111962    THEN
111963          xla_ae_lines_pkg.BflowUpgEntry
111967    ELSE
111964            (p_business_method_code    => l_bflow_method_code
111965            ,p_business_class_code     => l_bflow_class_code
111966            ,p_balance_type            => l_balance_type_code);
111968       NULL;
111969 -- No business flow processing for business flow method of NONE.
111970    END IF;
111971 
111972    --
111973    -- call analytical criteria
111974    --
111975    
111976    --
111977    -- call description
111978    --
111979    -- No description or it is inherited.
111980    --
111981    -- call ADRs
111982    -- Bug 4922099
111983    --
111984    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111985         (NVL(l_actual_upg_option, 'N') = 'O') OR
111986         (NVL(l_enc_upg_option, 'N') = 'O')
111987       )
111988    THEN
111989    NULL;
111990    --
111991    --
111992    
111993   l_ccid := AcctDerRule_34(
111994            p_application_id           => p_application_id
111995          , p_ae_header_id             => l_ae_header_id 
111996 , p_source_1 => p_source_1
111997 , p_source_2 => p_source_2
111998          , x_transaction_coa_id       => l_adr_transaction_coa_id
111999          , x_accounting_coa_id        => l_adr_accounting_coa_id
112000          , x_value_type_code          => l_adr_value_type_code
112001          , p_side                     => 'NA'
112002    );
112003 
112004    xla_ae_lines_pkg.set_ccid(
112005     p_code_combination_id          => l_ccid
112006   , p_value_type_code              => l_adr_value_type_code
112007   , p_transaction_coa_id           => l_adr_transaction_coa_id
112008   , p_accounting_coa_id            => l_adr_accounting_coa_id
112009   , p_adr_code                     => 'RPADJ'
112010   , p_adr_type_code                => 'S'
112011   , p_component_type               => l_component_type
112012   , p_component_code               => l_component_code
112013   , p_component_type_code          => l_component_type_code
112014   , p_component_appl_id            => l_component_appl_id
112015   , p_amb_context_code             => l_amb_context_code
112016   , p_side                         => 'NA'
112017   );
112018 
112019 
112020    --
112021    --
112022    END IF;
112023    --
112024    -- Bug 4922099
112025    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
112026           (NVL(l_enc_upg_option, 'N') = 'O')
112027         ) AND
112028         (l_bflow_method_code = 'PRIOR_ENTRY')
112029       )
112030    THEN
112031       IF
112032       --
112033       1 = 2
112034       --
112035       THEN
112036       xla_accounting_err_pkg.build_message
112037                                     (p_appli_s_name            => 'XLA'
112038                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112039                                     ,p_token_1                 => 'LINE_NUMBER'
112040                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
112041                                     ,p_token_2                 => 'LINE_TYPE_NAME'
112042                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
112043                                                                              l_component_type
112044                                                                             ,l_component_code
112045                                                                             ,l_component_type_code
112046                                                                             ,l_component_appl_id
112047                                                                             ,l_amb_context_code
112048                                                                             ,l_entity_code
112049                                                                             ,l_event_class_code
112050                                                                            )
112051                                     ,p_token_3                 => 'OWNER'
112052                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
112053                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
112054                                                                           ,p_lookup_code    => l_component_type_code
112055                                                                          )
112056                                     ,p_token_4                 => 'PRODUCT_NAME'
112057                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
112058                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
112059                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
112060                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
112061                                     ,p_ae_header_id            =>  NULL
112062                                        );
112063 
112064         IF (C_LEVEL_ERROR>= g_log_level) THEN
112065                  trace
112066                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112067                       ,p_level    => C_LEVEL_ERROR
112068                       ,p_module   => l_log_module);
112069         END IF;
112070       END IF;
112071    END IF;
112072    --
112073    --
112074    ------------------------------------------------------------------------------------------------
112075    -- 4219869 Business Flow
112079    XLA_AE_LINES_PKG.ValidateCurrentLine;
112076    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
112077    -- Prior Entry.  Currently, the following code is always generated.
112078    ------------------------------------------------------------------------------------------------
112080 
112081    ------------------------------------------------------------------------------------
112082    -- 4219869 Business Flow
112083    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
112084    ------------------------------------------------------------------------------------
112085    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112086 
112087    ----------------------------------------------------------------------------------
112088    -- 4219869 Business Flow
112089    -- Update journal entry status -- Need to generate this within IF <condition>
112090    ----------------------------------------------------------------------------------
112091    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112092          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
112093          ,p_balance_type_code => l_balance_type_code
112094          );
112095 
112096    -------------------------------------------------------------------------------------------
112097    -- 4262811 - Generate the Accrual Reversal lines
112098    -------------------------------------------------------------------------------------------
112099    BEGIN
112100       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
112101                               (g_array_event(p_event_id).array_value_num('header_index'));
112102       IF l_acc_rev_flag IS NULL THEN
112103          l_acc_rev_flag := 'N';
112104       END IF;
112105    EXCEPTION
112106       WHEN OTHERS THEN
112107          l_acc_rev_flag := 'N';
112108    END;
112109    --
112110    IF (l_acc_rev_flag = 'Y') THEN
112111 
112112        -- 4645092  ------------------------------------------------------------------------------
112113        -- To allow MPA report to determine if it should generate report process
112114        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
112115        ------------------------------------------------------------------------------------------
112116 
112117        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
112118        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
112119    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
112120    -- call ADRs
112121    -- Bug 4922099
112122    --
112123    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112124         (NVL(l_actual_upg_option, 'N') = 'O') OR
112125         (NVL(l_enc_upg_option, 'N') = 'O')
112126       )
112127    THEN
112128    NULL;
112129    --
112130    --
112131    
112132   l_ccid := AcctDerRule_34(
112133            p_application_id           => p_application_id
112134          , p_ae_header_id             => l_ae_header_id 
112135 , p_source_1 => p_source_1
112136 , p_source_2 => p_source_2
112137          , x_transaction_coa_id       => l_adr_transaction_coa_id
112138          , x_accounting_coa_id        => l_adr_accounting_coa_id
112139          , x_value_type_code          => l_adr_value_type_code
112140          , p_side                     => 'NA'
112141    );
112142 
112143    xla_ae_lines_pkg.set_ccid(
112144     p_code_combination_id          => l_ccid
112145   , p_value_type_code              => l_adr_value_type_code
112146   , p_transaction_coa_id           => l_adr_transaction_coa_id
112147   , p_accounting_coa_id            => l_adr_accounting_coa_id
112148   , p_adr_code                     => 'RPADJ'
112149   , p_adr_type_code                => 'S'
112150   , p_component_type               => l_component_type
112151   , p_component_code               => l_component_code
112152   , p_component_type_code          => l_component_type_code
112153   , p_component_appl_id            => l_component_appl_id
112154   , p_amb_context_code             => l_amb_context_code
112155   , p_side                         => 'NA'
112156   );
112157 
112158 
112159    --
112160    --
112161    END IF;
112162 
112163        --
112164        -- Update the line information that should be overwritten
112165        --
112166        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
112167                                          p_header_num   => 1);
112168        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
112169 
112170        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
112171 
112172        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
112173           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
112174        END IF;
112175 
112176       --
112177       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
112178       --
112179       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
112180           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
112181       ELSE
112182           ---------------------------------------------------------------------------------------------------
112183           -- 4262811a Switch Sign
112184           ---------------------------------------------------------------------------------------------------
112188           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112185           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
112186           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112187                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112189                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112190           -- 5132302
112191           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
112192                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112193 
112194       END IF;
112195 
112196       -- 4955764
112197       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112198       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
112199 
112200 
112201       XLA_AE_LINES_PKG.ValidateCurrentLine;
112202       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112203 
112204       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112205                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
112206                ,p_balance_type_code => l_balance_type_code);
112207 
112208    END IF;
112209 
112210    -----------------------------------------------------------------------------------------
112211    -- 4262811 Multiperiod Accounting
112212    -----------------------------------------------------------------------------------------
112213      -- No MPA option is assigned.
112214 
112215 
112216 END IF;
112217 END IF;
112218 --
112219 
112220 --
112221 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112222    trace
112223       (p_msg      => 'END of AcctLineType_234'
112224       ,p_level    => C_LEVEL_PROCEDURE
112225       ,p_module   => l_log_module);
112226 END IF;
112227 --
112228 EXCEPTION
112229   WHEN xla_exceptions_pkg.application_exception THEN
112230       RAISE;
112231   WHEN OTHERS THEN
112232        xla_exceptions_pkg.raise_message
112233            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_234');
112234 END AcctLineType_234;
112235 --
112236 
112237 ---------------------------------------
112238 --
112239 -- PRIVATE FUNCTION
112240 --         AcctLineType_235
112241 --
112242 ---------------------------------------
112243 PROCEDURE AcctLineType_235 (
112244   p_application_id        IN NUMBER
112245  ,p_event_id              IN NUMBER
112246  ,p_calculate_acctd_flag  IN VARCHAR2
112247  ,p_calculate_g_l_flag    IN VARCHAR2
112248  ,p_actual_flag           IN OUT VARCHAR2
112249  ,p_balance_type_code     OUT VARCHAR2
112250  ,p_gain_or_loss_ref      OUT VARCHAR2
112251  
112252 --Transaction Account
112253  , p_source_1            IN NUMBER
112254 --Journal Line Type
112255  , p_source_2            IN VARCHAR2
112256 --Entered Amount
112257  , p_source_3            IN NUMBER
112258 --First Distribution Identifier
112259  , p_source_5            IN NUMBER
112260 --Distribution Type
112261  , p_source_6            IN VARCHAR2
112262 --Currency Code
112263  , p_source_7            IN VARCHAR2
112264 --Currency Conversion Date
112265  , p_source_8            IN DATE
112266 --Currency Conversion Rate
112267  , p_source_9            IN NUMBER
112268 --Currency Conversion Type
112269  , p_source_10            IN VARCHAR2
112270 --Accounted Amount
112271  , p_source_11            IN NUMBER
112272 )
112273 IS
112274 
112275 l_component_type              VARCHAR2(80);
112276 l_component_code              VARCHAR2(30);
112277 l_component_type_code         VARCHAR2(1);
112278 l_component_appl_id           INTEGER;
112279 l_amb_context_code            VARCHAR2(30);
112280 l_entity_code                 VARCHAR2(30);
112281 l_event_class_code            VARCHAR2(30);
112282 l_ae_header_id                NUMBER;
112283 l_event_type_code             VARCHAR2(30);
112284 l_line_definition_code        VARCHAR2(30);
112285 l_line_definition_owner_code  VARCHAR2(1);
112286 --
112287 -- adr variables
112288 l_segment                     VARCHAR2(30);
112289 l_ccid                        NUMBER;
112290 l_adr_transaction_coa_id      NUMBER;
112291 l_adr_accounting_coa_id       NUMBER;
112292 l_adr_flexfield_segment_code  VARCHAR2(30);
112293 l_adr_flex_value_set_id       NUMBER;
112294 l_adr_value_type_code         VARCHAR2(30);
112295 l_adr_value_combination_id    NUMBER;
112296 l_adr_value_segment_code      VARCHAR2(30);
112297 
112298 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
112299 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
112300 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
112301 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
112302 
112303 -- 4262811 Variables ------------------------------------------------------------------------------------------
112304 l_entered_amt_idx             NUMBER;
112305 l_accted_amt_idx              NUMBER;
112306 l_acc_rev_flag                VARCHAR2(1);
112307 l_accrual_line_num            NUMBER;
112308 l_tmp_amt                     NUMBER;
112309 l_acc_rev_natural_side_code   VARCHAR2(1);
112310 
112311 l_num_entries                 NUMBER;
112312 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
112313 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
112317 l_recog_line_2                NUMBER;
112314 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
112315 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
112316 l_recog_line_1                NUMBER;
112318 
112319 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
112320 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
112321 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
112322 
112323 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
112324 
112325 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
112326 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
112327 
112328 ---------------------------------------------------------------------------------------------------------------
112329 
112330 
112331 --
112332 -- bulk performance
112333 --
112334 l_balance_type_code           VARCHAR2(1);
112335 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
112336 l_log_module                  VARCHAR2(240);
112337 
112338 --
112339 -- Upgrade strategy
112340 --
112341 l_actual_upg_option           VARCHAR2(1);
112342 l_enc_upg_option           VARCHAR2(1);
112343 
112344 --
112345 BEGIN
112346 --
112347 IF g_log_enabled THEN
112348       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_235';
112349 END IF;
112350 --
112351 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112352 
112353       trace
112354          (p_msg      => 'BEGIN of AcctLineType_235'
112355          ,p_level    => C_LEVEL_PROCEDURE
112356          ,p_module   => l_log_module);
112357 
112358 END IF;
112359 --
112360 l_component_type             := 'AMB_JLT';
112361 l_component_code             := 'RSV';
112362 l_component_type_code        := 'S';
112363 l_component_appl_id          :=  555;
112364 l_amb_context_code           := 'DEFAULT';
112365 l_entity_code                := 'PRODUCTION';
112366 l_event_class_code           := 'BATCH_CLOSE';
112367 l_event_type_code            := 'CLOS';
112368 l_line_definition_owner_code := 'S';
112369 l_line_definition_code       := 'BATCH_CLOSE';
112370 --
112371 l_balance_type_code          := 'A';
112372 l_segment                     := NULL;
112373 l_ccid                        := NULL;
112374 l_adr_transaction_coa_id      := NULL;
112375 l_adr_accounting_coa_id       := NULL;
112376 l_adr_flexfield_segment_code  := NULL;
112377 l_adr_flex_value_set_id       := NULL;
112378 l_adr_value_type_code         := NULL;
112379 l_adr_value_combination_id    := NULL;
112380 l_adr_value_segment_code      := NULL;
112381 
112382 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
112383 l_bflow_class_code           := '';    -- 4219869 Business Flow
112384 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
112385 l_budgetary_control_flag     := 'N';
112386 
112387 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
112388 l_bflow_applied_to_amt       := NULL; -- 5132302
112389 l_entered_amt_idx            := NULL;          -- 4262811
112390 l_accted_amt_idx             := NULL;          -- 4262811
112391 l_acc_rev_flag               := NULL;          -- 4262811
112392 l_accrual_line_num           := NULL;          -- 4262811
112393 l_tmp_amt                    := NULL;          -- 4262811
112394 --
112395  
112396 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
112397     l_balance_type_code <> 'B' THEN
112398 IF NVL(p_source_2,'
112399 ') =  'RSV'
112400  THEN 
112401 
112402    --
112403    XLA_AE_LINES_PKG.SetNewLine;
112404 
112405    p_balance_type_code          := l_balance_type_code;
112406    -- set the flag so later we will know whether the gain loss line needs to be created
112407    
112408    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
112409      p_actual_flag :='A';
112410    END IF;
112411 
112412    --
112413    -- bulk performance
112414    --
112415    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
112416                                       p_header_num   => 0); -- 4262811
112417    --
112418    -- set accounting line options
112419    --
112420    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
112421            p_natural_side_code          => 'D'
112422          , p_gain_or_loss_flag          => 'N'
112423          , p_gl_transfer_mode_code      => 'D'
112424          , p_acct_entry_type_code       => 'A'
112425          , p_switch_side_flag           => 'Y'
112426          , p_merge_duplicate_code       => 'W'
112427          );
112428    --
112429    l_acc_rev_natural_side_code := 'C';  -- 4262811
112430    -- 
112431    --
112432    -- set accounting line type info
112433    --
112434    xla_ae_lines_pkg.SetAcctLineType
112435       (p_component_type             => l_component_type
112436       ,p_event_type_code            => l_event_type_code
112437       ,p_line_definition_owner_code => l_line_definition_owner_code
112438       ,p_line_definition_code       => l_line_definition_code
112439       ,p_accounting_line_code       => l_component_code
112440       ,p_accounting_line_type_code  => l_component_type_code
112441       ,p_accounting_line_appl_id    => l_component_appl_id
112442       ,p_amb_context_code           => l_amb_context_code
112443       ,p_entity_code                => l_entity_code
112444       ,p_event_class_code           => l_event_class_code);
112445    --
112446    -- set accounting class
112447    --
112451          );
112448    xla_ae_lines_pkg.SetAcctClass(
112449            p_accounting_class_code  => 'RSV'
112450          , p_ae_header_id           => l_ae_header_id
112452 
112453    --
112454    -- set rounding class
112455    --
112456    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
112457                       'RSV';
112458 
112459    --
112460    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
112461    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
112462    --
112463    -- bulk performance
112464    --
112465    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
112466 
112467    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
112468       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
112469 
112470    -- 4955764
112471    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112472       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
112473 
112474    -- 4458381 Public Sector Enh
112475    
112476    --
112477    -- set accounting attributes for the line type
112478    --
112479    l_entered_amt_idx := 3;
112480    l_accted_amt_idx  := 8;
112481    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
112482    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
112483    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
112484    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
112485    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
112486    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
112487    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
112488    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
112489    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
112490    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
112491    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
112492    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
112493    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
112494    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
112495    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
112496    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
112497    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
112498 
112499    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
112500    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
112501 
112502    ---------------------------------------------------------------------------------------------------------------
112503    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
112504    ---------------------------------------------------------------------------------------------------------------
112505    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
112506 
112507    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112508    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112509 
112510    IF xla_accounting_cache_pkg.GetValueChar
112511          (p_source_code         => 'LEDGER_CATEGORY_CODE'
112512          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
112513    AND l_bflow_method_code = 'PRIOR_ENTRY'
112514 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
112515    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
112516          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
112517        )
112518    THEN
112519          xla_ae_lines_pkg.BflowUpgEntry
112520            (p_business_method_code    => l_bflow_method_code
112521            ,p_business_class_code     => l_bflow_class_code
112522            ,p_balance_type            => l_balance_type_code);
112523    ELSE
112524       NULL;
112525 -- No business flow processing for business flow method of NONE.
112526    END IF;
112527 
112528    --
112529    -- call analytical criteria
112530    --
112531    
112532    --
112533    -- call description
112534    --
112535    -- No description or it is inherited.
112536    --
112537    -- call ADRs
112538    -- Bug 4922099
112539    --
112540    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112541         (NVL(l_actual_upg_option, 'N') = 'O') OR
112542         (NVL(l_enc_upg_option, 'N') = 'O')
112543       )
112544    THEN
112545    NULL;
112546    --
112547    --
112548    
112549   l_ccid := AcctDerRule_35(
112550            p_application_id           => p_application_id
112551          , p_ae_header_id             => l_ae_header_id 
112552 , p_source_1 => p_source_1
112553 , p_source_2 => p_source_2
112554          , x_transaction_coa_id       => l_adr_transaction_coa_id
112555          , x_accounting_coa_id        => l_adr_accounting_coa_id
112556          , x_value_type_code          => l_adr_value_type_code
112557          , p_side                     => 'NA'
112558    );
112559 
112560    xla_ae_lines_pkg.set_ccid(
112561     p_code_combination_id          => l_ccid
112562   , p_value_type_code              => l_adr_value_type_code
112563   , p_transaction_coa_id           => l_adr_transaction_coa_id
112564   , p_accounting_coa_id            => l_adr_accounting_coa_id
112568   , p_component_code               => l_component_code
112565   , p_adr_code                     => 'RSV'
112566   , p_adr_type_code                => 'S'
112567   , p_component_type               => l_component_type
112569   , p_component_type_code          => l_component_type_code
112570   , p_component_appl_id            => l_component_appl_id
112571   , p_amb_context_code             => l_amb_context_code
112572   , p_side                         => 'NA'
112573   );
112574 
112575 
112576    --
112577    --
112578    END IF;
112579    --
112580    -- Bug 4922099
112581    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
112582           (NVL(l_enc_upg_option, 'N') = 'O')
112583         ) AND
112584         (l_bflow_method_code = 'PRIOR_ENTRY')
112585       )
112586    THEN
112587       IF
112588       --
112589       1 = 2
112590       --
112591       THEN
112592       xla_accounting_err_pkg.build_message
112593                                     (p_appli_s_name            => 'XLA'
112594                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112595                                     ,p_token_1                 => 'LINE_NUMBER'
112596                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
112597                                     ,p_token_2                 => 'LINE_TYPE_NAME'
112598                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
112599                                                                              l_component_type
112600                                                                             ,l_component_code
112601                                                                             ,l_component_type_code
112602                                                                             ,l_component_appl_id
112603                                                                             ,l_amb_context_code
112604                                                                             ,l_entity_code
112605                                                                             ,l_event_class_code
112606                                                                            )
112607                                     ,p_token_3                 => 'OWNER'
112608                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
112609                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
112610                                                                           ,p_lookup_code    => l_component_type_code
112611                                                                          )
112612                                     ,p_token_4                 => 'PRODUCT_NAME'
112613                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
112614                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
112615                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
112616                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
112617                                     ,p_ae_header_id            =>  NULL
112618                                        );
112619 
112620         IF (C_LEVEL_ERROR>= g_log_level) THEN
112621                  trace
112622                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112623                       ,p_level    => C_LEVEL_ERROR
112624                       ,p_module   => l_log_module);
112625         END IF;
112626       END IF;
112627    END IF;
112628    --
112629    --
112630    ------------------------------------------------------------------------------------------------
112631    -- 4219869 Business Flow
112632    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
112633    -- Prior Entry.  Currently, the following code is always generated.
112634    ------------------------------------------------------------------------------------------------
112635    XLA_AE_LINES_PKG.ValidateCurrentLine;
112636 
112637    ------------------------------------------------------------------------------------
112638    -- 4219869 Business Flow
112639    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
112640    ------------------------------------------------------------------------------------
112641    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112642 
112643    ----------------------------------------------------------------------------------
112644    -- 4219869 Business Flow
112645    -- Update journal entry status -- Need to generate this within IF <condition>
112646    ----------------------------------------------------------------------------------
112647    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112648          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
112649          ,p_balance_type_code => l_balance_type_code
112650          );
112651 
112652    -------------------------------------------------------------------------------------------
112653    -- 4262811 - Generate the Accrual Reversal lines
112654    -------------------------------------------------------------------------------------------
112655    BEGIN
112656       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
112657                               (g_array_event(p_event_id).array_value_num('header_index'));
112661    EXCEPTION
112658       IF l_acc_rev_flag IS NULL THEN
112659          l_acc_rev_flag := 'N';
112660       END IF;
112662       WHEN OTHERS THEN
112663          l_acc_rev_flag := 'N';
112664    END;
112665    --
112666    IF (l_acc_rev_flag = 'Y') THEN
112667 
112668        -- 4645092  ------------------------------------------------------------------------------
112669        -- To allow MPA report to determine if it should generate report process
112670        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
112671        ------------------------------------------------------------------------------------------
112672 
112673        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
112674        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
112675    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
112676    -- call ADRs
112677    -- Bug 4922099
112678    --
112679    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112680         (NVL(l_actual_upg_option, 'N') = 'O') OR
112681         (NVL(l_enc_upg_option, 'N') = 'O')
112682       )
112683    THEN
112684    NULL;
112685    --
112686    --
112687    
112688   l_ccid := AcctDerRule_35(
112689            p_application_id           => p_application_id
112690          , p_ae_header_id             => l_ae_header_id 
112691 , p_source_1 => p_source_1
112692 , p_source_2 => p_source_2
112693          , x_transaction_coa_id       => l_adr_transaction_coa_id
112694          , x_accounting_coa_id        => l_adr_accounting_coa_id
112695          , x_value_type_code          => l_adr_value_type_code
112696          , p_side                     => 'NA'
112697    );
112698 
112699    xla_ae_lines_pkg.set_ccid(
112700     p_code_combination_id          => l_ccid
112701   , p_value_type_code              => l_adr_value_type_code
112702   , p_transaction_coa_id           => l_adr_transaction_coa_id
112703   , p_accounting_coa_id            => l_adr_accounting_coa_id
112704   , p_adr_code                     => 'RSV'
112705   , p_adr_type_code                => 'S'
112706   , p_component_type               => l_component_type
112707   , p_component_code               => l_component_code
112708   , p_component_type_code          => l_component_type_code
112709   , p_component_appl_id            => l_component_appl_id
112710   , p_amb_context_code             => l_amb_context_code
112711   , p_side                         => 'NA'
112712   );
112713 
112714 
112715    --
112716    --
112717    END IF;
112718 
112719        --
112720        -- Update the line information that should be overwritten
112721        --
112722        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
112723                                          p_header_num   => 1);
112724        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
112725 
112726        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
112727 
112728        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
112729           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
112730        END IF;
112731 
112732       --
112733       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
112734       --
112735       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
112736           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
112737       ELSE
112738           ---------------------------------------------------------------------------------------------------
112739           -- 4262811a Switch Sign
112740           ---------------------------------------------------------------------------------------------------
112741           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
112742           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112743                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112744           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112745                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112746           -- 5132302
112747           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
112748                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112749 
112750       END IF;
112751 
112752       -- 4955764
112753       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112754       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
112755 
112756 
112757       XLA_AE_LINES_PKG.ValidateCurrentLine;
112758       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112759 
112760       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112761                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
112762                ,p_balance_type_code => l_balance_type_code);
112763 
112764    END IF;
112765 
112766    -----------------------------------------------------------------------------------------
112767    -- 4262811 Multiperiod Accounting
112768    -----------------------------------------------------------------------------------------
112769      -- No MPA option is assigned.
112770 
112771 
112775 
112772 END IF;
112773 END IF;
112774 --
112776 --
112777 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112778    trace
112779       (p_msg      => 'END of AcctLineType_235'
112780       ,p_level    => C_LEVEL_PROCEDURE
112781       ,p_module   => l_log_module);
112782 END IF;
112783 --
112784 EXCEPTION
112785   WHEN xla_exceptions_pkg.application_exception THEN
112786       RAISE;
112787   WHEN OTHERS THEN
112788        xla_exceptions_pkg.raise_message
112789            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_235');
112790 END AcctLineType_235;
112791 --
112792 
112793 ---------------------------------------
112794 --
112795 -- PRIVATE FUNCTION
112796 --         AcctLineType_236
112797 --
112798 ---------------------------------------
112799 PROCEDURE AcctLineType_236 (
112800   p_application_id        IN NUMBER
112801  ,p_event_id              IN NUMBER
112802  ,p_calculate_acctd_flag  IN VARCHAR2
112803  ,p_calculate_g_l_flag    IN VARCHAR2
112804  ,p_actual_flag           IN OUT VARCHAR2
112805  ,p_balance_type_code     OUT VARCHAR2
112806  ,p_gain_or_loss_ref      OUT VARCHAR2
112807  
112808 --Transaction Account
112809  , p_source_1            IN NUMBER
112810 --Journal Line Type
112811  , p_source_2            IN VARCHAR2
112812 --Entered Amount
112813  , p_source_3            IN NUMBER
112814 --First Distribution Identifier
112815  , p_source_5            IN NUMBER
112816 --Distribution Type
112817  , p_source_6            IN VARCHAR2
112818 --Currency Code
112819  , p_source_7            IN VARCHAR2
112820 --Currency Conversion Date
112821  , p_source_8            IN DATE
112822 --Currency Conversion Rate
112823  , p_source_9            IN NUMBER
112824 --Currency Conversion Type
112825  , p_source_10            IN VARCHAR2
112826 --Accounted Amount
112827  , p_source_11            IN NUMBER
112828 )
112829 IS
112830 
112831 l_component_type              VARCHAR2(80);
112832 l_component_code              VARCHAR2(30);
112833 l_component_type_code         VARCHAR2(1);
112834 l_component_appl_id           INTEGER;
112835 l_amb_context_code            VARCHAR2(30);
112836 l_entity_code                 VARCHAR2(30);
112837 l_event_class_code            VARCHAR2(30);
112838 l_ae_header_id                NUMBER;
112839 l_event_type_code             VARCHAR2(30);
112840 l_line_definition_code        VARCHAR2(30);
112841 l_line_definition_owner_code  VARCHAR2(1);
112842 --
112843 -- adr variables
112844 l_segment                     VARCHAR2(30);
112845 l_ccid                        NUMBER;
112846 l_adr_transaction_coa_id      NUMBER;
112847 l_adr_accounting_coa_id       NUMBER;
112848 l_adr_flexfield_segment_code  VARCHAR2(30);
112849 l_adr_flex_value_set_id       NUMBER;
112850 l_adr_value_type_code         VARCHAR2(30);
112851 l_adr_value_combination_id    NUMBER;
112852 l_adr_value_segment_code      VARCHAR2(30);
112853 
112854 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
112855 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
112856 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
112857 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
112858 
112859 -- 4262811 Variables ------------------------------------------------------------------------------------------
112860 l_entered_amt_idx             NUMBER;
112861 l_accted_amt_idx              NUMBER;
112862 l_acc_rev_flag                VARCHAR2(1);
112863 l_accrual_line_num            NUMBER;
112864 l_tmp_amt                     NUMBER;
112865 l_acc_rev_natural_side_code   VARCHAR2(1);
112866 
112867 l_num_entries                 NUMBER;
112868 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
112869 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
112870 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
112871 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
112872 l_recog_line_1                NUMBER;
112873 l_recog_line_2                NUMBER;
112874 
112875 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
112876 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
112877 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
112878 
112879 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
112880 
112881 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
112882 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
112883 
112884 ---------------------------------------------------------------------------------------------------------------
112885 
112886 
112887 --
112888 -- bulk performance
112889 --
112890 l_balance_type_code           VARCHAR2(1);
112891 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
112892 l_log_module                  VARCHAR2(240);
112893 
112894 --
112895 -- Upgrade strategy
112896 --
112897 l_actual_upg_option           VARCHAR2(1);
112898 l_enc_upg_option           VARCHAR2(1);
112899 
112900 --
112901 BEGIN
112902 --
112903 IF g_log_enabled THEN
112904       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_236';
112905 END IF;
112906 --
112907 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112908 
112909       trace
112910          (p_msg      => 'BEGIN of AcctLineType_236'
112911          ,p_level    => C_LEVEL_PROCEDURE
112912          ,p_module   => l_log_module);
112913 
112914 END IF;
112915 --
112919 l_component_appl_id          :=  555;
112916 l_component_type             := 'AMB_JLT';
112917 l_component_code             := 'RUV';
112918 l_component_type_code        := 'S';
112920 l_amb_context_code           := 'DEFAULT';
112921 l_entity_code                := 'PRODUCTION';
112922 l_event_class_code           := 'BATCH_CLOSE';
112923 l_event_type_code            := 'CLOS';
112924 l_line_definition_owner_code := 'S';
112925 l_line_definition_code       := 'BATCH_CLOSE';
112926 --
112927 l_balance_type_code          := 'A';
112928 l_segment                     := NULL;
112929 l_ccid                        := NULL;
112930 l_adr_transaction_coa_id      := NULL;
112931 l_adr_accounting_coa_id       := NULL;
112932 l_adr_flexfield_segment_code  := NULL;
112933 l_adr_flex_value_set_id       := NULL;
112934 l_adr_value_type_code         := NULL;
112935 l_adr_value_combination_id    := NULL;
112936 l_adr_value_segment_code      := NULL;
112937 
112938 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
112939 l_bflow_class_code           := '';    -- 4219869 Business Flow
112940 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
112941 l_budgetary_control_flag     := 'N';
112942 
112943 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
112944 l_bflow_applied_to_amt       := NULL; -- 5132302
112945 l_entered_amt_idx            := NULL;          -- 4262811
112946 l_accted_amt_idx             := NULL;          -- 4262811
112947 l_acc_rev_flag               := NULL;          -- 4262811
112948 l_accrual_line_num           := NULL;          -- 4262811
112949 l_tmp_amt                    := NULL;          -- 4262811
112950 --
112951  
112952 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
112953     l_balance_type_code <> 'B' THEN
112954 IF NVL(p_source_2,'
112955 ') =  'RUV'
112956  THEN 
112957 
112958    --
112959    XLA_AE_LINES_PKG.SetNewLine;
112960 
112961    p_balance_type_code          := l_balance_type_code;
112962    -- set the flag so later we will know whether the gain loss line needs to be created
112963    
112964    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
112965      p_actual_flag :='A';
112966    END IF;
112967 
112968    --
112969    -- bulk performance
112970    --
112971    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
112972                                       p_header_num   => 0); -- 4262811
112973    --
112974    -- set accounting line options
112975    --
112976    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
112977            p_natural_side_code          => 'D'
112978          , p_gain_or_loss_flag          => 'N'
112979          , p_gl_transfer_mode_code      => 'D'
112980          , p_acct_entry_type_code       => 'A'
112981          , p_switch_side_flag           => 'Y'
112982          , p_merge_duplicate_code       => 'W'
112983          );
112984    --
112985    l_acc_rev_natural_side_code := 'C';  -- 4262811
112986    -- 
112987    --
112988    -- set accounting line type info
112989    --
112990    xla_ae_lines_pkg.SetAcctLineType
112991       (p_component_type             => l_component_type
112992       ,p_event_type_code            => l_event_type_code
112993       ,p_line_definition_owner_code => l_line_definition_owner_code
112994       ,p_line_definition_code       => l_line_definition_code
112995       ,p_accounting_line_code       => l_component_code
112996       ,p_accounting_line_type_code  => l_component_type_code
112997       ,p_accounting_line_appl_id    => l_component_appl_id
112998       ,p_amb_context_code           => l_amb_context_code
112999       ,p_entity_code                => l_entity_code
113000       ,p_event_class_code           => l_event_class_code);
113001    --
113002    -- set accounting class
113003    --
113004    xla_ae_lines_pkg.SetAcctClass(
113005            p_accounting_class_code  => 'RUV'
113006          , p_ae_header_id           => l_ae_header_id
113007          );
113008 
113009    --
113010    -- set rounding class
113011    --
113012    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
113013                       'RUV';
113014 
113015    --
113016    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
113017    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
113018    --
113019    -- bulk performance
113020    --
113021    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
113022 
113023    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
113024       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
113025 
113026    -- 4955764
113027    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113028       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
113029 
113030    -- 4458381 Public Sector Enh
113031    
113032    --
113033    -- set accounting attributes for the line type
113034    --
113035    l_entered_amt_idx := 3;
113036    l_accted_amt_idx  := 8;
113037    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
113038    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
113039    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
113040    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
113041    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
113045    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
113042    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
113043    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
113044    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
113046    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
113047    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
113048    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
113049    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
113050    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
113051    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
113052    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
113053    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
113054 
113055    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
113056    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
113057 
113058    ---------------------------------------------------------------------------------------------------------------
113059    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
113060    ---------------------------------------------------------------------------------------------------------------
113061    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
113062 
113063    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113064    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113065 
113066    IF xla_accounting_cache_pkg.GetValueChar
113067          (p_source_code         => 'LEDGER_CATEGORY_CODE'
113068          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
113069    AND l_bflow_method_code = 'PRIOR_ENTRY'
113070 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
113071    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
113072          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
113073        )
113074    THEN
113075          xla_ae_lines_pkg.BflowUpgEntry
113076            (p_business_method_code    => l_bflow_method_code
113077            ,p_business_class_code     => l_bflow_class_code
113078            ,p_balance_type            => l_balance_type_code);
113079    ELSE
113080       NULL;
113081 -- No business flow processing for business flow method of NONE.
113082    END IF;
113083 
113084    --
113085    -- call analytical criteria
113086    --
113087    
113088    --
113089    -- call description
113090    --
113091    -- No description or it is inherited.
113092    --
113093    -- call ADRs
113094    -- Bug 4922099
113095    --
113096    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113097         (NVL(l_actual_upg_option, 'N') = 'O') OR
113098         (NVL(l_enc_upg_option, 'N') = 'O')
113099       )
113100    THEN
113101    NULL;
113102    --
113103    --
113104    
113105   l_ccid := AcctDerRule_36(
113106            p_application_id           => p_application_id
113107          , p_ae_header_id             => l_ae_header_id 
113108 , p_source_1 => p_source_1
113109 , p_source_2 => p_source_2
113110          , x_transaction_coa_id       => l_adr_transaction_coa_id
113111          , x_accounting_coa_id        => l_adr_accounting_coa_id
113112          , x_value_type_code          => l_adr_value_type_code
113113          , p_side                     => 'NA'
113114    );
113115 
113116    xla_ae_lines_pkg.set_ccid(
113117     p_code_combination_id          => l_ccid
113118   , p_value_type_code              => l_adr_value_type_code
113119   , p_transaction_coa_id           => l_adr_transaction_coa_id
113120   , p_accounting_coa_id            => l_adr_accounting_coa_id
113121   , p_adr_code                     => 'RUV'
113122   , p_adr_type_code                => 'S'
113123   , p_component_type               => l_component_type
113124   , p_component_code               => l_component_code
113125   , p_component_type_code          => l_component_type_code
113126   , p_component_appl_id            => l_component_appl_id
113127   , p_amb_context_code             => l_amb_context_code
113128   , p_side                         => 'NA'
113129   );
113130 
113131 
113132    --
113133    --
113134    END IF;
113135    --
113136    -- Bug 4922099
113137    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
113138           (NVL(l_enc_upg_option, 'N') = 'O')
113139         ) AND
113140         (l_bflow_method_code = 'PRIOR_ENTRY')
113141       )
113142    THEN
113143       IF
113144       --
113145       1 = 2
113146       --
113147       THEN
113148       xla_accounting_err_pkg.build_message
113149                                     (p_appli_s_name            => 'XLA'
113150                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113151                                     ,p_token_1                 => 'LINE_NUMBER'
113152                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
113153                                     ,p_token_2                 => 'LINE_TYPE_NAME'
113154                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
113155                                                                              l_component_type
113156                                                                             ,l_component_code
113160                                                                             ,l_entity_code
113157                                                                             ,l_component_type_code
113158                                                                             ,l_component_appl_id
113159                                                                             ,l_amb_context_code
113161                                                                             ,l_event_class_code
113162                                                                            )
113163                                     ,p_token_3                 => 'OWNER'
113164                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
113165                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
113166                                                                           ,p_lookup_code    => l_component_type_code
113167                                                                          )
113168                                     ,p_token_4                 => 'PRODUCT_NAME'
113169                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
113170                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
113171                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
113172                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
113173                                     ,p_ae_header_id            =>  NULL
113174                                        );
113175 
113176         IF (C_LEVEL_ERROR>= g_log_level) THEN
113177                  trace
113178                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113179                       ,p_level    => C_LEVEL_ERROR
113180                       ,p_module   => l_log_module);
113181         END IF;
113182       END IF;
113183    END IF;
113184    --
113185    --
113186    ------------------------------------------------------------------------------------------------
113187    -- 4219869 Business Flow
113188    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
113189    -- Prior Entry.  Currently, the following code is always generated.
113190    ------------------------------------------------------------------------------------------------
113191    XLA_AE_LINES_PKG.ValidateCurrentLine;
113192 
113193    ------------------------------------------------------------------------------------
113194    -- 4219869 Business Flow
113195    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
113196    ------------------------------------------------------------------------------------
113197    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113198 
113199    ----------------------------------------------------------------------------------
113200    -- 4219869 Business Flow
113201    -- Update journal entry status -- Need to generate this within IF <condition>
113202    ----------------------------------------------------------------------------------
113203    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113204          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
113205          ,p_balance_type_code => l_balance_type_code
113206          );
113207 
113208    -------------------------------------------------------------------------------------------
113209    -- 4262811 - Generate the Accrual Reversal lines
113210    -------------------------------------------------------------------------------------------
113211    BEGIN
113212       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
113213                               (g_array_event(p_event_id).array_value_num('header_index'));
113214       IF l_acc_rev_flag IS NULL THEN
113215          l_acc_rev_flag := 'N';
113216       END IF;
113217    EXCEPTION
113218       WHEN OTHERS THEN
113219          l_acc_rev_flag := 'N';
113220    END;
113221    --
113222    IF (l_acc_rev_flag = 'Y') THEN
113223 
113224        -- 4645092  ------------------------------------------------------------------------------
113225        -- To allow MPA report to determine if it should generate report process
113226        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
113227        ------------------------------------------------------------------------------------------
113228 
113229        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
113230        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
113231    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
113232    -- call ADRs
113233    -- Bug 4922099
113234    --
113235    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113236         (NVL(l_actual_upg_option, 'N') = 'O') OR
113237         (NVL(l_enc_upg_option, 'N') = 'O')
113238       )
113239    THEN
113240    NULL;
113241    --
113242    --
113243    
113244   l_ccid := AcctDerRule_36(
113245            p_application_id           => p_application_id
113246          , p_ae_header_id             => l_ae_header_id 
113247 , p_source_1 => p_source_1
113248 , p_source_2 => p_source_2
113249          , x_transaction_coa_id       => l_adr_transaction_coa_id
113250          , x_accounting_coa_id        => l_adr_accounting_coa_id
113251          , x_value_type_code          => l_adr_value_type_code
113252          , p_side                     => 'NA'
113253    );
113254 
113258   , p_transaction_coa_id           => l_adr_transaction_coa_id
113255    xla_ae_lines_pkg.set_ccid(
113256     p_code_combination_id          => l_ccid
113257   , p_value_type_code              => l_adr_value_type_code
113259   , p_accounting_coa_id            => l_adr_accounting_coa_id
113260   , p_adr_code                     => 'RUV'
113261   , p_adr_type_code                => 'S'
113262   , p_component_type               => l_component_type
113263   , p_component_code               => l_component_code
113264   , p_component_type_code          => l_component_type_code
113265   , p_component_appl_id            => l_component_appl_id
113266   , p_amb_context_code             => l_amb_context_code
113267   , p_side                         => 'NA'
113268   );
113269 
113270 
113271    --
113272    --
113273    END IF;
113274 
113275        --
113276        -- Update the line information that should be overwritten
113277        --
113278        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
113279                                          p_header_num   => 1);
113280        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
113281 
113282        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
113283 
113284        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
113285           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
113286        END IF;
113287 
113288       --
113289       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
113290       --
113291       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
113292           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
113293       ELSE
113294           ---------------------------------------------------------------------------------------------------
113295           -- 4262811a Switch Sign
113296           ---------------------------------------------------------------------------------------------------
113297           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
113298           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113299                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113300           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113301                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113302           -- 5132302
113303           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
113304                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113305 
113306       END IF;
113307 
113308       -- 4955764
113309       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113310       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
113311 
113312 
113313       XLA_AE_LINES_PKG.ValidateCurrentLine;
113314       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113315 
113316       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113317                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
113318                ,p_balance_type_code => l_balance_type_code);
113319 
113320    END IF;
113321 
113322    -----------------------------------------------------------------------------------------
113323    -- 4262811 Multiperiod Accounting
113324    -----------------------------------------------------------------------------------------
113325      -- No MPA option is assigned.
113326 
113327 
113328 END IF;
113329 END IF;
113330 --
113331 
113332 --
113333 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113334    trace
113335       (p_msg      => 'END of AcctLineType_236'
113336       ,p_level    => C_LEVEL_PROCEDURE
113337       ,p_module   => l_log_module);
113338 END IF;
113339 --
113340 EXCEPTION
113341   WHEN xla_exceptions_pkg.application_exception THEN
113342       RAISE;
113343   WHEN OTHERS THEN
113344        xla_exceptions_pkg.raise_message
113345            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_236');
113346 END AcctLineType_236;
113347 --
113348 
113349 ---------------------------------------
113350 --
113351 -- PRIVATE FUNCTION
113352 --         AcctLineType_237
113353 --
113354 ---------------------------------------
113355 PROCEDURE AcctLineType_237 (
113356   p_application_id        IN NUMBER
113357  ,p_event_id              IN NUMBER
113358  ,p_calculate_acctd_flag  IN VARCHAR2
113359  ,p_calculate_g_l_flag    IN VARCHAR2
113360  ,p_actual_flag           IN OUT VARCHAR2
113361  ,p_balance_type_code     OUT VARCHAR2
113362  ,p_gain_or_loss_ref      OUT VARCHAR2
113363  
113364 --Transaction Account
113365  , p_source_1            IN NUMBER
113366 --Journal Line Type
113367  , p_source_2            IN VARCHAR2
113368 --Entered Amount
113369  , p_source_3            IN NUMBER
113370 --First Distribution Identifier
113371  , p_source_5            IN NUMBER
113372 --Distribution Type
113373  , p_source_6            IN VARCHAR2
113374 --Currency Code
113375  , p_source_7            IN VARCHAR2
113376 --Currency Conversion Date
113377  , p_source_8            IN DATE
113378 --Currency Conversion Rate
113379  , p_source_9            IN NUMBER
113383  , p_source_11            IN NUMBER
113380 --Currency Conversion Type
113381  , p_source_10            IN VARCHAR2
113382 --Accounted Amount
113384 )
113385 IS
113386 
113387 l_component_type              VARCHAR2(80);
113388 l_component_code              VARCHAR2(30);
113389 l_component_type_code         VARCHAR2(1);
113390 l_component_appl_id           INTEGER;
113391 l_amb_context_code            VARCHAR2(30);
113392 l_entity_code                 VARCHAR2(30);
113393 l_event_class_code            VARCHAR2(30);
113394 l_ae_header_id                NUMBER;
113395 l_event_type_code             VARCHAR2(30);
113396 l_line_definition_code        VARCHAR2(30);
113397 l_line_definition_owner_code  VARCHAR2(1);
113398 --
113399 -- adr variables
113400 l_segment                     VARCHAR2(30);
113401 l_ccid                        NUMBER;
113402 l_adr_transaction_coa_id      NUMBER;
113403 l_adr_accounting_coa_id       NUMBER;
113404 l_adr_flexfield_segment_code  VARCHAR2(30);
113405 l_adr_flex_value_set_id       NUMBER;
113406 l_adr_value_type_code         VARCHAR2(30);
113407 l_adr_value_combination_id    NUMBER;
113408 l_adr_value_segment_code      VARCHAR2(30);
113409 
113410 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
113411 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
113412 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
113413 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
113414 
113415 -- 4262811 Variables ------------------------------------------------------------------------------------------
113416 l_entered_amt_idx             NUMBER;
113417 l_accted_amt_idx              NUMBER;
113418 l_acc_rev_flag                VARCHAR2(1);
113419 l_accrual_line_num            NUMBER;
113420 l_tmp_amt                     NUMBER;
113421 l_acc_rev_natural_side_code   VARCHAR2(1);
113422 
113423 l_num_entries                 NUMBER;
113424 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
113425 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
113426 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
113427 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
113428 l_recog_line_1                NUMBER;
113429 l_recog_line_2                NUMBER;
113430 
113431 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
113432 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
113433 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
113434 
113435 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
113436 
113437 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
113438 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
113439 
113440 ---------------------------------------------------------------------------------------------------------------
113441 
113442 
113443 --
113444 -- bulk performance
113445 --
113446 l_balance_type_code           VARCHAR2(1);
113447 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
113448 l_log_module                  VARCHAR2(240);
113449 
113450 --
113451 -- Upgrade strategy
113452 --
113453 l_actual_upg_option           VARCHAR2(1);
113454 l_enc_upg_option           VARCHAR2(1);
113455 
113456 --
113457 BEGIN
113458 --
113459 IF g_log_enabled THEN
113460       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_237';
113461 END IF;
113462 --
113463 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113464 
113465       trace
113466          (p_msg      => 'BEGIN of AcctLineType_237'
113467          ,p_level    => C_LEVEL_PROCEDURE
113468          ,p_module   => l_log_module);
113469 
113470 END IF;
113471 --
113472 l_component_type             := 'AMB_JLT';
113473 l_component_code             := 'SUB';
113474 l_component_type_code        := 'S';
113475 l_component_appl_id          :=  555;
113476 l_amb_context_code           := 'DEFAULT';
113477 l_entity_code                := 'PRODUCTION';
113478 l_event_class_code           := 'BATCH_CLOSE';
113479 l_event_type_code            := 'CLOS';
113480 l_line_definition_owner_code := 'S';
113481 l_line_definition_code       := 'BATCH_CLOSE';
113482 --
113483 l_balance_type_code          := 'A';
113484 l_segment                     := NULL;
113485 l_ccid                        := NULL;
113486 l_adr_transaction_coa_id      := NULL;
113487 l_adr_accounting_coa_id       := NULL;
113488 l_adr_flexfield_segment_code  := NULL;
113489 l_adr_flex_value_set_id       := NULL;
113490 l_adr_value_type_code         := NULL;
113491 l_adr_value_combination_id    := NULL;
113492 l_adr_value_segment_code      := NULL;
113493 
113494 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
113495 l_bflow_class_code           := '';    -- 4219869 Business Flow
113496 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
113497 l_budgetary_control_flag     := 'N';
113498 
113499 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
113500 l_bflow_applied_to_amt       := NULL; -- 5132302
113501 l_entered_amt_idx            := NULL;          -- 4262811
113502 l_accted_amt_idx             := NULL;          -- 4262811
113503 l_acc_rev_flag               := NULL;          -- 4262811
113504 l_accrual_line_num           := NULL;          -- 4262811
113505 l_tmp_amt                    := NULL;          -- 4262811
113506 --
113507  
113511 ') =  'SUB'
113508 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
113509     l_balance_type_code <> 'B' THEN
113510 IF NVL(p_source_2,'
113512  THEN 
113513 
113514    --
113515    XLA_AE_LINES_PKG.SetNewLine;
113516 
113517    p_balance_type_code          := l_balance_type_code;
113518    -- set the flag so later we will know whether the gain loss line needs to be created
113519    
113520    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
113521      p_actual_flag :='A';
113522    END IF;
113523 
113524    --
113525    -- bulk performance
113526    --
113527    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
113528                                       p_header_num   => 0); -- 4262811
113529    --
113530    -- set accounting line options
113531    --
113532    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
113533            p_natural_side_code          => 'D'
113534          , p_gain_or_loss_flag          => 'N'
113535          , p_gl_transfer_mode_code      => 'D'
113536          , p_acct_entry_type_code       => 'A'
113537          , p_switch_side_flag           => 'Y'
113538          , p_merge_duplicate_code       => 'W'
113539          );
113540    --
113541    l_acc_rev_natural_side_code := 'C';  -- 4262811
113542    -- 
113543    --
113544    -- set accounting line type info
113545    --
113546    xla_ae_lines_pkg.SetAcctLineType
113547       (p_component_type             => l_component_type
113548       ,p_event_type_code            => l_event_type_code
113549       ,p_line_definition_owner_code => l_line_definition_owner_code
113550       ,p_line_definition_code       => l_line_definition_code
113551       ,p_accounting_line_code       => l_component_code
113552       ,p_accounting_line_type_code  => l_component_type_code
113553       ,p_accounting_line_appl_id    => l_component_appl_id
113554       ,p_amb_context_code           => l_amb_context_code
113555       ,p_entity_code                => l_entity_code
113556       ,p_event_class_code           => l_event_class_code);
113557    --
113558    -- set accounting class
113559    --
113560    xla_ae_lines_pkg.SetAcctClass(
113561            p_accounting_class_code  => 'SUB'
113562          , p_ae_header_id           => l_ae_header_id
113563          );
113564 
113565    --
113566    -- set rounding class
113567    --
113568    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
113569                       'SUB';
113570 
113571    --
113572    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
113573    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
113574    --
113575    -- bulk performance
113576    --
113577    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
113578 
113579    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
113580       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
113581 
113582    -- 4955764
113583    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113584       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
113585 
113586    -- 4458381 Public Sector Enh
113587    
113588    --
113589    -- set accounting attributes for the line type
113590    --
113591    l_entered_amt_idx := 3;
113592    l_accted_amt_idx  := 8;
113593    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
113594    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
113595    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
113596    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
113597    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
113598    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
113599    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
113600    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
113601    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
113602    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
113603    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
113604    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
113605    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
113606    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
113607    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
113608    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
113609    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
113610 
113611    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
113612    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
113613 
113614    ---------------------------------------------------------------------------------------------------------------
113615    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
113616    ---------------------------------------------------------------------------------------------------------------
113617    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
113618 
113619    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113620    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113621 
113625    AND l_bflow_method_code = 'PRIOR_ENTRY'
113622    IF xla_accounting_cache_pkg.GetValueChar
113623          (p_source_code         => 'LEDGER_CATEGORY_CODE'
113624          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
113626 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
113627    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
113628          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
113629        )
113630    THEN
113631          xla_ae_lines_pkg.BflowUpgEntry
113632            (p_business_method_code    => l_bflow_method_code
113633            ,p_business_class_code     => l_bflow_class_code
113634            ,p_balance_type            => l_balance_type_code);
113635    ELSE
113636       NULL;
113637 -- No business flow processing for business flow method of NONE.
113638    END IF;
113639 
113640    --
113641    -- call analytical criteria
113642    --
113643    
113644    --
113645    -- call description
113646    --
113647    -- No description or it is inherited.
113648    --
113649    -- call ADRs
113650    -- Bug 4922099
113651    --
113652    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113653         (NVL(l_actual_upg_option, 'N') = 'O') OR
113654         (NVL(l_enc_upg_option, 'N') = 'O')
113655       )
113656    THEN
113657    NULL;
113658    --
113659    --
113660    
113661   l_ccid := AcctDerRule_37(
113662            p_application_id           => p_application_id
113663          , p_ae_header_id             => l_ae_header_id 
113664 , p_source_1 => p_source_1
113665 , p_source_2 => p_source_2
113666          , x_transaction_coa_id       => l_adr_transaction_coa_id
113667          , x_accounting_coa_id        => l_adr_accounting_coa_id
113668          , x_value_type_code          => l_adr_value_type_code
113669          , p_side                     => 'NA'
113670    );
113671 
113672    xla_ae_lines_pkg.set_ccid(
113673     p_code_combination_id          => l_ccid
113674   , p_value_type_code              => l_adr_value_type_code
113675   , p_transaction_coa_id           => l_adr_transaction_coa_id
113676   , p_accounting_coa_id            => l_adr_accounting_coa_id
113677   , p_adr_code                     => 'SUB'
113678   , p_adr_type_code                => 'S'
113679   , p_component_type               => l_component_type
113680   , p_component_code               => l_component_code
113681   , p_component_type_code          => l_component_type_code
113682   , p_component_appl_id            => l_component_appl_id
113683   , p_amb_context_code             => l_amb_context_code
113684   , p_side                         => 'NA'
113685   );
113686 
113687 
113688    --
113689    --
113690    END IF;
113691    --
113692    -- Bug 4922099
113693    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
113694           (NVL(l_enc_upg_option, 'N') = 'O')
113695         ) AND
113696         (l_bflow_method_code = 'PRIOR_ENTRY')
113697       )
113698    THEN
113699       IF
113700       --
113701       1 = 2
113702       --
113703       THEN
113704       xla_accounting_err_pkg.build_message
113705                                     (p_appli_s_name            => 'XLA'
113706                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113707                                     ,p_token_1                 => 'LINE_NUMBER'
113708                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
113709                                     ,p_token_2                 => 'LINE_TYPE_NAME'
113710                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
113711                                                                              l_component_type
113712                                                                             ,l_component_code
113713                                                                             ,l_component_type_code
113714                                                                             ,l_component_appl_id
113715                                                                             ,l_amb_context_code
113716                                                                             ,l_entity_code
113717                                                                             ,l_event_class_code
113718                                                                            )
113719                                     ,p_token_3                 => 'OWNER'
113720                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
113721                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
113722                                                                           ,p_lookup_code    => l_component_type_code
113723                                                                          )
113724                                     ,p_token_4                 => 'PRODUCT_NAME'
113725                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
113726                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
113727                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
113728                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
113729                                     ,p_ae_header_id            =>  NULL
113730                                        );
113731 
113735                       ,p_level    => C_LEVEL_ERROR
113732         IF (C_LEVEL_ERROR>= g_log_level) THEN
113733                  trace
113734                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113736                       ,p_module   => l_log_module);
113737         END IF;
113738       END IF;
113739    END IF;
113740    --
113741    --
113742    ------------------------------------------------------------------------------------------------
113743    -- 4219869 Business Flow
113744    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
113745    -- Prior Entry.  Currently, the following code is always generated.
113746    ------------------------------------------------------------------------------------------------
113747    XLA_AE_LINES_PKG.ValidateCurrentLine;
113748 
113749    ------------------------------------------------------------------------------------
113750    -- 4219869 Business Flow
113751    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
113752    ------------------------------------------------------------------------------------
113753    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113754 
113755    ----------------------------------------------------------------------------------
113756    -- 4219869 Business Flow
113757    -- Update journal entry status -- Need to generate this within IF <condition>
113758    ----------------------------------------------------------------------------------
113759    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113760          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
113761          ,p_balance_type_code => l_balance_type_code
113762          );
113763 
113764    -------------------------------------------------------------------------------------------
113765    -- 4262811 - Generate the Accrual Reversal lines
113766    -------------------------------------------------------------------------------------------
113767    BEGIN
113768       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
113769                               (g_array_event(p_event_id).array_value_num('header_index'));
113770       IF l_acc_rev_flag IS NULL THEN
113771          l_acc_rev_flag := 'N';
113772       END IF;
113773    EXCEPTION
113774       WHEN OTHERS THEN
113775          l_acc_rev_flag := 'N';
113776    END;
113777    --
113778    IF (l_acc_rev_flag = 'Y') THEN
113779 
113780        -- 4645092  ------------------------------------------------------------------------------
113781        -- To allow MPA report to determine if it should generate report process
113782        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
113783        ------------------------------------------------------------------------------------------
113784 
113785        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
113786        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
113787    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
113788    -- call ADRs
113789    -- Bug 4922099
113790    --
113791    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113792         (NVL(l_actual_upg_option, 'N') = 'O') OR
113793         (NVL(l_enc_upg_option, 'N') = 'O')
113794       )
113795    THEN
113796    NULL;
113797    --
113798    --
113799    
113800   l_ccid := AcctDerRule_37(
113801            p_application_id           => p_application_id
113802          , p_ae_header_id             => l_ae_header_id 
113803 , p_source_1 => p_source_1
113804 , p_source_2 => p_source_2
113805          , x_transaction_coa_id       => l_adr_transaction_coa_id
113806          , x_accounting_coa_id        => l_adr_accounting_coa_id
113807          , x_value_type_code          => l_adr_value_type_code
113808          , p_side                     => 'NA'
113809    );
113810 
113811    xla_ae_lines_pkg.set_ccid(
113812     p_code_combination_id          => l_ccid
113813   , p_value_type_code              => l_adr_value_type_code
113814   , p_transaction_coa_id           => l_adr_transaction_coa_id
113815   , p_accounting_coa_id            => l_adr_accounting_coa_id
113816   , p_adr_code                     => 'SUB'
113817   , p_adr_type_code                => 'S'
113818   , p_component_type               => l_component_type
113819   , p_component_code               => l_component_code
113820   , p_component_type_code          => l_component_type_code
113821   , p_component_appl_id            => l_component_appl_id
113822   , p_amb_context_code             => l_amb_context_code
113823   , p_side                         => 'NA'
113824   );
113825 
113826 
113827    --
113828    --
113829    END IF;
113830 
113831        --
113832        -- Update the line information that should be overwritten
113833        --
113834        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
113835                                          p_header_num   => 1);
113836        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
113837 
113838        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
113839 
113840        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
113841           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
113842        END IF;
113843 
113844       --
113845       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
113846       --
113850           ---------------------------------------------------------------------------------------------------
113847       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
113848           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
113849       ELSE
113851           -- 4262811a Switch Sign
113852           ---------------------------------------------------------------------------------------------------
113853           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
113854           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113855                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113856           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113857                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113858           -- 5132302
113859           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
113860                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113861 
113862       END IF;
113863 
113864       -- 4955764
113865       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113866       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
113867 
113868 
113869       XLA_AE_LINES_PKG.ValidateCurrentLine;
113870       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113871 
113872       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113873                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
113874                ,p_balance_type_code => l_balance_type_code);
113875 
113876    END IF;
113877 
113878    -----------------------------------------------------------------------------------------
113879    -- 4262811 Multiperiod Accounting
113880    -----------------------------------------------------------------------------------------
113881      -- No MPA option is assigned.
113882 
113883 
113884 END IF;
113885 END IF;
113886 --
113887 
113888 --
113889 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113890    trace
113891       (p_msg      => 'END of AcctLineType_237'
113892       ,p_level    => C_LEVEL_PROCEDURE
113893       ,p_module   => l_log_module);
113894 END IF;
113895 --
113896 EXCEPTION
113897   WHEN xla_exceptions_pkg.application_exception THEN
113898       RAISE;
113899   WHEN OTHERS THEN
113900        xla_exceptions_pkg.raise_message
113901            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_237');
113902 END AcctLineType_237;
113903 --
113904 
113905 ---------------------------------------
113906 --
113907 -- PRIVATE FUNCTION
113908 --         AcctLineType_238
113909 --
113910 ---------------------------------------
113911 PROCEDURE AcctLineType_238 (
113912   p_application_id        IN NUMBER
113913  ,p_event_id              IN NUMBER
113914  ,p_calculate_acctd_flag  IN VARCHAR2
113915  ,p_calculate_g_l_flag    IN VARCHAR2
113916  ,p_actual_flag           IN OUT VARCHAR2
113917  ,p_balance_type_code     OUT VARCHAR2
113918  ,p_gain_or_loss_ref      OUT VARCHAR2
113919  
113920 --Transaction Account
113921  , p_source_1            IN NUMBER
113922 --Journal Line Type
113923  , p_source_2            IN VARCHAR2
113924 --Entered Amount
113925  , p_source_3            IN NUMBER
113926 --First Distribution Identifier
113927  , p_source_5            IN NUMBER
113928 --Distribution Type
113929  , p_source_6            IN VARCHAR2
113930 --Currency Code
113931  , p_source_7            IN VARCHAR2
113932 --Currency Conversion Date
113933  , p_source_8            IN DATE
113934 --Currency Conversion Rate
113935  , p_source_9            IN NUMBER
113936 --Currency Conversion Type
113937  , p_source_10            IN VARCHAR2
113938 --Accounted Amount
113939  , p_source_11            IN NUMBER
113940 )
113941 IS
113942 
113943 l_component_type              VARCHAR2(80);
113944 l_component_code              VARCHAR2(30);
113945 l_component_type_code         VARCHAR2(1);
113946 l_component_appl_id           INTEGER;
113947 l_amb_context_code            VARCHAR2(30);
113948 l_entity_code                 VARCHAR2(30);
113949 l_event_class_code            VARCHAR2(30);
113950 l_ae_header_id                NUMBER;
113951 l_event_type_code             VARCHAR2(30);
113952 l_line_definition_code        VARCHAR2(30);
113953 l_line_definition_owner_code  VARCHAR2(1);
113954 --
113955 -- adr variables
113956 l_segment                     VARCHAR2(30);
113957 l_ccid                        NUMBER;
113958 l_adr_transaction_coa_id      NUMBER;
113959 l_adr_accounting_coa_id       NUMBER;
113960 l_adr_flexfield_segment_code  VARCHAR2(30);
113961 l_adr_flex_value_set_id       NUMBER;
113962 l_adr_value_type_code         VARCHAR2(30);
113963 l_adr_value_combination_id    NUMBER;
113964 l_adr_value_segment_code      VARCHAR2(30);
113965 
113966 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
113967 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
113968 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
113969 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
113970 
113971 -- 4262811 Variables ------------------------------------------------------------------------------------------
113972 l_entered_amt_idx             NUMBER;
113976 l_tmp_amt                     NUMBER;
113973 l_accted_amt_idx              NUMBER;
113974 l_acc_rev_flag                VARCHAR2(1);
113975 l_accrual_line_num            NUMBER;
113977 l_acc_rev_natural_side_code   VARCHAR2(1);
113978 
113979 l_num_entries                 NUMBER;
113980 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
113981 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
113982 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
113983 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
113984 l_recog_line_1                NUMBER;
113985 l_recog_line_2                NUMBER;
113986 
113987 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
113988 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
113989 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
113990 
113991 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
113992 
113993 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
113994 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
113995 
113996 ---------------------------------------------------------------------------------------------------------------
113997 
113998 
113999 --
114000 -- bulk performance
114001 --
114002 l_balance_type_code           VARCHAR2(1);
114003 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
114004 l_log_module                  VARCHAR2(240);
114005 
114006 --
114007 -- Upgrade strategy
114008 --
114009 l_actual_upg_option           VARCHAR2(1);
114010 l_enc_upg_option           VARCHAR2(1);
114011 
114012 --
114013 BEGIN
114014 --
114015 IF g_log_enabled THEN
114016       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_238';
114017 END IF;
114018 --
114019 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114020 
114021       trace
114022          (p_msg      => 'BEGIN of AcctLineType_238'
114023          ,p_level    => C_LEVEL_PROCEDURE
114024          ,p_module   => l_log_module);
114025 
114026 END IF;
114027 --
114028 l_component_type             := 'AMB_JLT';
114029 l_component_code             := 'USG';
114030 l_component_type_code        := 'S';
114031 l_component_appl_id          :=  555;
114032 l_amb_context_code           := 'DEFAULT';
114033 l_entity_code                := 'PRODUCTION';
114034 l_event_class_code           := 'BATCH_CLOSE';
114035 l_event_type_code            := 'CLOS';
114036 l_line_definition_owner_code := 'S';
114037 l_line_definition_code       := 'BATCH_CLOSE';
114038 --
114039 l_balance_type_code          := 'A';
114040 l_segment                     := NULL;
114041 l_ccid                        := NULL;
114042 l_adr_transaction_coa_id      := NULL;
114043 l_adr_accounting_coa_id       := NULL;
114044 l_adr_flexfield_segment_code  := NULL;
114045 l_adr_flex_value_set_id       := NULL;
114046 l_adr_value_type_code         := NULL;
114047 l_adr_value_combination_id    := NULL;
114048 l_adr_value_segment_code      := NULL;
114049 
114050 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
114051 l_bflow_class_code           := '';    -- 4219869 Business Flow
114052 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
114053 l_budgetary_control_flag     := 'N';
114054 
114055 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
114056 l_bflow_applied_to_amt       := NULL; -- 5132302
114057 l_entered_amt_idx            := NULL;          -- 4262811
114058 l_accted_amt_idx             := NULL;          -- 4262811
114059 l_acc_rev_flag               := NULL;          -- 4262811
114060 l_accrual_line_num           := NULL;          -- 4262811
114061 l_tmp_amt                    := NULL;          -- 4262811
114062 --
114063  
114064 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
114065     l_balance_type_code <> 'B' THEN
114066 IF NVL(p_source_2,'
114067 ') =  'USG'
114068  THEN 
114069 
114070    --
114071    XLA_AE_LINES_PKG.SetNewLine;
114072 
114073    p_balance_type_code          := l_balance_type_code;
114074    -- set the flag so later we will know whether the gain loss line needs to be created
114075    
114076    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
114077      p_actual_flag :='A';
114078    END IF;
114079 
114080    --
114081    -- bulk performance
114082    --
114083    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
114084                                       p_header_num   => 0); -- 4262811
114085    --
114086    -- set accounting line options
114087    --
114088    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
114089            p_natural_side_code          => 'D'
114090          , p_gain_or_loss_flag          => 'N'
114091          , p_gl_transfer_mode_code      => 'D'
114092          , p_acct_entry_type_code       => 'A'
114093          , p_switch_side_flag           => 'Y'
114094          , p_merge_duplicate_code       => 'W'
114095          );
114096    --
114097    l_acc_rev_natural_side_code := 'C';  -- 4262811
114098    -- 
114099    --
114100    -- set accounting line type info
114101    --
114102    xla_ae_lines_pkg.SetAcctLineType
114103       (p_component_type             => l_component_type
114104       ,p_event_type_code            => l_event_type_code
114105       ,p_line_definition_owner_code => l_line_definition_owner_code
114109       ,p_accounting_line_appl_id    => l_component_appl_id
114106       ,p_line_definition_code       => l_line_definition_code
114107       ,p_accounting_line_code       => l_component_code
114108       ,p_accounting_line_type_code  => l_component_type_code
114110       ,p_amb_context_code           => l_amb_context_code
114111       ,p_entity_code                => l_entity_code
114112       ,p_event_class_code           => l_event_class_code);
114113    --
114114    -- set accounting class
114115    --
114116    xla_ae_lines_pkg.SetAcctClass(
114117            p_accounting_class_code  => 'USG'
114118          , p_ae_header_id           => l_ae_header_id
114119          );
114120 
114121    --
114122    -- set rounding class
114123    --
114124    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
114125                       'USG';
114126 
114127    --
114128    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
114129    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
114130    --
114131    -- bulk performance
114132    --
114133    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
114134 
114135    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
114136       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
114137 
114138    -- 4955764
114139    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114140       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
114141 
114142    -- 4458381 Public Sector Enh
114143    
114144    --
114145    -- set accounting attributes for the line type
114146    --
114147    l_entered_amt_idx := 3;
114148    l_accted_amt_idx  := 8;
114149    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
114150    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
114151    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
114152    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
114153    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
114154    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
114155    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
114156    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
114157    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
114158    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
114159    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
114160    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
114161    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
114162    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
114163    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
114164    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
114165    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
114166 
114167    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
114168    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
114169 
114170    ---------------------------------------------------------------------------------------------------------------
114171    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
114172    ---------------------------------------------------------------------------------------------------------------
114173    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
114174 
114175    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114176    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114177 
114178    IF xla_accounting_cache_pkg.GetValueChar
114179          (p_source_code         => 'LEDGER_CATEGORY_CODE'
114180          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
114181    AND l_bflow_method_code = 'PRIOR_ENTRY'
114182 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
114183    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
114184          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
114185        )
114186    THEN
114187          xla_ae_lines_pkg.BflowUpgEntry
114188            (p_business_method_code    => l_bflow_method_code
114189            ,p_business_class_code     => l_bflow_class_code
114190            ,p_balance_type            => l_balance_type_code);
114191    ELSE
114192       NULL;
114193 -- No business flow processing for business flow method of NONE.
114194    END IF;
114195 
114196    --
114197    -- call analytical criteria
114198    --
114199    
114200    --
114201    -- call description
114202    --
114203    -- No description or it is inherited.
114204    --
114205    -- call ADRs
114206    -- Bug 4922099
114207    --
114208    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114209         (NVL(l_actual_upg_option, 'N') = 'O') OR
114210         (NVL(l_enc_upg_option, 'N') = 'O')
114211       )
114212    THEN
114213    NULL;
114214    --
114215    --
114216    
114217   l_ccid := AcctDerRule_38(
114218            p_application_id           => p_application_id
114219          , p_ae_header_id             => l_ae_header_id 
114220 , p_source_1 => p_source_1
114221 , p_source_2 => p_source_2
114225          , p_side                     => 'NA'
114222          , x_transaction_coa_id       => l_adr_transaction_coa_id
114223          , x_accounting_coa_id        => l_adr_accounting_coa_id
114224          , x_value_type_code          => l_adr_value_type_code
114226    );
114227 
114228    xla_ae_lines_pkg.set_ccid(
114229     p_code_combination_id          => l_ccid
114230   , p_value_type_code              => l_adr_value_type_code
114231   , p_transaction_coa_id           => l_adr_transaction_coa_id
114232   , p_accounting_coa_id            => l_adr_accounting_coa_id
114233   , p_adr_code                     => 'USG'
114234   , p_adr_type_code                => 'S'
114235   , p_component_type               => l_component_type
114236   , p_component_code               => l_component_code
114237   , p_component_type_code          => l_component_type_code
114238   , p_component_appl_id            => l_component_appl_id
114239   , p_amb_context_code             => l_amb_context_code
114240   , p_side                         => 'NA'
114241   );
114242 
114243 
114244    --
114245    --
114246    END IF;
114247    --
114248    -- Bug 4922099
114249    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
114250           (NVL(l_enc_upg_option, 'N') = 'O')
114251         ) AND
114252         (l_bflow_method_code = 'PRIOR_ENTRY')
114253       )
114254    THEN
114255       IF
114256       --
114257       1 = 2
114258       --
114259       THEN
114260       xla_accounting_err_pkg.build_message
114261                                     (p_appli_s_name            => 'XLA'
114262                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114263                                     ,p_token_1                 => 'LINE_NUMBER'
114264                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
114265                                     ,p_token_2                 => 'LINE_TYPE_NAME'
114266                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
114267                                                                              l_component_type
114268                                                                             ,l_component_code
114269                                                                             ,l_component_type_code
114270                                                                             ,l_component_appl_id
114271                                                                             ,l_amb_context_code
114272                                                                             ,l_entity_code
114273                                                                             ,l_event_class_code
114274                                                                            )
114275                                     ,p_token_3                 => 'OWNER'
114276                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
114277                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
114278                                                                           ,p_lookup_code    => l_component_type_code
114279                                                                          )
114280                                     ,p_token_4                 => 'PRODUCT_NAME'
114281                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
114282                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
114283                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
114284                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
114285                                     ,p_ae_header_id            =>  NULL
114286                                        );
114287 
114288         IF (C_LEVEL_ERROR>= g_log_level) THEN
114289                  trace
114290                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114291                       ,p_level    => C_LEVEL_ERROR
114292                       ,p_module   => l_log_module);
114293         END IF;
114294       END IF;
114295    END IF;
114296    --
114297    --
114298    ------------------------------------------------------------------------------------------------
114299    -- 4219869 Business Flow
114300    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
114301    -- Prior Entry.  Currently, the following code is always generated.
114302    ------------------------------------------------------------------------------------------------
114303    XLA_AE_LINES_PKG.ValidateCurrentLine;
114304 
114305    ------------------------------------------------------------------------------------
114306    -- 4219869 Business Flow
114307    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
114308    ------------------------------------------------------------------------------------
114309    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114310 
114311    ----------------------------------------------------------------------------------
114312    -- 4219869 Business Flow
114313    -- Update journal entry status -- Need to generate this within IF <condition>
114314    ----------------------------------------------------------------------------------
114315    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114316          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
114320    -------------------------------------------------------------------------------------------
114317          ,p_balance_type_code => l_balance_type_code
114318          );
114319 
114321    -- 4262811 - Generate the Accrual Reversal lines
114322    -------------------------------------------------------------------------------------------
114323    BEGIN
114324       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
114325                               (g_array_event(p_event_id).array_value_num('header_index'));
114326       IF l_acc_rev_flag IS NULL THEN
114327          l_acc_rev_flag := 'N';
114328       END IF;
114329    EXCEPTION
114330       WHEN OTHERS THEN
114331          l_acc_rev_flag := 'N';
114332    END;
114333    --
114334    IF (l_acc_rev_flag = 'Y') THEN
114335 
114336        -- 4645092  ------------------------------------------------------------------------------
114337        -- To allow MPA report to determine if it should generate report process
114338        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
114339        ------------------------------------------------------------------------------------------
114340 
114341        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
114342        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
114343    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
114344    -- call ADRs
114345    -- Bug 4922099
114346    --
114347    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114348         (NVL(l_actual_upg_option, 'N') = 'O') OR
114349         (NVL(l_enc_upg_option, 'N') = 'O')
114350       )
114351    THEN
114352    NULL;
114353    --
114354    --
114355    
114356   l_ccid := AcctDerRule_38(
114357            p_application_id           => p_application_id
114358          , p_ae_header_id             => l_ae_header_id 
114359 , p_source_1 => p_source_1
114360 , p_source_2 => p_source_2
114361          , x_transaction_coa_id       => l_adr_transaction_coa_id
114362          , x_accounting_coa_id        => l_adr_accounting_coa_id
114363          , x_value_type_code          => l_adr_value_type_code
114364          , p_side                     => 'NA'
114365    );
114366 
114367    xla_ae_lines_pkg.set_ccid(
114368     p_code_combination_id          => l_ccid
114369   , p_value_type_code              => l_adr_value_type_code
114370   , p_transaction_coa_id           => l_adr_transaction_coa_id
114371   , p_accounting_coa_id            => l_adr_accounting_coa_id
114372   , p_adr_code                     => 'USG'
114373   , p_adr_type_code                => 'S'
114374   , p_component_type               => l_component_type
114375   , p_component_code               => l_component_code
114376   , p_component_type_code          => l_component_type_code
114377   , p_component_appl_id            => l_component_appl_id
114378   , p_amb_context_code             => l_amb_context_code
114379   , p_side                         => 'NA'
114380   );
114381 
114382 
114383    --
114384    --
114385    END IF;
114386 
114387        --
114388        -- Update the line information that should be overwritten
114389        --
114390        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
114391                                          p_header_num   => 1);
114392        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
114393 
114394        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
114395 
114396        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
114397           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
114398        END IF;
114399 
114400       --
114401       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
114402       --
114403       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
114404           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
114405       ELSE
114406           ---------------------------------------------------------------------------------------------------
114407           -- 4262811a Switch Sign
114408           ---------------------------------------------------------------------------------------------------
114409           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
114410           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114411                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114412           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114413                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114414           -- 5132302
114415           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
114416                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114417 
114418       END IF;
114419 
114420       -- 4955764
114421       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114422       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
114423 
114424 
114425       XLA_AE_LINES_PKG.ValidateCurrentLine;
114426       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114427 
114428       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114432    END IF;
114429                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
114430                ,p_balance_type_code => l_balance_type_code);
114431 
114433 
114434    -----------------------------------------------------------------------------------------
114435    -- 4262811 Multiperiod Accounting
114436    -----------------------------------------------------------------------------------------
114437      -- No MPA option is assigned.
114438 
114439 
114440 END IF;
114441 END IF;
114442 --
114443 
114444 --
114445 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114446    trace
114447       (p_msg      => 'END of AcctLineType_238'
114448       ,p_level    => C_LEVEL_PROCEDURE
114449       ,p_module   => l_log_module);
114450 END IF;
114451 --
114452 EXCEPTION
114453   WHEN xla_exceptions_pkg.application_exception THEN
114454       RAISE;
114455   WHEN OTHERS THEN
114456        xla_exceptions_pkg.raise_message
114457            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_238');
114458 END AcctLineType_238;
114459 --
114460 
114461 ---------------------------------------
114462 --
114463 -- PRIVATE FUNCTION
114464 --         AcctLineType_239
114465 --
114466 ---------------------------------------
114467 PROCEDURE AcctLineType_239 (
114468   p_application_id        IN NUMBER
114469  ,p_event_id              IN NUMBER
114470  ,p_calculate_acctd_flag  IN VARCHAR2
114471  ,p_calculate_g_l_flag    IN VARCHAR2
114472  ,p_actual_flag           IN OUT VARCHAR2
114473  ,p_balance_type_code     OUT VARCHAR2
114474  ,p_gain_or_loss_ref      OUT VARCHAR2
114475  
114476 --Transaction Account
114477  , p_source_1            IN NUMBER
114478 --Journal Line Type
114479  , p_source_2            IN VARCHAR2
114480 --Entered Amount
114481  , p_source_3            IN NUMBER
114482 --First Distribution Identifier
114483  , p_source_5            IN NUMBER
114484 --Distribution Type
114485  , p_source_6            IN VARCHAR2
114486 --Currency Code
114487  , p_source_7            IN VARCHAR2
114488 --Currency Conversion Date
114489  , p_source_8            IN DATE
114490 --Currency Conversion Rate
114491  , p_source_9            IN NUMBER
114492 --Currency Conversion Type
114493  , p_source_10            IN VARCHAR2
114494 --Accounted Amount
114495  , p_source_11            IN NUMBER
114496 )
114497 IS
114498 
114499 l_component_type              VARCHAR2(80);
114500 l_component_code              VARCHAR2(30);
114501 l_component_type_code         VARCHAR2(1);
114502 l_component_appl_id           INTEGER;
114503 l_amb_context_code            VARCHAR2(30);
114504 l_entity_code                 VARCHAR2(30);
114505 l_event_class_code            VARCHAR2(30);
114506 l_ae_header_id                NUMBER;
114507 l_event_type_code             VARCHAR2(30);
114508 l_line_definition_code        VARCHAR2(30);
114509 l_line_definition_owner_code  VARCHAR2(1);
114510 --
114511 -- adr variables
114512 l_segment                     VARCHAR2(30);
114513 l_ccid                        NUMBER;
114514 l_adr_transaction_coa_id      NUMBER;
114515 l_adr_accounting_coa_id       NUMBER;
114516 l_adr_flexfield_segment_code  VARCHAR2(30);
114517 l_adr_flex_value_set_id       NUMBER;
114518 l_adr_value_type_code         VARCHAR2(30);
114519 l_adr_value_combination_id    NUMBER;
114520 l_adr_value_segment_code      VARCHAR2(30);
114521 
114522 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
114523 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
114524 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
114525 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
114526 
114527 -- 4262811 Variables ------------------------------------------------------------------------------------------
114528 l_entered_amt_idx             NUMBER;
114529 l_accted_amt_idx              NUMBER;
114530 l_acc_rev_flag                VARCHAR2(1);
114531 l_accrual_line_num            NUMBER;
114532 l_tmp_amt                     NUMBER;
114533 l_acc_rev_natural_side_code   VARCHAR2(1);
114534 
114535 l_num_entries                 NUMBER;
114536 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
114537 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
114538 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
114539 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
114540 l_recog_line_1                NUMBER;
114541 l_recog_line_2                NUMBER;
114542 
114543 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
114544 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
114545 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
114546 
114547 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
114548 
114549 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
114550 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
114551 
114552 ---------------------------------------------------------------------------------------------------------------
114553 
114554 
114555 --
114556 -- bulk performance
114557 --
114558 l_balance_type_code           VARCHAR2(1);
114559 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
114560 l_log_module                  VARCHAR2(240);
114561 
114562 --
114563 -- Upgrade strategy
114564 --
114568 --
114565 l_actual_upg_option           VARCHAR2(1);
114566 l_enc_upg_option           VARCHAR2(1);
114567 
114569 BEGIN
114570 --
114571 IF g_log_enabled THEN
114572       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_239';
114573 END IF;
114574 --
114575 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114576 
114577       trace
114578          (p_msg      => 'BEGIN of AcctLineType_239'
114579          ,p_level    => C_LEVEL_PROCEDURE
114580          ,p_module   => l_log_module);
114581 
114582 END IF;
114583 --
114584 l_component_type             := 'AMB_JLT';
114585 l_component_code             := 'WIP';
114586 l_component_type_code        := 'S';
114587 l_component_appl_id          :=  555;
114588 l_amb_context_code           := 'DEFAULT';
114589 l_entity_code                := 'PRODUCTION';
114590 l_event_class_code           := 'BATCH_MATERIAL';
114591 l_event_type_code            := 'CERT';
114592 l_line_definition_owner_code := 'S';
114593 l_line_definition_code       := 'BATCH_COMPLETION';
114594 --
114595 l_balance_type_code          := 'A';
114596 l_segment                     := NULL;
114597 l_ccid                        := NULL;
114598 l_adr_transaction_coa_id      := NULL;
114599 l_adr_accounting_coa_id       := NULL;
114600 l_adr_flexfield_segment_code  := NULL;
114601 l_adr_flex_value_set_id       := NULL;
114602 l_adr_value_type_code         := NULL;
114603 l_adr_value_combination_id    := NULL;
114604 l_adr_value_segment_code      := NULL;
114605 
114606 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
114607 l_bflow_class_code           := '';    -- 4219869 Business Flow
114608 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
114609 l_budgetary_control_flag     := 'N';
114610 
114611 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
114612 l_bflow_applied_to_amt       := NULL; -- 5132302
114613 l_entered_amt_idx            := NULL;          -- 4262811
114614 l_accted_amt_idx             := NULL;          -- 4262811
114615 l_acc_rev_flag               := NULL;          -- 4262811
114616 l_accrual_line_num           := NULL;          -- 4262811
114617 l_tmp_amt                    := NULL;          -- 4262811
114618 --
114619  
114620 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
114621     l_balance_type_code <> 'B' THEN
114622 IF NVL(p_source_2,'
114623 ') =  'WIP'
114624  THEN 
114625 
114626    --
114627    XLA_AE_LINES_PKG.SetNewLine;
114628 
114629    p_balance_type_code          := l_balance_type_code;
114630    -- set the flag so later we will know whether the gain loss line needs to be created
114631    
114632    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
114633      p_actual_flag :='A';
114634    END IF;
114635 
114636    --
114637    -- bulk performance
114638    --
114639    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
114640                                       p_header_num   => 0); -- 4262811
114641    --
114642    -- set accounting line options
114643    --
114644    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
114645            p_natural_side_code          => 'D'
114646          , p_gain_or_loss_flag          => 'N'
114647          , p_gl_transfer_mode_code      => 'D'
114648          , p_acct_entry_type_code       => 'A'
114649          , p_switch_side_flag           => 'Y'
114650          , p_merge_duplicate_code       => 'W'
114651          );
114652    --
114653    l_acc_rev_natural_side_code := 'C';  -- 4262811
114654    -- 
114655    --
114656    -- set accounting line type info
114657    --
114658    xla_ae_lines_pkg.SetAcctLineType
114659       (p_component_type             => l_component_type
114660       ,p_event_type_code            => l_event_type_code
114661       ,p_line_definition_owner_code => l_line_definition_owner_code
114662       ,p_line_definition_code       => l_line_definition_code
114663       ,p_accounting_line_code       => l_component_code
114664       ,p_accounting_line_type_code  => l_component_type_code
114665       ,p_accounting_line_appl_id    => l_component_appl_id
114666       ,p_amb_context_code           => l_amb_context_code
114667       ,p_entity_code                => l_entity_code
114668       ,p_event_class_code           => l_event_class_code);
114669    --
114670    -- set accounting class
114671    --
114672    xla_ae_lines_pkg.SetAcctClass(
114673            p_accounting_class_code  => 'WIP_VALUATION'
114674          , p_ae_header_id           => l_ae_header_id
114675          );
114676 
114677    --
114678    -- set rounding class
114679    --
114680    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
114681                       'WIP_VALUATION';
114682 
114683    --
114684    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
114685    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
114686    --
114687    -- bulk performance
114688    --
114689    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
114690 
114691    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
114692       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
114693 
114694    -- 4955764
114695    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114699    
114696       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
114697 
114698    -- 4458381 Public Sector Enh
114700    --
114701    -- set accounting attributes for the line type
114702    --
114703    l_entered_amt_idx := 3;
114704    l_accted_amt_idx  := 8;
114705    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
114706    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
114707    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
114708    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
114709    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
114710    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
114711    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
114712    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
114713    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
114714    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
114715    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
114716    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
114717    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
114718    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
114719    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
114720    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
114721    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
114722 
114723    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
114724    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
114725 
114726    ---------------------------------------------------------------------------------------------------------------
114727    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
114728    ---------------------------------------------------------------------------------------------------------------
114729    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
114730 
114731    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114732    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114733 
114734    IF xla_accounting_cache_pkg.GetValueChar
114735          (p_source_code         => 'LEDGER_CATEGORY_CODE'
114736          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
114737    AND l_bflow_method_code = 'PRIOR_ENTRY'
114738 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
114739    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
114740          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
114741        )
114742    THEN
114743          xla_ae_lines_pkg.BflowUpgEntry
114744            (p_business_method_code    => l_bflow_method_code
114745            ,p_business_class_code     => l_bflow_class_code
114746            ,p_balance_type            => l_balance_type_code);
114747    ELSE
114748       NULL;
114749 -- No business flow processing for business flow method of NONE.
114750    END IF;
114751 
114752    --
114753    -- call analytical criteria
114754    --
114755    
114756    --
114757    -- call description
114758    --
114759    -- No description or it is inherited.
114760    --
114761    -- call ADRs
114762    -- Bug 4922099
114763    --
114764    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114765         (NVL(l_actual_upg_option, 'N') = 'O') OR
114766         (NVL(l_enc_upg_option, 'N') = 'O')
114767       )
114768    THEN
114769    NULL;
114770    --
114771    --
114772    
114773   l_ccid := AcctDerRule_39(
114774            p_application_id           => p_application_id
114775          , p_ae_header_id             => l_ae_header_id 
114776 , p_source_1 => p_source_1
114777 , p_source_2 => p_source_2
114778          , x_transaction_coa_id       => l_adr_transaction_coa_id
114779          , x_accounting_coa_id        => l_adr_accounting_coa_id
114780          , x_value_type_code          => l_adr_value_type_code
114781          , p_side                     => 'NA'
114782    );
114783 
114784    xla_ae_lines_pkg.set_ccid(
114785     p_code_combination_id          => l_ccid
114786   , p_value_type_code              => l_adr_value_type_code
114787   , p_transaction_coa_id           => l_adr_transaction_coa_id
114788   , p_accounting_coa_id            => l_adr_accounting_coa_id
114789   , p_adr_code                     => 'WIP'
114790   , p_adr_type_code                => 'S'
114791   , p_component_type               => l_component_type
114792   , p_component_code               => l_component_code
114793   , p_component_type_code          => l_component_type_code
114794   , p_component_appl_id            => l_component_appl_id
114795   , p_amb_context_code             => l_amb_context_code
114796   , p_side                         => 'NA'
114797   );
114798 
114799 
114800    --
114801    --
114802    END IF;
114803    --
114804    -- Bug 4922099
114805    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
114806           (NVL(l_enc_upg_option, 'N') = 'O')
114807         ) AND
114808         (l_bflow_method_code = 'PRIOR_ENTRY')
114809       )
114810    THEN
114811       IF
114812       --
114813       1 = 2
114814       --
114815       THEN
114816       xla_accounting_err_pkg.build_message
114820                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
114817                                     (p_appli_s_name            => 'XLA'
114818                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114819                                     ,p_token_1                 => 'LINE_NUMBER'
114821                                     ,p_token_2                 => 'LINE_TYPE_NAME'
114822                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
114823                                                                              l_component_type
114824                                                                             ,l_component_code
114825                                                                             ,l_component_type_code
114826                                                                             ,l_component_appl_id
114827                                                                             ,l_amb_context_code
114828                                                                             ,l_entity_code
114829                                                                             ,l_event_class_code
114830                                                                            )
114831                                     ,p_token_3                 => 'OWNER'
114832                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
114833                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
114834                                                                           ,p_lookup_code    => l_component_type_code
114835                                                                          )
114836                                     ,p_token_4                 => 'PRODUCT_NAME'
114837                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
114838                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
114839                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
114840                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
114841                                     ,p_ae_header_id            =>  NULL
114842                                        );
114843 
114844         IF (C_LEVEL_ERROR>= g_log_level) THEN
114845                  trace
114846                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114847                       ,p_level    => C_LEVEL_ERROR
114848                       ,p_module   => l_log_module);
114849         END IF;
114850       END IF;
114851    END IF;
114852    --
114853    --
114854    ------------------------------------------------------------------------------------------------
114855    -- 4219869 Business Flow
114856    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
114857    -- Prior Entry.  Currently, the following code is always generated.
114858    ------------------------------------------------------------------------------------------------
114859    XLA_AE_LINES_PKG.ValidateCurrentLine;
114860 
114861    ------------------------------------------------------------------------------------
114862    -- 4219869 Business Flow
114863    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
114864    ------------------------------------------------------------------------------------
114865    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114866 
114867    ----------------------------------------------------------------------------------
114868    -- 4219869 Business Flow
114869    -- Update journal entry status -- Need to generate this within IF <condition>
114870    ----------------------------------------------------------------------------------
114871    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114872          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
114873          ,p_balance_type_code => l_balance_type_code
114874          );
114875 
114876    -------------------------------------------------------------------------------------------
114877    -- 4262811 - Generate the Accrual Reversal lines
114878    -------------------------------------------------------------------------------------------
114879    BEGIN
114880       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
114881                               (g_array_event(p_event_id).array_value_num('header_index'));
114882       IF l_acc_rev_flag IS NULL THEN
114883          l_acc_rev_flag := 'N';
114884       END IF;
114885    EXCEPTION
114886       WHEN OTHERS THEN
114887          l_acc_rev_flag := 'N';
114888    END;
114889    --
114890    IF (l_acc_rev_flag = 'Y') THEN
114891 
114892        -- 4645092  ------------------------------------------------------------------------------
114893        -- To allow MPA report to determine if it should generate report process
114894        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
114895        ------------------------------------------------------------------------------------------
114896 
114897        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
114898        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
114899    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
114900    -- call ADRs
114901    -- Bug 4922099
114902    --
114903    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114904         (NVL(l_actual_upg_option, 'N') = 'O') OR
114908    NULL;
114905         (NVL(l_enc_upg_option, 'N') = 'O')
114906       )
114907    THEN
114909    --
114910    --
114911    
114912   l_ccid := AcctDerRule_39(
114913            p_application_id           => p_application_id
114914          , p_ae_header_id             => l_ae_header_id 
114915 , p_source_1 => p_source_1
114916 , p_source_2 => p_source_2
114917          , x_transaction_coa_id       => l_adr_transaction_coa_id
114918          , x_accounting_coa_id        => l_adr_accounting_coa_id
114919          , x_value_type_code          => l_adr_value_type_code
114920          , p_side                     => 'NA'
114921    );
114922 
114923    xla_ae_lines_pkg.set_ccid(
114924     p_code_combination_id          => l_ccid
114925   , p_value_type_code              => l_adr_value_type_code
114926   , p_transaction_coa_id           => l_adr_transaction_coa_id
114927   , p_accounting_coa_id            => l_adr_accounting_coa_id
114928   , p_adr_code                     => 'WIP'
114929   , p_adr_type_code                => 'S'
114930   , p_component_type               => l_component_type
114931   , p_component_code               => l_component_code
114932   , p_component_type_code          => l_component_type_code
114933   , p_component_appl_id            => l_component_appl_id
114934   , p_amb_context_code             => l_amb_context_code
114935   , p_side                         => 'NA'
114936   );
114937 
114938 
114939    --
114940    --
114941    END IF;
114942 
114943        --
114944        -- Update the line information that should be overwritten
114945        --
114946        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
114947                                          p_header_num   => 1);
114948        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
114949 
114950        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
114951 
114952        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
114953           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
114954        END IF;
114955 
114956       --
114957       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
114958       --
114959       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
114960           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
114961       ELSE
114962           ---------------------------------------------------------------------------------------------------
114963           -- 4262811a Switch Sign
114964           ---------------------------------------------------------------------------------------------------
114965           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
114966           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114967                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114968           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114969                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114970           -- 5132302
114971           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
114972                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114973 
114974       END IF;
114975 
114976       -- 4955764
114977       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114978       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
114979 
114980 
114981       XLA_AE_LINES_PKG.ValidateCurrentLine;
114982       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114983 
114984       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114985                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
114986                ,p_balance_type_code => l_balance_type_code);
114987 
114988    END IF;
114989 
114990    -----------------------------------------------------------------------------------------
114991    -- 4262811 Multiperiod Accounting
114992    -----------------------------------------------------------------------------------------
114993      -- No MPA option is assigned.
114994 
114995 
114996 END IF;
114997 END IF;
114998 --
114999 
115000 --
115001 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115002    trace
115003       (p_msg      => 'END of AcctLineType_239'
115004       ,p_level    => C_LEVEL_PROCEDURE
115005       ,p_module   => l_log_module);
115006 END IF;
115007 --
115008 EXCEPTION
115009   WHEN xla_exceptions_pkg.application_exception THEN
115010       RAISE;
115011   WHEN OTHERS THEN
115012        xla_exceptions_pkg.raise_message
115013            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_239');
115014 END AcctLineType_239;
115015 --
115016 
115017 ---------------------------------------
115018 --
115019 -- PRIVATE FUNCTION
115020 --         AcctLineType_240
115021 --
115022 ---------------------------------------
115023 PROCEDURE AcctLineType_240 (
115024   p_application_id        IN NUMBER
115025  ,p_event_id              IN NUMBER
115026  ,p_calculate_acctd_flag  IN VARCHAR2
115027  ,p_calculate_g_l_flag    IN VARCHAR2
115028  ,p_actual_flag           IN OUT VARCHAR2
115032 --Transaction Account
115029  ,p_balance_type_code     OUT VARCHAR2
115030  ,p_gain_or_loss_ref      OUT VARCHAR2
115031  
115033  , p_source_1            IN NUMBER
115034 --Journal Line Type
115035  , p_source_2            IN VARCHAR2
115036 --Entered Amount
115037  , p_source_3            IN NUMBER
115038 --First Distribution Identifier
115039  , p_source_5            IN NUMBER
115040 --Distribution Type
115041  , p_source_6            IN VARCHAR2
115042 --Currency Code
115043  , p_source_7            IN VARCHAR2
115044 --Currency Conversion Date
115045  , p_source_8            IN DATE
115046 --Currency Conversion Rate
115047  , p_source_9            IN NUMBER
115048 --Currency Conversion Type
115049  , p_source_10            IN VARCHAR2
115050 --Accounted Amount
115051  , p_source_11            IN NUMBER
115052 )
115053 IS
115054 
115055 l_component_type              VARCHAR2(80);
115056 l_component_code              VARCHAR2(30);
115057 l_component_type_code         VARCHAR2(1);
115058 l_component_appl_id           INTEGER;
115059 l_amb_context_code            VARCHAR2(30);
115060 l_entity_code                 VARCHAR2(30);
115061 l_event_class_code            VARCHAR2(30);
115062 l_ae_header_id                NUMBER;
115063 l_event_type_code             VARCHAR2(30);
115064 l_line_definition_code        VARCHAR2(30);
115065 l_line_definition_owner_code  VARCHAR2(1);
115066 --
115067 -- adr variables
115068 l_segment                     VARCHAR2(30);
115069 l_ccid                        NUMBER;
115070 l_adr_transaction_coa_id      NUMBER;
115071 l_adr_accounting_coa_id       NUMBER;
115072 l_adr_flexfield_segment_code  VARCHAR2(30);
115073 l_adr_flex_value_set_id       NUMBER;
115074 l_adr_value_type_code         VARCHAR2(30);
115075 l_adr_value_combination_id    NUMBER;
115076 l_adr_value_segment_code      VARCHAR2(30);
115077 
115078 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
115079 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
115080 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
115081 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
115082 
115083 -- 4262811 Variables ------------------------------------------------------------------------------------------
115084 l_entered_amt_idx             NUMBER;
115085 l_accted_amt_idx              NUMBER;
115086 l_acc_rev_flag                VARCHAR2(1);
115087 l_accrual_line_num            NUMBER;
115088 l_tmp_amt                     NUMBER;
115089 l_acc_rev_natural_side_code   VARCHAR2(1);
115090 
115091 l_num_entries                 NUMBER;
115092 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
115093 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
115094 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
115095 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
115096 l_recog_line_1                NUMBER;
115097 l_recog_line_2                NUMBER;
115098 
115099 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
115100 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
115101 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
115102 
115103 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
115104 
115105 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
115106 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
115107 
115108 ---------------------------------------------------------------------------------------------------------------
115109 
115110 
115111 --
115112 -- bulk performance
115113 --
115114 l_balance_type_code           VARCHAR2(1);
115115 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
115116 l_log_module                  VARCHAR2(240);
115117 
115118 --
115119 -- Upgrade strategy
115120 --
115121 l_actual_upg_option           VARCHAR2(1);
115122 l_enc_upg_option           VARCHAR2(1);
115123 
115124 --
115125 BEGIN
115126 --
115127 IF g_log_enabled THEN
115128       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_240';
115129 END IF;
115130 --
115131 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115132 
115133       trace
115134          (p_msg      => 'BEGIN of AcctLineType_240'
115135          ,p_level    => C_LEVEL_PROCEDURE
115136          ,p_module   => l_log_module);
115137 
115138 END IF;
115139 --
115140 l_component_type             := 'AMB_JLT';
115141 l_component_code             := 'WIP';
115142 l_component_type_code        := 'S';
115143 l_component_appl_id          :=  555;
115144 l_amb_context_code           := 'DEFAULT';
115145 l_entity_code                := 'PRODUCTION';
115146 l_event_class_code           := 'BATCH_RESOURCE';
115147 l_event_type_code            := 'STEP';
115148 l_line_definition_owner_code := 'S';
115149 l_line_definition_code       := 'BATCH_STEP';
115150 --
115151 l_balance_type_code          := 'A';
115152 l_segment                     := NULL;
115153 l_ccid                        := NULL;
115154 l_adr_transaction_coa_id      := NULL;
115155 l_adr_accounting_coa_id       := NULL;
115156 l_adr_flexfield_segment_code  := NULL;
115157 l_adr_flex_value_set_id       := NULL;
115158 l_adr_value_type_code         := NULL;
115159 l_adr_value_combination_id    := NULL;
115160 l_adr_value_segment_code      := NULL;
115161 
115162 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
115166 
115163 l_bflow_class_code           := '';    -- 4219869 Business Flow
115164 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
115165 l_budgetary_control_flag     := 'N';
115167 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
115168 l_bflow_applied_to_amt       := NULL; -- 5132302
115169 l_entered_amt_idx            := NULL;          -- 4262811
115170 l_accted_amt_idx             := NULL;          -- 4262811
115171 l_acc_rev_flag               := NULL;          -- 4262811
115172 l_accrual_line_num           := NULL;          -- 4262811
115173 l_tmp_amt                    := NULL;          -- 4262811
115174 --
115175  
115176 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
115177     l_balance_type_code <> 'B' THEN
115178 IF NVL(p_source_2,'
115179 ') =  'WIP'
115180  THEN 
115181 
115182    --
115183    XLA_AE_LINES_PKG.SetNewLine;
115184 
115185    p_balance_type_code          := l_balance_type_code;
115186    -- set the flag so later we will know whether the gain loss line needs to be created
115187    
115188    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
115189      p_actual_flag :='A';
115190    END IF;
115191 
115192    --
115193    -- bulk performance
115194    --
115195    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
115196                                       p_header_num   => 0); -- 4262811
115197    --
115198    -- set accounting line options
115199    --
115200    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
115201            p_natural_side_code          => 'D'
115202          , p_gain_or_loss_flag          => 'N'
115203          , p_gl_transfer_mode_code      => 'D'
115204          , p_acct_entry_type_code       => 'A'
115205          , p_switch_side_flag           => 'Y'
115206          , p_merge_duplicate_code       => 'W'
115207          );
115208    --
115209    l_acc_rev_natural_side_code := 'C';  -- 4262811
115210    -- 
115211    --
115212    -- set accounting line type info
115213    --
115214    xla_ae_lines_pkg.SetAcctLineType
115215       (p_component_type             => l_component_type
115216       ,p_event_type_code            => l_event_type_code
115217       ,p_line_definition_owner_code => l_line_definition_owner_code
115218       ,p_line_definition_code       => l_line_definition_code
115219       ,p_accounting_line_code       => l_component_code
115220       ,p_accounting_line_type_code  => l_component_type_code
115221       ,p_accounting_line_appl_id    => l_component_appl_id
115222       ,p_amb_context_code           => l_amb_context_code
115223       ,p_entity_code                => l_entity_code
115224       ,p_event_class_code           => l_event_class_code);
115225    --
115226    -- set accounting class
115227    --
115228    xla_ae_lines_pkg.SetAcctClass(
115229            p_accounting_class_code  => 'WIP_VALUATION'
115230          , p_ae_header_id           => l_ae_header_id
115231          );
115232 
115233    --
115234    -- set rounding class
115235    --
115236    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
115237                       'WIP_VALUATION';
115238 
115239    --
115240    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
115241    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
115242    --
115243    -- bulk performance
115244    --
115245    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
115246 
115247    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
115248       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
115249 
115250    -- 4955764
115251    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115252       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
115253 
115254    -- 4458381 Public Sector Enh
115255    
115256    --
115257    -- set accounting attributes for the line type
115258    --
115259    l_entered_amt_idx := 3;
115260    l_accted_amt_idx  := 8;
115261    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
115262    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
115263    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
115264    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
115265    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
115266    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
115267    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
115268    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
115269    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
115270    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
115271    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
115272    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
115273    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
115274    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
115275    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
115276    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
115277    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
115278 
115279    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
115280    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
115281 
115285    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
115282    ---------------------------------------------------------------------------------------------------------------
115283    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
115284    ---------------------------------------------------------------------------------------------------------------
115286 
115287    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115288    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115289 
115290    IF xla_accounting_cache_pkg.GetValueChar
115291          (p_source_code         => 'LEDGER_CATEGORY_CODE'
115292          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
115293    AND l_bflow_method_code = 'PRIOR_ENTRY'
115294 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
115295    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
115296          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
115297        )
115298    THEN
115299          xla_ae_lines_pkg.BflowUpgEntry
115300            (p_business_method_code    => l_bflow_method_code
115301            ,p_business_class_code     => l_bflow_class_code
115302            ,p_balance_type            => l_balance_type_code);
115303    ELSE
115304       NULL;
115305 -- No business flow processing for business flow method of NONE.
115306    END IF;
115307 
115308    --
115309    -- call analytical criteria
115310    --
115311    
115312    --
115313    -- call description
115314    --
115315    -- No description or it is inherited.
115316    --
115317    -- call ADRs
115318    -- Bug 4922099
115319    --
115320    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115321         (NVL(l_actual_upg_option, 'N') = 'O') OR
115322         (NVL(l_enc_upg_option, 'N') = 'O')
115323       )
115324    THEN
115325    NULL;
115326    --
115327    --
115328    
115329   l_ccid := AcctDerRule_39(
115330            p_application_id           => p_application_id
115331          , p_ae_header_id             => l_ae_header_id 
115332 , p_source_1 => p_source_1
115333 , p_source_2 => p_source_2
115334          , x_transaction_coa_id       => l_adr_transaction_coa_id
115335          , x_accounting_coa_id        => l_adr_accounting_coa_id
115336          , x_value_type_code          => l_adr_value_type_code
115337          , p_side                     => 'NA'
115338    );
115339 
115340    xla_ae_lines_pkg.set_ccid(
115341     p_code_combination_id          => l_ccid
115342   , p_value_type_code              => l_adr_value_type_code
115343   , p_transaction_coa_id           => l_adr_transaction_coa_id
115344   , p_accounting_coa_id            => l_adr_accounting_coa_id
115345   , p_adr_code                     => 'WIP'
115346   , p_adr_type_code                => 'S'
115347   , p_component_type               => l_component_type
115348   , p_component_code               => l_component_code
115349   , p_component_type_code          => l_component_type_code
115350   , p_component_appl_id            => l_component_appl_id
115351   , p_amb_context_code             => l_amb_context_code
115352   , p_side                         => 'NA'
115353   );
115354 
115355 
115356    --
115357    --
115358    END IF;
115359    --
115360    -- Bug 4922099
115361    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
115362           (NVL(l_enc_upg_option, 'N') = 'O')
115363         ) AND
115364         (l_bflow_method_code = 'PRIOR_ENTRY')
115365       )
115366    THEN
115367       IF
115368       --
115369       1 = 2
115370       --
115371       THEN
115372       xla_accounting_err_pkg.build_message
115373                                     (p_appli_s_name            => 'XLA'
115374                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115375                                     ,p_token_1                 => 'LINE_NUMBER'
115376                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
115377                                     ,p_token_2                 => 'LINE_TYPE_NAME'
115378                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
115379                                                                              l_component_type
115380                                                                             ,l_component_code
115381                                                                             ,l_component_type_code
115382                                                                             ,l_component_appl_id
115383                                                                             ,l_amb_context_code
115384                                                                             ,l_entity_code
115385                                                                             ,l_event_class_code
115386                                                                            )
115387                                     ,p_token_3                 => 'OWNER'
115388                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
115389                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
115390                                                                           ,p_lookup_code    => l_component_type_code
115394                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
115391                                                                          )
115392                                     ,p_token_4                 => 'PRODUCT_NAME'
115393                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
115395                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
115396                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
115397                                     ,p_ae_header_id            =>  NULL
115398                                        );
115399 
115400         IF (C_LEVEL_ERROR>= g_log_level) THEN
115401                  trace
115402                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115403                       ,p_level    => C_LEVEL_ERROR
115404                       ,p_module   => l_log_module);
115405         END IF;
115406       END IF;
115407    END IF;
115408    --
115409    --
115410    ------------------------------------------------------------------------------------------------
115411    -- 4219869 Business Flow
115412    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
115413    -- Prior Entry.  Currently, the following code is always generated.
115414    ------------------------------------------------------------------------------------------------
115415    XLA_AE_LINES_PKG.ValidateCurrentLine;
115416 
115417    ------------------------------------------------------------------------------------
115418    -- 4219869 Business Flow
115419    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
115420    ------------------------------------------------------------------------------------
115421    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
115422 
115423    ----------------------------------------------------------------------------------
115424    -- 4219869 Business Flow
115425    -- Update journal entry status -- Need to generate this within IF <condition>
115426    ----------------------------------------------------------------------------------
115427    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
115428          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
115429          ,p_balance_type_code => l_balance_type_code
115430          );
115431 
115432    -------------------------------------------------------------------------------------------
115433    -- 4262811 - Generate the Accrual Reversal lines
115434    -------------------------------------------------------------------------------------------
115435    BEGIN
115436       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
115437                               (g_array_event(p_event_id).array_value_num('header_index'));
115438       IF l_acc_rev_flag IS NULL THEN
115439          l_acc_rev_flag := 'N';
115440       END IF;
115441    EXCEPTION
115442       WHEN OTHERS THEN
115443          l_acc_rev_flag := 'N';
115444    END;
115445    --
115446    IF (l_acc_rev_flag = 'Y') THEN
115447 
115448        -- 4645092  ------------------------------------------------------------------------------
115449        -- To allow MPA report to determine if it should generate report process
115450        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
115451        ------------------------------------------------------------------------------------------
115452 
115453        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
115454        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
115455    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
115456    -- call ADRs
115457    -- Bug 4922099
115458    --
115459    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115460         (NVL(l_actual_upg_option, 'N') = 'O') OR
115461         (NVL(l_enc_upg_option, 'N') = 'O')
115462       )
115463    THEN
115464    NULL;
115465    --
115466    --
115467    
115468   l_ccid := AcctDerRule_39(
115469            p_application_id           => p_application_id
115470          , p_ae_header_id             => l_ae_header_id 
115471 , p_source_1 => p_source_1
115472 , p_source_2 => p_source_2
115473          , x_transaction_coa_id       => l_adr_transaction_coa_id
115474          , x_accounting_coa_id        => l_adr_accounting_coa_id
115475          , x_value_type_code          => l_adr_value_type_code
115476          , p_side                     => 'NA'
115477    );
115478 
115479    xla_ae_lines_pkg.set_ccid(
115480     p_code_combination_id          => l_ccid
115481   , p_value_type_code              => l_adr_value_type_code
115482   , p_transaction_coa_id           => l_adr_transaction_coa_id
115483   , p_accounting_coa_id            => l_adr_accounting_coa_id
115484   , p_adr_code                     => 'WIP'
115485   , p_adr_type_code                => 'S'
115486   , p_component_type               => l_component_type
115487   , p_component_code               => l_component_code
115488   , p_component_type_code          => l_component_type_code
115489   , p_component_appl_id            => l_component_appl_id
115490   , p_amb_context_code             => l_amb_context_code
115491   , p_side                         => 'NA'
115492   );
115493 
115494 
115495    --
115496    --
115497    END IF;
115498 
115499        --
115500        -- Update the line information that should be overwritten
115501        --
115502        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
115503                                          p_header_num   => 1);
115507 
115504        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
115505 
115506        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
115508        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
115509           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
115510        END IF;
115511 
115512       --
115513       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
115514       --
115515       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
115516           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
115517       ELSE
115518           ---------------------------------------------------------------------------------------------------
115519           -- 4262811a Switch Sign
115520           ---------------------------------------------------------------------------------------------------
115521           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
115522           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
115523                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115524           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
115525                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115526           -- 5132302
115527           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
115528                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115529 
115530       END IF;
115531 
115532       -- 4955764
115533       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115534       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
115535 
115536 
115537       XLA_AE_LINES_PKG.ValidateCurrentLine;
115538       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
115539 
115540       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
115541                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
115542                ,p_balance_type_code => l_balance_type_code);
115543 
115544    END IF;
115545 
115546    -----------------------------------------------------------------------------------------
115547    -- 4262811 Multiperiod Accounting
115548    -----------------------------------------------------------------------------------------
115549      -- No MPA option is assigned.
115550 
115551 
115552 END IF;
115553 END IF;
115554 --
115555 
115556 --
115557 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115558    trace
115559       (p_msg      => 'END of AcctLineType_240'
115560       ,p_level    => C_LEVEL_PROCEDURE
115561       ,p_module   => l_log_module);
115562 END IF;
115563 --
115564 EXCEPTION
115565   WHEN xla_exceptions_pkg.application_exception THEN
115566       RAISE;
115567   WHEN OTHERS THEN
115568        xla_exceptions_pkg.raise_message
115569            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_240');
115570 END AcctLineType_240;
115571 --
115572 
115573 ---------------------------------------
115574 --
115575 -- PRIVATE FUNCTION
115576 --         AcctLineType_241
115577 --
115578 ---------------------------------------
115579 PROCEDURE AcctLineType_241 (
115580   p_application_id        IN NUMBER
115581  ,p_event_id              IN NUMBER
115582  ,p_calculate_acctd_flag  IN VARCHAR2
115583  ,p_calculate_g_l_flag    IN VARCHAR2
115584  ,p_actual_flag           IN OUT VARCHAR2
115585  ,p_balance_type_code     OUT VARCHAR2
115586  ,p_gain_or_loss_ref      OUT VARCHAR2
115587  
115588 --Transaction Account
115589  , p_source_1            IN NUMBER
115590 --Journal Line Type
115591  , p_source_2            IN VARCHAR2
115592 --Entered Amount
115593  , p_source_3            IN NUMBER
115594 --First Distribution Identifier
115595  , p_source_5            IN NUMBER
115596 --Distribution Type
115597  , p_source_6            IN VARCHAR2
115598 --Currency Code
115599  , p_source_7            IN VARCHAR2
115600 --Currency Conversion Date
115601  , p_source_8            IN DATE
115602 --Currency Conversion Rate
115603  , p_source_9            IN NUMBER
115604 --Currency Conversion Type
115605  , p_source_10            IN VARCHAR2
115606 --Accounted Amount
115607  , p_source_11            IN NUMBER
115608 )
115609 IS
115610 
115611 l_component_type              VARCHAR2(80);
115612 l_component_code              VARCHAR2(30);
115613 l_component_type_code         VARCHAR2(1);
115614 l_component_appl_id           INTEGER;
115615 l_amb_context_code            VARCHAR2(30);
115616 l_entity_code                 VARCHAR2(30);
115617 l_event_class_code            VARCHAR2(30);
115618 l_ae_header_id                NUMBER;
115619 l_event_type_code             VARCHAR2(30);
115620 l_line_definition_code        VARCHAR2(30);
115621 l_line_definition_owner_code  VARCHAR2(1);
115622 --
115623 -- adr variables
115624 l_segment                     VARCHAR2(30);
115625 l_ccid                        NUMBER;
115626 l_adr_transaction_coa_id      NUMBER;
115627 l_adr_accounting_coa_id       NUMBER;
115628 l_adr_flexfield_segment_code  VARCHAR2(30);
115632 l_adr_value_segment_code      VARCHAR2(30);
115629 l_adr_flex_value_set_id       NUMBER;
115630 l_adr_value_type_code         VARCHAR2(30);
115631 l_adr_value_combination_id    NUMBER;
115633 
115634 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
115635 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
115636 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
115637 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
115638 
115639 -- 4262811 Variables ------------------------------------------------------------------------------------------
115640 l_entered_amt_idx             NUMBER;
115641 l_accted_amt_idx              NUMBER;
115642 l_acc_rev_flag                VARCHAR2(1);
115643 l_accrual_line_num            NUMBER;
115644 l_tmp_amt                     NUMBER;
115645 l_acc_rev_natural_side_code   VARCHAR2(1);
115646 
115647 l_num_entries                 NUMBER;
115648 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
115649 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
115650 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
115651 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
115652 l_recog_line_1                NUMBER;
115653 l_recog_line_2                NUMBER;
115654 
115655 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
115656 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
115657 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
115658 
115659 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
115660 
115661 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
115662 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
115663 
115664 ---------------------------------------------------------------------------------------------------------------
115665 
115666 
115667 --
115668 -- bulk performance
115669 --
115670 l_balance_type_code           VARCHAR2(1);
115671 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
115672 l_log_module                  VARCHAR2(240);
115673 
115674 --
115675 -- Upgrade strategy
115676 --
115677 l_actual_upg_option           VARCHAR2(1);
115678 l_enc_upg_option           VARCHAR2(1);
115679 
115680 --
115681 BEGIN
115682 --
115683 IF g_log_enabled THEN
115684       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_241';
115685 END IF;
115686 --
115687 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115688 
115689       trace
115690          (p_msg      => 'BEGIN of AcctLineType_241'
115691          ,p_level    => C_LEVEL_PROCEDURE
115692          ,p_module   => l_log_module);
115693 
115694 END IF;
115695 --
115696 l_component_type             := 'AMB_JLT';
115697 l_component_code             := 'WIP';
115698 l_component_type_code        := 'S';
115699 l_component_appl_id          :=  555;
115700 l_amb_context_code           := 'DEFAULT';
115701 l_entity_code                := 'PRODUCTION';
115702 l_event_class_code           := 'BATCH_CLOSE';
115703 l_event_type_code            := 'CLOS';
115704 l_line_definition_owner_code := 'S';
115705 l_line_definition_code       := 'BATCH_CLOSE';
115706 --
115707 l_balance_type_code          := 'A';
115708 l_segment                     := NULL;
115709 l_ccid                        := NULL;
115710 l_adr_transaction_coa_id      := NULL;
115711 l_adr_accounting_coa_id       := NULL;
115712 l_adr_flexfield_segment_code  := NULL;
115713 l_adr_flex_value_set_id       := NULL;
115714 l_adr_value_type_code         := NULL;
115715 l_adr_value_combination_id    := NULL;
115716 l_adr_value_segment_code      := NULL;
115717 
115718 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
115719 l_bflow_class_code           := '';    -- 4219869 Business Flow
115720 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
115721 l_budgetary_control_flag     := 'N';
115722 
115723 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
115724 l_bflow_applied_to_amt       := NULL; -- 5132302
115725 l_entered_amt_idx            := NULL;          -- 4262811
115726 l_accted_amt_idx             := NULL;          -- 4262811
115727 l_acc_rev_flag               := NULL;          -- 4262811
115728 l_accrual_line_num           := NULL;          -- 4262811
115729 l_tmp_amt                    := NULL;          -- 4262811
115730 --
115731  
115732 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
115733     l_balance_type_code <> 'B' THEN
115734 IF NVL(p_source_2,'
115735 ') =  'WIP'
115736  THEN 
115737 
115738    --
115739    XLA_AE_LINES_PKG.SetNewLine;
115740 
115741    p_balance_type_code          := l_balance_type_code;
115742    -- set the flag so later we will know whether the gain loss line needs to be created
115743    
115744    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
115745      p_actual_flag :='A';
115746    END IF;
115747 
115748    --
115749    -- bulk performance
115750    --
115751    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
115752                                       p_header_num   => 0); -- 4262811
115753    --
115754    -- set accounting line options
115755    --
115756    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
115757            p_natural_side_code          => 'D'
115761          , p_switch_side_flag           => 'Y'
115758          , p_gain_or_loss_flag          => 'N'
115759          , p_gl_transfer_mode_code      => 'D'
115760          , p_acct_entry_type_code       => 'A'
115762          , p_merge_duplicate_code       => 'W'
115763          );
115764    --
115765    l_acc_rev_natural_side_code := 'C';  -- 4262811
115766    -- 
115767    --
115768    -- set accounting line type info
115769    --
115770    xla_ae_lines_pkg.SetAcctLineType
115771       (p_component_type             => l_component_type
115772       ,p_event_type_code            => l_event_type_code
115773       ,p_line_definition_owner_code => l_line_definition_owner_code
115774       ,p_line_definition_code       => l_line_definition_code
115775       ,p_accounting_line_code       => l_component_code
115776       ,p_accounting_line_type_code  => l_component_type_code
115777       ,p_accounting_line_appl_id    => l_component_appl_id
115778       ,p_amb_context_code           => l_amb_context_code
115779       ,p_entity_code                => l_entity_code
115780       ,p_event_class_code           => l_event_class_code);
115781    --
115782    -- set accounting class
115783    --
115784    xla_ae_lines_pkg.SetAcctClass(
115785            p_accounting_class_code  => 'WIP_VALUATION'
115786          , p_ae_header_id           => l_ae_header_id
115787          );
115788 
115789    --
115790    -- set rounding class
115791    --
115792    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
115793                       'WIP_VALUATION';
115794 
115795    --
115796    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
115797    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
115798    --
115799    -- bulk performance
115800    --
115801    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
115802 
115803    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
115804       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
115805 
115806    -- 4955764
115807    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115808       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
115809 
115810    -- 4458381 Public Sector Enh
115811    
115812    --
115813    -- set accounting attributes for the line type
115814    --
115815    l_entered_amt_idx := 3;
115816    l_accted_amt_idx  := 8;
115817    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
115818    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
115819    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
115820    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
115821    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
115822    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
115823    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
115824    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
115825    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
115826    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
115827    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
115828    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
115829    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
115830    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
115831    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
115832    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
115833    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
115834 
115835    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
115836    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
115837 
115838    ---------------------------------------------------------------------------------------------------------------
115839    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
115840    ---------------------------------------------------------------------------------------------------------------
115841    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
115842 
115843    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115844    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115845 
115846    IF xla_accounting_cache_pkg.GetValueChar
115847          (p_source_code         => 'LEDGER_CATEGORY_CODE'
115848          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
115849    AND l_bflow_method_code = 'PRIOR_ENTRY'
115850 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
115851    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
115852          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
115853        )
115854    THEN
115855          xla_ae_lines_pkg.BflowUpgEntry
115856            (p_business_method_code    => l_bflow_method_code
115857            ,p_business_class_code     => l_bflow_class_code
115858            ,p_balance_type            => l_balance_type_code);
115859    ELSE
115860       NULL;
115861 -- No business flow processing for business flow method of NONE.
115862    END IF;
115863 
115864    --
115868    --
115865    -- call analytical criteria
115866    --
115867    
115869    -- call description
115870    --
115871    -- No description or it is inherited.
115872    --
115873    -- call ADRs
115874    -- Bug 4922099
115875    --
115876    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115877         (NVL(l_actual_upg_option, 'N') = 'O') OR
115878         (NVL(l_enc_upg_option, 'N') = 'O')
115879       )
115880    THEN
115881    NULL;
115882    --
115883    --
115884    
115885   l_ccid := AcctDerRule_39(
115886            p_application_id           => p_application_id
115887          , p_ae_header_id             => l_ae_header_id 
115888 , p_source_1 => p_source_1
115889 , p_source_2 => p_source_2
115890          , x_transaction_coa_id       => l_adr_transaction_coa_id
115891          , x_accounting_coa_id        => l_adr_accounting_coa_id
115892          , x_value_type_code          => l_adr_value_type_code
115893          , p_side                     => 'NA'
115894    );
115895 
115896    xla_ae_lines_pkg.set_ccid(
115897     p_code_combination_id          => l_ccid
115898   , p_value_type_code              => l_adr_value_type_code
115899   , p_transaction_coa_id           => l_adr_transaction_coa_id
115900   , p_accounting_coa_id            => l_adr_accounting_coa_id
115901   , p_adr_code                     => 'WIP'
115902   , p_adr_type_code                => 'S'
115903   , p_component_type               => l_component_type
115904   , p_component_code               => l_component_code
115905   , p_component_type_code          => l_component_type_code
115906   , p_component_appl_id            => l_component_appl_id
115907   , p_amb_context_code             => l_amb_context_code
115908   , p_side                         => 'NA'
115909   );
115910 
115911 
115912    --
115913    --
115914    END IF;
115915    --
115916    -- Bug 4922099
115917    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
115918           (NVL(l_enc_upg_option, 'N') = 'O')
115919         ) AND
115920         (l_bflow_method_code = 'PRIOR_ENTRY')
115921       )
115922    THEN
115923       IF
115924       --
115925       1 = 2
115926       --
115927       THEN
115928       xla_accounting_err_pkg.build_message
115929                                     (p_appli_s_name            => 'XLA'
115930                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115931                                     ,p_token_1                 => 'LINE_NUMBER'
115932                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
115933                                     ,p_token_2                 => 'LINE_TYPE_NAME'
115934                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
115935                                                                              l_component_type
115936                                                                             ,l_component_code
115937                                                                             ,l_component_type_code
115938                                                                             ,l_component_appl_id
115939                                                                             ,l_amb_context_code
115940                                                                             ,l_entity_code
115941                                                                             ,l_event_class_code
115942                                                                            )
115943                                     ,p_token_3                 => 'OWNER'
115944                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
115945                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
115946                                                                           ,p_lookup_code    => l_component_type_code
115947                                                                          )
115948                                     ,p_token_4                 => 'PRODUCT_NAME'
115949                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
115950                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
115951                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
115952                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
115953                                     ,p_ae_header_id            =>  NULL
115954                                        );
115955 
115956         IF (C_LEVEL_ERROR>= g_log_level) THEN
115957                  trace
115958                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115959                       ,p_level    => C_LEVEL_ERROR
115960                       ,p_module   => l_log_module);
115961         END IF;
115962       END IF;
115963    END IF;
115964    --
115965    --
115966    ------------------------------------------------------------------------------------------------
115967    -- 4219869 Business Flow
115968    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
115969    -- Prior Entry.  Currently, the following code is always generated.
115970    ------------------------------------------------------------------------------------------------
115971    XLA_AE_LINES_PKG.ValidateCurrentLine;
115972 
115973    ------------------------------------------------------------------------------------
115977    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
115974    -- 4219869 Business Flow
115975    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
115976    ------------------------------------------------------------------------------------
115978 
115979    ----------------------------------------------------------------------------------
115980    -- 4219869 Business Flow
115981    -- Update journal entry status -- Need to generate this within IF <condition>
115982    ----------------------------------------------------------------------------------
115983    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
115984          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
115985          ,p_balance_type_code => l_balance_type_code
115986          );
115987 
115988    -------------------------------------------------------------------------------------------
115989    -- 4262811 - Generate the Accrual Reversal lines
115990    -------------------------------------------------------------------------------------------
115991    BEGIN
115992       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
115993                               (g_array_event(p_event_id).array_value_num('header_index'));
115994       IF l_acc_rev_flag IS NULL THEN
115995          l_acc_rev_flag := 'N';
115996       END IF;
115997    EXCEPTION
115998       WHEN OTHERS THEN
115999          l_acc_rev_flag := 'N';
116000    END;
116001    --
116002    IF (l_acc_rev_flag = 'Y') THEN
116003 
116004        -- 4645092  ------------------------------------------------------------------------------
116005        -- To allow MPA report to determine if it should generate report process
116006        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
116007        ------------------------------------------------------------------------------------------
116008 
116009        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
116010        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
116011    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
116012    -- call ADRs
116013    -- Bug 4922099
116014    --
116015    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116016         (NVL(l_actual_upg_option, 'N') = 'O') OR
116017         (NVL(l_enc_upg_option, 'N') = 'O')
116018       )
116019    THEN
116020    NULL;
116021    --
116022    --
116023    
116024   l_ccid := AcctDerRule_39(
116025            p_application_id           => p_application_id
116026          , p_ae_header_id             => l_ae_header_id 
116027 , p_source_1 => p_source_1
116028 , p_source_2 => p_source_2
116029          , x_transaction_coa_id       => l_adr_transaction_coa_id
116030          , x_accounting_coa_id        => l_adr_accounting_coa_id
116031          , x_value_type_code          => l_adr_value_type_code
116032          , p_side                     => 'NA'
116033    );
116034 
116035    xla_ae_lines_pkg.set_ccid(
116036     p_code_combination_id          => l_ccid
116037   , p_value_type_code              => l_adr_value_type_code
116038   , p_transaction_coa_id           => l_adr_transaction_coa_id
116039   , p_accounting_coa_id            => l_adr_accounting_coa_id
116040   , p_adr_code                     => 'WIP'
116041   , p_adr_type_code                => 'S'
116042   , p_component_type               => l_component_type
116043   , p_component_code               => l_component_code
116044   , p_component_type_code          => l_component_type_code
116045   , p_component_appl_id            => l_component_appl_id
116046   , p_amb_context_code             => l_amb_context_code
116047   , p_side                         => 'NA'
116048   );
116049 
116050 
116051    --
116052    --
116053    END IF;
116054 
116055        --
116056        -- Update the line information that should be overwritten
116057        --
116058        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
116059                                          p_header_num   => 1);
116060        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
116061 
116062        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
116063 
116064        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
116065           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
116066        END IF;
116067 
116068       --
116069       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
116070       --
116071       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
116072           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
116073       ELSE
116074           ---------------------------------------------------------------------------------------------------
116075           -- 4262811a Switch Sign
116076           ---------------------------------------------------------------------------------------------------
116077           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
116078           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116079                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116080           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116081                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116085 
116082           -- 5132302
116083           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
116084                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116086       END IF;
116087 
116088       -- 4955764
116089       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116090       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
116091 
116092 
116093       XLA_AE_LINES_PKG.ValidateCurrentLine;
116094       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116095 
116096       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116097                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
116098                ,p_balance_type_code => l_balance_type_code);
116099 
116100    END IF;
116101 
116102    -----------------------------------------------------------------------------------------
116103    -- 4262811 Multiperiod Accounting
116104    -----------------------------------------------------------------------------------------
116105      -- No MPA option is assigned.
116106 
116107 
116108 END IF;
116109 END IF;
116110 --
116111 
116112 --
116113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116114    trace
116115       (p_msg      => 'END of AcctLineType_241'
116116       ,p_level    => C_LEVEL_PROCEDURE
116117       ,p_module   => l_log_module);
116118 END IF;
116119 --
116120 EXCEPTION
116121   WHEN xla_exceptions_pkg.application_exception THEN
116122       RAISE;
116123   WHEN OTHERS THEN
116124        xla_exceptions_pkg.raise_message
116125            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_241');
116126 END AcctLineType_241;
116127 --
116128 
116129 ---------------------------------------
116130 --
116131 -- PRIVATE FUNCTION
116132 --         AcctLineType_242
116133 --
116134 ---------------------------------------
116135 PROCEDURE AcctLineType_242 (
116136   p_application_id        IN NUMBER
116137  ,p_event_id              IN NUMBER
116138  ,p_calculate_acctd_flag  IN VARCHAR2
116139  ,p_calculate_g_l_flag    IN VARCHAR2
116140  ,p_actual_flag           IN OUT VARCHAR2
116141  ,p_balance_type_code     OUT VARCHAR2
116142  ,p_gain_or_loss_ref      OUT VARCHAR2
116143  
116144 --Transaction Account
116145  , p_source_1            IN NUMBER
116146 --Journal Line Type
116147  , p_source_2            IN VARCHAR2
116148 --Entered Amount
116149  , p_source_3            IN NUMBER
116150 --First Distribution Identifier
116151  , p_source_5            IN NUMBER
116152 --Distribution Type
116153  , p_source_6            IN VARCHAR2
116154 --Currency Code
116155  , p_source_7            IN VARCHAR2
116156 --Currency Conversion Date
116157  , p_source_8            IN DATE
116158 --Currency Conversion Rate
116159  , p_source_9            IN NUMBER
116160 --Currency Conversion Type
116161  , p_source_10            IN VARCHAR2
116162 --Accounted Amount
116163  , p_source_11            IN NUMBER
116164 )
116165 IS
116166 
116167 l_component_type              VARCHAR2(80);
116168 l_component_code              VARCHAR2(30);
116169 l_component_type_code         VARCHAR2(1);
116170 l_component_appl_id           INTEGER;
116171 l_amb_context_code            VARCHAR2(30);
116172 l_entity_code                 VARCHAR2(30);
116173 l_event_class_code            VARCHAR2(30);
116174 l_ae_header_id                NUMBER;
116175 l_event_type_code             VARCHAR2(30);
116176 l_line_definition_code        VARCHAR2(30);
116177 l_line_definition_owner_code  VARCHAR2(1);
116178 --
116179 -- adr variables
116180 l_segment                     VARCHAR2(30);
116181 l_ccid                        NUMBER;
116182 l_adr_transaction_coa_id      NUMBER;
116183 l_adr_accounting_coa_id       NUMBER;
116184 l_adr_flexfield_segment_code  VARCHAR2(30);
116185 l_adr_flex_value_set_id       NUMBER;
116186 l_adr_value_type_code         VARCHAR2(30);
116187 l_adr_value_combination_id    NUMBER;
116188 l_adr_value_segment_code      VARCHAR2(30);
116189 
116190 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
116191 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
116192 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
116193 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
116194 
116195 -- 4262811 Variables ------------------------------------------------------------------------------------------
116196 l_entered_amt_idx             NUMBER;
116197 l_accted_amt_idx              NUMBER;
116198 l_acc_rev_flag                VARCHAR2(1);
116199 l_accrual_line_num            NUMBER;
116200 l_tmp_amt                     NUMBER;
116201 l_acc_rev_natural_side_code   VARCHAR2(1);
116202 
116203 l_num_entries                 NUMBER;
116204 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
116205 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
116206 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
116207 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
116208 l_recog_line_1                NUMBER;
116209 l_recog_line_2                NUMBER;
116210 
116211 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
116212 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
116213 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
116214 
116218 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
116215 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
116216 
116217 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
116219 
116220 ---------------------------------------------------------------------------------------------------------------
116221 
116222 
116223 --
116224 -- bulk performance
116225 --
116226 l_balance_type_code           VARCHAR2(1);
116227 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
116228 l_log_module                  VARCHAR2(240);
116229 
116230 --
116231 -- Upgrade strategy
116232 --
116233 l_actual_upg_option           VARCHAR2(1);
116234 l_enc_upg_option           VARCHAR2(1);
116235 
116236 --
116237 BEGIN
116238 --
116239 IF g_log_enabled THEN
116240       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_242';
116241 END IF;
116242 --
116243 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116244 
116245       trace
116246          (p_msg      => 'BEGIN of AcctLineType_242'
116247          ,p_level    => C_LEVEL_PROCEDURE
116248          ,p_module   => l_log_module);
116249 
116250 END IF;
116251 --
116252 l_component_type             := 'AMB_JLT';
116253 l_component_code             := 'WIP';
116254 l_component_type_code        := 'S';
116255 l_component_appl_id          :=  555;
116256 l_amb_context_code           := 'DEFAULT';
116257 l_entity_code                := 'PRODUCTION';
116258 l_event_class_code           := 'BATCH_MATERIAL';
116259 l_event_type_code            := 'RELE';
116260 l_line_definition_owner_code := 'S';
116261 l_line_definition_code       := 'BATCH_RELEASE';
116262 --
116263 l_balance_type_code          := 'A';
116264 l_segment                     := NULL;
116265 l_ccid                        := NULL;
116266 l_adr_transaction_coa_id      := NULL;
116267 l_adr_accounting_coa_id       := NULL;
116268 l_adr_flexfield_segment_code  := NULL;
116269 l_adr_flex_value_set_id       := NULL;
116270 l_adr_value_type_code         := NULL;
116271 l_adr_value_combination_id    := NULL;
116272 l_adr_value_segment_code      := NULL;
116273 
116274 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
116275 l_bflow_class_code           := '';    -- 4219869 Business Flow
116276 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
116277 l_budgetary_control_flag     := 'N';
116278 
116279 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
116280 l_bflow_applied_to_amt       := NULL; -- 5132302
116281 l_entered_amt_idx            := NULL;          -- 4262811
116282 l_accted_amt_idx             := NULL;          -- 4262811
116283 l_acc_rev_flag               := NULL;          -- 4262811
116284 l_accrual_line_num           := NULL;          -- 4262811
116285 l_tmp_amt                    := NULL;          -- 4262811
116286 --
116287  
116288 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
116289     l_balance_type_code <> 'B' THEN
116290 IF NVL(p_source_2,'
116291 ') =  'WIP'
116292  THEN 
116293 
116294    --
116295    XLA_AE_LINES_PKG.SetNewLine;
116296 
116297    p_balance_type_code          := l_balance_type_code;
116298    -- set the flag so later we will know whether the gain loss line needs to be created
116299    
116300    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
116301      p_actual_flag :='A';
116302    END IF;
116303 
116304    --
116305    -- bulk performance
116306    --
116307    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
116308                                       p_header_num   => 0); -- 4262811
116309    --
116310    -- set accounting line options
116311    --
116312    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
116313            p_natural_side_code          => 'D'
116314          , p_gain_or_loss_flag          => 'N'
116315          , p_gl_transfer_mode_code      => 'D'
116316          , p_acct_entry_type_code       => 'A'
116317          , p_switch_side_flag           => 'Y'
116318          , p_merge_duplicate_code       => 'W'
116319          );
116320    --
116321    l_acc_rev_natural_side_code := 'C';  -- 4262811
116322    -- 
116323    --
116324    -- set accounting line type info
116325    --
116326    xla_ae_lines_pkg.SetAcctLineType
116327       (p_component_type             => l_component_type
116328       ,p_event_type_code            => l_event_type_code
116329       ,p_line_definition_owner_code => l_line_definition_owner_code
116330       ,p_line_definition_code       => l_line_definition_code
116331       ,p_accounting_line_code       => l_component_code
116332       ,p_accounting_line_type_code  => l_component_type_code
116333       ,p_accounting_line_appl_id    => l_component_appl_id
116334       ,p_amb_context_code           => l_amb_context_code
116335       ,p_entity_code                => l_entity_code
116336       ,p_event_class_code           => l_event_class_code);
116337    --
116338    -- set accounting class
116339    --
116340    xla_ae_lines_pkg.SetAcctClass(
116341            p_accounting_class_code  => 'WIP_VALUATION'
116342          , p_ae_header_id           => l_ae_header_id
116343          );
116344 
116345    --
116346    -- set rounding class
116347    --
116348    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
116352    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
116349                       'WIP_VALUATION';
116350 
116351    --
116353    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
116354    --
116355    -- bulk performance
116356    --
116357    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
116358 
116359    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
116360       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
116361 
116362    -- 4955764
116363    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116364       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
116365 
116366    -- 4458381 Public Sector Enh
116367    
116368    --
116369    -- set accounting attributes for the line type
116370    --
116371    l_entered_amt_idx := 3;
116372    l_accted_amt_idx  := 8;
116373    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
116374    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
116375    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
116376    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
116377    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
116378    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
116379    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
116380    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
116381    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
116382    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
116383    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
116384    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
116385    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
116386    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
116387    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
116388    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
116389    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
116390 
116391    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
116392    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
116393 
116394    ---------------------------------------------------------------------------------------------------------------
116395    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
116396    ---------------------------------------------------------------------------------------------------------------
116397    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
116398 
116399    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116400    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116401 
116402    IF xla_accounting_cache_pkg.GetValueChar
116403          (p_source_code         => 'LEDGER_CATEGORY_CODE'
116404          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
116405    AND l_bflow_method_code = 'PRIOR_ENTRY'
116406 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
116407    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
116408          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
116409        )
116410    THEN
116411          xla_ae_lines_pkg.BflowUpgEntry
116412            (p_business_method_code    => l_bflow_method_code
116413            ,p_business_class_code     => l_bflow_class_code
116414            ,p_balance_type            => l_balance_type_code);
116415    ELSE
116416       NULL;
116417 -- No business flow processing for business flow method of NONE.
116418    END IF;
116419 
116420    --
116421    -- call analytical criteria
116422    --
116423    
116424    --
116425    -- call description
116426    --
116427    -- No description or it is inherited.
116428    --
116429    -- call ADRs
116430    -- Bug 4922099
116431    --
116432    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116433         (NVL(l_actual_upg_option, 'N') = 'O') OR
116434         (NVL(l_enc_upg_option, 'N') = 'O')
116435       )
116436    THEN
116437    NULL;
116438    --
116439    --
116440    
116441   l_ccid := AcctDerRule_39(
116442            p_application_id           => p_application_id
116443          , p_ae_header_id             => l_ae_header_id 
116444 , p_source_1 => p_source_1
116445 , p_source_2 => p_source_2
116446          , x_transaction_coa_id       => l_adr_transaction_coa_id
116447          , x_accounting_coa_id        => l_adr_accounting_coa_id
116448          , x_value_type_code          => l_adr_value_type_code
116449          , p_side                     => 'NA'
116450    );
116451 
116452    xla_ae_lines_pkg.set_ccid(
116453     p_code_combination_id          => l_ccid
116454   , p_value_type_code              => l_adr_value_type_code
116455   , p_transaction_coa_id           => l_adr_transaction_coa_id
116456   , p_accounting_coa_id            => l_adr_accounting_coa_id
116457   , p_adr_code                     => 'WIP'
116458   , p_adr_type_code                => 'S'
116459   , p_component_type               => l_component_type
116460   , p_component_code               => l_component_code
116461   , p_component_type_code          => l_component_type_code
116465   );
116462   , p_component_appl_id            => l_component_appl_id
116463   , p_amb_context_code             => l_amb_context_code
116464   , p_side                         => 'NA'
116466 
116467 
116468    --
116469    --
116470    END IF;
116471    --
116472    -- Bug 4922099
116473    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
116474           (NVL(l_enc_upg_option, 'N') = 'O')
116475         ) AND
116476         (l_bflow_method_code = 'PRIOR_ENTRY')
116477       )
116478    THEN
116479       IF
116480       --
116481       1 = 2
116482       --
116483       THEN
116484       xla_accounting_err_pkg.build_message
116485                                     (p_appli_s_name            => 'XLA'
116486                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
116487                                     ,p_token_1                 => 'LINE_NUMBER'
116488                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
116489                                     ,p_token_2                 => 'LINE_TYPE_NAME'
116490                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
116491                                                                              l_component_type
116492                                                                             ,l_component_code
116493                                                                             ,l_component_type_code
116494                                                                             ,l_component_appl_id
116495                                                                             ,l_amb_context_code
116496                                                                             ,l_entity_code
116497                                                                             ,l_event_class_code
116498                                                                            )
116499                                     ,p_token_3                 => 'OWNER'
116500                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
116501                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
116502                                                                           ,p_lookup_code    => l_component_type_code
116503                                                                          )
116504                                     ,p_token_4                 => 'PRODUCT_NAME'
116505                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
116506                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
116507                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
116508                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
116509                                     ,p_ae_header_id            =>  NULL
116510                                        );
116511 
116512         IF (C_LEVEL_ERROR>= g_log_level) THEN
116513                  trace
116514                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
116515                       ,p_level    => C_LEVEL_ERROR
116516                       ,p_module   => l_log_module);
116517         END IF;
116518       END IF;
116519    END IF;
116520    --
116521    --
116522    ------------------------------------------------------------------------------------------------
116523    -- 4219869 Business Flow
116524    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
116525    -- Prior Entry.  Currently, the following code is always generated.
116526    ------------------------------------------------------------------------------------------------
116527    XLA_AE_LINES_PKG.ValidateCurrentLine;
116528 
116529    ------------------------------------------------------------------------------------
116530    -- 4219869 Business Flow
116531    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
116532    ------------------------------------------------------------------------------------
116533    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116534 
116535    ----------------------------------------------------------------------------------
116536    -- 4219869 Business Flow
116537    -- Update journal entry status -- Need to generate this within IF <condition>
116538    ----------------------------------------------------------------------------------
116539    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116540          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
116541          ,p_balance_type_code => l_balance_type_code
116542          );
116543 
116544    -------------------------------------------------------------------------------------------
116545    -- 4262811 - Generate the Accrual Reversal lines
116546    -------------------------------------------------------------------------------------------
116547    BEGIN
116548       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
116549                               (g_array_event(p_event_id).array_value_num('header_index'));
116550       IF l_acc_rev_flag IS NULL THEN
116551          l_acc_rev_flag := 'N';
116552       END IF;
116553    EXCEPTION
116554       WHEN OTHERS THEN
116555          l_acc_rev_flag := 'N';
116556    END;
116557    --
116558    IF (l_acc_rev_flag = 'Y') THEN
116559 
116560        -- 4645092  ------------------------------------------------------------------------------
116564 
116561        -- To allow MPA report to determine if it should generate report process
116562        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
116563        ------------------------------------------------------------------------------------------
116565        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
116566        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
116567    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
116568    -- call ADRs
116569    -- Bug 4922099
116570    --
116571    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116572         (NVL(l_actual_upg_option, 'N') = 'O') OR
116573         (NVL(l_enc_upg_option, 'N') = 'O')
116574       )
116575    THEN
116576    NULL;
116577    --
116578    --
116579    
116580   l_ccid := AcctDerRule_39(
116581            p_application_id           => p_application_id
116582          , p_ae_header_id             => l_ae_header_id 
116583 , p_source_1 => p_source_1
116584 , p_source_2 => p_source_2
116585          , x_transaction_coa_id       => l_adr_transaction_coa_id
116586          , x_accounting_coa_id        => l_adr_accounting_coa_id
116587          , x_value_type_code          => l_adr_value_type_code
116588          , p_side                     => 'NA'
116589    );
116590 
116591    xla_ae_lines_pkg.set_ccid(
116592     p_code_combination_id          => l_ccid
116593   , p_value_type_code              => l_adr_value_type_code
116594   , p_transaction_coa_id           => l_adr_transaction_coa_id
116595   , p_accounting_coa_id            => l_adr_accounting_coa_id
116596   , p_adr_code                     => 'WIP'
116597   , p_adr_type_code                => 'S'
116598   , p_component_type               => l_component_type
116599   , p_component_code               => l_component_code
116600   , p_component_type_code          => l_component_type_code
116601   , p_component_appl_id            => l_component_appl_id
116602   , p_amb_context_code             => l_amb_context_code
116603   , p_side                         => 'NA'
116604   );
116605 
116606 
116607    --
116608    --
116609    END IF;
116610 
116611        --
116612        -- Update the line information that should be overwritten
116613        --
116614        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
116615                                          p_header_num   => 1);
116616        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
116617 
116618        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
116619 
116620        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
116621           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
116622        END IF;
116623 
116624       --
116625       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
116626       --
116627       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
116628           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
116629       ELSE
116630           ---------------------------------------------------------------------------------------------------
116631           -- 4262811a Switch Sign
116632           ---------------------------------------------------------------------------------------------------
116633           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
116634           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116635                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116636           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116637                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116638           -- 5132302
116639           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
116640                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116641 
116642       END IF;
116643 
116644       -- 4955764
116645       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116646       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
116647 
116648 
116649       XLA_AE_LINES_PKG.ValidateCurrentLine;
116650       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116651 
116652       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116653                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
116654                ,p_balance_type_code => l_balance_type_code);
116655 
116656    END IF;
116657 
116658    -----------------------------------------------------------------------------------------
116659    -- 4262811 Multiperiod Accounting
116660    -----------------------------------------------------------------------------------------
116661      -- No MPA option is assigned.
116662 
116663 
116664 END IF;
116665 END IF;
116666 --
116667 
116668 --
116669 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116670    trace
116671       (p_msg      => 'END of AcctLineType_242'
116672       ,p_level    => C_LEVEL_PROCEDURE
116673       ,p_module   => l_log_module);
116674 END IF;
116675 --
116676 EXCEPTION
116677   WHEN xla_exceptions_pkg.application_exception THEN
116678       RAISE;
116682 END AcctLineType_242;
116679   WHEN OTHERS THEN
116680        xla_exceptions_pkg.raise_message
116681            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_242');
116683 --
116684 
116685 ---------------------------------------
116686 --
116687 -- PRIVATE FUNCTION
116688 --         AcctLineType_243
116689 --
116690 ---------------------------------------
116691 PROCEDURE AcctLineType_243 (
116692   p_application_id        IN NUMBER
116693  ,p_event_id              IN NUMBER
116694  ,p_calculate_acctd_flag  IN VARCHAR2
116695  ,p_calculate_g_l_flag    IN VARCHAR2
116696  ,p_actual_flag           IN OUT VARCHAR2
116697  ,p_balance_type_code     OUT VARCHAR2
116698  ,p_gain_or_loss_ref      OUT VARCHAR2
116699  
116700 --Transaction Account
116701  , p_source_1            IN NUMBER
116702 --Journal Line Type
116703  , p_source_2            IN VARCHAR2
116704 --Entered Amount
116705  , p_source_3            IN NUMBER
116706 --First Distribution Identifier
116707  , p_source_5            IN NUMBER
116708 --Distribution Type
116709  , p_source_6            IN VARCHAR2
116710 --Currency Code
116711  , p_source_7            IN VARCHAR2
116712 --Currency Conversion Date
116713  , p_source_8            IN DATE
116714 --Currency Conversion Rate
116715  , p_source_9            IN NUMBER
116716 --Currency Conversion Type
116717  , p_source_10            IN VARCHAR2
116718 --Accounted Amount
116719  , p_source_11            IN NUMBER
116720 )
116721 IS
116722 
116723 l_component_type              VARCHAR2(80);
116724 l_component_code              VARCHAR2(30);
116725 l_component_type_code         VARCHAR2(1);
116726 l_component_appl_id           INTEGER;
116727 l_amb_context_code            VARCHAR2(30);
116728 l_entity_code                 VARCHAR2(30);
116729 l_event_class_code            VARCHAR2(30);
116730 l_ae_header_id                NUMBER;
116731 l_event_type_code             VARCHAR2(30);
116732 l_line_definition_code        VARCHAR2(30);
116733 l_line_definition_owner_code  VARCHAR2(1);
116734 --
116735 -- adr variables
116736 l_segment                     VARCHAR2(30);
116737 l_ccid                        NUMBER;
116738 l_adr_transaction_coa_id      NUMBER;
116739 l_adr_accounting_coa_id       NUMBER;
116740 l_adr_flexfield_segment_code  VARCHAR2(30);
116741 l_adr_flex_value_set_id       NUMBER;
116742 l_adr_value_type_code         VARCHAR2(30);
116743 l_adr_value_combination_id    NUMBER;
116744 l_adr_value_segment_code      VARCHAR2(30);
116745 
116746 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
116747 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
116748 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
116749 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
116750 
116751 -- 4262811 Variables ------------------------------------------------------------------------------------------
116752 l_entered_amt_idx             NUMBER;
116753 l_accted_amt_idx              NUMBER;
116754 l_acc_rev_flag                VARCHAR2(1);
116755 l_accrual_line_num            NUMBER;
116756 l_tmp_amt                     NUMBER;
116757 l_acc_rev_natural_side_code   VARCHAR2(1);
116758 
116759 l_num_entries                 NUMBER;
116760 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
116761 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
116762 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
116763 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
116764 l_recog_line_1                NUMBER;
116765 l_recog_line_2                NUMBER;
116766 
116767 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
116768 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
116769 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
116770 
116771 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
116772 
116773 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
116774 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
116775 
116776 ---------------------------------------------------------------------------------------------------------------
116777 
116778 
116779 --
116780 -- bulk performance
116781 --
116782 l_balance_type_code           VARCHAR2(1);
116783 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
116784 l_log_module                  VARCHAR2(240);
116785 
116786 --
116787 -- Upgrade strategy
116788 --
116789 l_actual_upg_option           VARCHAR2(1);
116790 l_enc_upg_option           VARCHAR2(1);
116791 
116792 --
116793 BEGIN
116794 --
116795 IF g_log_enabled THEN
116796       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_243';
116797 END IF;
116798 --
116799 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116800 
116801       trace
116802          (p_msg      => 'BEGIN of AcctLineType_243'
116803          ,p_level    => C_LEVEL_PROCEDURE
116804          ,p_module   => l_log_module);
116805 
116806 END IF;
116807 --
116808 l_component_type             := 'AMB_JLT';
116809 l_component_code             := 'XTC';
116810 l_component_type_code        := 'S';
116811 l_component_appl_id          :=  555;
116812 l_amb_context_code           := 'DEFAULT';
116813 l_entity_code                := 'INVENTORY';
116817 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT_NO_TP';
116814 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
116815 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_NO_TP';
116816 l_line_definition_owner_code := 'S';
116818 --
116819 l_balance_type_code          := 'A';
116820 l_segment                     := NULL;
116821 l_ccid                        := NULL;
116822 l_adr_transaction_coa_id      := NULL;
116823 l_adr_accounting_coa_id       := NULL;
116824 l_adr_flexfield_segment_code  := NULL;
116825 l_adr_flex_value_set_id       := NULL;
116826 l_adr_value_type_code         := NULL;
116827 l_adr_value_combination_id    := NULL;
116828 l_adr_value_segment_code      := NULL;
116829 
116830 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
116831 l_bflow_class_code           := '';    -- 4219869 Business Flow
116832 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
116833 l_budgetary_control_flag     := 'N';
116834 
116835 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
116836 l_bflow_applied_to_amt       := NULL; -- 5132302
116837 l_entered_amt_idx            := NULL;          -- 4262811
116838 l_accted_amt_idx             := NULL;          -- 4262811
116839 l_acc_rev_flag               := NULL;          -- 4262811
116840 l_accrual_line_num           := NULL;          -- 4262811
116841 l_tmp_amt                    := NULL;          -- 4262811
116842 --
116843  
116844 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
116845     l_balance_type_code <> 'B' THEN
116846 IF NVL(p_source_2,'
116847 ') =  'XFC'
116848  THEN 
116849 
116850    --
116851    XLA_AE_LINES_PKG.SetNewLine;
116852 
116853    p_balance_type_code          := l_balance_type_code;
116854    -- set the flag so later we will know whether the gain loss line needs to be created
116855    
116856    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
116857      p_actual_flag :='A';
116858    END IF;
116859 
116860    --
116861    -- bulk performance
116862    --
116863    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
116864                                       p_header_num   => 0); -- 4262811
116865    --
116866    -- set accounting line options
116867    --
116868    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
116869            p_natural_side_code          => 'D'
116870          , p_gain_or_loss_flag          => 'N'
116871          , p_gl_transfer_mode_code      => 'D'
116872          , p_acct_entry_type_code       => 'A'
116873          , p_switch_side_flag           => 'Y'
116874          , p_merge_duplicate_code       => 'W'
116875          );
116876    --
116877    l_acc_rev_natural_side_code := 'C';  -- 4262811
116878    -- 
116879    --
116880    -- set accounting line type info
116881    --
116882    xla_ae_lines_pkg.SetAcctLineType
116883       (p_component_type             => l_component_type
116884       ,p_event_type_code            => l_event_type_code
116885       ,p_line_definition_owner_code => l_line_definition_owner_code
116886       ,p_line_definition_code       => l_line_definition_code
116887       ,p_accounting_line_code       => l_component_code
116888       ,p_accounting_line_type_code  => l_component_type_code
116889       ,p_accounting_line_appl_id    => l_component_appl_id
116890       ,p_amb_context_code           => l_amb_context_code
116891       ,p_entity_code                => l_entity_code
116892       ,p_event_class_code           => l_event_class_code);
116893    --
116894    -- set accounting class
116895    --
116896    xla_ae_lines_pkg.SetAcctClass(
116897            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
116898          , p_ae_header_id           => l_ae_header_id
116899          );
116900 
116901    --
116902    -- set rounding class
116903    --
116904    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
116905                       'INTERORG_TRANSFER_CREDIT';
116906 
116907    --
116908    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
116909    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
116910    --
116911    -- bulk performance
116912    --
116913    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
116914 
116915    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
116916       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
116917 
116918    -- 4955764
116919    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116920       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
116921 
116922    -- 4458381 Public Sector Enh
116923    
116924    --
116925    -- set accounting attributes for the line type
116926    --
116927    l_entered_amt_idx := 3;
116928    l_accted_amt_idx  := 8;
116929    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
116930    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
116931    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
116932    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
116933    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
116934    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
116935    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
116939    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
116936    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
116937    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
116938    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
116940    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
116941    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
116942    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
116943    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
116944    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
116945    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
116946 
116947    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
116948    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
116949 
116950    ---------------------------------------------------------------------------------------------------------------
116951    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
116952    ---------------------------------------------------------------------------------------------------------------
116953    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
116954 
116955    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116956    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116957 
116958    IF xla_accounting_cache_pkg.GetValueChar
116959          (p_source_code         => 'LEDGER_CATEGORY_CODE'
116960          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
116961    AND l_bflow_method_code = 'PRIOR_ENTRY'
116962 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
116963    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
116964          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
116965        )
116966    THEN
116967          xla_ae_lines_pkg.BflowUpgEntry
116968            (p_business_method_code    => l_bflow_method_code
116969            ,p_business_class_code     => l_bflow_class_code
116970            ,p_balance_type            => l_balance_type_code);
116971    ELSE
116972       NULL;
116973 -- No business flow processing for business flow method of NONE.
116974    END IF;
116975 
116976    --
116977    -- call analytical criteria
116978    --
116979    
116980    --
116981    -- call description
116982    --
116983    -- No description or it is inherited.
116984    --
116985    -- call ADRs
116986    -- Bug 4922099
116987    --
116988    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116989         (NVL(l_actual_upg_option, 'N') = 'O') OR
116990         (NVL(l_enc_upg_option, 'N') = 'O')
116991       )
116992    THEN
116993    NULL;
116994    --
116995    --
116996    
116997   l_ccid := AcctDerRule_40(
116998            p_application_id           => p_application_id
116999          , p_ae_header_id             => l_ae_header_id 
117000 , p_source_1 => p_source_1
117001 , p_source_2 => p_source_2
117002          , x_transaction_coa_id       => l_adr_transaction_coa_id
117003          , x_accounting_coa_id        => l_adr_accounting_coa_id
117004          , x_value_type_code          => l_adr_value_type_code
117005          , p_side                     => 'NA'
117006    );
117007 
117008    xla_ae_lines_pkg.set_ccid(
117009     p_code_combination_id          => l_ccid
117010   , p_value_type_code              => l_adr_value_type_code
117011   , p_transaction_coa_id           => l_adr_transaction_coa_id
117012   , p_accounting_coa_id            => l_adr_accounting_coa_id
117013   , p_adr_code                     => 'XTC'
117014   , p_adr_type_code                => 'S'
117015   , p_component_type               => l_component_type
117016   , p_component_code               => l_component_code
117017   , p_component_type_code          => l_component_type_code
117018   , p_component_appl_id            => l_component_appl_id
117019   , p_amb_context_code             => l_amb_context_code
117020   , p_side                         => 'NA'
117021   );
117022 
117023 
117024    --
117025    --
117026    END IF;
117027    --
117028    -- Bug 4922099
117029    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
117030           (NVL(l_enc_upg_option, 'N') = 'O')
117031         ) AND
117032         (l_bflow_method_code = 'PRIOR_ENTRY')
117033       )
117034    THEN
117035       IF
117036       --
117037       1 = 2
117038       --
117039       THEN
117040       xla_accounting_err_pkg.build_message
117041                                     (p_appli_s_name            => 'XLA'
117042                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117043                                     ,p_token_1                 => 'LINE_NUMBER'
117044                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
117045                                     ,p_token_2                 => 'LINE_TYPE_NAME'
117046                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
117047                                                                              l_component_type
117048                                                                             ,l_component_code
117049                                                                             ,l_component_type_code
117050                                                                             ,l_component_appl_id
117054                                                                            )
117051                                                                             ,l_amb_context_code
117052                                                                             ,l_entity_code
117053                                                                             ,l_event_class_code
117055                                     ,p_token_3                 => 'OWNER'
117056                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
117057                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
117058                                                                           ,p_lookup_code    => l_component_type_code
117059                                                                          )
117060                                     ,p_token_4                 => 'PRODUCT_NAME'
117061                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
117062                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
117063                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
117064                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
117065                                     ,p_ae_header_id            =>  NULL
117066                                        );
117067 
117068         IF (C_LEVEL_ERROR>= g_log_level) THEN
117069                  trace
117070                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117071                       ,p_level    => C_LEVEL_ERROR
117072                       ,p_module   => l_log_module);
117073         END IF;
117074       END IF;
117075    END IF;
117076    --
117077    --
117078    ------------------------------------------------------------------------------------------------
117079    -- 4219869 Business Flow
117080    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
117081    -- Prior Entry.  Currently, the following code is always generated.
117082    ------------------------------------------------------------------------------------------------
117083    XLA_AE_LINES_PKG.ValidateCurrentLine;
117084 
117085    ------------------------------------------------------------------------------------
117086    -- 4219869 Business Flow
117087    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
117088    ------------------------------------------------------------------------------------
117089    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117090 
117091    ----------------------------------------------------------------------------------
117092    -- 4219869 Business Flow
117093    -- Update journal entry status -- Need to generate this within IF <condition>
117094    ----------------------------------------------------------------------------------
117095    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117096          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
117097          ,p_balance_type_code => l_balance_type_code
117098          );
117099 
117100    -------------------------------------------------------------------------------------------
117101    -- 4262811 - Generate the Accrual Reversal lines
117102    -------------------------------------------------------------------------------------------
117103    BEGIN
117104       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
117105                               (g_array_event(p_event_id).array_value_num('header_index'));
117106       IF l_acc_rev_flag IS NULL THEN
117107          l_acc_rev_flag := 'N';
117108       END IF;
117109    EXCEPTION
117110       WHEN OTHERS THEN
117111          l_acc_rev_flag := 'N';
117112    END;
117113    --
117114    IF (l_acc_rev_flag = 'Y') THEN
117115 
117116        -- 4645092  ------------------------------------------------------------------------------
117117        -- To allow MPA report to determine if it should generate report process
117118        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
117119        ------------------------------------------------------------------------------------------
117120 
117121        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
117122        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
117123    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
117124    -- call ADRs
117125    -- Bug 4922099
117126    --
117127    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117128         (NVL(l_actual_upg_option, 'N') = 'O') OR
117129         (NVL(l_enc_upg_option, 'N') = 'O')
117130       )
117131    THEN
117132    NULL;
117133    --
117134    --
117135    
117136   l_ccid := AcctDerRule_40(
117137            p_application_id           => p_application_id
117138          , p_ae_header_id             => l_ae_header_id 
117139 , p_source_1 => p_source_1
117140 , p_source_2 => p_source_2
117141          , x_transaction_coa_id       => l_adr_transaction_coa_id
117142          , x_accounting_coa_id        => l_adr_accounting_coa_id
117143          , x_value_type_code          => l_adr_value_type_code
117144          , p_side                     => 'NA'
117145    );
117146 
117147    xla_ae_lines_pkg.set_ccid(
117148     p_code_combination_id          => l_ccid
117149   , p_value_type_code              => l_adr_value_type_code
117150   , p_transaction_coa_id           => l_adr_transaction_coa_id
117151   , p_accounting_coa_id            => l_adr_accounting_coa_id
117155   , p_component_code               => l_component_code
117152   , p_adr_code                     => 'XTC'
117153   , p_adr_type_code                => 'S'
117154   , p_component_type               => l_component_type
117156   , p_component_type_code          => l_component_type_code
117157   , p_component_appl_id            => l_component_appl_id
117158   , p_amb_context_code             => l_amb_context_code
117159   , p_side                         => 'NA'
117160   );
117161 
117162 
117163    --
117164    --
117165    END IF;
117166 
117167        --
117168        -- Update the line information that should be overwritten
117169        --
117170        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
117171                                          p_header_num   => 1);
117172        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
117173 
117174        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
117175 
117176        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
117177           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
117178        END IF;
117179 
117180       --
117181       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
117182       --
117183       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
117184           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
117185       ELSE
117186           ---------------------------------------------------------------------------------------------------
117187           -- 4262811a Switch Sign
117188           ---------------------------------------------------------------------------------------------------
117189           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
117190           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117191                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117192           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117193                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117194           -- 5132302
117195           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
117196                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117197 
117198       END IF;
117199 
117200       -- 4955764
117201       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117202       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
117203 
117204 
117205       XLA_AE_LINES_PKG.ValidateCurrentLine;
117206       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117207 
117208       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117209                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
117210                ,p_balance_type_code => l_balance_type_code);
117211 
117212    END IF;
117213 
117214    -----------------------------------------------------------------------------------------
117215    -- 4262811 Multiperiod Accounting
117216    -----------------------------------------------------------------------------------------
117217      -- No MPA option is assigned.
117218 
117219 
117220 END IF;
117221 END IF;
117222 --
117223 
117224 --
117225 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117226    trace
117227       (p_msg      => 'END of AcctLineType_243'
117228       ,p_level    => C_LEVEL_PROCEDURE
117229       ,p_module   => l_log_module);
117230 END IF;
117231 --
117232 EXCEPTION
117233   WHEN xla_exceptions_pkg.application_exception THEN
117234       RAISE;
117235   WHEN OTHERS THEN
117236        xla_exceptions_pkg.raise_message
117237            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_243');
117238 END AcctLineType_243;
117239 --
117240 
117241 ---------------------------------------
117242 --
117243 -- PRIVATE FUNCTION
117244 --         AcctLineType_244
117245 --
117246 ---------------------------------------
117247 PROCEDURE AcctLineType_244 (
117248   p_application_id        IN NUMBER
117249  ,p_event_id              IN NUMBER
117250  ,p_calculate_acctd_flag  IN VARCHAR2
117251  ,p_calculate_g_l_flag    IN VARCHAR2
117252  ,p_actual_flag           IN OUT VARCHAR2
117253  ,p_balance_type_code     OUT VARCHAR2
117254  ,p_gain_or_loss_ref      OUT VARCHAR2
117255  
117256 --Transaction Account
117257  , p_source_1            IN NUMBER
117258 --Journal Line Type
117259  , p_source_2            IN VARCHAR2
117260 --Entered Amount
117261  , p_source_3            IN NUMBER
117262 --First Distribution Identifier
117263  , p_source_5            IN NUMBER
117264 --Distribution Type
117265  , p_source_6            IN VARCHAR2
117266 --Currency Code
117267  , p_source_7            IN VARCHAR2
117268 --Currency Conversion Date
117269  , p_source_8            IN DATE
117270 --Currency Conversion Rate
117271  , p_source_9            IN NUMBER
117272 --Currency Conversion Type
117273  , p_source_10            IN VARCHAR2
117274 --Accounted Amount
117275  , p_source_11            IN NUMBER
117276 )
117277 IS
117278 
117282 l_component_appl_id           INTEGER;
117279 l_component_type              VARCHAR2(80);
117280 l_component_code              VARCHAR2(30);
117281 l_component_type_code         VARCHAR2(1);
117283 l_amb_context_code            VARCHAR2(30);
117284 l_entity_code                 VARCHAR2(30);
117285 l_event_class_code            VARCHAR2(30);
117286 l_ae_header_id                NUMBER;
117287 l_event_type_code             VARCHAR2(30);
117288 l_line_definition_code        VARCHAR2(30);
117289 l_line_definition_owner_code  VARCHAR2(1);
117290 --
117291 -- adr variables
117292 l_segment                     VARCHAR2(30);
117293 l_ccid                        NUMBER;
117294 l_adr_transaction_coa_id      NUMBER;
117295 l_adr_accounting_coa_id       NUMBER;
117296 l_adr_flexfield_segment_code  VARCHAR2(30);
117297 l_adr_flex_value_set_id       NUMBER;
117298 l_adr_value_type_code         VARCHAR2(30);
117299 l_adr_value_combination_id    NUMBER;
117300 l_adr_value_segment_code      VARCHAR2(30);
117301 
117302 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
117303 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
117304 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
117305 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
117306 
117307 -- 4262811 Variables ------------------------------------------------------------------------------------------
117308 l_entered_amt_idx             NUMBER;
117309 l_accted_amt_idx              NUMBER;
117310 l_acc_rev_flag                VARCHAR2(1);
117311 l_accrual_line_num            NUMBER;
117312 l_tmp_amt                     NUMBER;
117313 l_acc_rev_natural_side_code   VARCHAR2(1);
117314 
117315 l_num_entries                 NUMBER;
117316 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
117317 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
117318 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
117319 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
117320 l_recog_line_1                NUMBER;
117321 l_recog_line_2                NUMBER;
117322 
117323 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
117324 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
117325 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
117326 
117327 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
117328 
117329 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
117330 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
117331 
117332 ---------------------------------------------------------------------------------------------------------------
117333 
117334 
117335 --
117336 -- bulk performance
117337 --
117338 l_balance_type_code           VARCHAR2(1);
117339 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
117340 l_log_module                  VARCHAR2(240);
117341 
117342 --
117343 -- Upgrade strategy
117344 --
117345 l_actual_upg_option           VARCHAR2(1);
117346 l_enc_upg_option           VARCHAR2(1);
117347 
117348 --
117349 BEGIN
117350 --
117351 IF g_log_enabled THEN
117352       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_244';
117353 END IF;
117354 --
117355 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117356 
117357       trace
117358          (p_msg      => 'BEGIN of AcctLineType_244'
117359          ,p_level    => C_LEVEL_PROCEDURE
117360          ,p_module   => l_log_module);
117361 
117362 END IF;
117363 --
117364 l_component_type             := 'AMB_JLT';
117365 l_component_code             := 'XTC';
117366 l_component_type_code        := 'S';
117367 l_component_appl_id          :=  555;
117368 l_amb_context_code           := 'DEFAULT';
117369 l_entity_code                := 'INVENTORY';
117370 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
117371 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_NO_TP';
117372 l_line_definition_owner_code := 'S';
117373 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP_NO_TP';
117374 --
117375 l_balance_type_code          := 'A';
117376 l_segment                     := NULL;
117377 l_ccid                        := NULL;
117378 l_adr_transaction_coa_id      := NULL;
117379 l_adr_accounting_coa_id       := NULL;
117380 l_adr_flexfield_segment_code  := NULL;
117381 l_adr_flex_value_set_id       := NULL;
117382 l_adr_value_type_code         := NULL;
117383 l_adr_value_combination_id    := NULL;
117384 l_adr_value_segment_code      := NULL;
117385 
117386 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
117387 l_bflow_class_code           := '';    -- 4219869 Business Flow
117388 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
117389 l_budgetary_control_flag     := 'N';
117390 
117391 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
117392 l_bflow_applied_to_amt       := NULL; -- 5132302
117393 l_entered_amt_idx            := NULL;          -- 4262811
117394 l_accted_amt_idx             := NULL;          -- 4262811
117395 l_acc_rev_flag               := NULL;          -- 4262811
117396 l_accrual_line_num           := NULL;          -- 4262811
117397 l_tmp_amt                    := NULL;          -- 4262811
117398 --
117399  
117400 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
117401     l_balance_type_code <> 'B' THEN
117402 IF NVL(p_source_2,'
117406    --
117403 ') =  'XFC'
117404  THEN 
117405 
117407    XLA_AE_LINES_PKG.SetNewLine;
117408 
117409    p_balance_type_code          := l_balance_type_code;
117410    -- set the flag so later we will know whether the gain loss line needs to be created
117411    
117412    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
117413      p_actual_flag :='A';
117414    END IF;
117415 
117416    --
117417    -- bulk performance
117418    --
117419    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
117420                                       p_header_num   => 0); -- 4262811
117421    --
117422    -- set accounting line options
117423    --
117424    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
117425            p_natural_side_code          => 'D'
117426          , p_gain_or_loss_flag          => 'N'
117427          , p_gl_transfer_mode_code      => 'D'
117428          , p_acct_entry_type_code       => 'A'
117429          , p_switch_side_flag           => 'Y'
117430          , p_merge_duplicate_code       => 'W'
117431          );
117432    --
117433    l_acc_rev_natural_side_code := 'C';  -- 4262811
117434    -- 
117435    --
117436    -- set accounting line type info
117437    --
117438    xla_ae_lines_pkg.SetAcctLineType
117439       (p_component_type             => l_component_type
117440       ,p_event_type_code            => l_event_type_code
117441       ,p_line_definition_owner_code => l_line_definition_owner_code
117442       ,p_line_definition_code       => l_line_definition_code
117443       ,p_accounting_line_code       => l_component_code
117444       ,p_accounting_line_type_code  => l_component_type_code
117445       ,p_accounting_line_appl_id    => l_component_appl_id
117446       ,p_amb_context_code           => l_amb_context_code
117447       ,p_entity_code                => l_entity_code
117448       ,p_event_class_code           => l_event_class_code);
117449    --
117450    -- set accounting class
117451    --
117452    xla_ae_lines_pkg.SetAcctClass(
117453            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
117454          , p_ae_header_id           => l_ae_header_id
117455          );
117456 
117457    --
117458    -- set rounding class
117459    --
117460    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
117461                       'INTERORG_TRANSFER_CREDIT';
117462 
117463    --
117464    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
117465    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
117466    --
117467    -- bulk performance
117468    --
117469    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
117470 
117471    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
117472       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
117473 
117474    -- 4955764
117475    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117476       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
117477 
117478    -- 4458381 Public Sector Enh
117479    
117480    --
117481    -- set accounting attributes for the line type
117482    --
117483    l_entered_amt_idx := 3;
117484    l_accted_amt_idx  := 8;
117485    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
117486    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
117487    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
117488    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
117489    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
117490    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
117491    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
117492    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
117493    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
117494    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
117495    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
117496    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
117497    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
117498    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
117499    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
117500    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
117501    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
117502 
117503    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
117504    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
117505 
117506    ---------------------------------------------------------------------------------------------------------------
117507    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
117508    ---------------------------------------------------------------------------------------------------------------
117509    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
117510 
117511    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
117512    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
117513 
117514    IF xla_accounting_cache_pkg.GetValueChar
117515          (p_source_code         => 'LEDGER_CATEGORY_CODE'
117519    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
117516          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
117517    AND l_bflow_method_code = 'PRIOR_ENTRY'
117518 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
117520          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
117521        )
117522    THEN
117523          xla_ae_lines_pkg.BflowUpgEntry
117524            (p_business_method_code    => l_bflow_method_code
117525            ,p_business_class_code     => l_bflow_class_code
117526            ,p_balance_type            => l_balance_type_code);
117527    ELSE
117528       NULL;
117529 -- No business flow processing for business flow method of NONE.
117530    END IF;
117531 
117532    --
117533    -- call analytical criteria
117534    --
117535    
117536    --
117537    -- call description
117538    --
117539    -- No description or it is inherited.
117540    --
117541    -- call ADRs
117542    -- Bug 4922099
117543    --
117544    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117545         (NVL(l_actual_upg_option, 'N') = 'O') OR
117546         (NVL(l_enc_upg_option, 'N') = 'O')
117547       )
117548    THEN
117549    NULL;
117550    --
117551    --
117552    
117553   l_ccid := AcctDerRule_40(
117554            p_application_id           => p_application_id
117555          , p_ae_header_id             => l_ae_header_id 
117556 , p_source_1 => p_source_1
117557 , p_source_2 => p_source_2
117558          , x_transaction_coa_id       => l_adr_transaction_coa_id
117559          , x_accounting_coa_id        => l_adr_accounting_coa_id
117560          , x_value_type_code          => l_adr_value_type_code
117561          , p_side                     => 'NA'
117562    );
117563 
117564    xla_ae_lines_pkg.set_ccid(
117565     p_code_combination_id          => l_ccid
117566   , p_value_type_code              => l_adr_value_type_code
117567   , p_transaction_coa_id           => l_adr_transaction_coa_id
117568   , p_accounting_coa_id            => l_adr_accounting_coa_id
117569   , p_adr_code                     => 'XTC'
117570   , p_adr_type_code                => 'S'
117571   , p_component_type               => l_component_type
117572   , p_component_code               => l_component_code
117573   , p_component_type_code          => l_component_type_code
117574   , p_component_appl_id            => l_component_appl_id
117575   , p_amb_context_code             => l_amb_context_code
117576   , p_side                         => 'NA'
117577   );
117578 
117579 
117580    --
117581    --
117582    END IF;
117583    --
117584    -- Bug 4922099
117585    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
117586           (NVL(l_enc_upg_option, 'N') = 'O')
117587         ) AND
117588         (l_bflow_method_code = 'PRIOR_ENTRY')
117589       )
117590    THEN
117591       IF
117592       --
117593       1 = 2
117594       --
117595       THEN
117596       xla_accounting_err_pkg.build_message
117597                                     (p_appli_s_name            => 'XLA'
117598                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117599                                     ,p_token_1                 => 'LINE_NUMBER'
117600                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
117601                                     ,p_token_2                 => 'LINE_TYPE_NAME'
117602                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
117603                                                                              l_component_type
117604                                                                             ,l_component_code
117605                                                                             ,l_component_type_code
117606                                                                             ,l_component_appl_id
117607                                                                             ,l_amb_context_code
117608                                                                             ,l_entity_code
117609                                                                             ,l_event_class_code
117610                                                                            )
117611                                     ,p_token_3                 => 'OWNER'
117612                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
117613                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
117614                                                                           ,p_lookup_code    => l_component_type_code
117615                                                                          )
117616                                     ,p_token_4                 => 'PRODUCT_NAME'
117617                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
117618                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
117619                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
117620                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
117621                                     ,p_ae_header_id            =>  NULL
117622                                        );
117623 
117624         IF (C_LEVEL_ERROR>= g_log_level) THEN
117625                  trace
117626                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117627                       ,p_level    => C_LEVEL_ERROR
117631    END IF;
117628                       ,p_module   => l_log_module);
117629         END IF;
117630       END IF;
117632    --
117633    --
117634    ------------------------------------------------------------------------------------------------
117635    -- 4219869 Business Flow
117636    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
117637    -- Prior Entry.  Currently, the following code is always generated.
117638    ------------------------------------------------------------------------------------------------
117639    XLA_AE_LINES_PKG.ValidateCurrentLine;
117640 
117641    ------------------------------------------------------------------------------------
117642    -- 4219869 Business Flow
117643    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
117644    ------------------------------------------------------------------------------------
117645    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117646 
117647    ----------------------------------------------------------------------------------
117648    -- 4219869 Business Flow
117649    -- Update journal entry status -- Need to generate this within IF <condition>
117650    ----------------------------------------------------------------------------------
117651    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117652          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
117653          ,p_balance_type_code => l_balance_type_code
117654          );
117655 
117656    -------------------------------------------------------------------------------------------
117657    -- 4262811 - Generate the Accrual Reversal lines
117658    -------------------------------------------------------------------------------------------
117659    BEGIN
117660       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
117661                               (g_array_event(p_event_id).array_value_num('header_index'));
117662       IF l_acc_rev_flag IS NULL THEN
117663          l_acc_rev_flag := 'N';
117664       END IF;
117665    EXCEPTION
117666       WHEN OTHERS THEN
117667          l_acc_rev_flag := 'N';
117668    END;
117669    --
117670    IF (l_acc_rev_flag = 'Y') THEN
117671 
117672        -- 4645092  ------------------------------------------------------------------------------
117673        -- To allow MPA report to determine if it should generate report process
117674        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
117675        ------------------------------------------------------------------------------------------
117676 
117677        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
117678        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
117679    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
117680    -- call ADRs
117681    -- Bug 4922099
117682    --
117683    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117684         (NVL(l_actual_upg_option, 'N') = 'O') OR
117685         (NVL(l_enc_upg_option, 'N') = 'O')
117686       )
117687    THEN
117688    NULL;
117689    --
117690    --
117691    
117692   l_ccid := AcctDerRule_40(
117693            p_application_id           => p_application_id
117694          , p_ae_header_id             => l_ae_header_id 
117695 , p_source_1 => p_source_1
117696 , p_source_2 => p_source_2
117697          , x_transaction_coa_id       => l_adr_transaction_coa_id
117698          , x_accounting_coa_id        => l_adr_accounting_coa_id
117699          , x_value_type_code          => l_adr_value_type_code
117700          , p_side                     => 'NA'
117701    );
117702 
117703    xla_ae_lines_pkg.set_ccid(
117704     p_code_combination_id          => l_ccid
117705   , p_value_type_code              => l_adr_value_type_code
117706   , p_transaction_coa_id           => l_adr_transaction_coa_id
117707   , p_accounting_coa_id            => l_adr_accounting_coa_id
117708   , p_adr_code                     => 'XTC'
117709   , p_adr_type_code                => 'S'
117710   , p_component_type               => l_component_type
117711   , p_component_code               => l_component_code
117712   , p_component_type_code          => l_component_type_code
117713   , p_component_appl_id            => l_component_appl_id
117714   , p_amb_context_code             => l_amb_context_code
117715   , p_side                         => 'NA'
117716   );
117717 
117718 
117719    --
117720    --
117721    END IF;
117722 
117723        --
117724        -- Update the line information that should be overwritten
117725        --
117726        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
117727                                          p_header_num   => 1);
117728        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
117729 
117730        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
117731 
117732        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
117733           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
117734        END IF;
117735 
117736       --
117737       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
117738       --
117739       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
117740           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
117741       ELSE
117745           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
117742           ---------------------------------------------------------------------------------------------------
117743           -- 4262811a Switch Sign
117744           ---------------------------------------------------------------------------------------------------
117746           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117747                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117748           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117749                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117750           -- 5132302
117751           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
117752                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117753 
117754       END IF;
117755 
117756       -- 4955764
117757       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117758       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
117759 
117760 
117761       XLA_AE_LINES_PKG.ValidateCurrentLine;
117762       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117763 
117764       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117765                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
117766                ,p_balance_type_code => l_balance_type_code);
117767 
117768    END IF;
117769 
117770    -----------------------------------------------------------------------------------------
117771    -- 4262811 Multiperiod Accounting
117772    -----------------------------------------------------------------------------------------
117773      -- No MPA option is assigned.
117774 
117775 
117776 END IF;
117777 END IF;
117778 --
117779 
117780 --
117781 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117782    trace
117783       (p_msg      => 'END of AcctLineType_244'
117784       ,p_level    => C_LEVEL_PROCEDURE
117785       ,p_module   => l_log_module);
117786 END IF;
117787 --
117788 EXCEPTION
117789   WHEN xla_exceptions_pkg.application_exception THEN
117790       RAISE;
117791   WHEN OTHERS THEN
117792        xla_exceptions_pkg.raise_message
117793            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_244');
117794 END AcctLineType_244;
117795 --
117796 
117797 ---------------------------------------
117798 --
117799 -- PRIVATE FUNCTION
117800 --         AcctLineType_245
117801 --
117802 ---------------------------------------
117803 PROCEDURE AcctLineType_245 (
117804   p_application_id        IN NUMBER
117805  ,p_event_id              IN NUMBER
117806  ,p_calculate_acctd_flag  IN VARCHAR2
117807  ,p_calculate_g_l_flag    IN VARCHAR2
117808  ,p_actual_flag           IN OUT VARCHAR2
117809  ,p_balance_type_code     OUT VARCHAR2
117810  ,p_gain_or_loss_ref      OUT VARCHAR2
117811  
117812 --Transaction Account
117813  , p_source_1            IN NUMBER
117814 --Journal Line Type
117815  , p_source_2            IN VARCHAR2
117816 --Entered Amount
117817  , p_source_3            IN NUMBER
117818 --First Distribution Identifier
117819  , p_source_5            IN NUMBER
117820 --Distribution Type
117821  , p_source_6            IN VARCHAR2
117822 --Currency Code
117823  , p_source_7            IN VARCHAR2
117824 --Currency Conversion Date
117825  , p_source_8            IN DATE
117826 --Currency Conversion Rate
117827  , p_source_9            IN NUMBER
117828 --Currency Conversion Type
117829  , p_source_10            IN VARCHAR2
117830 --Accounted Amount
117831  , p_source_11            IN NUMBER
117832 )
117833 IS
117834 
117835 l_component_type              VARCHAR2(80);
117836 l_component_code              VARCHAR2(30);
117837 l_component_type_code         VARCHAR2(1);
117838 l_component_appl_id           INTEGER;
117839 l_amb_context_code            VARCHAR2(30);
117840 l_entity_code                 VARCHAR2(30);
117841 l_event_class_code            VARCHAR2(30);
117842 l_ae_header_id                NUMBER;
117843 l_event_type_code             VARCHAR2(30);
117844 l_line_definition_code        VARCHAR2(30);
117845 l_line_definition_owner_code  VARCHAR2(1);
117846 --
117847 -- adr variables
117848 l_segment                     VARCHAR2(30);
117849 l_ccid                        NUMBER;
117850 l_adr_transaction_coa_id      NUMBER;
117851 l_adr_accounting_coa_id       NUMBER;
117852 l_adr_flexfield_segment_code  VARCHAR2(30);
117853 l_adr_flex_value_set_id       NUMBER;
117854 l_adr_value_type_code         VARCHAR2(30);
117855 l_adr_value_combination_id    NUMBER;
117856 l_adr_value_segment_code      VARCHAR2(30);
117857 
117858 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
117859 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
117860 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
117861 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
117862 
117863 -- 4262811 Variables ------------------------------------------------------------------------------------------
117864 l_entered_amt_idx             NUMBER;
117865 l_accted_amt_idx              NUMBER;
117866 l_acc_rev_flag                VARCHAR2(1);
117870 
117867 l_accrual_line_num            NUMBER;
117868 l_tmp_amt                     NUMBER;
117869 l_acc_rev_natural_side_code   VARCHAR2(1);
117871 l_num_entries                 NUMBER;
117872 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
117873 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
117874 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
117875 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
117876 l_recog_line_1                NUMBER;
117877 l_recog_line_2                NUMBER;
117878 
117879 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
117880 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
117881 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
117882 
117883 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
117884 
117885 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
117886 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
117887 
117888 ---------------------------------------------------------------------------------------------------------------
117889 
117890 
117891 --
117892 -- bulk performance
117893 --
117894 l_balance_type_code           VARCHAR2(1);
117895 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
117896 l_log_module                  VARCHAR2(240);
117897 
117898 --
117899 -- Upgrade strategy
117900 --
117901 l_actual_upg_option           VARCHAR2(1);
117902 l_enc_upg_option           VARCHAR2(1);
117903 
117904 --
117905 BEGIN
117906 --
117907 IF g_log_enabled THEN
117908       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_245';
117909 END IF;
117910 --
117911 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117912 
117913       trace
117914          (p_msg      => 'BEGIN of AcctLineType_245'
117915          ,p_level    => C_LEVEL_PROCEDURE
117916          ,p_module   => l_log_module);
117917 
117918 END IF;
117919 --
117920 l_component_type             := 'AMB_JLT';
117921 l_component_code             := 'XTC';
117922 l_component_type_code        := 'S';
117923 l_component_appl_id          :=  555;
117924 l_amb_context_code           := 'DEFAULT';
117925 l_entity_code                := 'INVENTORY';
117926 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
117927 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
117928 l_line_definition_owner_code := 'S';
117929 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
117930 --
117931 l_balance_type_code          := 'A';
117932 l_segment                     := NULL;
117933 l_ccid                        := NULL;
117934 l_adr_transaction_coa_id      := NULL;
117935 l_adr_accounting_coa_id       := NULL;
117936 l_adr_flexfield_segment_code  := NULL;
117937 l_adr_flex_value_set_id       := NULL;
117938 l_adr_value_type_code         := NULL;
117939 l_adr_value_combination_id    := NULL;
117940 l_adr_value_segment_code      := NULL;
117941 
117942 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
117943 l_bflow_class_code           := '';    -- 4219869 Business Flow
117944 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
117945 l_budgetary_control_flag     := 'N';
117946 
117947 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
117948 l_bflow_applied_to_amt       := NULL; -- 5132302
117949 l_entered_amt_idx            := NULL;          -- 4262811
117950 l_accted_amt_idx             := NULL;          -- 4262811
117951 l_acc_rev_flag               := NULL;          -- 4262811
117952 l_accrual_line_num           := NULL;          -- 4262811
117953 l_tmp_amt                    := NULL;          -- 4262811
117954 --
117955  
117956 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
117957     l_balance_type_code <> 'B' THEN
117958 IF NVL(p_source_2,'
117959 ') =  'XFC'
117960  THEN 
117961 
117962    --
117963    XLA_AE_LINES_PKG.SetNewLine;
117964 
117965    p_balance_type_code          := l_balance_type_code;
117966    -- set the flag so later we will know whether the gain loss line needs to be created
117967    
117968    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
117969      p_actual_flag :='A';
117970    END IF;
117971 
117972    --
117973    -- bulk performance
117974    --
117975    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
117976                                       p_header_num   => 0); -- 4262811
117977    --
117978    -- set accounting line options
117979    --
117980    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
117981            p_natural_side_code          => 'D'
117982          , p_gain_or_loss_flag          => 'N'
117983          , p_gl_transfer_mode_code      => 'D'
117984          , p_acct_entry_type_code       => 'A'
117985          , p_switch_side_flag           => 'Y'
117986          , p_merge_duplicate_code       => 'W'
117987          );
117988    --
117989    l_acc_rev_natural_side_code := 'C';  -- 4262811
117990    -- 
117991    --
117992    -- set accounting line type info
117993    --
117994    xla_ae_lines_pkg.SetAcctLineType
117995       (p_component_type             => l_component_type
117996       ,p_event_type_code            => l_event_type_code
117997       ,p_line_definition_owner_code => l_line_definition_owner_code
118001       ,p_accounting_line_appl_id    => l_component_appl_id
117998       ,p_line_definition_code       => l_line_definition_code
117999       ,p_accounting_line_code       => l_component_code
118000       ,p_accounting_line_type_code  => l_component_type_code
118002       ,p_amb_context_code           => l_amb_context_code
118003       ,p_entity_code                => l_entity_code
118004       ,p_event_class_code           => l_event_class_code);
118005    --
118006    -- set accounting class
118007    --
118008    xla_ae_lines_pkg.SetAcctClass(
118009            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
118010          , p_ae_header_id           => l_ae_header_id
118011          );
118012 
118013    --
118014    -- set rounding class
118015    --
118016    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
118017                       'INTERORG_TRANSFER_CREDIT';
118018 
118019    --
118020    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
118021    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
118022    --
118023    -- bulk performance
118024    --
118025    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
118026 
118027    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
118028       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
118029 
118030    -- 4955764
118031    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118032       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
118033 
118034    -- 4458381 Public Sector Enh
118035    
118036    --
118037    -- set accounting attributes for the line type
118038    --
118039    l_entered_amt_idx := 3;
118040    l_accted_amt_idx  := 8;
118041    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
118042    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
118043    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
118044    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
118045    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
118046    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
118047    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
118048    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
118049    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
118050    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
118051    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
118052    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
118053    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
118054    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
118055    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
118056    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
118057    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
118058 
118059    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
118060    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
118061 
118062    ---------------------------------------------------------------------------------------------------------------
118063    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
118064    ---------------------------------------------------------------------------------------------------------------
118065    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
118066 
118067    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118068    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118069 
118070    IF xla_accounting_cache_pkg.GetValueChar
118071          (p_source_code         => 'LEDGER_CATEGORY_CODE'
118072          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
118073    AND l_bflow_method_code = 'PRIOR_ENTRY'
118074 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
118075    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
118076          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
118077        )
118078    THEN
118079          xla_ae_lines_pkg.BflowUpgEntry
118080            (p_business_method_code    => l_bflow_method_code
118081            ,p_business_class_code     => l_bflow_class_code
118082            ,p_balance_type            => l_balance_type_code);
118083    ELSE
118084       NULL;
118085 -- No business flow processing for business flow method of NONE.
118086    END IF;
118087 
118088    --
118089    -- call analytical criteria
118090    --
118091    
118092    --
118093    -- call description
118094    --
118095    -- No description or it is inherited.
118096    --
118097    -- call ADRs
118098    -- Bug 4922099
118099    --
118100    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118101         (NVL(l_actual_upg_option, 'N') = 'O') OR
118102         (NVL(l_enc_upg_option, 'N') = 'O')
118103       )
118104    THEN
118105    NULL;
118106    --
118107    --
118108    
118109   l_ccid := AcctDerRule_40(
118110            p_application_id           => p_application_id
118111          , p_ae_header_id             => l_ae_header_id 
118112 , p_source_1 => p_source_1
118113 , p_source_2 => p_source_2
118114          , x_transaction_coa_id       => l_adr_transaction_coa_id
118118    );
118115          , x_accounting_coa_id        => l_adr_accounting_coa_id
118116          , x_value_type_code          => l_adr_value_type_code
118117          , p_side                     => 'NA'
118119 
118120    xla_ae_lines_pkg.set_ccid(
118121     p_code_combination_id          => l_ccid
118122   , p_value_type_code              => l_adr_value_type_code
118123   , p_transaction_coa_id           => l_adr_transaction_coa_id
118124   , p_accounting_coa_id            => l_adr_accounting_coa_id
118125   , p_adr_code                     => 'XTC'
118126   , p_adr_type_code                => 'S'
118127   , p_component_type               => l_component_type
118128   , p_component_code               => l_component_code
118129   , p_component_type_code          => l_component_type_code
118130   , p_component_appl_id            => l_component_appl_id
118131   , p_amb_context_code             => l_amb_context_code
118132   , p_side                         => 'NA'
118133   );
118134 
118135 
118136    --
118137    --
118138    END IF;
118139    --
118140    -- Bug 4922099
118141    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
118142           (NVL(l_enc_upg_option, 'N') = 'O')
118143         ) AND
118144         (l_bflow_method_code = 'PRIOR_ENTRY')
118145       )
118146    THEN
118147       IF
118148       --
118149       1 = 2
118150       --
118151       THEN
118152       xla_accounting_err_pkg.build_message
118153                                     (p_appli_s_name            => 'XLA'
118154                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118155                                     ,p_token_1                 => 'LINE_NUMBER'
118156                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
118157                                     ,p_token_2                 => 'LINE_TYPE_NAME'
118158                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
118159                                                                              l_component_type
118160                                                                             ,l_component_code
118161                                                                             ,l_component_type_code
118162                                                                             ,l_component_appl_id
118163                                                                             ,l_amb_context_code
118164                                                                             ,l_entity_code
118165                                                                             ,l_event_class_code
118166                                                                            )
118167                                     ,p_token_3                 => 'OWNER'
118168                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
118169                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
118170                                                                           ,p_lookup_code    => l_component_type_code
118171                                                                          )
118172                                     ,p_token_4                 => 'PRODUCT_NAME'
118173                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
118174                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
118175                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
118176                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
118177                                     ,p_ae_header_id            =>  NULL
118178                                        );
118179 
118180         IF (C_LEVEL_ERROR>= g_log_level) THEN
118181                  trace
118182                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118183                       ,p_level    => C_LEVEL_ERROR
118184                       ,p_module   => l_log_module);
118185         END IF;
118186       END IF;
118187    END IF;
118188    --
118189    --
118190    ------------------------------------------------------------------------------------------------
118191    -- 4219869 Business Flow
118192    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
118193    -- Prior Entry.  Currently, the following code is always generated.
118194    ------------------------------------------------------------------------------------------------
118195    XLA_AE_LINES_PKG.ValidateCurrentLine;
118196 
118197    ------------------------------------------------------------------------------------
118198    -- 4219869 Business Flow
118199    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
118200    ------------------------------------------------------------------------------------
118201    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118202 
118203    ----------------------------------------------------------------------------------
118204    -- 4219869 Business Flow
118205    -- Update journal entry status -- Need to generate this within IF <condition>
118206    ----------------------------------------------------------------------------------
118207    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118208          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
118209          ,p_balance_type_code => l_balance_type_code
118210          );
118211 
118215    BEGIN
118212    -------------------------------------------------------------------------------------------
118213    -- 4262811 - Generate the Accrual Reversal lines
118214    -------------------------------------------------------------------------------------------
118216       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
118217                               (g_array_event(p_event_id).array_value_num('header_index'));
118218       IF l_acc_rev_flag IS NULL THEN
118219          l_acc_rev_flag := 'N';
118220       END IF;
118221    EXCEPTION
118222       WHEN OTHERS THEN
118223          l_acc_rev_flag := 'N';
118224    END;
118225    --
118226    IF (l_acc_rev_flag = 'Y') THEN
118227 
118228        -- 4645092  ------------------------------------------------------------------------------
118229        -- To allow MPA report to determine if it should generate report process
118230        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
118231        ------------------------------------------------------------------------------------------
118232 
118233        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
118234        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
118235    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
118236    -- call ADRs
118237    -- Bug 4922099
118238    --
118239    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118240         (NVL(l_actual_upg_option, 'N') = 'O') OR
118241         (NVL(l_enc_upg_option, 'N') = 'O')
118242       )
118243    THEN
118244    NULL;
118245    --
118246    --
118247    
118248   l_ccid := AcctDerRule_40(
118249            p_application_id           => p_application_id
118250          , p_ae_header_id             => l_ae_header_id 
118251 , p_source_1 => p_source_1
118252 , p_source_2 => p_source_2
118253          , x_transaction_coa_id       => l_adr_transaction_coa_id
118254          , x_accounting_coa_id        => l_adr_accounting_coa_id
118255          , x_value_type_code          => l_adr_value_type_code
118256          , p_side                     => 'NA'
118257    );
118258 
118259    xla_ae_lines_pkg.set_ccid(
118260     p_code_combination_id          => l_ccid
118261   , p_value_type_code              => l_adr_value_type_code
118262   , p_transaction_coa_id           => l_adr_transaction_coa_id
118263   , p_accounting_coa_id            => l_adr_accounting_coa_id
118264   , p_adr_code                     => 'XTC'
118265   , p_adr_type_code                => 'S'
118266   , p_component_type               => l_component_type
118267   , p_component_code               => l_component_code
118268   , p_component_type_code          => l_component_type_code
118269   , p_component_appl_id            => l_component_appl_id
118270   , p_amb_context_code             => l_amb_context_code
118271   , p_side                         => 'NA'
118272   );
118273 
118274 
118275    --
118276    --
118277    END IF;
118278 
118279        --
118280        -- Update the line information that should be overwritten
118281        --
118282        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
118283                                          p_header_num   => 1);
118284        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
118285 
118286        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
118287 
118288        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
118289           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
118290        END IF;
118291 
118292       --
118293       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
118294       --
118295       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
118296           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
118297       ELSE
118298           ---------------------------------------------------------------------------------------------------
118299           -- 4262811a Switch Sign
118300           ---------------------------------------------------------------------------------------------------
118301           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
118302           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118303                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118304           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118305                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118306           -- 5132302
118307           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
118308                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118309 
118310       END IF;
118311 
118312       -- 4955764
118313       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118314       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
118315 
118316 
118317       XLA_AE_LINES_PKG.ValidateCurrentLine;
118318       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118319 
118320       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118324    END IF;
118321                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
118322                ,p_balance_type_code => l_balance_type_code);
118323 
118325 
118326    -----------------------------------------------------------------------------------------
118327    -- 4262811 Multiperiod Accounting
118328    -----------------------------------------------------------------------------------------
118329      -- No MPA option is assigned.
118330 
118331 
118332 END IF;
118333 END IF;
118334 --
118335 
118336 --
118337 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118338    trace
118339       (p_msg      => 'END of AcctLineType_245'
118340       ,p_level    => C_LEVEL_PROCEDURE
118341       ,p_module   => l_log_module);
118342 END IF;
118343 --
118344 EXCEPTION
118345   WHEN xla_exceptions_pkg.application_exception THEN
118346       RAISE;
118347   WHEN OTHERS THEN
118348        xla_exceptions_pkg.raise_message
118349            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_245');
118350 END AcctLineType_245;
118351 --
118352 
118353 ---------------------------------------
118354 --
118355 -- PRIVATE FUNCTION
118356 --         AcctLineType_246
118357 --
118358 ---------------------------------------
118359 PROCEDURE AcctLineType_246 (
118360   p_application_id        IN NUMBER
118361  ,p_event_id              IN NUMBER
118362  ,p_calculate_acctd_flag  IN VARCHAR2
118363  ,p_calculate_g_l_flag    IN VARCHAR2
118364  ,p_actual_flag           IN OUT VARCHAR2
118365  ,p_balance_type_code     OUT VARCHAR2
118366  ,p_gain_or_loss_ref      OUT VARCHAR2
118367  
118368 --Transaction Account
118369  , p_source_1            IN NUMBER
118370 --Journal Line Type
118371  , p_source_2            IN VARCHAR2
118372 --Entered Amount
118373  , p_source_3            IN NUMBER
118374 --First Distribution Identifier
118375  , p_source_5            IN NUMBER
118376 --Distribution Type
118377  , p_source_6            IN VARCHAR2
118378 --Currency Code
118379  , p_source_7            IN VARCHAR2
118380 --Currency Conversion Date
118381  , p_source_8            IN DATE
118382 --Currency Conversion Rate
118383  , p_source_9            IN NUMBER
118384 --Currency Conversion Type
118385  , p_source_10            IN VARCHAR2
118386 --Accounted Amount
118387  , p_source_11            IN NUMBER
118388 )
118389 IS
118390 
118391 l_component_type              VARCHAR2(80);
118392 l_component_code              VARCHAR2(30);
118393 l_component_type_code         VARCHAR2(1);
118394 l_component_appl_id           INTEGER;
118395 l_amb_context_code            VARCHAR2(30);
118396 l_entity_code                 VARCHAR2(30);
118397 l_event_class_code            VARCHAR2(30);
118398 l_ae_header_id                NUMBER;
118399 l_event_type_code             VARCHAR2(30);
118400 l_line_definition_code        VARCHAR2(30);
118401 l_line_definition_owner_code  VARCHAR2(1);
118402 --
118403 -- adr variables
118404 l_segment                     VARCHAR2(30);
118405 l_ccid                        NUMBER;
118406 l_adr_transaction_coa_id      NUMBER;
118407 l_adr_accounting_coa_id       NUMBER;
118408 l_adr_flexfield_segment_code  VARCHAR2(30);
118409 l_adr_flex_value_set_id       NUMBER;
118410 l_adr_value_type_code         VARCHAR2(30);
118411 l_adr_value_combination_id    NUMBER;
118412 l_adr_value_segment_code      VARCHAR2(30);
118413 
118414 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
118415 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
118416 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
118417 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
118418 
118419 -- 4262811 Variables ------------------------------------------------------------------------------------------
118420 l_entered_amt_idx             NUMBER;
118421 l_accted_amt_idx              NUMBER;
118422 l_acc_rev_flag                VARCHAR2(1);
118423 l_accrual_line_num            NUMBER;
118424 l_tmp_amt                     NUMBER;
118425 l_acc_rev_natural_side_code   VARCHAR2(1);
118426 
118427 l_num_entries                 NUMBER;
118428 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
118429 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
118430 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
118431 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
118432 l_recog_line_1                NUMBER;
118433 l_recog_line_2                NUMBER;
118434 
118435 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
118436 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
118437 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
118438 
118439 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
118440 
118441 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
118442 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
118443 
118444 ---------------------------------------------------------------------------------------------------------------
118445 
118446 
118447 --
118448 -- bulk performance
118449 --
118450 l_balance_type_code           VARCHAR2(1);
118451 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
118452 l_log_module                  VARCHAR2(240);
118453 
118454 --
118458 l_enc_upg_option           VARCHAR2(1);
118455 -- Upgrade strategy
118456 --
118457 l_actual_upg_option           VARCHAR2(1);
118459 
118460 --
118461 BEGIN
118462 --
118463 IF g_log_enabled THEN
118464       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_246';
118465 END IF;
118466 --
118467 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118468 
118469       trace
118470          (p_msg      => 'BEGIN of AcctLineType_246'
118471          ,p_level    => C_LEVEL_PROCEDURE
118472          ,p_module   => l_log_module);
118473 
118474 END IF;
118475 --
118476 l_component_type             := 'AMB_JLT';
118477 l_component_code             := 'XTC';
118478 l_component_type_code        := 'S';
118479 l_component_appl_id          :=  555;
118480 l_amb_context_code           := 'DEFAULT';
118481 l_entity_code                := 'INVENTORY';
118482 l_event_class_code           := 'DIR_INTERORG_SHIP';
118483 l_event_type_code            := 'DIR_INTERORG_SHIP';
118484 l_line_definition_owner_code := 'S';
118485 l_line_definition_code       := 'DIRECT_XFER_SHIP';
118486 --
118487 l_balance_type_code          := 'A';
118488 l_segment                     := NULL;
118489 l_ccid                        := NULL;
118490 l_adr_transaction_coa_id      := NULL;
118491 l_adr_accounting_coa_id       := NULL;
118492 l_adr_flexfield_segment_code  := NULL;
118493 l_adr_flex_value_set_id       := NULL;
118494 l_adr_value_type_code         := NULL;
118495 l_adr_value_combination_id    := NULL;
118496 l_adr_value_segment_code      := NULL;
118497 
118498 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
118499 l_bflow_class_code           := '';    -- 4219869 Business Flow
118500 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
118501 l_budgetary_control_flag     := 'N';
118502 
118503 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
118504 l_bflow_applied_to_amt       := NULL; -- 5132302
118505 l_entered_amt_idx            := NULL;          -- 4262811
118506 l_accted_amt_idx             := NULL;          -- 4262811
118507 l_acc_rev_flag               := NULL;          -- 4262811
118508 l_accrual_line_num           := NULL;          -- 4262811
118509 l_tmp_amt                    := NULL;          -- 4262811
118510 --
118511  
118512 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
118513     l_balance_type_code <> 'B' THEN
118514 IF NVL(p_source_2,'
118515 ') =  'XFC'
118516  THEN 
118517 
118518    --
118519    XLA_AE_LINES_PKG.SetNewLine;
118520 
118521    p_balance_type_code          := l_balance_type_code;
118522    -- set the flag so later we will know whether the gain loss line needs to be created
118523    
118524    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
118525      p_actual_flag :='A';
118526    END IF;
118527 
118528    --
118529    -- bulk performance
118530    --
118531    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
118532                                       p_header_num   => 0); -- 4262811
118533    --
118534    -- set accounting line options
118535    --
118536    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
118537            p_natural_side_code          => 'D'
118538          , p_gain_or_loss_flag          => 'N'
118539          , p_gl_transfer_mode_code      => 'D'
118540          , p_acct_entry_type_code       => 'A'
118541          , p_switch_side_flag           => 'Y'
118542          , p_merge_duplicate_code       => 'W'
118543          );
118544    --
118545    l_acc_rev_natural_side_code := 'C';  -- 4262811
118546    -- 
118547    --
118548    -- set accounting line type info
118549    --
118550    xla_ae_lines_pkg.SetAcctLineType
118551       (p_component_type             => l_component_type
118552       ,p_event_type_code            => l_event_type_code
118553       ,p_line_definition_owner_code => l_line_definition_owner_code
118554       ,p_line_definition_code       => l_line_definition_code
118555       ,p_accounting_line_code       => l_component_code
118556       ,p_accounting_line_type_code  => l_component_type_code
118557       ,p_accounting_line_appl_id    => l_component_appl_id
118558       ,p_amb_context_code           => l_amb_context_code
118559       ,p_entity_code                => l_entity_code
118560       ,p_event_class_code           => l_event_class_code);
118561    --
118562    -- set accounting class
118563    --
118564    xla_ae_lines_pkg.SetAcctClass(
118565            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
118566          , p_ae_header_id           => l_ae_header_id
118567          );
118568 
118569    --
118570    -- set rounding class
118571    --
118572    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
118573                       'INTERORG_TRANSFER_CREDIT';
118574 
118575    --
118576    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
118577    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
118578    --
118579    -- bulk performance
118580    --
118581    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
118582 
118583    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
118584       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
118585 
118586    -- 4955764
118587    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118591    
118588       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
118589 
118590    -- 4458381 Public Sector Enh
118592    --
118593    -- set accounting attributes for the line type
118594    --
118595    l_entered_amt_idx := 3;
118596    l_accted_amt_idx  := 8;
118597    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
118598    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
118599    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
118600    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
118601    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
118602    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
118603    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
118604    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
118605    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
118606    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
118607    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
118608    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
118609    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
118610    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
118611    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
118612    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
118613    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
118614 
118615    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
118616    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
118617 
118618    ---------------------------------------------------------------------------------------------------------------
118619    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
118620    ---------------------------------------------------------------------------------------------------------------
118621    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
118622 
118623    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118624    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118625 
118626    IF xla_accounting_cache_pkg.GetValueChar
118627          (p_source_code         => 'LEDGER_CATEGORY_CODE'
118628          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
118629    AND l_bflow_method_code = 'PRIOR_ENTRY'
118630 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
118631    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
118632          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
118633        )
118634    THEN
118635          xla_ae_lines_pkg.BflowUpgEntry
118636            (p_business_method_code    => l_bflow_method_code
118637            ,p_business_class_code     => l_bflow_class_code
118638            ,p_balance_type            => l_balance_type_code);
118639    ELSE
118640       NULL;
118641 -- No business flow processing for business flow method of NONE.
118642    END IF;
118643 
118644    --
118645    -- call analytical criteria
118646    --
118647    
118648    --
118649    -- call description
118650    --
118651    -- No description or it is inherited.
118652    --
118653    -- call ADRs
118654    -- Bug 4922099
118655    --
118656    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118657         (NVL(l_actual_upg_option, 'N') = 'O') OR
118658         (NVL(l_enc_upg_option, 'N') = 'O')
118659       )
118660    THEN
118661    NULL;
118662    --
118663    --
118664    
118665   l_ccid := AcctDerRule_40(
118666            p_application_id           => p_application_id
118667          , p_ae_header_id             => l_ae_header_id 
118668 , p_source_1 => p_source_1
118669 , p_source_2 => p_source_2
118670          , x_transaction_coa_id       => l_adr_transaction_coa_id
118671          , x_accounting_coa_id        => l_adr_accounting_coa_id
118672          , x_value_type_code          => l_adr_value_type_code
118673          , p_side                     => 'NA'
118674    );
118675 
118676    xla_ae_lines_pkg.set_ccid(
118677     p_code_combination_id          => l_ccid
118678   , p_value_type_code              => l_adr_value_type_code
118679   , p_transaction_coa_id           => l_adr_transaction_coa_id
118680   , p_accounting_coa_id            => l_adr_accounting_coa_id
118681   , p_adr_code                     => 'XTC'
118682   , p_adr_type_code                => 'S'
118683   , p_component_type               => l_component_type
118684   , p_component_code               => l_component_code
118685   , p_component_type_code          => l_component_type_code
118686   , p_component_appl_id            => l_component_appl_id
118687   , p_amb_context_code             => l_amb_context_code
118688   , p_side                         => 'NA'
118689   );
118690 
118691 
118692    --
118693    --
118694    END IF;
118695    --
118696    -- Bug 4922099
118697    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
118698           (NVL(l_enc_upg_option, 'N') = 'O')
118699         ) AND
118700         (l_bflow_method_code = 'PRIOR_ENTRY')
118701       )
118702    THEN
118703       IF
118704       --
118705       1 = 2
118706       --
118707       THEN
118708       xla_accounting_err_pkg.build_message
118709                                     (p_appli_s_name            => 'XLA'
118710                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118714                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
118711                                     ,p_token_1                 => 'LINE_NUMBER'
118712                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
118713                                     ,p_token_2                 => 'LINE_TYPE_NAME'
118715                                                                              l_component_type
118716                                                                             ,l_component_code
118717                                                                             ,l_component_type_code
118718                                                                             ,l_component_appl_id
118719                                                                             ,l_amb_context_code
118720                                                                             ,l_entity_code
118721                                                                             ,l_event_class_code
118722                                                                            )
118723                                     ,p_token_3                 => 'OWNER'
118724                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
118725                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
118726                                                                           ,p_lookup_code    => l_component_type_code
118727                                                                          )
118728                                     ,p_token_4                 => 'PRODUCT_NAME'
118729                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
118730                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
118731                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
118732                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
118733                                     ,p_ae_header_id            =>  NULL
118734                                        );
118735 
118736         IF (C_LEVEL_ERROR>= g_log_level) THEN
118737                  trace
118738                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118739                       ,p_level    => C_LEVEL_ERROR
118740                       ,p_module   => l_log_module);
118741         END IF;
118742       END IF;
118743    END IF;
118744    --
118745    --
118746    ------------------------------------------------------------------------------------------------
118747    -- 4219869 Business Flow
118748    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
118749    -- Prior Entry.  Currently, the following code is always generated.
118750    ------------------------------------------------------------------------------------------------
118751    XLA_AE_LINES_PKG.ValidateCurrentLine;
118752 
118753    ------------------------------------------------------------------------------------
118754    -- 4219869 Business Flow
118755    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
118756    ------------------------------------------------------------------------------------
118757    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118758 
118759    ----------------------------------------------------------------------------------
118760    -- 4219869 Business Flow
118761    -- Update journal entry status -- Need to generate this within IF <condition>
118762    ----------------------------------------------------------------------------------
118763    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118764          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
118765          ,p_balance_type_code => l_balance_type_code
118766          );
118767 
118768    -------------------------------------------------------------------------------------------
118769    -- 4262811 - Generate the Accrual Reversal lines
118770    -------------------------------------------------------------------------------------------
118771    BEGIN
118772       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
118773                               (g_array_event(p_event_id).array_value_num('header_index'));
118774       IF l_acc_rev_flag IS NULL THEN
118775          l_acc_rev_flag := 'N';
118776       END IF;
118777    EXCEPTION
118778       WHEN OTHERS THEN
118779          l_acc_rev_flag := 'N';
118780    END;
118781    --
118782    IF (l_acc_rev_flag = 'Y') THEN
118783 
118784        -- 4645092  ------------------------------------------------------------------------------
118785        -- To allow MPA report to determine if it should generate report process
118786        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
118787        ------------------------------------------------------------------------------------------
118788 
118789        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
118790        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
118791    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
118792    -- call ADRs
118793    -- Bug 4922099
118794    --
118795    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118796         (NVL(l_actual_upg_option, 'N') = 'O') OR
118797         (NVL(l_enc_upg_option, 'N') = 'O')
118798       )
118799    THEN
118800    NULL;
118801    --
118802    --
118803    
118804   l_ccid := AcctDerRule_40(
118808 , p_source_2 => p_source_2
118805            p_application_id           => p_application_id
118806          , p_ae_header_id             => l_ae_header_id 
118807 , p_source_1 => p_source_1
118809          , x_transaction_coa_id       => l_adr_transaction_coa_id
118810          , x_accounting_coa_id        => l_adr_accounting_coa_id
118811          , x_value_type_code          => l_adr_value_type_code
118812          , p_side                     => 'NA'
118813    );
118814 
118815    xla_ae_lines_pkg.set_ccid(
118816     p_code_combination_id          => l_ccid
118817   , p_value_type_code              => l_adr_value_type_code
118818   , p_transaction_coa_id           => l_adr_transaction_coa_id
118819   , p_accounting_coa_id            => l_adr_accounting_coa_id
118820   , p_adr_code                     => 'XTC'
118821   , p_adr_type_code                => 'S'
118822   , p_component_type               => l_component_type
118823   , p_component_code               => l_component_code
118824   , p_component_type_code          => l_component_type_code
118825   , p_component_appl_id            => l_component_appl_id
118826   , p_amb_context_code             => l_amb_context_code
118827   , p_side                         => 'NA'
118828   );
118829 
118830 
118831    --
118832    --
118833    END IF;
118834 
118835        --
118836        -- Update the line information that should be overwritten
118837        --
118838        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
118839                                          p_header_num   => 1);
118840        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
118841 
118842        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
118843 
118844        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
118845           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
118846        END IF;
118847 
118848       --
118849       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
118850       --
118851       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
118852           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
118853       ELSE
118854           ---------------------------------------------------------------------------------------------------
118855           -- 4262811a Switch Sign
118856           ---------------------------------------------------------------------------------------------------
118857           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
118858           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118859                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118860           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118861                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118862           -- 5132302
118863           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
118864                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118865 
118866       END IF;
118867 
118868       -- 4955764
118869       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118870       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
118871 
118872 
118873       XLA_AE_LINES_PKG.ValidateCurrentLine;
118874       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118875 
118876       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118877                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
118878                ,p_balance_type_code => l_balance_type_code);
118879 
118880    END IF;
118881 
118882    -----------------------------------------------------------------------------------------
118883    -- 4262811 Multiperiod Accounting
118884    -----------------------------------------------------------------------------------------
118885      -- No MPA option is assigned.
118886 
118887 
118888 END IF;
118889 END IF;
118890 --
118891 
118892 --
118893 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118894    trace
118895       (p_msg      => 'END of AcctLineType_246'
118896       ,p_level    => C_LEVEL_PROCEDURE
118897       ,p_module   => l_log_module);
118898 END IF;
118899 --
118900 EXCEPTION
118901   WHEN xla_exceptions_pkg.application_exception THEN
118902       RAISE;
118903   WHEN OTHERS THEN
118904        xla_exceptions_pkg.raise_message
118905            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_246');
118906 END AcctLineType_246;
118907 --
118908 
118909 ---------------------------------------
118910 --
118911 -- PRIVATE FUNCTION
118912 --         AcctLineType_247
118913 --
118914 ---------------------------------------
118915 PROCEDURE AcctLineType_247 (
118916   p_application_id        IN NUMBER
118917  ,p_event_id              IN NUMBER
118918  ,p_calculate_acctd_flag  IN VARCHAR2
118919  ,p_calculate_g_l_flag    IN VARCHAR2
118920  ,p_actual_flag           IN OUT VARCHAR2
118921  ,p_balance_type_code     OUT VARCHAR2
118922  ,p_gain_or_loss_ref      OUT VARCHAR2
118923  
118927  , p_source_2            IN VARCHAR2
118924 --Transaction Account
118925  , p_source_1            IN NUMBER
118926 --Journal Line Type
118928 --Entered Amount
118929  , p_source_3            IN NUMBER
118930 --First Distribution Identifier
118931  , p_source_5            IN NUMBER
118932 --Distribution Type
118933  , p_source_6            IN VARCHAR2
118934 --Currency Code
118935  , p_source_7            IN VARCHAR2
118936 --Currency Conversion Date
118937  , p_source_8            IN DATE
118938 --Currency Conversion Rate
118939  , p_source_9            IN NUMBER
118940 --Currency Conversion Type
118941  , p_source_10            IN VARCHAR2
118942 --Accounted Amount
118943  , p_source_11            IN NUMBER
118944 )
118945 IS
118946 
118947 l_component_type              VARCHAR2(80);
118948 l_component_code              VARCHAR2(30);
118949 l_component_type_code         VARCHAR2(1);
118950 l_component_appl_id           INTEGER;
118951 l_amb_context_code            VARCHAR2(30);
118952 l_entity_code                 VARCHAR2(30);
118953 l_event_class_code            VARCHAR2(30);
118954 l_ae_header_id                NUMBER;
118955 l_event_type_code             VARCHAR2(30);
118956 l_line_definition_code        VARCHAR2(30);
118957 l_line_definition_owner_code  VARCHAR2(1);
118958 --
118959 -- adr variables
118960 l_segment                     VARCHAR2(30);
118961 l_ccid                        NUMBER;
118962 l_adr_transaction_coa_id      NUMBER;
118963 l_adr_accounting_coa_id       NUMBER;
118964 l_adr_flexfield_segment_code  VARCHAR2(30);
118965 l_adr_flex_value_set_id       NUMBER;
118966 l_adr_value_type_code         VARCHAR2(30);
118967 l_adr_value_combination_id    NUMBER;
118968 l_adr_value_segment_code      VARCHAR2(30);
118969 
118970 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
118971 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
118972 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
118973 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
118974 
118975 -- 4262811 Variables ------------------------------------------------------------------------------------------
118976 l_entered_amt_idx             NUMBER;
118977 l_accted_amt_idx              NUMBER;
118978 l_acc_rev_flag                VARCHAR2(1);
118979 l_accrual_line_num            NUMBER;
118980 l_tmp_amt                     NUMBER;
118981 l_acc_rev_natural_side_code   VARCHAR2(1);
118982 
118983 l_num_entries                 NUMBER;
118984 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
118985 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
118986 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
118987 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
118988 l_recog_line_1                NUMBER;
118989 l_recog_line_2                NUMBER;
118990 
118991 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
118992 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
118993 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
118994 
118995 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
118996 
118997 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
118998 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
118999 
119000 ---------------------------------------------------------------------------------------------------------------
119001 
119002 
119003 --
119004 -- bulk performance
119005 --
119006 l_balance_type_code           VARCHAR2(1);
119007 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
119008 l_log_module                  VARCHAR2(240);
119009 
119010 --
119011 -- Upgrade strategy
119012 --
119013 l_actual_upg_option           VARCHAR2(1);
119014 l_enc_upg_option           VARCHAR2(1);
119015 
119016 --
119017 BEGIN
119018 --
119019 IF g_log_enabled THEN
119020       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_247';
119021 END IF;
119022 --
119023 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119024 
119025       trace
119026          (p_msg      => 'BEGIN of AcctLineType_247'
119027          ,p_level    => C_LEVEL_PROCEDURE
119028          ,p_module   => l_log_module);
119029 
119030 END IF;
119031 --
119032 l_component_type             := 'AMB_JLT';
119033 l_component_code             := 'YLD';
119034 l_component_type_code        := 'S';
119035 l_component_appl_id          :=  555;
119036 l_amb_context_code           := 'DEFAULT';
119037 l_entity_code                := 'PRODUCTION';
119038 l_event_class_code           := 'BATCH_CLOSE';
119039 l_event_type_code            := 'CLOS';
119040 l_line_definition_owner_code := 'S';
119041 l_line_definition_code       := 'BATCH_CLOSE';
119042 --
119043 l_balance_type_code          := 'A';
119044 l_segment                     := NULL;
119045 l_ccid                        := NULL;
119046 l_adr_transaction_coa_id      := NULL;
119047 l_adr_accounting_coa_id       := NULL;
119048 l_adr_flexfield_segment_code  := NULL;
119049 l_adr_flex_value_set_id       := NULL;
119050 l_adr_value_type_code         := NULL;
119051 l_adr_value_combination_id    := NULL;
119052 l_adr_value_segment_code      := NULL;
119053 
119054 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
119058 
119055 l_bflow_class_code           := '';    -- 4219869 Business Flow
119056 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
119057 l_budgetary_control_flag     := 'N';
119059 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
119060 l_bflow_applied_to_amt       := NULL; -- 5132302
119061 l_entered_amt_idx            := NULL;          -- 4262811
119062 l_accted_amt_idx             := NULL;          -- 4262811
119063 l_acc_rev_flag               := NULL;          -- 4262811
119064 l_accrual_line_num           := NULL;          -- 4262811
119065 l_tmp_amt                    := NULL;          -- 4262811
119066 --
119067  
119068 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
119069     l_balance_type_code <> 'B' THEN
119070 IF NVL(p_source_2,'
119071 ') =  'YLD'
119072  THEN 
119073 
119074    --
119075    XLA_AE_LINES_PKG.SetNewLine;
119076 
119077    p_balance_type_code          := l_balance_type_code;
119078    -- set the flag so later we will know whether the gain loss line needs to be created
119079    
119080    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
119081      p_actual_flag :='A';
119082    END IF;
119083 
119084    --
119085    -- bulk performance
119086    --
119087    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
119088                                       p_header_num   => 0); -- 4262811
119089    --
119090    -- set accounting line options
119091    --
119092    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
119093            p_natural_side_code          => 'D'
119094          , p_gain_or_loss_flag          => 'N'
119095          , p_gl_transfer_mode_code      => 'D'
119096          , p_acct_entry_type_code       => 'A'
119097          , p_switch_side_flag           => 'Y'
119098          , p_merge_duplicate_code       => 'W'
119099          );
119100    --
119101    l_acc_rev_natural_side_code := 'C';  -- 4262811
119102    -- 
119103    --
119104    -- set accounting line type info
119105    --
119106    xla_ae_lines_pkg.SetAcctLineType
119107       (p_component_type             => l_component_type
119108       ,p_event_type_code            => l_event_type_code
119109       ,p_line_definition_owner_code => l_line_definition_owner_code
119110       ,p_line_definition_code       => l_line_definition_code
119111       ,p_accounting_line_code       => l_component_code
119112       ,p_accounting_line_type_code  => l_component_type_code
119113       ,p_accounting_line_appl_id    => l_component_appl_id
119114       ,p_amb_context_code           => l_amb_context_code
119115       ,p_entity_code                => l_entity_code
119116       ,p_event_class_code           => l_event_class_code);
119117    --
119118    -- set accounting class
119119    --
119120    xla_ae_lines_pkg.SetAcctClass(
119121            p_accounting_class_code  => 'YLD'
119122          , p_ae_header_id           => l_ae_header_id
119123          );
119124 
119125    --
119126    -- set rounding class
119127    --
119128    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
119129                       'YLD';
119130 
119131    --
119132    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
119133    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
119134    --
119135    -- bulk performance
119136    --
119137    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
119138 
119139    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
119140       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
119141 
119142    -- 4955764
119143    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119144       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
119145 
119146    -- 4458381 Public Sector Enh
119147    
119148    --
119149    -- set accounting attributes for the line type
119150    --
119151    l_entered_amt_idx := 3;
119152    l_accted_amt_idx  := 8;
119153    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
119154    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
119155    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_5);
119156    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
119157    l_rec_acct_attrs.array_char_value(2)  := p_source_6;
119158    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
119159    l_rec_acct_attrs.array_num_value(3)  := p_source_3;
119160    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
119161    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
119162    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
119163    l_rec_acct_attrs.array_date_value(5)  := p_source_8;
119164    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
119165    l_rec_acct_attrs.array_num_value(6)  := p_source_9;
119166    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
119167    l_rec_acct_attrs.array_char_value(7)  := p_source_10;
119168    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
119169    l_rec_acct_attrs.array_num_value(8)  := p_source_11;
119170 
119171    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
119172    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
119173 
119174    ---------------------------------------------------------------------------------------------------------------
119178 
119175    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
119176    ---------------------------------------------------------------------------------------------------------------
119177    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
119179    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119180    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119181 
119182    IF xla_accounting_cache_pkg.GetValueChar
119183          (p_source_code         => 'LEDGER_CATEGORY_CODE'
119184          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
119185    AND l_bflow_method_code = 'PRIOR_ENTRY'
119186 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
119187    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
119188          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
119189        )
119190    THEN
119191          xla_ae_lines_pkg.BflowUpgEntry
119192            (p_business_method_code    => l_bflow_method_code
119193            ,p_business_class_code     => l_bflow_class_code
119194            ,p_balance_type            => l_balance_type_code);
119195    ELSE
119196       NULL;
119197 -- No business flow processing for business flow method of NONE.
119198    END IF;
119199 
119200    --
119201    -- call analytical criteria
119202    --
119203    
119204    --
119205    -- call description
119206    --
119207    -- No description or it is inherited.
119208    --
119209    -- call ADRs
119210    -- Bug 4922099
119211    --
119212    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119213         (NVL(l_actual_upg_option, 'N') = 'O') OR
119214         (NVL(l_enc_upg_option, 'N') = 'O')
119215       )
119216    THEN
119217    NULL;
119218    --
119219    --
119220    
119221   l_ccid := AcctDerRule_41(
119222            p_application_id           => p_application_id
119223          , p_ae_header_id             => l_ae_header_id 
119224 , p_source_1 => p_source_1
119225 , p_source_2 => p_source_2
119226          , x_transaction_coa_id       => l_adr_transaction_coa_id
119227          , x_accounting_coa_id        => l_adr_accounting_coa_id
119228          , x_value_type_code          => l_adr_value_type_code
119229          , p_side                     => 'NA'
119230    );
119231 
119232    xla_ae_lines_pkg.set_ccid(
119233     p_code_combination_id          => l_ccid
119234   , p_value_type_code              => l_adr_value_type_code
119235   , p_transaction_coa_id           => l_adr_transaction_coa_id
119236   , p_accounting_coa_id            => l_adr_accounting_coa_id
119237   , p_adr_code                     => 'YLD'
119238   , p_adr_type_code                => 'S'
119239   , p_component_type               => l_component_type
119240   , p_component_code               => l_component_code
119241   , p_component_type_code          => l_component_type_code
119242   , p_component_appl_id            => l_component_appl_id
119243   , p_amb_context_code             => l_amb_context_code
119244   , p_side                         => 'NA'
119245   );
119246 
119247 
119248    --
119249    --
119250    END IF;
119251    --
119252    -- Bug 4922099
119253    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
119254           (NVL(l_enc_upg_option, 'N') = 'O')
119255         ) AND
119256         (l_bflow_method_code = 'PRIOR_ENTRY')
119257       )
119258    THEN
119259       IF
119260       --
119261       1 = 2
119262       --
119263       THEN
119264       xla_accounting_err_pkg.build_message
119265                                     (p_appli_s_name            => 'XLA'
119266                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119267                                     ,p_token_1                 => 'LINE_NUMBER'
119268                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
119269                                     ,p_token_2                 => 'LINE_TYPE_NAME'
119270                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
119271                                                                              l_component_type
119272                                                                             ,l_component_code
119273                                                                             ,l_component_type_code
119274                                                                             ,l_component_appl_id
119275                                                                             ,l_amb_context_code
119276                                                                             ,l_entity_code
119277                                                                             ,l_event_class_code
119278                                                                            )
119279                                     ,p_token_3                 => 'OWNER'
119280                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
119281                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
119282                                                                           ,p_lookup_code    => l_component_type_code
119283                                                                          )
119284                                     ,p_token_4                 => 'PRODUCT_NAME'
119288                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
119285                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
119286                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
119287                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
119289                                     ,p_ae_header_id            =>  NULL
119290                                        );
119291 
119292         IF (C_LEVEL_ERROR>= g_log_level) THEN
119293                  trace
119294                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119295                       ,p_level    => C_LEVEL_ERROR
119296                       ,p_module   => l_log_module);
119297         END IF;
119298       END IF;
119299    END IF;
119300    --
119301    --
119302    ------------------------------------------------------------------------------------------------
119303    -- 4219869 Business Flow
119304    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
119305    -- Prior Entry.  Currently, the following code is always generated.
119306    ------------------------------------------------------------------------------------------------
119307    XLA_AE_LINES_PKG.ValidateCurrentLine;
119308 
119309    ------------------------------------------------------------------------------------
119310    -- 4219869 Business Flow
119311    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
119312    ------------------------------------------------------------------------------------
119313    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119314 
119315    ----------------------------------------------------------------------------------
119316    -- 4219869 Business Flow
119317    -- Update journal entry status -- Need to generate this within IF <condition>
119318    ----------------------------------------------------------------------------------
119319    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119320          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
119321          ,p_balance_type_code => l_balance_type_code
119322          );
119323 
119324    -------------------------------------------------------------------------------------------
119325    -- 4262811 - Generate the Accrual Reversal lines
119326    -------------------------------------------------------------------------------------------
119327    BEGIN
119328       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
119329                               (g_array_event(p_event_id).array_value_num('header_index'));
119330       IF l_acc_rev_flag IS NULL THEN
119331          l_acc_rev_flag := 'N';
119332       END IF;
119333    EXCEPTION
119334       WHEN OTHERS THEN
119335          l_acc_rev_flag := 'N';
119336    END;
119337    --
119338    IF (l_acc_rev_flag = 'Y') THEN
119339 
119340        -- 4645092  ------------------------------------------------------------------------------
119341        -- To allow MPA report to determine if it should generate report process
119342        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
119343        ------------------------------------------------------------------------------------------
119344 
119345        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
119346        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
119347    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
119348    -- call ADRs
119349    -- Bug 4922099
119350    --
119351    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119352         (NVL(l_actual_upg_option, 'N') = 'O') OR
119353         (NVL(l_enc_upg_option, 'N') = 'O')
119354       )
119355    THEN
119356    NULL;
119357    --
119358    --
119359    
119360   l_ccid := AcctDerRule_41(
119361            p_application_id           => p_application_id
119362          , p_ae_header_id             => l_ae_header_id 
119363 , p_source_1 => p_source_1
119364 , p_source_2 => p_source_2
119365          , x_transaction_coa_id       => l_adr_transaction_coa_id
119366          , x_accounting_coa_id        => l_adr_accounting_coa_id
119367          , x_value_type_code          => l_adr_value_type_code
119368          , p_side                     => 'NA'
119369    );
119370 
119371    xla_ae_lines_pkg.set_ccid(
119372     p_code_combination_id          => l_ccid
119373   , p_value_type_code              => l_adr_value_type_code
119374   , p_transaction_coa_id           => l_adr_transaction_coa_id
119375   , p_accounting_coa_id            => l_adr_accounting_coa_id
119376   , p_adr_code                     => 'YLD'
119377   , p_adr_type_code                => 'S'
119378   , p_component_type               => l_component_type
119379   , p_component_code               => l_component_code
119380   , p_component_type_code          => l_component_type_code
119381   , p_component_appl_id            => l_component_appl_id
119382   , p_amb_context_code             => l_amb_context_code
119383   , p_side                         => 'NA'
119384   );
119385 
119386 
119387    --
119388    --
119389    END IF;
119390 
119391        --
119392        -- Update the line information that should be overwritten
119393        --
119394        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
119395                                          p_header_num   => 1);
119399 
119396        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
119397 
119398        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
119400        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
119401           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
119402        END IF;
119403 
119404       --
119405       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
119406       --
119407       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
119408           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
119409       ELSE
119410           ---------------------------------------------------------------------------------------------------
119411           -- 4262811a Switch Sign
119412           ---------------------------------------------------------------------------------------------------
119413           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
119414           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119415                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119416           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119417                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119418           -- 5132302
119419           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
119420                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119421 
119422       END IF;
119423 
119424       -- 4955764
119425       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119426       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
119427 
119428 
119429       XLA_AE_LINES_PKG.ValidateCurrentLine;
119430       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119431 
119432       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119433                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
119434                ,p_balance_type_code => l_balance_type_code);
119435 
119436    END IF;
119437 
119438    -----------------------------------------------------------------------------------------
119439    -- 4262811 Multiperiod Accounting
119440    -----------------------------------------------------------------------------------------
119441      -- No MPA option is assigned.
119442 
119443 
119444 END IF;
119445 END IF;
119446 --
119447 
119448 --
119449 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119450    trace
119451       (p_msg      => 'END of AcctLineType_247'
119452       ,p_level    => C_LEVEL_PROCEDURE
119453       ,p_module   => l_log_module);
119454 END IF;
119455 --
119456 EXCEPTION
119457   WHEN xla_exceptions_pkg.application_exception THEN
119458       RAISE;
119459   WHEN OTHERS THEN
119460        xla_exceptions_pkg.raise_message
119461            (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_247');
119462 END AcctLineType_247;
119463 --
119464 
119465 ---------------------------------------
119466 --
119467 -- PRIVATE PROCEDURE
119468 --         insert_sources_248
119469 --
119470 ----------------------------------------
119471 --
119472 PROCEDURE insert_sources_248(
119473                                 p_target_ledger_id       IN NUMBER
119474                               , p_language               IN VARCHAR2
119475                               , p_sla_ledger_id          IN NUMBER
119476                               , p_pad_start_date         IN DATE
119477                               , p_pad_end_date           IN DATE
119478                          )
119479 IS
119480 
119481 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ACTCOSTADJ';
119482 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'ACTCOSTADJ';
119483 p_apps_owner                   VARCHAR2(30);
119484 l_log_module                   VARCHAR2(240);
119485 BEGIN
119486 IF g_log_enabled THEN
119487       l_log_module := C_DEFAULT_MODULE||'.insert_sources_248';
119488 END IF;
119489 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119490 
119491       trace
119492          (p_msg      => 'BEGIN of insert_sources_248'
119493          ,p_level    => C_LEVEL_PROCEDURE
119494          ,p_module   => l_log_module);
119495 
119496 END IF;
119497 
119498 -- select APPS owner
119499 SELECT oracle_username
119500   INTO p_apps_owner
119501   FROM fnd_oracle_userid
119502  WHERE read_only_flag = 'U'
119503 ;
119504 
119505 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
119506       trace
119507          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
119508                         ' - p_language = '||p_language||
119509                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
119510                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
119511                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
119512                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
119513          ,p_level    => C_LEVEL_STATEMENT
119514          ,p_module   => l_log_module);
119515 END IF;
119516 
119520 (
119517 
119518 --
119519 INSERT INTO xla_diag_sources --hdr1
119521         event_id
119522       , ledger_id
119523       , sla_ledger_id
119524       , description_language
119525       , object_name
119526       , object_type_code
119527       , line_number
119528       , source_application_id
119529       , source_type_code
119530       , source_code
119531       , source_value
119532       , source_meaning
119533       , created_by
119534       , creation_date
119535       , last_update_date
119536       , last_updated_by
119537       , last_update_login
119538       , program_update_date
119539       , program_application_id
119540       , program_id
119541       , request_id
119542 )
119543 SELECT
119544         event_id
119545       , p_target_ledger_id
119546       , p_sla_ledger_id
119547       , p_language
119548       , object_name
119549       , object_type_code
119550       , line_number
119551       , source_application_id
119552       , source_type_code
119553       , source_code
119554       , SUBSTR(source_value ,1,1996)
119555       , SUBSTR(source_meaning,1,200)
119556       , xla_environment_pkg.g_Usr_Id
119557       , TRUNC(SYSDATE)
119558       , TRUNC(SYSDATE)
119559       , xla_environment_pkg.g_Usr_Id
119560       , xla_environment_pkg.g_Login_Id
119561       , TRUNC(SYSDATE)
119562       , xla_environment_pkg.g_Prog_Appl_Id
119563       , xla_environment_pkg.g_Prog_Id
119564       , xla_environment_pkg.g_Req_Id
119565   FROM (
119566        SELECT xet.event_id                  event_id
119567             , 0                             line_number
119568             , CASE r
119569                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
119570                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
119571                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
119572                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
119573                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
119574                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
119575                 
119576                ELSE null
119577               END                           object_name
119578             , CASE r
119579                 WHEN 1 THEN 'HEADER' 
119580                 WHEN 2 THEN 'HEADER' 
119581                 WHEN 3 THEN 'HEADER' 
119582                 WHEN 4 THEN 'HEADER' 
119583                 WHEN 5 THEN 'HEADER' 
119584                 WHEN 6 THEN 'HEADER' 
119585                 
119586                 ELSE null
119587               END                           object_type_code
119588             , CASE r
119589                 WHEN 1 THEN '555' 
119590                 WHEN 2 THEN '555' 
119591                 WHEN 3 THEN '555' 
119592                 WHEN 4 THEN '555' 
119593                 WHEN 5 THEN '555' 
119594                 WHEN 6 THEN '555' 
119595                 
119596                 ELSE null
119597               END                           source_application_id
119598             , 'S'             source_type_code
119599             , CASE r
119600                 WHEN 1 THEN 'ENTITY_CODE' 
119601                 WHEN 2 THEN 'CURRENCY_CODE' 
119602                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
119603                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
119604                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
119605                 WHEN 6 THEN 'TRANSACTION_DATE' 
119606                 
119607                 ELSE null
119608               END                           source_code
119609             , CASE r
119610                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
119611                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
119612                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
119613                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
119614                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
119615                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
119616                 
119617                 ELSE null
119618               END                           source_value
119619             , CASE r
119620                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
119621                           1010186
119622                          ,TO_CHAR(h1.CURRENCY_CODE)
119623                          ,'CURRENCY_CODE'
119624                          ,'S'
119625                          ,555)
119626                 
119627                 ELSE null
119628               END               source_meaning
119629         FROM xla_events_gt     xet  
119630       , GMF_XLA_EXTRACT_HEADERS  h1
119631             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
119632        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
119633          AND xet.event_type_code = C_EVENT_TYPE_CODE
119634             AND h1.event_id = xet.event_id
119635 
119636 )
119637 ;
119638 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
119639 
119640       trace
119641          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
119642          ,p_level    => C_LEVEL_STATEMENT
119643          ,p_module   => l_log_module);
119644 
119645 END IF;
119646 --
119647 
119648 
119649 
119650 --
119651 INSERT INTO xla_diag_sources --line1
119652 (
119653         event_id
119654       , ledger_id
119655       , sla_ledger_id
119656       , description_language
119657       , object_name
119658       , object_type_code
119659       , line_number
119660       , source_application_id
119661       , source_type_code
119665       , created_by
119662       , source_code
119663       , source_value
119664       , source_meaning
119666       , creation_date
119667       , last_update_date
119668       , last_updated_by
119669       , last_update_login
119670       , program_update_date
119671       , program_application_id
119672       , program_id
119673       , request_id
119674 )
119675 SELECT  event_id
119676       , p_target_ledger_id
119677       , p_sla_ledger_id
119678       , p_language
119679       , object_name
119680       , object_type_code
119681       , line_number
119682       , source_application_id
119683       , source_type_code
119684       , source_code
119685       , SUBSTR(source_value,1,1996)
119686       , SUBSTR(source_meaning,1,200)
119687       , xla_environment_pkg.g_Usr_Id
119688       , TRUNC(SYSDATE)
119689       , TRUNC(SYSDATE)
119690       , xla_environment_pkg.g_Usr_Id
119691       , xla_environment_pkg.g_Login_Id
119692       , TRUNC(SYSDATE)
119693       , xla_environment_pkg.g_Prog_Appl_Id
119694       , xla_environment_pkg.g_Prog_Id
119695       , xla_environment_pkg.g_Req_Id
119696   FROM (
119697        SELECT xet.event_id                  event_id
119698             , l2.line_number                 line_number
119699             , CASE r
119700                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
119701                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
119702                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
119703                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
119704                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
119705                 
119706                ELSE null
119707               END                           object_name
119708             , CASE r
119709                 WHEN 1 THEN 'LINE' 
119710                 WHEN 2 THEN 'LINE' 
119711                 WHEN 3 THEN 'LINE' 
119712                 WHEN 4 THEN 'LINE' 
119713                 WHEN 5 THEN 'LINE' 
119714                 
119715                 ELSE null
119716               END                           object_type_code
119717             , CASE r
119718                 WHEN 1 THEN '555' 
119719                 WHEN 2 THEN '555' 
119720                 WHEN 3 THEN '555' 
119721                 WHEN 4 THEN '555' 
119722                 WHEN 5 THEN '555' 
119723                 
119724                 ELSE null
119725               END                           source_application_id
119726             , 'S'             source_type_code
119727             , CASE r
119728                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
119729                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
119730                 WHEN 3 THEN 'ENTERED_AMOUNT' 
119731                 WHEN 4 THEN 'LINE_ID' 
119732                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
119733                 
119734                 ELSE null
119735               END                           source_code
119736             , CASE r
119737                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
119738                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
119739                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
119740                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
119741                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
119742                 
119743                 ELSE null
119744               END                           source_value
119745             , null              source_meaning
119746          FROM  xla_events_gt     xet  
119747         , GMF_XLA_EXTRACT_LINES  l2
119748             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
119749         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
119750           AND xet.event_type_code = C_EVENT_TYPE_CODE
119751             AND l2.event_id          = xet.event_id
119752 
119753 )
119754 ;
119755 --
119756 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
119757 
119758       trace
119759          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
119760          ,p_level    => C_LEVEL_STATEMENT
119761          ,p_module   => l_log_module);
119762 
119763 END IF;
119764 
119765 
119766 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119767       trace
119768          (p_msg      => 'END of insert_sources_248'
119769          ,p_level    => C_LEVEL_PROCEDURE
119770          ,p_module   => l_log_module);
119771 END IF;
119772 EXCEPTION
119773   WHEN xla_exceptions_pkg.application_exception THEN
119774       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
119775             trace
119776                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
119777                ,p_level    => C_LEVEL_EXCEPTION
119778                ,p_module   => l_log_module);
119779       END IF;
119780       RAISE;
119781   WHEN OTHERS THEN
119782       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
119783             trace
119784                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
119785                ,p_level    => C_LEVEL_EXCEPTION
119786                ,p_module   => l_log_module);
119787        END IF;
119788        xla_exceptions_pkg.raise_message
119789            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_248');
119790 END insert_sources_248;
119791 --
119792 
119793 ---------------------------------------
119794 --
119795 -- PRIVATE FUNCTION
119796 --         EventType_248
119797 --
119798 ----------------------------------------
119799 --
119800 FUNCTION EventType_248
119801        (p_application_id         IN NUMBER
119805        ,p_currency_code          IN VARCHAR2
119802        ,p_base_ledger_id         IN NUMBER
119803        ,p_target_ledger_id       IN NUMBER
119804        ,p_language               IN VARCHAR2
119806        ,p_sla_ledger_id          IN NUMBER
119807        ,p_pad_start_date         IN DATE
119808        ,p_pad_end_date           IN DATE
119809        ,p_primary_ledger_id      IN NUMBER)
119810 RETURN BOOLEAN IS
119811 --
119812 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ACTCOSTADJ';
119813 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'ACTCOSTADJ';
119814 
119815 l_calculate_acctd_flag   VARCHAR2(1) :='N';
119816 l_calculate_g_l_flag     VARCHAR2(1) :='N';
119817 --
119818 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
119819 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
119820 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
119821 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
119822 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
119823 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
119824 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
119825 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
119826 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
119827 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
119828 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
119829 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
119830 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
119831 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
119832 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
119833 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
119834 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
119835 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
119836 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
119837 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
119838 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
119839 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
119840 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
119841 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
119842 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
119843 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
119844 
119845 l_event_id                             NUMBER;
119846 l_previous_event_id                    NUMBER;
119847 l_first_event_id                       NUMBER;
119848 l_last_event_id                        NUMBER;
119849 
119850 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
119851 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
119852 --
119853 --
119854 l_result                    BOOLEAN := TRUE;
119855 l_rows                      NUMBER  := 1000;
119856 l_event_type_name           VARCHAR2(80) := 'Actual Cost Adjustment';
119857 l_event_class_name          VARCHAR2(80) := 'Actual Cost Adjustment';
119858 l_description               VARCHAR2(4000);
119859 l_transaction_reversal      NUMBER;
119860 l_ae_header_id              NUMBER;
119861 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
119862 l_log_module                VARCHAR2(240);
119863 --
119864 l_acct_reversal_source      VARCHAR2(30);
119865 l_trx_reversal_source       VARCHAR2(30);
119866 
119867 l_continue_with_lines       BOOLEAN := TRUE;
119868 --
119869 l_acc_rev_gl_date_source    DATE;                      -- 4262811
119870 --
119871 type t_array_event_id is table of number index by binary_integer;
119872 
119873 l_rec_array_event                    t_rec_array_event;
119874 l_null_rec_array_event               t_rec_array_event;
119875 l_array_ae_header_id                 xla_number_array_type;
119876 l_actual_flag                        VARCHAR2(1) := NULL;
119877 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
119878 l_balance_type_code                  VARCHAR2(1) :=NULL;
119879 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
119880 
119881 --
119882 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
119883 --
119884 
119885 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
119886 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
119887 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
119888 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
119889 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
119890 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
119891 
119892 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
119893 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
119894 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
119895 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
119899 l_array_source_7              t_array_source_7;
119896 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
119897 
119898 l_array_source_6              t_array_source_6;
119900 l_array_source_8              t_array_source_8;
119901 l_array_source_9              t_array_source_9;
119902 l_array_source_10              t_array_source_10;
119903 l_array_source_12              t_array_source_12;
119904 
119905 l_array_source_1      t_array_source_1;
119906 l_array_source_2      t_array_source_2;
119907 l_array_source_3      t_array_source_3;
119908 l_array_source_5      t_array_source_5;
119909 l_array_source_11      t_array_source_11;
119910 
119911 --
119912 CURSOR header_cur
119913 IS
119914 SELECT /*+ leading(xet) cardinality(xet,1) */
119915 -- Event Type Code: ACTCOSTADJ
119916 -- Event Class Code: ACTCOSTADJ
119917     xet.entity_id
119918   , xet.legal_entity_id
119919   , xet.entity_code
119920   , xet.transaction_number
119921   , xet.event_id
119922   , xet.event_class_code
119923   , xet.event_type_code
119924   , xet.event_number
119925   , xet.event_date
119926   , xet.transaction_date
119927   , xet.reference_num_1
119928   , xet.reference_num_2
119929   , xet.reference_num_3
119930   , xet.reference_num_4
119931   , xet.reference_char_1
119932   , xet.reference_char_2
119933   , xet.reference_char_3
119934   , xet.reference_char_4
119935   , xet.reference_date_1
119936   , xet.reference_date_2
119937   , xet.reference_date_3
119938   , xet.reference_date_4
119939   , xet.event_created_by
119940   , xet.budgetary_control_flag 
119941   , h1.ENTITY_CODE    source_6
119942   , h1.CURRENCY_CODE    source_7
119943   , h1.CURRENCY_CONVERSION_DATE    source_8
119944   , h1.CURRENCY_CONVERSION_RATE    source_9
119945   , h1.CURRENCY_CONVERSION_TYPE    source_10
119946   , h1.TRANSACTION_DATE    source_12
119947   FROM xla_events_gt     xet 
119948   , GMF_XLA_EXTRACT_HEADERS  h1
119949  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
119950    and xet.event_type_code = C_EVENT_TYPE_CODE
119951    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
119952 
119953  ORDER BY event_id
119954 ;
119955 
119956 
119957 --
119958 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
119959 IS
119960 SELECT /*+ leading(xet) cardinality(xet,1) */
119961 -- Event Type Code: ACTCOSTADJ
119962 -- Event Class Code: ACTCOSTADJ
119963     xet.entity_id
119964    ,xet.legal_entity_id
119965    ,xet.entity_code
119966    ,xet.transaction_number
119967    ,xet.event_id
119968    ,xet.event_class_code
119969    ,xet.event_type_code
119970    ,xet.event_number
119971    ,xet.event_date
119972    ,xet.transaction_date
119973    ,xet.reference_num_1
119974    ,xet.reference_num_2
119975    ,xet.reference_num_3
119976    ,xet.reference_num_4
119977    ,xet.reference_char_1
119978    ,xet.reference_char_2
119979    ,xet.reference_char_3
119980    ,xet.reference_char_4
119981    ,xet.reference_date_1
119982    ,xet.reference_date_2
119983    ,xet.reference_date_3
119984    ,xet.reference_date_4
119985    ,xet.event_created_by
119986    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
119987   , l2.TRANSACTION_ACCOUNT_ID    source_1
119988   , l2.JOURNAL_LINE_TYPE    source_2
119989   , l2.ENTERED_AMOUNT    source_3
119990   , l2.LINE_ID    source_5
119991   , l2.ACCOUNTED_AMOUNT    source_11
119992   FROM xla_events_gt     xet 
119993   , GMF_XLA_EXTRACT_LINES  l2
119994  WHERE xet.event_id between x_first_event_id and x_last_event_id
119995    and xet.event_date between p_pad_start_date and p_pad_end_date
119996    and xet.event_type_code = C_EVENT_TYPE_CODE
119997    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
119998 ;
119999 
120000 --
120001 BEGIN
120002 IF g_log_enabled THEN
120003    l_log_module := C_DEFAULT_MODULE||'.EventType_248';
120004 END IF;
120005 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120006    trace
120007       (p_msg      => 'BEGIN of EventType_248'
120008       ,p_level    => C_LEVEL_PROCEDURE
120009       ,p_module   => l_log_module);
120010 END IF;
120011 
120012 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
120013    trace
120014       (p_msg      => 'p_application_id = '||p_application_id||
120015                      ' - p_base_ledger_id = '||p_base_ledger_id||
120016                      ' - p_target_ledger_id  = '||p_target_ledger_id||
120017                      ' - p_language = '||p_language||
120018                      ' - p_currency_code = '||p_currency_code||
120019                      ' - p_sla_ledger_id = '||p_sla_ledger_id
120020       ,p_level    => C_LEVEL_STATEMENT
120021       ,p_module   => l_log_module);
120022 END IF;
120023 --
120024 -- initialze arrays
120025 --
120026 g_array_event.DELETE;
120027 l_rec_array_event := l_null_rec_array_event;
120028 --
120029 --------------------------------------
120030 -- 4262811 Initialze MPA Line Number
120031 --------------------------------------
120032 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
120033 
120034 --
120035 
120036 --
120037 OPEN header_cur;
120038 --
120039 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
120040    trace
120041    (p_msg      => 'SQL - FETCH header_cur'
120042    ,p_level    => C_LEVEL_STATEMENT
120043    ,p_module   => l_log_module);
120044 END IF;
120045 --
120046 LOOP
120050       , l_array_entity_code
120047 FETCH header_cur BULK COLLECT INTO
120048         l_array_entity_id
120049       , l_array_legal_entity_id
120051       , l_array_transaction_num
120052       , l_array_event_id
120053       , l_array_class_code
120054       , l_array_event_type
120055       , l_array_event_number
120056       , l_array_event_date
120057       , l_array_transaction_date
120058       , l_array_reference_num_1
120059       , l_array_reference_num_2
120060       , l_array_reference_num_3
120061       , l_array_reference_num_4
120062       , l_array_reference_char_1
120063       , l_array_reference_char_2
120064       , l_array_reference_char_3
120065       , l_array_reference_char_4
120066       , l_array_reference_date_1
120067       , l_array_reference_date_2
120068       , l_array_reference_date_3
120069       , l_array_reference_date_4
120070       , l_array_event_created_by
120071       , l_array_budgetary_control_flag 
120072       , l_array_source_6
120073       , l_array_source_7
120074       , l_array_source_8
120075       , l_array_source_9
120076       , l_array_source_10
120077       , l_array_source_12
120078       LIMIT l_rows;
120079 --
120080 IF (C_LEVEL_EVENT >= g_log_level) THEN
120081    trace
120082    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
120083    ,p_level    => C_LEVEL_EVENT
120084    ,p_module   => l_log_module);
120085 END IF;
120086 --
120087 EXIT WHEN l_array_entity_id.COUNT = 0;
120088 
120089 -- initialize arrays
120090 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
120091 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
120092 
120093 --
120094 -- Bug 4458708
120095 --
120096 XLA_AE_LINES_PKG.g_LineNumber := 0;
120097 
120098 
120099 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
120100 g_last_hdr_idx := l_array_event_id.LAST;
120101 --
120102 -- loop for the headers. Each iteration is for each header extract row
120103 -- fetched in header cursor
120104 --
120105 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
120106 
120107 --
120108 -- set event info as cache for other routines to refer event attributes
120109 --
120110 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
120111    (p_application_id           => p_application_id
120112    ,p_primary_ledger_id        => p_primary_ledger_id
120113    ,p_base_ledger_id           => p_base_ledger_id
120114    ,p_target_ledger_id         => p_target_ledger_id
120115    ,p_entity_id                => l_array_entity_id(hdr_idx)
120116    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
120117    ,p_entity_code              => l_array_entity_code(hdr_idx)
120118    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
120119    ,p_event_id                 => l_array_event_id(hdr_idx)
120120    ,p_event_class_code         => l_array_class_code(hdr_idx)
120121    ,p_event_type_code          => l_array_event_type(hdr_idx)
120122    ,p_event_number             => l_array_event_number(hdr_idx)
120123    ,p_event_date               => l_array_event_date(hdr_idx)
120124    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
120125    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
120126    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
120127    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
120128    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
120129    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
120130    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
120131    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
120132    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
120133    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
120134    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
120135    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
120136    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
120137    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
120138    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
120139 
120140 --
120141 -- set the status of entry to C_VALID (0)
120142 --
120143 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
120144 
120145 --
120146 -- initialize a row for ae header
120147 --
120148 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
120149 
120150 l_event_id := l_array_event_id(hdr_idx);
120151 
120152 --
120153 -- storing the hdr_idx for event. May be used by line cursor.
120154 --
120155 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
120156 
120157 --
120158 -- store sources from header extract. This can be improved to
120159 -- store only those sources from header extract that may be used in lines
120160 --
120161 
120162 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
120163 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
120164 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
120165 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
120166 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
120167 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
120168 
120169 --
120170 -- initilaize the status of ae headers for diffrent balance types
120174 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
120171 -- the status is initialised to C_NOT_CREATED (2)
120172 --
120173 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
120175 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
120176 
120177 --
120178 -- call api to validate and store accounting attributes for header
120179 --
120180 
120181 ------------------------------------------------------------
120182 -- Accrual Reversal : to get date for Standard Source (NONE)
120183 ------------------------------------------------------------
120184 l_acc_rev_gl_date_source := NULL;
120185 
120186      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
120187       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
120188 
120189 
120190 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
120191 
120192 XLA_AE_HEADER_PKG.SetJeCategoryName;
120193 
120194 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
120195 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
120196 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
120197 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
120198 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
120199 
120200 
120201 -- No header level analytical criteria
120202 
120203 --
120204 --accounting attribute enhancement, bug 3612931
120205 --
120206 l_trx_reversal_source := SUBSTR(NULL, 1,30);
120207 
120208 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
120209    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
120210 
120211    xla_accounting_err_pkg.build_message
120212       (p_appli_s_name            => 'XLA'
120213       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
120214       ,p_token_1                 => 'ACCT_ATTR_NAME'
120215       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
120216       ,p_token_2                 => 'PRODUCT_NAME'
120217       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
120218       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
120219       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
120220       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
120221 
120222 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
120223    --
120224    -- following sets the accounting attributes needed to reverse
120225    -- accounting for a distributeion
120226    --
120227    xla_ae_lines_pkg.SetTrxReversalAttrs
120228       (p_event_id              => l_event_id
120229       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
120230       ,p_trx_reversal_source   => l_trx_reversal_source);
120231 
120232 END IF;
120233 
120234 
120235 ----------------------------------------------------------------
120236 -- 4262811 -  update the header statuses to invalid in need be
120237 ----------------------------------------------------------------
120238 --
120239 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
120240 
120241 
120242   -----------------------------------------------
120243   -- No accrual reversal for the event class/type
120244   -----------------------------------------------
120245 ----------------------------------------------------------------
120246 
120247 --
120248 -- this ends the header loop iteration for one bulk fetch
120249 --
120250 END LOOP;
120251 
120252 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
120253 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
120254 
120255 --
120256 -- insert dummy rows into lines gt table that were created due to
120257 -- transaction reversals
120258 --
120259 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
120260    l_result := XLA_AE_LINES_PKG.InsertLines;
120261 END IF;
120262 
120263 --
120264 -- reset the temp_line_num for each set of events fetched from header
120265 -- cursor rather than doing it for each new event in line cursor
120266 -- Bug 3939231
120267 --
120268 xla_ae_lines_pkg.g_temp_line_num := 0;
120269 
120270 
120271 
120272 --
120273 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
120274 --
120275 --
120276 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
120277 
120278       trace
120279          (p_msg      => 'SQL - FETCH line_cur'
120280          ,p_level    => C_LEVEL_STATEMENT
120281          ,p_module   => l_log_module);
120282 
120283 END IF;
120284 --
120285 --
120286 LOOP
120287   --
120288   FETCH line_cur BULK COLLECT INTO
120289         l_array_entity_id
120290       , l_array_legal_entity_id
120291       , l_array_entity_code
120292       , l_array_transaction_num
120293       , l_array_event_id
120294       , l_array_class_code
120295       , l_array_event_type
120296       , l_array_event_number
120297       , l_array_event_date
120298       , l_array_transaction_date
120299       , l_array_reference_num_1
120300       , l_array_reference_num_2
120301       , l_array_reference_num_3
120302       , l_array_reference_num_4
120303       , l_array_reference_char_1
120304       , l_array_reference_char_2
120308       , l_array_reference_date_2
120305       , l_array_reference_char_3
120306       , l_array_reference_char_4
120307       , l_array_reference_date_1
120309       , l_array_reference_date_3
120310       , l_array_reference_date_4
120311       , l_array_event_created_by
120312       , l_array_budgetary_control_flag
120313       , l_array_extract_line_num 
120314       , l_array_source_1
120315       , l_array_source_2
120316       , l_array_source_3
120317       , l_array_source_5
120318       , l_array_source_11
120319       LIMIT l_rows;
120320 
120321   --
120322   IF (C_LEVEL_EVENT >= g_log_level) THEN
120323             trace
120324                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
120325                ,p_level    => C_LEVEL_EVENT
120326                ,p_module   => l_log_module);
120327   END IF;
120328   --
120329   EXIT WHEN l_array_entity_id.count = 0;
120330 
120331   XLA_AE_LINES_PKG.g_rec_lines := null;
120332 
120333 --
120334 -- Bug 4458708
120335 --
120336 XLA_AE_LINES_PKG.g_LineNumber := 0;
120337 --
120338 --
120339 
120340 FOR Idx IN 1..l_array_event_id.count LOOP
120341    --
120342    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
120343    --
120344    l_event_id := l_array_event_id(idx);  -- 5648433
120345 
120346    --
120347    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
120348    --
120349 
120350    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
120351              (g_array_event(l_event_id).array_value_num('header_index'))
120352          ,'N'
120353          ) <> 'Y'
120354    THEN
120355       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
120356          trace
120357             (p_msg      => 'Trancaction revesal option is not Y '
120358             ,p_level    => C_LEVEL_STATEMENT
120359             ,p_module   => l_log_module);
120360       END IF;
120361 
120362 --
120363 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
120364 --
120365 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
120366 --
120367 -- set event info as cache for other routines to refer event attributes
120368 --
120369 
120370 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
120371    l_previous_event_id := l_event_id;
120372 
120373    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
120374       (p_application_id           => p_application_id
120375       ,p_primary_ledger_id        => p_primary_ledger_id
120376       ,p_base_ledger_id           => p_base_ledger_id
120377       ,p_target_ledger_id         => p_target_ledger_id
120378       ,p_entity_id                => l_array_entity_id(Idx)
120379       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
120380       ,p_entity_code              => l_array_entity_code(Idx)
120381       ,p_transaction_num          => l_array_transaction_num(Idx)
120382       ,p_event_id                 => l_array_event_id(Idx)
120383       ,p_event_class_code         => l_array_class_code(Idx)
120384       ,p_event_type_code          => l_array_event_type(Idx)
120385       ,p_event_number             => l_array_event_number(Idx)
120386       ,p_event_date               => l_array_event_date(Idx)
120387       ,p_transaction_date         => l_array_transaction_date(Idx)
120388       ,p_reference_num_1          => l_array_reference_num_1(Idx)
120389       ,p_reference_num_2          => l_array_reference_num_2(Idx)
120390       ,p_reference_num_3          => l_array_reference_num_3(Idx)
120391       ,p_reference_num_4          => l_array_reference_num_4(Idx)
120392       ,p_reference_char_1         => l_array_reference_char_1(Idx)
120393       ,p_reference_char_2         => l_array_reference_char_2(Idx)
120394       ,p_reference_char_3         => l_array_reference_char_3(Idx)
120395       ,p_reference_char_4         => l_array_reference_char_4(Idx)
120396       ,p_reference_date_1         => l_array_reference_date_1(Idx)
120397       ,p_reference_date_2         => l_array_reference_date_2(Idx)
120398       ,p_reference_date_3         => l_array_reference_date_3(Idx)
120399       ,p_reference_date_4         => l_array_reference_date_4(Idx)
120400       ,p_event_created_by         => l_array_event_created_by(Idx)
120401       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
120402        --
120403 END IF;
120404 
120405 
120406 
120407 --
120408 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
120409 
120410 l_acct_reversal_source := SUBSTR(NULL, 1,30);
120411 
120412 IF l_continue_with_lines THEN
120413    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
120414       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
120415 
120416       xla_accounting_err_pkg.build_message
120417          (p_appli_s_name            => 'XLA'
120418          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
120419          ,p_token_1                 => 'LINE_NUMBER'
120420          ,p_value_1                 => l_array_extract_line_num(Idx)
120421          ,p_token_2                 => 'PRODUCT_NAME'
120422          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
120423          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
120424          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
120425          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
120426 
120430       -- accounting for a distributeion
120427    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
120428       --
120429       -- following sets the accounting attributes needed to reverse
120431       --
120432 
120433       --
120434       -- 5217187
120435       --
120436       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
120437       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
120438                                        g_array_event(l_event_id).array_value_num('header_index'));
120439       --
120440       --
120441 
120442       -- No reversal code generated
120443 
120444       xla_ae_lines_pkg.SetAcctReversalAttrs
120445          (p_event_id             => l_event_id
120446          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
120447          ,p_calculate_acctd_flag => l_calculate_acctd_flag
120448          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
120449    END IF;
120450 
120451    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
120452        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
120453 
120454 --
120455 AcctLineType_62 (
120456  p_application_id  => p_application_id
120457  ,p_event_id     => l_event_id
120458  ,p_calculate_acctd_flag => l_calculate_acctd_flag
120459  ,p_calculate_g_l_flag => l_calculate_g_l_flag
120460  ,p_actual_flag => l_actual_flag
120461  ,p_balance_type_code => l_balance_type_code
120462  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
120463  
120464  , p_source_1 => l_array_source_1(Idx)
120465  , p_source_2 => l_array_source_2(Idx)
120466  , p_source_3 => l_array_source_3(Idx)
120467  , p_source_5 => l_array_source_5(Idx)
120468  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
120469  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
120470  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
120471  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
120472  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
120473  , p_source_11 => l_array_source_11(Idx)
120474  );
120475 If(l_balance_type_code = 'A') THEN
120476   l_actual_gain_loss_ref := l_gain_or_loss_ref;
120477 END IF;
120478 
120479 --
120480 
120481 
120482 --
120483 AcctLineType_149 (
120484  p_application_id  => p_application_id
120485  ,p_event_id     => l_event_id
120486  ,p_calculate_acctd_flag => l_calculate_acctd_flag
120487  ,p_calculate_g_l_flag => l_calculate_g_l_flag
120488  ,p_actual_flag => l_actual_flag
120489  ,p_balance_type_code => l_balance_type_code
120490  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
120491  
120492  , p_source_1 => l_array_source_1(Idx)
120493  , p_source_2 => l_array_source_2(Idx)
120494  , p_source_3 => l_array_source_3(Idx)
120495  , p_source_5 => l_array_source_5(Idx)
120496  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
120497  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
120498  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
120499  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
120500  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
120501  , p_source_11 => l_array_source_11(Idx)
120502  );
120503 If(l_balance_type_code = 'A') THEN
120504   l_actual_gain_loss_ref := l_gain_or_loss_ref;
120505 END IF;
120506 
120507 --
120508 
120509       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
120510       -- or secondary ledger that has different currency with primary
120511       -- or alc that is calculated by sla
120512       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
120513             (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'))
120514 
120515 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
120516 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
120517           AND (l_actual_flag = 'A')) THEN
120518         XLA_AE_LINES_PKG.CreateGainOrLossLines(
120519           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
120520          ,p_application_id   => p_application_id
120521          ,p_amb_context_code => 'DEFAULT'
120522          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
120523          ,p_event_class_code => C_EVENT_CLASS_CODE
120524          ,p_event_type_code  => C_EVENT_TYPE_CODE
120525          
120526          ,p_gain_ccid        => -1
120527          ,p_loss_ccid        => -1
120528 
120529          ,p_actual_flag      => l_actual_flag
120530          ,p_enc_flag         => null
120531          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
120532          ,p_enc_g_l_ref      => null
120533          );
120534       END IF;
120535    END IF;
120536 END IF;
120537 
120538    ELSE
120539       --
120540       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
120541       --
120542       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
120543          trace
120544             (p_msg      => 'Trancaction revesal option is Y'
120545             ,p_level    => C_LEVEL_STATEMENT
120546             ,p_module   => l_log_module);
120547       END IF;
120548    END IF;
120549 
120550 END LOOP;
120551 l_result := XLA_AE_LINES_PKG.InsertLines ;
120555 
120552 end loop;
120553 close line_cur;
120554 
120556 --
120557 -- insert headers into xla_ae_headers_gt table
120558 --
120559 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
120560 
120561 -- insert into errors table here.
120562 
120563 END LOOP;
120564 
120565 --
120566 -- 4865292
120567 --
120568 -- Compare g_hdr_extract_count with event count in
120569 -- CreateHeadersAndLines.
120570 --
120571 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
120572 
120573 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
120574    trace (p_msg     => '# rows extracted from header extract objects '
120575                     || ' (running total): '
120576                     || g_hdr_extract_count
120577          ,p_level   => C_LEVEL_STATEMENT
120578          ,p_module  => l_log_module);
120579 END IF;
120580 
120581 CLOSE header_cur;
120582 --
120583 
120584 --
120585 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120586    trace
120587       (p_msg      => 'END of EventType_248'
120588       ,p_level    => C_LEVEL_PROCEDURE
120589       ,p_module   => l_log_module);
120590 END IF;
120591 --
120592 RETURN l_result;
120593 EXCEPTION
120594 WHEN xla_exceptions_pkg.application_exception THEN
120595    
120596 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
120597 
120598    
120599 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
120600 
120601    RAISE;
120602 
120603 WHEN NO_DATA_FOUND THEN
120604 
120605 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
120606 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
120607 
120608 FOR header_record IN header_cur
120609 LOOP
120610     l_array_header_events(header_record.event_id) := header_record.event_id;
120611 END LOOP;
120612 
120613 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
120614 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
120615 
120616 fnd_file.put_line(fnd_file.LOG, '                    ');
120617 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
120618 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
120619 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
120620 
120621 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
120622 LOOP
120623 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
120624 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
120625         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
120626 	END IF;
120627 END LOOP;
120628 
120629 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
120630 fnd_file.put_line(fnd_file.LOG, '                    ');
120631 
120632 
120633 xla_exceptions_pkg.raise_message
120634       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_248');
120635 
120636 
120637 WHEN OTHERS THEN
120638    xla_exceptions_pkg.raise_message
120639       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_248');
120640 END EventType_248;
120641 --
120642 
120643 ---------------------------------------
120644 --
120645 -- PRIVATE PROCEDURE
120646 --         insert_sources_249
120647 --
120648 ----------------------------------------
120649 --
120650 PROCEDURE insert_sources_249(
120651                                 p_target_ledger_id       IN NUMBER
120652                               , p_language               IN VARCHAR2
120653                               , p_sla_ledger_id          IN NUMBER
120654                               , p_pad_start_date         IN DATE
120655                               , p_pad_end_date           IN DATE
120656                          )
120657 IS
120658 
120659 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ADJUST_DELIVER';
120660 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RECEIVE';
120661 p_apps_owner                   VARCHAR2(30);
120662 l_log_module                   VARCHAR2(240);
120663 BEGIN
120664 IF g_log_enabled THEN
120665       l_log_module := C_DEFAULT_MODULE||'.insert_sources_249';
120666 END IF;
120667 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120668 
120669       trace
120670          (p_msg      => 'BEGIN of insert_sources_249'
120671          ,p_level    => C_LEVEL_PROCEDURE
120672          ,p_module   => l_log_module);
120673 
120674 END IF;
120675 
120676 -- select APPS owner
120677 SELECT oracle_username
120678   INTO p_apps_owner
120679   FROM fnd_oracle_userid
120680  WHERE read_only_flag = 'U'
120681 ;
120682 
120683 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
120684       trace
120685          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
120686                         ' - p_language = '||p_language||
120687                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
120688                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
120689                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
120690                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
120691          ,p_level    => C_LEVEL_STATEMENT
120692          ,p_module   => l_log_module);
120693 END IF;
120694 
120695 
120696 --
120697 INSERT INTO xla_diag_sources --hdr1
120698 (
120699         event_id
120703       , object_name
120700       , ledger_id
120701       , sla_ledger_id
120702       , description_language
120704       , object_type_code
120705       , line_number
120706       , source_application_id
120707       , source_type_code
120708       , source_code
120709       , source_value
120710       , source_meaning
120711       , created_by
120712       , creation_date
120713       , last_update_date
120714       , last_updated_by
120715       , last_update_login
120716       , program_update_date
120717       , program_application_id
120718       , program_id
120719       , request_id
120720 )
120721 SELECT
120722         event_id
120723       , p_target_ledger_id
120724       , p_sla_ledger_id
120725       , p_language
120726       , object_name
120727       , object_type_code
120728       , line_number
120729       , source_application_id
120730       , source_type_code
120731       , source_code
120732       , SUBSTR(source_value ,1,1996)
120733       , SUBSTR(source_meaning,1,200)
120734       , xla_environment_pkg.g_Usr_Id
120735       , TRUNC(SYSDATE)
120736       , TRUNC(SYSDATE)
120737       , xla_environment_pkg.g_Usr_Id
120738       , xla_environment_pkg.g_Login_Id
120739       , TRUNC(SYSDATE)
120740       , xla_environment_pkg.g_Prog_Appl_Id
120741       , xla_environment_pkg.g_Prog_Id
120742       , xla_environment_pkg.g_Req_Id
120743   FROM (
120744        SELECT xet.event_id                  event_id
120745             , 0                             line_number
120746             , CASE r
120747                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
120748                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
120749                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
120750                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
120751                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
120752                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
120753                 
120754                ELSE null
120755               END                           object_name
120756             , CASE r
120757                 WHEN 1 THEN 'HEADER' 
120758                 WHEN 2 THEN 'HEADER' 
120759                 WHEN 3 THEN 'HEADER' 
120760                 WHEN 4 THEN 'HEADER' 
120761                 WHEN 5 THEN 'HEADER' 
120762                 WHEN 6 THEN 'HEADER' 
120763                 
120764                 ELSE null
120765               END                           object_type_code
120766             , CASE r
120767                 WHEN 1 THEN '555' 
120768                 WHEN 2 THEN '555' 
120769                 WHEN 3 THEN '555' 
120770                 WHEN 4 THEN '555' 
120771                 WHEN 5 THEN '555' 
120772                 WHEN 6 THEN '555' 
120773                 
120774                 ELSE null
120775               END                           source_application_id
120776             , 'S'             source_type_code
120777             , CASE r
120778                 WHEN 1 THEN 'ENTITY_CODE' 
120779                 WHEN 2 THEN 'CURRENCY_CODE' 
120780                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
120781                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
120782                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
120783                 WHEN 6 THEN 'TRANSACTION_DATE' 
120784                 
120785                 ELSE null
120786               END                           source_code
120787             , CASE r
120788                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
120789                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
120790                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
120791                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
120792                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
120793                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
120794                 
120795                 ELSE null
120796               END                           source_value
120797             , CASE r
120798                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
120799                           1010186
120800                          ,TO_CHAR(h1.CURRENCY_CODE)
120801                          ,'CURRENCY_CODE'
120802                          ,'S'
120803                          ,555)
120804                 
120805                 ELSE null
120806               END               source_meaning
120807         FROM xla_events_gt     xet  
120808       , GMF_XLA_EXTRACT_HEADERS  h1
120809             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
120810        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
120811          AND xet.event_type_code = C_EVENT_TYPE_CODE
120812             AND h1.event_id = xet.event_id
120813 
120814 )
120815 ;
120816 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
120817 
120818       trace
120819          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
120820          ,p_level    => C_LEVEL_STATEMENT
120821          ,p_module   => l_log_module);
120822 
120823 END IF;
120824 --
120825 
120826 
120827 
120828 --
120829 INSERT INTO xla_diag_sources --line1
120830 (
120831         event_id
120832       , ledger_id
120833       , sla_ledger_id
120834       , description_language
120835       , object_name
120836       , object_type_code
120837       , line_number
120838       , source_application_id
120839       , source_type_code
120840       , source_code
120841       , source_value
120842       , source_meaning
120843       , created_by
120844       , creation_date
120848       , program_update_date
120845       , last_update_date
120846       , last_updated_by
120847       , last_update_login
120849       , program_application_id
120850       , program_id
120851       , request_id
120852 )
120853 SELECT  event_id
120854       , p_target_ledger_id
120855       , p_sla_ledger_id
120856       , p_language
120857       , object_name
120858       , object_type_code
120859       , line_number
120860       , source_application_id
120861       , source_type_code
120862       , source_code
120863       , SUBSTR(source_value,1,1996)
120864       , SUBSTR(source_meaning,1,200)
120865       , xla_environment_pkg.g_Usr_Id
120866       , TRUNC(SYSDATE)
120867       , TRUNC(SYSDATE)
120868       , xla_environment_pkg.g_Usr_Id
120869       , xla_environment_pkg.g_Login_Id
120870       , TRUNC(SYSDATE)
120871       , xla_environment_pkg.g_Prog_Appl_Id
120872       , xla_environment_pkg.g_Prog_Id
120873       , xla_environment_pkg.g_Req_Id
120874   FROM (
120875        SELECT xet.event_id                  event_id
120876             , l2.line_number                 line_number
120877             , CASE r
120878                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
120879                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
120880                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
120881                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
120882                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
120883                 
120884                ELSE null
120885               END                           object_name
120886             , CASE r
120887                 WHEN 1 THEN 'LINE' 
120888                 WHEN 2 THEN 'LINE' 
120889                 WHEN 3 THEN 'LINE' 
120890                 WHEN 4 THEN 'LINE' 
120891                 WHEN 5 THEN 'LINE' 
120892                 
120893                 ELSE null
120894               END                           object_type_code
120895             , CASE r
120896                 WHEN 1 THEN '555' 
120897                 WHEN 2 THEN '555' 
120898                 WHEN 3 THEN '555' 
120899                 WHEN 4 THEN '555' 
120900                 WHEN 5 THEN '555' 
120901                 
120902                 ELSE null
120903               END                           source_application_id
120904             , 'S'             source_type_code
120905             , CASE r
120906                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
120907                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
120908                 WHEN 3 THEN 'ENTERED_AMOUNT' 
120909                 WHEN 4 THEN 'LINE_ID' 
120910                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
120911                 
120912                 ELSE null
120913               END                           source_code
120914             , CASE r
120915                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
120916                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
120917                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
120918                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
120919                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
120920                 
120921                 ELSE null
120922               END                           source_value
120923             , null              source_meaning
120924          FROM  xla_events_gt     xet  
120925         , GMF_XLA_EXTRACT_LINES  l2
120926             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
120927         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
120928           AND xet.event_type_code = C_EVENT_TYPE_CODE
120929             AND l2.event_id          = xet.event_id
120930 
120931 )
120932 ;
120933 --
120934 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
120935 
120936       trace
120937          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
120938          ,p_level    => C_LEVEL_STATEMENT
120939          ,p_module   => l_log_module);
120940 
120941 END IF;
120942 
120943 
120944 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120945       trace
120946          (p_msg      => 'END of insert_sources_249'
120947          ,p_level    => C_LEVEL_PROCEDURE
120948          ,p_module   => l_log_module);
120949 END IF;
120950 EXCEPTION
120951   WHEN xla_exceptions_pkg.application_exception THEN
120952       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
120953             trace
120954                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
120955                ,p_level    => C_LEVEL_EXCEPTION
120956                ,p_module   => l_log_module);
120957       END IF;
120958       RAISE;
120959   WHEN OTHERS THEN
120960       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
120961             trace
120962                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
120963                ,p_level    => C_LEVEL_EXCEPTION
120964                ,p_module   => l_log_module);
120965        END IF;
120966        xla_exceptions_pkg.raise_message
120967            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_249');
120968 END insert_sources_249;
120969 --
120970 
120971 ---------------------------------------
120972 --
120973 -- PRIVATE FUNCTION
120974 --         EventType_249
120975 --
120976 ----------------------------------------
120977 --
120978 FUNCTION EventType_249
120979        (p_application_id         IN NUMBER
120980        ,p_base_ledger_id         IN NUMBER
120981        ,p_target_ledger_id       IN NUMBER
120982        ,p_language               IN VARCHAR2
120983        ,p_currency_code          IN VARCHAR2
120987        ,p_primary_ledger_id      IN NUMBER)
120984        ,p_sla_ledger_id          IN NUMBER
120985        ,p_pad_start_date         IN DATE
120986        ,p_pad_end_date           IN DATE
120988 RETURN BOOLEAN IS
120989 --
120990 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ADJUST_DELIVER';
120991 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RECEIVE';
120992 
120993 l_calculate_acctd_flag   VARCHAR2(1) :='N';
120994 l_calculate_g_l_flag     VARCHAR2(1) :='N';
120995 --
120996 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
120997 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
120998 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
120999 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
121000 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
121001 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
121002 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
121003 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
121004 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
121005 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
121006 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
121007 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
121008 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
121009 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
121010 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
121011 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
121012 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
121013 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
121014 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
121015 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
121016 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
121017 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
121018 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
121019 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
121020 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
121021 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
121022 
121023 l_event_id                             NUMBER;
121024 l_previous_event_id                    NUMBER;
121025 l_first_event_id                       NUMBER;
121026 l_last_event_id                        NUMBER;
121027 
121028 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
121029 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
121030 --
121031 --
121032 l_result                    BOOLEAN := TRUE;
121033 l_rows                      NUMBER  := 1000;
121034 l_event_type_name           VARCHAR2(80) := 'Adjust Deliver';
121035 l_event_class_name          VARCHAR2(80) := 'Receiving';
121036 l_description               VARCHAR2(4000);
121037 l_transaction_reversal      NUMBER;
121038 l_ae_header_id              NUMBER;
121039 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
121040 l_log_module                VARCHAR2(240);
121041 --
121042 l_acct_reversal_source      VARCHAR2(30);
121043 l_trx_reversal_source       VARCHAR2(30);
121044 
121045 l_continue_with_lines       BOOLEAN := TRUE;
121046 --
121047 l_acc_rev_gl_date_source    DATE;                      -- 4262811
121048 --
121049 type t_array_event_id is table of number index by binary_integer;
121050 
121051 l_rec_array_event                    t_rec_array_event;
121052 l_null_rec_array_event               t_rec_array_event;
121053 l_array_ae_header_id                 xla_number_array_type;
121054 l_actual_flag                        VARCHAR2(1) := NULL;
121055 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
121056 l_balance_type_code                  VARCHAR2(1) :=NULL;
121057 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
121058 
121059 --
121060 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
121061 --
121062 
121063 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
121064 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
121065 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
121066 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
121067 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
121068 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
121069 
121070 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
121071 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
121072 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
121073 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
121074 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
121075 
121076 l_array_source_6              t_array_source_6;
121080 l_array_source_10              t_array_source_10;
121077 l_array_source_7              t_array_source_7;
121078 l_array_source_8              t_array_source_8;
121079 l_array_source_9              t_array_source_9;
121081 l_array_source_12              t_array_source_12;
121082 
121083 l_array_source_1      t_array_source_1;
121084 l_array_source_2      t_array_source_2;
121085 l_array_source_3      t_array_source_3;
121086 l_array_source_5      t_array_source_5;
121087 l_array_source_11      t_array_source_11;
121088 
121089 --
121090 CURSOR header_cur
121091 IS
121092 SELECT /*+ leading(xet) cardinality(xet,1) */
121093 -- Event Type Code: ADJUST_DELIVER
121094 -- Event Class Code: RECEIVE
121095     xet.entity_id
121096   , xet.legal_entity_id
121097   , xet.entity_code
121098   , xet.transaction_number
121099   , xet.event_id
121100   , xet.event_class_code
121101   , xet.event_type_code
121102   , xet.event_number
121103   , xet.event_date
121104   , xet.transaction_date
121105   , xet.reference_num_1
121106   , xet.reference_num_2
121107   , xet.reference_num_3
121108   , xet.reference_num_4
121109   , xet.reference_char_1
121110   , xet.reference_char_2
121111   , xet.reference_char_3
121112   , xet.reference_char_4
121113   , xet.reference_date_1
121114   , xet.reference_date_2
121115   , xet.reference_date_3
121116   , xet.reference_date_4
121117   , xet.event_created_by
121118   , xet.budgetary_control_flag 
121119   , h1.ENTITY_CODE    source_6
121120   , h1.CURRENCY_CODE    source_7
121121   , h1.CURRENCY_CONVERSION_DATE    source_8
121122   , h1.CURRENCY_CONVERSION_RATE    source_9
121123   , h1.CURRENCY_CONVERSION_TYPE    source_10
121124   , h1.TRANSACTION_DATE    source_12
121125   FROM xla_events_gt     xet 
121126   , GMF_XLA_EXTRACT_HEADERS  h1
121127  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
121128    and xet.event_type_code = C_EVENT_TYPE_CODE
121129    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
121130 
121131  ORDER BY event_id
121132 ;
121133 
121134 
121135 --
121136 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
121137 IS
121138 SELECT /*+ leading(xet) cardinality(xet,1) */
121139 -- Event Type Code: ADJUST_DELIVER
121140 -- Event Class Code: RECEIVE
121141     xet.entity_id
121142    ,xet.legal_entity_id
121143    ,xet.entity_code
121144    ,xet.transaction_number
121145    ,xet.event_id
121146    ,xet.event_class_code
121147    ,xet.event_type_code
121148    ,xet.event_number
121149    ,xet.event_date
121150    ,xet.transaction_date
121151    ,xet.reference_num_1
121152    ,xet.reference_num_2
121153    ,xet.reference_num_3
121154    ,xet.reference_num_4
121155    ,xet.reference_char_1
121156    ,xet.reference_char_2
121157    ,xet.reference_char_3
121158    ,xet.reference_char_4
121159    ,xet.reference_date_1
121160    ,xet.reference_date_2
121161    ,xet.reference_date_3
121162    ,xet.reference_date_4
121163    ,xet.event_created_by
121164    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
121165   , l2.TRANSACTION_ACCOUNT_ID    source_1
121166   , l2.JOURNAL_LINE_TYPE    source_2
121167   , l2.ENTERED_AMOUNT    source_3
121168   , l2.LINE_ID    source_5
121169   , l2.ACCOUNTED_AMOUNT    source_11
121170   FROM xla_events_gt     xet 
121171   , GMF_XLA_EXTRACT_LINES  l2
121172  WHERE xet.event_id between x_first_event_id and x_last_event_id
121173    and xet.event_date between p_pad_start_date and p_pad_end_date
121174    and xet.event_type_code = C_EVENT_TYPE_CODE
121175    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
121176 ;
121177 
121178 --
121179 BEGIN
121180 IF g_log_enabled THEN
121181    l_log_module := C_DEFAULT_MODULE||'.EventType_249';
121182 END IF;
121183 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121184    trace
121185       (p_msg      => 'BEGIN of EventType_249'
121186       ,p_level    => C_LEVEL_PROCEDURE
121187       ,p_module   => l_log_module);
121188 END IF;
121189 
121190 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
121191    trace
121192       (p_msg      => 'p_application_id = '||p_application_id||
121193                      ' - p_base_ledger_id = '||p_base_ledger_id||
121194                      ' - p_target_ledger_id  = '||p_target_ledger_id||
121195                      ' - p_language = '||p_language||
121196                      ' - p_currency_code = '||p_currency_code||
121197                      ' - p_sla_ledger_id = '||p_sla_ledger_id
121198       ,p_level    => C_LEVEL_STATEMENT
121199       ,p_module   => l_log_module);
121200 END IF;
121201 --
121202 -- initialze arrays
121203 --
121204 g_array_event.DELETE;
121205 l_rec_array_event := l_null_rec_array_event;
121206 --
121207 --------------------------------------
121208 -- 4262811 Initialze MPA Line Number
121209 --------------------------------------
121210 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
121211 
121212 --
121213 
121214 --
121215 OPEN header_cur;
121216 --
121217 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
121218    trace
121219    (p_msg      => 'SQL - FETCH header_cur'
121220    ,p_level    => C_LEVEL_STATEMENT
121221    ,p_module   => l_log_module);
121222 END IF;
121223 --
121224 LOOP
121225 FETCH header_cur BULK COLLECT INTO
121226         l_array_entity_id
121227       , l_array_legal_entity_id
121228       , l_array_entity_code
121229       , l_array_transaction_num
121233       , l_array_event_number
121230       , l_array_event_id
121231       , l_array_class_code
121232       , l_array_event_type
121234       , l_array_event_date
121235       , l_array_transaction_date
121236       , l_array_reference_num_1
121237       , l_array_reference_num_2
121238       , l_array_reference_num_3
121239       , l_array_reference_num_4
121240       , l_array_reference_char_1
121241       , l_array_reference_char_2
121242       , l_array_reference_char_3
121243       , l_array_reference_char_4
121244       , l_array_reference_date_1
121245       , l_array_reference_date_2
121246       , l_array_reference_date_3
121247       , l_array_reference_date_4
121248       , l_array_event_created_by
121249       , l_array_budgetary_control_flag 
121250       , l_array_source_6
121251       , l_array_source_7
121252       , l_array_source_8
121253       , l_array_source_9
121254       , l_array_source_10
121255       , l_array_source_12
121256       LIMIT l_rows;
121257 --
121258 IF (C_LEVEL_EVENT >= g_log_level) THEN
121259    trace
121260    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
121261    ,p_level    => C_LEVEL_EVENT
121262    ,p_module   => l_log_module);
121263 END IF;
121264 --
121265 EXIT WHEN l_array_entity_id.COUNT = 0;
121266 
121267 -- initialize arrays
121268 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
121269 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
121270 
121271 --
121272 -- Bug 4458708
121273 --
121274 XLA_AE_LINES_PKG.g_LineNumber := 0;
121275 
121276 
121277 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
121278 g_last_hdr_idx := l_array_event_id.LAST;
121279 --
121280 -- loop for the headers. Each iteration is for each header extract row
121281 -- fetched in header cursor
121282 --
121283 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
121284 
121285 --
121286 -- set event info as cache for other routines to refer event attributes
121287 --
121288 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
121289    (p_application_id           => p_application_id
121290    ,p_primary_ledger_id        => p_primary_ledger_id
121291    ,p_base_ledger_id           => p_base_ledger_id
121292    ,p_target_ledger_id         => p_target_ledger_id
121293    ,p_entity_id                => l_array_entity_id(hdr_idx)
121294    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
121295    ,p_entity_code              => l_array_entity_code(hdr_idx)
121296    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
121297    ,p_event_id                 => l_array_event_id(hdr_idx)
121298    ,p_event_class_code         => l_array_class_code(hdr_idx)
121299    ,p_event_type_code          => l_array_event_type(hdr_idx)
121300    ,p_event_number             => l_array_event_number(hdr_idx)
121301    ,p_event_date               => l_array_event_date(hdr_idx)
121302    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
121303    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
121304    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
121305    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
121306    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
121307    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
121308    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
121309    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
121310    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
121311    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
121312    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
121313    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
121314    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
121315    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
121316    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
121317 
121318 --
121319 -- set the status of entry to C_VALID (0)
121320 --
121321 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
121322 
121323 --
121324 -- initialize a row for ae header
121325 --
121326 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
121327 
121328 l_event_id := l_array_event_id(hdr_idx);
121329 
121330 --
121331 -- storing the hdr_idx for event. May be used by line cursor.
121332 --
121333 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
121334 
121335 --
121336 -- store sources from header extract. This can be improved to
121337 -- store only those sources from header extract that may be used in lines
121338 --
121339 
121340 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
121341 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
121342 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
121343 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
121344 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
121345 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
121346 
121347 --
121348 -- initilaize the status of ae headers for diffrent balance types
121349 -- the status is initialised to C_NOT_CREATED (2)
121350 --
121351 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
121355 --
121352 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
121353 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
121354 
121356 -- call api to validate and store accounting attributes for header
121357 --
121358 
121359 ------------------------------------------------------------
121360 -- Accrual Reversal : to get date for Standard Source (NONE)
121361 ------------------------------------------------------------
121362 l_acc_rev_gl_date_source := NULL;
121363 
121364      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
121365       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
121366 
121367 
121368 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
121369 
121370 XLA_AE_HEADER_PKG.SetJeCategoryName;
121371 
121372 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
121373 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
121374 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
121375 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
121376 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
121377 
121378 
121379 -- No header level analytical criteria
121380 
121381 --
121382 --accounting attribute enhancement, bug 3612931
121383 --
121384 l_trx_reversal_source := SUBSTR(NULL, 1,30);
121385 
121386 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
121387    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
121388 
121389    xla_accounting_err_pkg.build_message
121390       (p_appli_s_name            => 'XLA'
121391       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
121392       ,p_token_1                 => 'ACCT_ATTR_NAME'
121393       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
121394       ,p_token_2                 => 'PRODUCT_NAME'
121395       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
121396       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
121397       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
121398       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
121399 
121400 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
121401    --
121402    -- following sets the accounting attributes needed to reverse
121403    -- accounting for a distributeion
121404    --
121405    xla_ae_lines_pkg.SetTrxReversalAttrs
121406       (p_event_id              => l_event_id
121407       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
121408       ,p_trx_reversal_source   => l_trx_reversal_source);
121409 
121410 END IF;
121411 
121412 
121413 ----------------------------------------------------------------
121414 -- 4262811 -  update the header statuses to invalid in need be
121415 ----------------------------------------------------------------
121416 --
121417 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
121418 
121419 
121420   -----------------------------------------------
121421   -- No accrual reversal for the event class/type
121422   -----------------------------------------------
121423 ----------------------------------------------------------------
121424 
121425 --
121426 -- this ends the header loop iteration for one bulk fetch
121427 --
121428 END LOOP;
121429 
121430 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
121431 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
121432 
121433 --
121434 -- insert dummy rows into lines gt table that were created due to
121435 -- transaction reversals
121436 --
121437 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
121438    l_result := XLA_AE_LINES_PKG.InsertLines;
121439 END IF;
121440 
121441 --
121442 -- reset the temp_line_num for each set of events fetched from header
121443 -- cursor rather than doing it for each new event in line cursor
121444 -- Bug 3939231
121445 --
121446 xla_ae_lines_pkg.g_temp_line_num := 0;
121447 
121448 
121449 
121450 --
121451 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
121452 --
121453 --
121454 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
121455 
121456       trace
121457          (p_msg      => 'SQL - FETCH line_cur'
121458          ,p_level    => C_LEVEL_STATEMENT
121459          ,p_module   => l_log_module);
121460 
121461 END IF;
121462 --
121463 --
121464 LOOP
121465   --
121466   FETCH line_cur BULK COLLECT INTO
121467         l_array_entity_id
121468       , l_array_legal_entity_id
121469       , l_array_entity_code
121470       , l_array_transaction_num
121471       , l_array_event_id
121472       , l_array_class_code
121473       , l_array_event_type
121474       , l_array_event_number
121475       , l_array_event_date
121476       , l_array_transaction_date
121477       , l_array_reference_num_1
121478       , l_array_reference_num_2
121479       , l_array_reference_num_3
121480       , l_array_reference_num_4
121481       , l_array_reference_char_1
121482       , l_array_reference_char_2
121483       , l_array_reference_char_3
121484       , l_array_reference_char_4
121485       , l_array_reference_date_1
121486       , l_array_reference_date_2
121490       , l_array_budgetary_control_flag
121487       , l_array_reference_date_3
121488       , l_array_reference_date_4
121489       , l_array_event_created_by
121491       , l_array_extract_line_num 
121492       , l_array_source_1
121493       , l_array_source_2
121494       , l_array_source_3
121495       , l_array_source_5
121496       , l_array_source_11
121497       LIMIT l_rows;
121498 
121499   --
121500   IF (C_LEVEL_EVENT >= g_log_level) THEN
121501             trace
121502                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
121503                ,p_level    => C_LEVEL_EVENT
121504                ,p_module   => l_log_module);
121505   END IF;
121506   --
121507   EXIT WHEN l_array_entity_id.count = 0;
121508 
121509   XLA_AE_LINES_PKG.g_rec_lines := null;
121510 
121511 --
121512 -- Bug 4458708
121513 --
121514 XLA_AE_LINES_PKG.g_LineNumber := 0;
121515 --
121516 --
121517 
121518 FOR Idx IN 1..l_array_event_id.count LOOP
121519    --
121520    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
121521    --
121522    l_event_id := l_array_event_id(idx);  -- 5648433
121523 
121524    --
121525    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
121526    --
121527 
121528    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
121529              (g_array_event(l_event_id).array_value_num('header_index'))
121530          ,'N'
121531          ) <> 'Y'
121532    THEN
121533       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
121534          trace
121535             (p_msg      => 'Trancaction revesal option is not Y '
121536             ,p_level    => C_LEVEL_STATEMENT
121537             ,p_module   => l_log_module);
121538       END IF;
121539 
121540 --
121541 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
121542 --
121543 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
121544 --
121545 -- set event info as cache for other routines to refer event attributes
121546 --
121547 
121548 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
121549    l_previous_event_id := l_event_id;
121550 
121551    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
121552       (p_application_id           => p_application_id
121553       ,p_primary_ledger_id        => p_primary_ledger_id
121554       ,p_base_ledger_id           => p_base_ledger_id
121555       ,p_target_ledger_id         => p_target_ledger_id
121556       ,p_entity_id                => l_array_entity_id(Idx)
121557       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
121558       ,p_entity_code              => l_array_entity_code(Idx)
121559       ,p_transaction_num          => l_array_transaction_num(Idx)
121560       ,p_event_id                 => l_array_event_id(Idx)
121561       ,p_event_class_code         => l_array_class_code(Idx)
121562       ,p_event_type_code          => l_array_event_type(Idx)
121563       ,p_event_number             => l_array_event_number(Idx)
121564       ,p_event_date               => l_array_event_date(Idx)
121565       ,p_transaction_date         => l_array_transaction_date(Idx)
121566       ,p_reference_num_1          => l_array_reference_num_1(Idx)
121567       ,p_reference_num_2          => l_array_reference_num_2(Idx)
121568       ,p_reference_num_3          => l_array_reference_num_3(Idx)
121569       ,p_reference_num_4          => l_array_reference_num_4(Idx)
121570       ,p_reference_char_1         => l_array_reference_char_1(Idx)
121571       ,p_reference_char_2         => l_array_reference_char_2(Idx)
121572       ,p_reference_char_3         => l_array_reference_char_3(Idx)
121573       ,p_reference_char_4         => l_array_reference_char_4(Idx)
121574       ,p_reference_date_1         => l_array_reference_date_1(Idx)
121575       ,p_reference_date_2         => l_array_reference_date_2(Idx)
121576       ,p_reference_date_3         => l_array_reference_date_3(Idx)
121577       ,p_reference_date_4         => l_array_reference_date_4(Idx)
121578       ,p_event_created_by         => l_array_event_created_by(Idx)
121579       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
121580        --
121581 END IF;
121582 
121583 
121584 
121585 --
121586 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
121587 
121588 l_acct_reversal_source := SUBSTR(NULL, 1,30);
121589 
121590 IF l_continue_with_lines THEN
121591    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
121592       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
121593 
121594       xla_accounting_err_pkg.build_message
121595          (p_appli_s_name            => 'XLA'
121596          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
121597          ,p_token_1                 => 'LINE_NUMBER'
121598          ,p_value_1                 => l_array_extract_line_num(Idx)
121599          ,p_token_2                 => 'PRODUCT_NAME'
121600          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
121601          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
121602          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
121603          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
121604 
121605    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
121606       --
121607       -- following sets the accounting attributes needed to reverse
121611       --
121608       -- accounting for a distributeion
121609       --
121610 
121612       -- 5217187
121613       --
121614       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
121615       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
121616                                        g_array_event(l_event_id).array_value_num('header_index'));
121617       --
121618       --
121619 
121620       -- No reversal code generated
121621 
121622       xla_ae_lines_pkg.SetAcctReversalAttrs
121623          (p_event_id             => l_event_id
121624          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
121625          ,p_calculate_acctd_flag => l_calculate_acctd_flag
121626          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
121627    END IF;
121628 
121629    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
121630        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
121631 
121632 --
121633 AcctLineType_194 (
121634  p_application_id  => p_application_id
121635  ,p_event_id     => l_event_id
121636  ,p_calculate_acctd_flag => l_calculate_acctd_flag
121637  ,p_calculate_g_l_flag => l_calculate_g_l_flag
121638  ,p_actual_flag => l_actual_flag
121639  ,p_balance_type_code => l_balance_type_code
121640  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
121641  
121642  , p_source_1 => l_array_source_1(Idx)
121643  , p_source_2 => l_array_source_2(Idx)
121644  , p_source_3 => l_array_source_3(Idx)
121645  , p_source_5 => l_array_source_5(Idx)
121646  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
121647  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
121648  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
121649  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
121650  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
121651  , p_source_11 => l_array_source_11(Idx)
121652  );
121653 If(l_balance_type_code = 'A') THEN
121654   l_actual_gain_loss_ref := l_gain_or_loss_ref;
121655 END IF;
121656 
121657 --
121658 
121659 
121660 --
121661 AcctLineType_234 (
121662  p_application_id  => p_application_id
121663  ,p_event_id     => l_event_id
121664  ,p_calculate_acctd_flag => l_calculate_acctd_flag
121665  ,p_calculate_g_l_flag => l_calculate_g_l_flag
121666  ,p_actual_flag => l_actual_flag
121667  ,p_balance_type_code => l_balance_type_code
121668  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
121669  
121670  , p_source_1 => l_array_source_1(Idx)
121671  , p_source_2 => l_array_source_2(Idx)
121672  , p_source_3 => l_array_source_3(Idx)
121673  , p_source_5 => l_array_source_5(Idx)
121674  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
121675  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
121676  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
121677  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
121678  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
121679  , p_source_11 => l_array_source_11(Idx)
121680  );
121681 If(l_balance_type_code = 'A') THEN
121682   l_actual_gain_loss_ref := l_gain_or_loss_ref;
121683 END IF;
121684 
121685 --
121686 
121687       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
121688       -- or secondary ledger that has different currency with primary
121689       -- or alc that is calculated by sla
121690       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
121691             (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'))
121692 
121693 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
121694 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
121695           AND (l_actual_flag = 'A')) THEN
121696         XLA_AE_LINES_PKG.CreateGainOrLossLines(
121697           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
121698          ,p_application_id   => p_application_id
121699          ,p_amb_context_code => 'DEFAULT'
121700          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
121701          ,p_event_class_code => C_EVENT_CLASS_CODE
121702          ,p_event_type_code  => C_EVENT_TYPE_CODE
121703          
121704          ,p_gain_ccid        => -1
121705          ,p_loss_ccid        => -1
121706 
121707          ,p_actual_flag      => l_actual_flag
121708          ,p_enc_flag         => null
121709          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
121710          ,p_enc_g_l_ref      => null
121711          );
121712       END IF;
121713    END IF;
121714 END IF;
121715 
121716    ELSE
121717       --
121718       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
121719       --
121720       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
121721          trace
121722             (p_msg      => 'Trancaction revesal option is Y'
121723             ,p_level    => C_LEVEL_STATEMENT
121724             ,p_module   => l_log_module);
121725       END IF;
121726    END IF;
121727 
121728 END LOOP;
121729 l_result := XLA_AE_LINES_PKG.InsertLines ;
121730 end loop;
121731 close line_cur;
121732 
121733 
121734 --
121735 -- insert headers into xla_ae_headers_gt table
121736 --
121740 
121737 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
121738 
121739 -- insert into errors table here.
121741 END LOOP;
121742 
121743 --
121744 -- 4865292
121745 --
121746 -- Compare g_hdr_extract_count with event count in
121747 -- CreateHeadersAndLines.
121748 --
121749 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
121750 
121751 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
121752    trace (p_msg     => '# rows extracted from header extract objects '
121753                     || ' (running total): '
121754                     || g_hdr_extract_count
121755          ,p_level   => C_LEVEL_STATEMENT
121756          ,p_module  => l_log_module);
121757 END IF;
121758 
121759 CLOSE header_cur;
121760 --
121761 
121762 --
121763 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121764    trace
121765       (p_msg      => 'END of EventType_249'
121766       ,p_level    => C_LEVEL_PROCEDURE
121767       ,p_module   => l_log_module);
121768 END IF;
121769 --
121770 RETURN l_result;
121771 EXCEPTION
121772 WHEN xla_exceptions_pkg.application_exception THEN
121773    
121774 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
121775 
121776    
121777 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
121778 
121779    RAISE;
121780 
121781 WHEN NO_DATA_FOUND THEN
121782 
121783 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
121784 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
121785 
121786 FOR header_record IN header_cur
121787 LOOP
121788     l_array_header_events(header_record.event_id) := header_record.event_id;
121789 END LOOP;
121790 
121791 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
121792 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
121793 
121794 fnd_file.put_line(fnd_file.LOG, '                    ');
121795 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
121796 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
121797 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
121798 
121799 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
121800 LOOP
121801 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
121802 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
121803         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
121804 	END IF;
121805 END LOOP;
121806 
121807 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
121808 fnd_file.put_line(fnd_file.LOG, '                    ');
121809 
121810 
121811 xla_exceptions_pkg.raise_message
121812       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_249');
121813 
121814 
121815 WHEN OTHERS THEN
121816    xla_exceptions_pkg.raise_message
121817       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_249');
121818 END EventType_249;
121819 --
121820 
121821 ---------------------------------------
121822 --
121823 -- PRIVATE PROCEDURE
121824 --         insert_sources_250
121825 --
121826 ----------------------------------------
121827 --
121828 PROCEDURE insert_sources_250(
121829                                 p_target_ledger_id       IN NUMBER
121830                               , p_language               IN VARCHAR2
121831                               , p_sla_ledger_id          IN NUMBER
121832                               , p_pad_start_date         IN DATE
121833                               , p_pad_end_date           IN DATE
121834                          )
121835 IS
121836 
121837 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ADJUST_RECEIVE';
121838 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RECEIVE';
121839 p_apps_owner                   VARCHAR2(30);
121840 l_log_module                   VARCHAR2(240);
121841 BEGIN
121842 IF g_log_enabled THEN
121843       l_log_module := C_DEFAULT_MODULE||'.insert_sources_250';
121844 END IF;
121845 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121846 
121847       trace
121848          (p_msg      => 'BEGIN of insert_sources_250'
121849          ,p_level    => C_LEVEL_PROCEDURE
121850          ,p_module   => l_log_module);
121851 
121852 END IF;
121853 
121854 -- select APPS owner
121855 SELECT oracle_username
121856   INTO p_apps_owner
121857   FROM fnd_oracle_userid
121858  WHERE read_only_flag = 'U'
121859 ;
121860 
121861 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
121862       trace
121863          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
121864                         ' - p_language = '||p_language||
121865                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
121866                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
121867                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
121868                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
121869          ,p_level    => C_LEVEL_STATEMENT
121870          ,p_module   => l_log_module);
121871 END IF;
121872 
121873 
121874 --
121875 INSERT INTO xla_diag_sources --hdr1
121876 (
121877         event_id
121878       , ledger_id
121879       , sla_ledger_id
121880       , description_language
121881       , object_name
121885       , source_type_code
121882       , object_type_code
121883       , line_number
121884       , source_application_id
121886       , source_code
121887       , source_value
121888       , source_meaning
121889       , created_by
121890       , creation_date
121891       , last_update_date
121892       , last_updated_by
121893       , last_update_login
121894       , program_update_date
121895       , program_application_id
121896       , program_id
121897       , request_id
121898 )
121899 SELECT
121900         event_id
121901       , p_target_ledger_id
121902       , p_sla_ledger_id
121903       , p_language
121904       , object_name
121905       , object_type_code
121906       , line_number
121907       , source_application_id
121908       , source_type_code
121909       , source_code
121910       , SUBSTR(source_value ,1,1996)
121911       , SUBSTR(source_meaning,1,200)
121912       , xla_environment_pkg.g_Usr_Id
121913       , TRUNC(SYSDATE)
121914       , TRUNC(SYSDATE)
121915       , xla_environment_pkg.g_Usr_Id
121916       , xla_environment_pkg.g_Login_Id
121917       , TRUNC(SYSDATE)
121918       , xla_environment_pkg.g_Prog_Appl_Id
121919       , xla_environment_pkg.g_Prog_Id
121920       , xla_environment_pkg.g_Req_Id
121921   FROM (
121922        SELECT xet.event_id                  event_id
121923             , 0                             line_number
121924             , CASE r
121925                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
121926                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
121927                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
121928                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
121929                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
121930                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
121931                 
121932                ELSE null
121933               END                           object_name
121934             , CASE r
121935                 WHEN 1 THEN 'HEADER' 
121936                 WHEN 2 THEN 'HEADER' 
121937                 WHEN 3 THEN 'HEADER' 
121938                 WHEN 4 THEN 'HEADER' 
121939                 WHEN 5 THEN 'HEADER' 
121940                 WHEN 6 THEN 'HEADER' 
121941                 
121942                 ELSE null
121943               END                           object_type_code
121944             , CASE r
121945                 WHEN 1 THEN '555' 
121946                 WHEN 2 THEN '555' 
121947                 WHEN 3 THEN '555' 
121948                 WHEN 4 THEN '555' 
121949                 WHEN 5 THEN '555' 
121950                 WHEN 6 THEN '555' 
121951                 
121952                 ELSE null
121953               END                           source_application_id
121954             , 'S'             source_type_code
121955             , CASE r
121956                 WHEN 1 THEN 'ENTITY_CODE' 
121957                 WHEN 2 THEN 'CURRENCY_CODE' 
121958                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
121959                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
121960                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
121961                 WHEN 6 THEN 'TRANSACTION_DATE' 
121962                 
121963                 ELSE null
121964               END                           source_code
121965             , CASE r
121966                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
121967                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
121968                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
121969                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
121970                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
121971                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
121972                 
121973                 ELSE null
121974               END                           source_value
121975             , CASE r
121976                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
121977                           1010186
121978                          ,TO_CHAR(h1.CURRENCY_CODE)
121979                          ,'CURRENCY_CODE'
121980                          ,'S'
121981                          ,555)
121982                 
121983                 ELSE null
121984               END               source_meaning
121985         FROM xla_events_gt     xet  
121986       , GMF_XLA_EXTRACT_HEADERS  h1
121987             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
121988        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
121989          AND xet.event_type_code = C_EVENT_TYPE_CODE
121990             AND h1.event_id = xet.event_id
121991 
121992 )
121993 ;
121994 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
121995 
121996       trace
121997          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
121998          ,p_level    => C_LEVEL_STATEMENT
121999          ,p_module   => l_log_module);
122000 
122001 END IF;
122002 --
122003 
122004 
122005 
122006 --
122007 INSERT INTO xla_diag_sources --line1
122008 (
122009         event_id
122010       , ledger_id
122011       , sla_ledger_id
122012       , description_language
122013       , object_name
122014       , object_type_code
122015       , line_number
122016       , source_application_id
122017       , source_type_code
122018       , source_code
122019       , source_value
122020       , source_meaning
122021       , created_by
122022       , creation_date
122023       , last_update_date
122024       , last_updated_by
122025       , last_update_login
122026       , program_update_date
122030 )
122027       , program_application_id
122028       , program_id
122029       , request_id
122031 SELECT  event_id
122032       , p_target_ledger_id
122033       , p_sla_ledger_id
122034       , p_language
122035       , object_name
122036       , object_type_code
122037       , line_number
122038       , source_application_id
122039       , source_type_code
122040       , source_code
122041       , SUBSTR(source_value,1,1996)
122042       , SUBSTR(source_meaning,1,200)
122043       , xla_environment_pkg.g_Usr_Id
122044       , TRUNC(SYSDATE)
122045       , TRUNC(SYSDATE)
122046       , xla_environment_pkg.g_Usr_Id
122047       , xla_environment_pkg.g_Login_Id
122048       , TRUNC(SYSDATE)
122049       , xla_environment_pkg.g_Prog_Appl_Id
122050       , xla_environment_pkg.g_Prog_Id
122051       , xla_environment_pkg.g_Req_Id
122052   FROM (
122053        SELECT xet.event_id                  event_id
122054             , l2.line_number                 line_number
122055             , CASE r
122056                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
122057                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
122058                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
122059                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
122060                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
122061                 
122062                ELSE null
122063               END                           object_name
122064             , CASE r
122065                 WHEN 1 THEN 'LINE' 
122066                 WHEN 2 THEN 'LINE' 
122067                 WHEN 3 THEN 'LINE' 
122068                 WHEN 4 THEN 'LINE' 
122069                 WHEN 5 THEN 'LINE' 
122070                 
122071                 ELSE null
122072               END                           object_type_code
122073             , CASE r
122074                 WHEN 1 THEN '555' 
122075                 WHEN 2 THEN '555' 
122076                 WHEN 3 THEN '555' 
122077                 WHEN 4 THEN '555' 
122078                 WHEN 5 THEN '555' 
122079                 
122080                 ELSE null
122081               END                           source_application_id
122082             , 'S'             source_type_code
122083             , CASE r
122084                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
122085                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
122086                 WHEN 3 THEN 'ENTERED_AMOUNT' 
122087                 WHEN 4 THEN 'LINE_ID' 
122088                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
122089                 
122090                 ELSE null
122091               END                           source_code
122092             , CASE r
122093                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
122094                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
122095                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
122096                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
122097                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
122098                 
122099                 ELSE null
122100               END                           source_value
122101             , null              source_meaning
122102          FROM  xla_events_gt     xet  
122103         , GMF_XLA_EXTRACT_LINES  l2
122104             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
122105         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
122106           AND xet.event_type_code = C_EVENT_TYPE_CODE
122107             AND l2.event_id          = xet.event_id
122108 
122109 )
122110 ;
122111 --
122112 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
122113 
122114       trace
122115          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
122116          ,p_level    => C_LEVEL_STATEMENT
122117          ,p_module   => l_log_module);
122118 
122119 END IF;
122120 
122121 
122122 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122123       trace
122124          (p_msg      => 'END of insert_sources_250'
122125          ,p_level    => C_LEVEL_PROCEDURE
122126          ,p_module   => l_log_module);
122127 END IF;
122128 EXCEPTION
122129   WHEN xla_exceptions_pkg.application_exception THEN
122130       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
122131             trace
122132                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
122133                ,p_level    => C_LEVEL_EXCEPTION
122134                ,p_module   => l_log_module);
122135       END IF;
122136       RAISE;
122137   WHEN OTHERS THEN
122138       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
122139             trace
122140                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
122141                ,p_level    => C_LEVEL_EXCEPTION
122142                ,p_module   => l_log_module);
122143        END IF;
122144        xla_exceptions_pkg.raise_message
122145            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_250');
122146 END insert_sources_250;
122147 --
122148 
122149 ---------------------------------------
122150 --
122151 -- PRIVATE FUNCTION
122152 --         EventType_250
122153 --
122154 ----------------------------------------
122155 --
122156 FUNCTION EventType_250
122157        (p_application_id         IN NUMBER
122158        ,p_base_ledger_id         IN NUMBER
122159        ,p_target_ledger_id       IN NUMBER
122160        ,p_language               IN VARCHAR2
122161        ,p_currency_code          IN VARCHAR2
122162        ,p_sla_ledger_id          IN NUMBER
122163        ,p_pad_start_date         IN DATE
122167 --
122164        ,p_pad_end_date           IN DATE
122165        ,p_primary_ledger_id      IN NUMBER)
122166 RETURN BOOLEAN IS
122168 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ADJUST_RECEIVE';
122169 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RECEIVE';
122170 
122171 l_calculate_acctd_flag   VARCHAR2(1) :='N';
122172 l_calculate_g_l_flag     VARCHAR2(1) :='N';
122173 --
122174 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
122175 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
122176 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
122177 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
122178 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
122179 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
122180 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
122181 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
122182 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
122183 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
122184 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
122185 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
122186 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
122187 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
122188 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
122189 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
122190 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
122191 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
122192 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
122193 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
122194 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
122195 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
122196 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
122197 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
122198 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
122199 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
122200 
122201 l_event_id                             NUMBER;
122202 l_previous_event_id                    NUMBER;
122203 l_first_event_id                       NUMBER;
122204 l_last_event_id                        NUMBER;
122205 
122206 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
122207 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
122208 --
122209 --
122210 l_result                    BOOLEAN := TRUE;
122211 l_rows                      NUMBER  := 1000;
122212 l_event_type_name           VARCHAR2(80) := 'Adjust Receive';
122213 l_event_class_name          VARCHAR2(80) := 'Receiving';
122214 l_description               VARCHAR2(4000);
122215 l_transaction_reversal      NUMBER;
122216 l_ae_header_id              NUMBER;
122217 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
122218 l_log_module                VARCHAR2(240);
122219 --
122220 l_acct_reversal_source      VARCHAR2(30);
122221 l_trx_reversal_source       VARCHAR2(30);
122222 
122223 l_continue_with_lines       BOOLEAN := TRUE;
122224 --
122225 l_acc_rev_gl_date_source    DATE;                      -- 4262811
122226 --
122227 type t_array_event_id is table of number index by binary_integer;
122228 
122229 l_rec_array_event                    t_rec_array_event;
122230 l_null_rec_array_event               t_rec_array_event;
122231 l_array_ae_header_id                 xla_number_array_type;
122232 l_actual_flag                        VARCHAR2(1) := NULL;
122233 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
122234 l_balance_type_code                  VARCHAR2(1) :=NULL;
122235 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
122236 
122237 --
122238 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
122239 --
122240 
122241 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
122242 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
122243 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
122244 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
122245 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
122246 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
122247 
122248 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
122249 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
122250 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
122251 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
122252 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
122253 
122254 l_array_source_6              t_array_source_6;
122255 l_array_source_7              t_array_source_7;
122259 l_array_source_12              t_array_source_12;
122256 l_array_source_8              t_array_source_8;
122257 l_array_source_9              t_array_source_9;
122258 l_array_source_10              t_array_source_10;
122260 
122261 l_array_source_1      t_array_source_1;
122262 l_array_source_2      t_array_source_2;
122263 l_array_source_3      t_array_source_3;
122264 l_array_source_5      t_array_source_5;
122265 l_array_source_11      t_array_source_11;
122266 
122267 --
122268 CURSOR header_cur
122269 IS
122270 SELECT /*+ leading(xet) cardinality(xet,1) */
122271 -- Event Type Code: ADJUST_RECEIVE
122272 -- Event Class Code: RECEIVE
122273     xet.entity_id
122274   , xet.legal_entity_id
122275   , xet.entity_code
122276   , xet.transaction_number
122277   , xet.event_id
122278   , xet.event_class_code
122279   , xet.event_type_code
122280   , xet.event_number
122281   , xet.event_date
122282   , xet.transaction_date
122283   , xet.reference_num_1
122284   , xet.reference_num_2
122285   , xet.reference_num_3
122286   , xet.reference_num_4
122287   , xet.reference_char_1
122288   , xet.reference_char_2
122289   , xet.reference_char_3
122290   , xet.reference_char_4
122291   , xet.reference_date_1
122292   , xet.reference_date_2
122293   , xet.reference_date_3
122294   , xet.reference_date_4
122295   , xet.event_created_by
122296   , xet.budgetary_control_flag 
122297   , h1.ENTITY_CODE    source_6
122298   , h1.CURRENCY_CODE    source_7
122299   , h1.CURRENCY_CONVERSION_DATE    source_8
122300   , h1.CURRENCY_CONVERSION_RATE    source_9
122301   , h1.CURRENCY_CONVERSION_TYPE    source_10
122302   , h1.TRANSACTION_DATE    source_12
122303   FROM xla_events_gt     xet 
122304   , GMF_XLA_EXTRACT_HEADERS  h1
122305  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
122306    and xet.event_type_code = C_EVENT_TYPE_CODE
122307    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
122308 
122309  ORDER BY event_id
122310 ;
122311 
122312 
122313 --
122314 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
122315 IS
122316 SELECT /*+ leading(xet) cardinality(xet,1) */
122317 -- Event Type Code: ADJUST_RECEIVE
122318 -- Event Class Code: RECEIVE
122319     xet.entity_id
122320    ,xet.legal_entity_id
122321    ,xet.entity_code
122322    ,xet.transaction_number
122323    ,xet.event_id
122324    ,xet.event_class_code
122325    ,xet.event_type_code
122326    ,xet.event_number
122327    ,xet.event_date
122328    ,xet.transaction_date
122329    ,xet.reference_num_1
122330    ,xet.reference_num_2
122331    ,xet.reference_num_3
122332    ,xet.reference_num_4
122333    ,xet.reference_char_1
122334    ,xet.reference_char_2
122335    ,xet.reference_char_3
122336    ,xet.reference_char_4
122337    ,xet.reference_date_1
122338    ,xet.reference_date_2
122339    ,xet.reference_date_3
122340    ,xet.reference_date_4
122341    ,xet.event_created_by
122342    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
122343   , l2.TRANSACTION_ACCOUNT_ID    source_1
122344   , l2.JOURNAL_LINE_TYPE    source_2
122345   , l2.ENTERED_AMOUNT    source_3
122346   , l2.LINE_ID    source_5
122347   , l2.ACCOUNTED_AMOUNT    source_11
122348   FROM xla_events_gt     xet 
122349   , GMF_XLA_EXTRACT_LINES  l2
122350  WHERE xet.event_id between x_first_event_id and x_last_event_id
122351    and xet.event_date between p_pad_start_date and p_pad_end_date
122352    and xet.event_type_code = C_EVENT_TYPE_CODE
122353    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
122354 ;
122355 
122356 --
122357 BEGIN
122358 IF g_log_enabled THEN
122359    l_log_module := C_DEFAULT_MODULE||'.EventType_250';
122360 END IF;
122361 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122362    trace
122363       (p_msg      => 'BEGIN of EventType_250'
122364       ,p_level    => C_LEVEL_PROCEDURE
122365       ,p_module   => l_log_module);
122366 END IF;
122367 
122368 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
122369    trace
122370       (p_msg      => 'p_application_id = '||p_application_id||
122371                      ' - p_base_ledger_id = '||p_base_ledger_id||
122372                      ' - p_target_ledger_id  = '||p_target_ledger_id||
122373                      ' - p_language = '||p_language||
122374                      ' - p_currency_code = '||p_currency_code||
122375                      ' - p_sla_ledger_id = '||p_sla_ledger_id
122376       ,p_level    => C_LEVEL_STATEMENT
122377       ,p_module   => l_log_module);
122378 END IF;
122379 --
122380 -- initialze arrays
122381 --
122382 g_array_event.DELETE;
122383 l_rec_array_event := l_null_rec_array_event;
122384 --
122385 --------------------------------------
122386 -- 4262811 Initialze MPA Line Number
122387 --------------------------------------
122388 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
122389 
122390 --
122391 
122392 --
122393 OPEN header_cur;
122394 --
122395 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
122396    trace
122397    (p_msg      => 'SQL - FETCH header_cur'
122398    ,p_level    => C_LEVEL_STATEMENT
122399    ,p_module   => l_log_module);
122400 END IF;
122401 --
122402 LOOP
122403 FETCH header_cur BULK COLLECT INTO
122404         l_array_entity_id
122405       , l_array_legal_entity_id
122406       , l_array_entity_code
122407       , l_array_transaction_num
122408       , l_array_event_id
122412       , l_array_event_date
122409       , l_array_class_code
122410       , l_array_event_type
122411       , l_array_event_number
122413       , l_array_transaction_date
122414       , l_array_reference_num_1
122415       , l_array_reference_num_2
122416       , l_array_reference_num_3
122417       , l_array_reference_num_4
122418       , l_array_reference_char_1
122419       , l_array_reference_char_2
122420       , l_array_reference_char_3
122421       , l_array_reference_char_4
122422       , l_array_reference_date_1
122423       , l_array_reference_date_2
122424       , l_array_reference_date_3
122425       , l_array_reference_date_4
122426       , l_array_event_created_by
122427       , l_array_budgetary_control_flag 
122428       , l_array_source_6
122429       , l_array_source_7
122430       , l_array_source_8
122431       , l_array_source_9
122432       , l_array_source_10
122433       , l_array_source_12
122434       LIMIT l_rows;
122435 --
122436 IF (C_LEVEL_EVENT >= g_log_level) THEN
122437    trace
122438    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
122439    ,p_level    => C_LEVEL_EVENT
122440    ,p_module   => l_log_module);
122441 END IF;
122442 --
122443 EXIT WHEN l_array_entity_id.COUNT = 0;
122444 
122445 -- initialize arrays
122446 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
122447 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
122448 
122449 --
122450 -- Bug 4458708
122451 --
122452 XLA_AE_LINES_PKG.g_LineNumber := 0;
122453 
122454 
122455 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
122456 g_last_hdr_idx := l_array_event_id.LAST;
122457 --
122458 -- loop for the headers. Each iteration is for each header extract row
122459 -- fetched in header cursor
122460 --
122461 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
122462 
122463 --
122464 -- set event info as cache for other routines to refer event attributes
122465 --
122466 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
122467    (p_application_id           => p_application_id
122468    ,p_primary_ledger_id        => p_primary_ledger_id
122469    ,p_base_ledger_id           => p_base_ledger_id
122470    ,p_target_ledger_id         => p_target_ledger_id
122471    ,p_entity_id                => l_array_entity_id(hdr_idx)
122472    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
122473    ,p_entity_code              => l_array_entity_code(hdr_idx)
122474    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
122475    ,p_event_id                 => l_array_event_id(hdr_idx)
122476    ,p_event_class_code         => l_array_class_code(hdr_idx)
122477    ,p_event_type_code          => l_array_event_type(hdr_idx)
122478    ,p_event_number             => l_array_event_number(hdr_idx)
122479    ,p_event_date               => l_array_event_date(hdr_idx)
122480    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
122481    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
122482    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
122483    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
122484    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
122485    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
122486    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
122487    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
122488    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
122489    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
122490    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
122491    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
122492    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
122493    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
122494    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
122495 
122496 --
122497 -- set the status of entry to C_VALID (0)
122498 --
122499 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
122500 
122501 --
122502 -- initialize a row for ae header
122503 --
122504 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
122505 
122506 l_event_id := l_array_event_id(hdr_idx);
122507 
122508 --
122509 -- storing the hdr_idx for event. May be used by line cursor.
122510 --
122511 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
122512 
122513 --
122514 -- store sources from header extract. This can be improved to
122515 -- store only those sources from header extract that may be used in lines
122516 --
122517 
122518 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
122519 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
122520 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
122521 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
122522 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
122523 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
122524 
122525 --
122526 -- initilaize the status of ae headers for diffrent balance types
122527 -- the status is initialised to C_NOT_CREATED (2)
122528 --
122529 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
122530 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
122534 -- call api to validate and store accounting attributes for header
122531 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
122532 
122533 --
122535 --
122536 
122537 ------------------------------------------------------------
122538 -- Accrual Reversal : to get date for Standard Source (NONE)
122539 ------------------------------------------------------------
122540 l_acc_rev_gl_date_source := NULL;
122541 
122542      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
122543       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
122544 
122545 
122546 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
122547 
122548 XLA_AE_HEADER_PKG.SetJeCategoryName;
122549 
122550 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
122551 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
122552 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
122553 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
122554 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
122555 
122556 
122557 -- No header level analytical criteria
122558 
122559 --
122560 --accounting attribute enhancement, bug 3612931
122561 --
122562 l_trx_reversal_source := SUBSTR(NULL, 1,30);
122563 
122564 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
122565    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
122566 
122567    xla_accounting_err_pkg.build_message
122568       (p_appli_s_name            => 'XLA'
122569       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
122570       ,p_token_1                 => 'ACCT_ATTR_NAME'
122571       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
122572       ,p_token_2                 => 'PRODUCT_NAME'
122573       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
122574       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
122575       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
122576       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
122577 
122578 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
122579    --
122580    -- following sets the accounting attributes needed to reverse
122581    -- accounting for a distributeion
122582    --
122583    xla_ae_lines_pkg.SetTrxReversalAttrs
122584       (p_event_id              => l_event_id
122585       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
122586       ,p_trx_reversal_source   => l_trx_reversal_source);
122587 
122588 END IF;
122589 
122590 
122591 ----------------------------------------------------------------
122592 -- 4262811 -  update the header statuses to invalid in need be
122593 ----------------------------------------------------------------
122594 --
122595 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
122596 
122597 
122598   -----------------------------------------------
122599   -- No accrual reversal for the event class/type
122600   -----------------------------------------------
122601 ----------------------------------------------------------------
122602 
122603 --
122604 -- this ends the header loop iteration for one bulk fetch
122605 --
122606 END LOOP;
122607 
122608 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
122609 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
122610 
122611 --
122612 -- insert dummy rows into lines gt table that were created due to
122613 -- transaction reversals
122614 --
122615 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
122616    l_result := XLA_AE_LINES_PKG.InsertLines;
122617 END IF;
122618 
122619 --
122620 -- reset the temp_line_num for each set of events fetched from header
122621 -- cursor rather than doing it for each new event in line cursor
122622 -- Bug 3939231
122623 --
122624 xla_ae_lines_pkg.g_temp_line_num := 0;
122625 
122626 
122627 
122628 --
122629 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
122630 --
122631 --
122632 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
122633 
122634       trace
122635          (p_msg      => 'SQL - FETCH line_cur'
122636          ,p_level    => C_LEVEL_STATEMENT
122637          ,p_module   => l_log_module);
122638 
122639 END IF;
122640 --
122641 --
122642 LOOP
122643   --
122644   FETCH line_cur BULK COLLECT INTO
122645         l_array_entity_id
122646       , l_array_legal_entity_id
122647       , l_array_entity_code
122648       , l_array_transaction_num
122649       , l_array_event_id
122650       , l_array_class_code
122651       , l_array_event_type
122652       , l_array_event_number
122653       , l_array_event_date
122654       , l_array_transaction_date
122655       , l_array_reference_num_1
122656       , l_array_reference_num_2
122657       , l_array_reference_num_3
122658       , l_array_reference_num_4
122659       , l_array_reference_char_1
122660       , l_array_reference_char_2
122661       , l_array_reference_char_3
122662       , l_array_reference_char_4
122663       , l_array_reference_date_1
122664       , l_array_reference_date_2
122665       , l_array_reference_date_3
122669       , l_array_extract_line_num 
122666       , l_array_reference_date_4
122667       , l_array_event_created_by
122668       , l_array_budgetary_control_flag
122670       , l_array_source_1
122671       , l_array_source_2
122672       , l_array_source_3
122673       , l_array_source_5
122674       , l_array_source_11
122675       LIMIT l_rows;
122676 
122677   --
122678   IF (C_LEVEL_EVENT >= g_log_level) THEN
122679             trace
122680                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
122681                ,p_level    => C_LEVEL_EVENT
122682                ,p_module   => l_log_module);
122683   END IF;
122684   --
122685   EXIT WHEN l_array_entity_id.count = 0;
122686 
122687   XLA_AE_LINES_PKG.g_rec_lines := null;
122688 
122689 --
122690 -- Bug 4458708
122691 --
122692 XLA_AE_LINES_PKG.g_LineNumber := 0;
122693 --
122694 --
122695 
122696 FOR Idx IN 1..l_array_event_id.count LOOP
122697    --
122698    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
122699    --
122700    l_event_id := l_array_event_id(idx);  -- 5648433
122701 
122702    --
122703    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
122704    --
122705 
122706    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
122707              (g_array_event(l_event_id).array_value_num('header_index'))
122708          ,'N'
122709          ) <> 'Y'
122710    THEN
122711       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
122712          trace
122713             (p_msg      => 'Trancaction revesal option is not Y '
122714             ,p_level    => C_LEVEL_STATEMENT
122715             ,p_module   => l_log_module);
122716       END IF;
122717 
122718 --
122719 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
122720 --
122721 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
122722 --
122723 -- set event info as cache for other routines to refer event attributes
122724 --
122725 
122726 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
122727    l_previous_event_id := l_event_id;
122728 
122729    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
122730       (p_application_id           => p_application_id
122731       ,p_primary_ledger_id        => p_primary_ledger_id
122732       ,p_base_ledger_id           => p_base_ledger_id
122733       ,p_target_ledger_id         => p_target_ledger_id
122734       ,p_entity_id                => l_array_entity_id(Idx)
122735       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
122736       ,p_entity_code              => l_array_entity_code(Idx)
122737       ,p_transaction_num          => l_array_transaction_num(Idx)
122738       ,p_event_id                 => l_array_event_id(Idx)
122739       ,p_event_class_code         => l_array_class_code(Idx)
122740       ,p_event_type_code          => l_array_event_type(Idx)
122741       ,p_event_number             => l_array_event_number(Idx)
122742       ,p_event_date               => l_array_event_date(Idx)
122743       ,p_transaction_date         => l_array_transaction_date(Idx)
122744       ,p_reference_num_1          => l_array_reference_num_1(Idx)
122745       ,p_reference_num_2          => l_array_reference_num_2(Idx)
122746       ,p_reference_num_3          => l_array_reference_num_3(Idx)
122747       ,p_reference_num_4          => l_array_reference_num_4(Idx)
122748       ,p_reference_char_1         => l_array_reference_char_1(Idx)
122749       ,p_reference_char_2         => l_array_reference_char_2(Idx)
122750       ,p_reference_char_3         => l_array_reference_char_3(Idx)
122751       ,p_reference_char_4         => l_array_reference_char_4(Idx)
122752       ,p_reference_date_1         => l_array_reference_date_1(Idx)
122753       ,p_reference_date_2         => l_array_reference_date_2(Idx)
122754       ,p_reference_date_3         => l_array_reference_date_3(Idx)
122755       ,p_reference_date_4         => l_array_reference_date_4(Idx)
122756       ,p_event_created_by         => l_array_event_created_by(Idx)
122757       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
122758        --
122759 END IF;
122760 
122761 
122762 
122763 --
122764 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
122765 
122766 l_acct_reversal_source := SUBSTR(NULL, 1,30);
122767 
122768 IF l_continue_with_lines THEN
122769    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
122770       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
122771 
122772       xla_accounting_err_pkg.build_message
122773          (p_appli_s_name            => 'XLA'
122774          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
122775          ,p_token_1                 => 'LINE_NUMBER'
122776          ,p_value_1                 => l_array_extract_line_num(Idx)
122777          ,p_token_2                 => 'PRODUCT_NAME'
122778          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
122779          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
122780          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
122781          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
122782 
122783    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
122784       --
122785       -- following sets the accounting attributes needed to reverse
122786       -- accounting for a distributeion
122787       --
122788 
122789       --
122793       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
122790       -- 5217187
122791       --
122792       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
122794                                        g_array_event(l_event_id).array_value_num('header_index'));
122795       --
122796       --
122797 
122798       -- No reversal code generated
122799 
122800       xla_ae_lines_pkg.SetAcctReversalAttrs
122801          (p_event_id             => l_event_id
122802          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
122803          ,p_calculate_acctd_flag => l_calculate_acctd_flag
122804          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
122805    END IF;
122806 
122807    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
122808        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
122809 
122810 --
122811 AcctLineType_46 (
122812  p_application_id  => p_application_id
122813  ,p_event_id     => l_event_id
122814  ,p_calculate_acctd_flag => l_calculate_acctd_flag
122815  ,p_calculate_g_l_flag => l_calculate_g_l_flag
122816  ,p_actual_flag => l_actual_flag
122817  ,p_balance_type_code => l_balance_type_code
122818  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
122819  
122820  , p_source_1 => l_array_source_1(Idx)
122821  , p_source_2 => l_array_source_2(Idx)
122822  , p_source_3 => l_array_source_3(Idx)
122823  , p_source_5 => l_array_source_5(Idx)
122824  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
122825  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
122826  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
122827  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
122828  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
122829  , p_source_11 => l_array_source_11(Idx)
122830  );
122831 If(l_balance_type_code = 'A') THEN
122832   l_actual_gain_loss_ref := l_gain_or_loss_ref;
122833 END IF;
122834 
122835 --
122836 
122837 
122838 --
122839 AcctLineType_118 (
122840  p_application_id  => p_application_id
122841  ,p_event_id     => l_event_id
122842  ,p_calculate_acctd_flag => l_calculate_acctd_flag
122843  ,p_calculate_g_l_flag => l_calculate_g_l_flag
122844  ,p_actual_flag => l_actual_flag
122845  ,p_balance_type_code => l_balance_type_code
122846  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
122847  
122848  , p_source_1 => l_array_source_1(Idx)
122849  , p_source_2 => l_array_source_2(Idx)
122850  , p_source_3 => l_array_source_3(Idx)
122851  , p_source_5 => l_array_source_5(Idx)
122852  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
122853  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
122854  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
122855  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
122856  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
122857  , p_source_11 => l_array_source_11(Idx)
122858  );
122859 If(l_balance_type_code = 'A') THEN
122860   l_actual_gain_loss_ref := l_gain_or_loss_ref;
122861 END IF;
122862 
122863 --
122864 
122865 
122866 --
122867 AcctLineType_200 (
122868  p_application_id  => p_application_id
122869  ,p_event_id     => l_event_id
122870  ,p_calculate_acctd_flag => l_calculate_acctd_flag
122871  ,p_calculate_g_l_flag => l_calculate_g_l_flag
122872  ,p_actual_flag => l_actual_flag
122873  ,p_balance_type_code => l_balance_type_code
122874  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
122875  
122876  , p_source_1 => l_array_source_1(Idx)
122877  , p_source_2 => l_array_source_2(Idx)
122878  , p_source_3 => l_array_source_3(Idx)
122879  , p_source_5 => l_array_source_5(Idx)
122880  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
122881  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
122882  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
122883  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
122884  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
122885  , p_source_11 => l_array_source_11(Idx)
122886  );
122887 If(l_balance_type_code = 'A') THEN
122888   l_actual_gain_loss_ref := l_gain_or_loss_ref;
122889 END IF;
122890 
122891 --
122892 
122893       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
122894       -- or secondary ledger that has different currency with primary
122895       -- or alc that is calculated by sla
122896       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
122897             (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'))
122898 
122899 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
122900 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
122901           AND (l_actual_flag = 'A')) THEN
122902         XLA_AE_LINES_PKG.CreateGainOrLossLines(
122903           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
122904          ,p_application_id   => p_application_id
122905          ,p_amb_context_code => 'DEFAULT'
122906          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
122907          ,p_event_class_code => C_EVENT_CLASS_CODE
122908          ,p_event_type_code  => C_EVENT_TYPE_CODE
122912 
122909          
122910          ,p_gain_ccid        => -1
122911          ,p_loss_ccid        => -1
122913          ,p_actual_flag      => l_actual_flag
122914          ,p_enc_flag         => null
122915          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
122916          ,p_enc_g_l_ref      => null
122917          );
122918       END IF;
122919    END IF;
122920 END IF;
122921 
122922    ELSE
122923       --
122924       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
122925       --
122926       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
122927          trace
122928             (p_msg      => 'Trancaction revesal option is Y'
122929             ,p_level    => C_LEVEL_STATEMENT
122930             ,p_module   => l_log_module);
122931       END IF;
122932    END IF;
122933 
122934 END LOOP;
122935 l_result := XLA_AE_LINES_PKG.InsertLines ;
122936 end loop;
122937 close line_cur;
122938 
122939 
122940 --
122941 -- insert headers into xla_ae_headers_gt table
122942 --
122943 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
122944 
122945 -- insert into errors table here.
122946 
122947 END LOOP;
122948 
122949 --
122950 -- 4865292
122951 --
122952 -- Compare g_hdr_extract_count with event count in
122953 -- CreateHeadersAndLines.
122954 --
122955 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
122956 
122957 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
122958    trace (p_msg     => '# rows extracted from header extract objects '
122959                     || ' (running total): '
122960                     || g_hdr_extract_count
122961          ,p_level   => C_LEVEL_STATEMENT
122962          ,p_module  => l_log_module);
122963 END IF;
122964 
122965 CLOSE header_cur;
122966 --
122967 
122968 --
122969 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122970    trace
122971       (p_msg      => 'END of EventType_250'
122972       ,p_level    => C_LEVEL_PROCEDURE
122973       ,p_module   => l_log_module);
122974 END IF;
122975 --
122976 RETURN l_result;
122977 EXCEPTION
122978 WHEN xla_exceptions_pkg.application_exception THEN
122979    
122980 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
122981 
122982    
122983 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
122984 
122985    RAISE;
122986 
122987 WHEN NO_DATA_FOUND THEN
122988 
122989 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
122990 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
122991 
122992 FOR header_record IN header_cur
122993 LOOP
122994     l_array_header_events(header_record.event_id) := header_record.event_id;
122995 END LOOP;
122996 
122997 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
122998 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
122999 
123000 fnd_file.put_line(fnd_file.LOG, '                    ');
123001 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
123002 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
123003 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
123004 
123005 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
123006 LOOP
123007 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
123008 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
123009         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
123010 	END IF;
123011 END LOOP;
123012 
123013 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
123014 fnd_file.put_line(fnd_file.LOG, '                    ');
123015 
123016 
123017 xla_exceptions_pkg.raise_message
123018       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_250');
123019 
123020 
123021 WHEN OTHERS THEN
123022    xla_exceptions_pkg.raise_message
123023       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_250');
123024 END EventType_250;
123025 --
123026 
123027 ---------------------------------------
123028 --
123029 -- PRIVATE PROCEDURE
123030 --         insert_sources_251
123031 --
123032 ----------------------------------------
123033 --
123034 PROCEDURE insert_sources_251(
123035                                 p_target_ledger_id       IN NUMBER
123036                               , p_language               IN VARCHAR2
123037                               , p_sla_ledger_id          IN NUMBER
123038                               , p_pad_start_date         IN DATE
123039                               , p_pad_end_date           IN DATE
123040                          )
123041 IS
123042 
123043 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CERT';
123044 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BATCH_MATERIAL';
123045 p_apps_owner                   VARCHAR2(30);
123046 l_log_module                   VARCHAR2(240);
123047 BEGIN
123048 IF g_log_enabled THEN
123049       l_log_module := C_DEFAULT_MODULE||'.insert_sources_251';
123050 END IF;
123051 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123052 
123053       trace
123054          (p_msg      => 'BEGIN of insert_sources_251'
123055          ,p_level    => C_LEVEL_PROCEDURE
123056          ,p_module   => l_log_module);
123057 
123058 END IF;
123059 
123063   FROM fnd_oracle_userid
123060 -- select APPS owner
123061 SELECT oracle_username
123062   INTO p_apps_owner
123064  WHERE read_only_flag = 'U'
123065 ;
123066 
123067 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
123068       trace
123069          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
123070                         ' - p_language = '||p_language||
123071                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
123072                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
123073                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
123074                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
123075          ,p_level    => C_LEVEL_STATEMENT
123076          ,p_module   => l_log_module);
123077 END IF;
123078 
123079 
123080 --
123081 INSERT INTO xla_diag_sources --hdr1
123082 (
123083         event_id
123084       , ledger_id
123085       , sla_ledger_id
123086       , description_language
123087       , object_name
123088       , object_type_code
123089       , line_number
123090       , source_application_id
123091       , source_type_code
123092       , source_code
123093       , source_value
123094       , source_meaning
123095       , created_by
123096       , creation_date
123097       , last_update_date
123098       , last_updated_by
123099       , last_update_login
123100       , program_update_date
123101       , program_application_id
123102       , program_id
123103       , request_id
123104 )
123105 SELECT
123106         event_id
123107       , p_target_ledger_id
123108       , p_sla_ledger_id
123109       , p_language
123110       , object_name
123111       , object_type_code
123112       , line_number
123113       , source_application_id
123114       , source_type_code
123115       , source_code
123116       , SUBSTR(source_value ,1,1996)
123117       , SUBSTR(source_meaning,1,200)
123118       , xla_environment_pkg.g_Usr_Id
123119       , TRUNC(SYSDATE)
123120       , TRUNC(SYSDATE)
123121       , xla_environment_pkg.g_Usr_Id
123122       , xla_environment_pkg.g_Login_Id
123123       , TRUNC(SYSDATE)
123124       , xla_environment_pkg.g_Prog_Appl_Id
123125       , xla_environment_pkg.g_Prog_Id
123126       , xla_environment_pkg.g_Req_Id
123127   FROM (
123128        SELECT xet.event_id                  event_id
123129             , 0                             line_number
123130             , CASE r
123131                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
123132                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
123133                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
123134                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
123135                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
123136                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
123137                 
123138                ELSE null
123139               END                           object_name
123140             , CASE r
123141                 WHEN 1 THEN 'HEADER' 
123142                 WHEN 2 THEN 'HEADER' 
123143                 WHEN 3 THEN 'HEADER' 
123144                 WHEN 4 THEN 'HEADER' 
123145                 WHEN 5 THEN 'HEADER' 
123146                 WHEN 6 THEN 'HEADER' 
123147                 
123148                 ELSE null
123149               END                           object_type_code
123150             , CASE r
123151                 WHEN 1 THEN '555' 
123152                 WHEN 2 THEN '555' 
123153                 WHEN 3 THEN '555' 
123154                 WHEN 4 THEN '555' 
123155                 WHEN 5 THEN '555' 
123156                 WHEN 6 THEN '555' 
123157                 
123158                 ELSE null
123159               END                           source_application_id
123160             , 'S'             source_type_code
123161             , CASE r
123162                 WHEN 1 THEN 'ENTITY_CODE' 
123163                 WHEN 2 THEN 'CURRENCY_CODE' 
123164                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
123165                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
123166                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
123167                 WHEN 6 THEN 'TRANSACTION_DATE' 
123168                 
123169                 ELSE null
123170               END                           source_code
123171             , CASE r
123172                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
123173                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
123174                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
123175                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
123176                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
123177                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
123178                 
123179                 ELSE null
123180               END                           source_value
123181             , CASE r
123182                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
123183                           1010186
123184                          ,TO_CHAR(h1.CURRENCY_CODE)
123185                          ,'CURRENCY_CODE'
123186                          ,'S'
123187                          ,555)
123188                 
123189                 ELSE null
123190               END               source_meaning
123191         FROM xla_events_gt     xet  
123192       , GMF_XLA_EXTRACT_HEADERS  h1
123193             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
123194        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
123195          AND xet.event_type_code = C_EVENT_TYPE_CODE
123199 ;
123196             AND h1.event_id = xet.event_id
123197 
123198 )
123200 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
123201 
123202       trace
123203          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
123204          ,p_level    => C_LEVEL_STATEMENT
123205          ,p_module   => l_log_module);
123206 
123207 END IF;
123208 --
123209 
123210 
123211 
123212 --
123213 INSERT INTO xla_diag_sources --line1
123214 (
123215         event_id
123216       , ledger_id
123217       , sla_ledger_id
123218       , description_language
123219       , object_name
123220       , object_type_code
123221       , line_number
123222       , source_application_id
123223       , source_type_code
123224       , source_code
123225       , source_value
123226       , source_meaning
123227       , created_by
123228       , creation_date
123229       , last_update_date
123230       , last_updated_by
123231       , last_update_login
123232       , program_update_date
123233       , program_application_id
123234       , program_id
123235       , request_id
123236 )
123237 SELECT  event_id
123238       , p_target_ledger_id
123239       , p_sla_ledger_id
123240       , p_language
123241       , object_name
123242       , object_type_code
123243       , line_number
123244       , source_application_id
123245       , source_type_code
123246       , source_code
123247       , SUBSTR(source_value,1,1996)
123248       , SUBSTR(source_meaning,1,200)
123249       , xla_environment_pkg.g_Usr_Id
123250       , TRUNC(SYSDATE)
123251       , TRUNC(SYSDATE)
123252       , xla_environment_pkg.g_Usr_Id
123253       , xla_environment_pkg.g_Login_Id
123254       , TRUNC(SYSDATE)
123255       , xla_environment_pkg.g_Prog_Appl_Id
123256       , xla_environment_pkg.g_Prog_Id
123257       , xla_environment_pkg.g_Req_Id
123258   FROM (
123259        SELECT xet.event_id                  event_id
123260             , l2.line_number                 line_number
123261             , CASE r
123262                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
123263                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
123264                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
123265                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
123266                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
123267                 
123268                ELSE null
123269               END                           object_name
123270             , CASE r
123271                 WHEN 1 THEN 'LINE' 
123272                 WHEN 2 THEN 'LINE' 
123273                 WHEN 3 THEN 'LINE' 
123274                 WHEN 4 THEN 'LINE' 
123275                 WHEN 5 THEN 'LINE' 
123276                 
123277                 ELSE null
123278               END                           object_type_code
123279             , CASE r
123280                 WHEN 1 THEN '555' 
123281                 WHEN 2 THEN '555' 
123282                 WHEN 3 THEN '555' 
123283                 WHEN 4 THEN '555' 
123284                 WHEN 5 THEN '555' 
123285                 
123286                 ELSE null
123287               END                           source_application_id
123288             , 'S'             source_type_code
123289             , CASE r
123290                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
123291                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
123292                 WHEN 3 THEN 'ENTERED_AMOUNT' 
123293                 WHEN 4 THEN 'LINE_ID' 
123294                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
123295                 
123296                 ELSE null
123297               END                           source_code
123298             , CASE r
123299                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
123300                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
123301                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
123302                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
123303                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
123304                 
123305                 ELSE null
123306               END                           source_value
123307             , null              source_meaning
123308          FROM  xla_events_gt     xet  
123309         , GMF_XLA_EXTRACT_LINES  l2
123310             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
123311         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
123312           AND xet.event_type_code = C_EVENT_TYPE_CODE
123313             AND l2.event_id          = xet.event_id
123314 
123315 )
123316 ;
123317 --
123318 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
123319 
123320       trace
123321          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
123322          ,p_level    => C_LEVEL_STATEMENT
123323          ,p_module   => l_log_module);
123324 
123325 END IF;
123326 
123327 
123328 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123329       trace
123330          (p_msg      => 'END of insert_sources_251'
123331          ,p_level    => C_LEVEL_PROCEDURE
123332          ,p_module   => l_log_module);
123333 END IF;
123334 EXCEPTION
123335   WHEN xla_exceptions_pkg.application_exception THEN
123336       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
123337             trace
123338                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
123339                ,p_level    => C_LEVEL_EXCEPTION
123340                ,p_module   => l_log_module);
123341       END IF;
123342       RAISE;
123346                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
123343   WHEN OTHERS THEN
123344       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
123345             trace
123347                ,p_level    => C_LEVEL_EXCEPTION
123348                ,p_module   => l_log_module);
123349        END IF;
123350        xla_exceptions_pkg.raise_message
123351            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_251');
123352 END insert_sources_251;
123353 --
123354 
123355 ---------------------------------------
123356 --
123357 -- PRIVATE FUNCTION
123358 --         EventType_251
123359 --
123360 ----------------------------------------
123361 --
123362 FUNCTION EventType_251
123363        (p_application_id         IN NUMBER
123364        ,p_base_ledger_id         IN NUMBER
123365        ,p_target_ledger_id       IN NUMBER
123366        ,p_language               IN VARCHAR2
123367        ,p_currency_code          IN VARCHAR2
123368        ,p_sla_ledger_id          IN NUMBER
123369        ,p_pad_start_date         IN DATE
123370        ,p_pad_end_date           IN DATE
123371        ,p_primary_ledger_id      IN NUMBER)
123372 RETURN BOOLEAN IS
123373 --
123374 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CERT';
123375 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BATCH_MATERIAL';
123376 
123377 l_calculate_acctd_flag   VARCHAR2(1) :='N';
123378 l_calculate_g_l_flag     VARCHAR2(1) :='N';
123379 --
123380 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
123381 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
123382 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
123383 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
123384 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
123385 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
123386 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
123387 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
123388 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
123389 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
123390 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
123391 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
123392 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
123393 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
123394 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
123395 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
123396 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
123397 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
123398 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
123399 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
123400 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
123401 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
123402 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
123403 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
123404 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
123405 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
123406 
123407 l_event_id                             NUMBER;
123408 l_previous_event_id                    NUMBER;
123409 l_first_event_id                       NUMBER;
123410 l_last_event_id                        NUMBER;
123411 
123412 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
123413 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
123414 --
123415 --
123416 l_result                    BOOLEAN := TRUE;
123417 l_rows                      NUMBER  := 1000;
123418 l_event_type_name           VARCHAR2(80) := 'Batch Completion';
123419 l_event_class_name          VARCHAR2(80) := 'Batch Material Transactions';
123420 l_description               VARCHAR2(4000);
123421 l_transaction_reversal      NUMBER;
123422 l_ae_header_id              NUMBER;
123423 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
123424 l_log_module                VARCHAR2(240);
123425 --
123426 l_acct_reversal_source      VARCHAR2(30);
123427 l_trx_reversal_source       VARCHAR2(30);
123428 
123429 l_continue_with_lines       BOOLEAN := TRUE;
123430 --
123431 l_acc_rev_gl_date_source    DATE;                      -- 4262811
123432 --
123433 type t_array_event_id is table of number index by binary_integer;
123434 
123435 l_rec_array_event                    t_rec_array_event;
123436 l_null_rec_array_event               t_rec_array_event;
123437 l_array_ae_header_id                 xla_number_array_type;
123438 l_actual_flag                        VARCHAR2(1) := NULL;
123439 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
123440 l_balance_type_code                  VARCHAR2(1) :=NULL;
123441 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
123442 
123443 --
123444 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
123445 --
123446 
123447 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
123451 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
123448 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
123449 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
123450 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
123452 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
123453 
123454 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
123455 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
123456 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
123457 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
123458 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
123459 
123460 l_array_source_6              t_array_source_6;
123461 l_array_source_7              t_array_source_7;
123462 l_array_source_8              t_array_source_8;
123463 l_array_source_9              t_array_source_9;
123464 l_array_source_10              t_array_source_10;
123465 l_array_source_12              t_array_source_12;
123466 
123467 l_array_source_1      t_array_source_1;
123468 l_array_source_2      t_array_source_2;
123469 l_array_source_3      t_array_source_3;
123470 l_array_source_5      t_array_source_5;
123471 l_array_source_11      t_array_source_11;
123472 
123473 --
123474 CURSOR header_cur
123475 IS
123476 SELECT /*+ leading(xet) cardinality(xet,1) */
123477 -- Event Type Code: CERT
123478 -- Event Class Code: BATCH_MATERIAL
123479     xet.entity_id
123480   , xet.legal_entity_id
123481   , xet.entity_code
123482   , xet.transaction_number
123483   , xet.event_id
123484   , xet.event_class_code
123485   , xet.event_type_code
123486   , xet.event_number
123487   , xet.event_date
123488   , xet.transaction_date
123489   , xet.reference_num_1
123490   , xet.reference_num_2
123491   , xet.reference_num_3
123492   , xet.reference_num_4
123493   , xet.reference_char_1
123494   , xet.reference_char_2
123495   , xet.reference_char_3
123496   , xet.reference_char_4
123497   , xet.reference_date_1
123498   , xet.reference_date_2
123499   , xet.reference_date_3
123500   , xet.reference_date_4
123501   , xet.event_created_by
123502   , xet.budgetary_control_flag 
123503   , h1.ENTITY_CODE    source_6
123504   , h1.CURRENCY_CODE    source_7
123505   , h1.CURRENCY_CONVERSION_DATE    source_8
123506   , h1.CURRENCY_CONVERSION_RATE    source_9
123507   , h1.CURRENCY_CONVERSION_TYPE    source_10
123508   , h1.TRANSACTION_DATE    source_12
123509   FROM xla_events_gt     xet 
123510   , GMF_XLA_EXTRACT_HEADERS  h1
123511  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
123512    and xet.event_type_code = C_EVENT_TYPE_CODE
123513    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
123514 
123515  ORDER BY event_id
123516 ;
123517 
123518 
123519 --
123520 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
123521 IS
123522 SELECT /*+ leading(xet) cardinality(xet,1) */
123523 -- Event Type Code: CERT
123524 -- Event Class Code: BATCH_MATERIAL
123525     xet.entity_id
123526    ,xet.legal_entity_id
123527    ,xet.entity_code
123528    ,xet.transaction_number
123529    ,xet.event_id
123530    ,xet.event_class_code
123531    ,xet.event_type_code
123532    ,xet.event_number
123533    ,xet.event_date
123534    ,xet.transaction_date
123535    ,xet.reference_num_1
123536    ,xet.reference_num_2
123537    ,xet.reference_num_3
123538    ,xet.reference_num_4
123539    ,xet.reference_char_1
123540    ,xet.reference_char_2
123541    ,xet.reference_char_3
123542    ,xet.reference_char_4
123543    ,xet.reference_date_1
123544    ,xet.reference_date_2
123545    ,xet.reference_date_3
123546    ,xet.reference_date_4
123547    ,xet.event_created_by
123548    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
123549   , l2.TRANSACTION_ACCOUNT_ID    source_1
123550   , l2.JOURNAL_LINE_TYPE    source_2
123551   , l2.ENTERED_AMOUNT    source_3
123552   , l2.LINE_ID    source_5
123553   , l2.ACCOUNTED_AMOUNT    source_11
123554   FROM xla_events_gt     xet 
123555   , GMF_XLA_EXTRACT_LINES  l2
123556  WHERE xet.event_id between x_first_event_id and x_last_event_id
123557    and xet.event_date between p_pad_start_date and p_pad_end_date
123558    and xet.event_type_code = C_EVENT_TYPE_CODE
123559    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
123560 ;
123561 
123562 --
123563 BEGIN
123564 IF g_log_enabled THEN
123565    l_log_module := C_DEFAULT_MODULE||'.EventType_251';
123566 END IF;
123567 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123568    trace
123569       (p_msg      => 'BEGIN of EventType_251'
123570       ,p_level    => C_LEVEL_PROCEDURE
123571       ,p_module   => l_log_module);
123572 END IF;
123573 
123574 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
123575    trace
123576       (p_msg      => 'p_application_id = '||p_application_id||
123577                      ' - p_base_ledger_id = '||p_base_ledger_id||
123578                      ' - p_target_ledger_id  = '||p_target_ledger_id||
123579                      ' - p_language = '||p_language||
123583       ,p_module   => l_log_module);
123580                      ' - p_currency_code = '||p_currency_code||
123581                      ' - p_sla_ledger_id = '||p_sla_ledger_id
123582       ,p_level    => C_LEVEL_STATEMENT
123584 END IF;
123585 --
123586 -- initialze arrays
123587 --
123588 g_array_event.DELETE;
123589 l_rec_array_event := l_null_rec_array_event;
123590 --
123591 --------------------------------------
123592 -- 4262811 Initialze MPA Line Number
123593 --------------------------------------
123594 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
123595 
123596 --
123597 
123598 --
123599 OPEN header_cur;
123600 --
123601 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
123602    trace
123603    (p_msg      => 'SQL - FETCH header_cur'
123604    ,p_level    => C_LEVEL_STATEMENT
123605    ,p_module   => l_log_module);
123606 END IF;
123607 --
123608 LOOP
123609 FETCH header_cur BULK COLLECT INTO
123610         l_array_entity_id
123611       , l_array_legal_entity_id
123612       , l_array_entity_code
123613       , l_array_transaction_num
123614       , l_array_event_id
123615       , l_array_class_code
123616       , l_array_event_type
123617       , l_array_event_number
123618       , l_array_event_date
123619       , l_array_transaction_date
123620       , l_array_reference_num_1
123621       , l_array_reference_num_2
123622       , l_array_reference_num_3
123623       , l_array_reference_num_4
123624       , l_array_reference_char_1
123625       , l_array_reference_char_2
123626       , l_array_reference_char_3
123627       , l_array_reference_char_4
123628       , l_array_reference_date_1
123629       , l_array_reference_date_2
123630       , l_array_reference_date_3
123631       , l_array_reference_date_4
123632       , l_array_event_created_by
123633       , l_array_budgetary_control_flag 
123634       , l_array_source_6
123635       , l_array_source_7
123636       , l_array_source_8
123637       , l_array_source_9
123638       , l_array_source_10
123639       , l_array_source_12
123640       LIMIT l_rows;
123641 --
123642 IF (C_LEVEL_EVENT >= g_log_level) THEN
123643    trace
123644    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
123645    ,p_level    => C_LEVEL_EVENT
123646    ,p_module   => l_log_module);
123647 END IF;
123648 --
123649 EXIT WHEN l_array_entity_id.COUNT = 0;
123650 
123651 -- initialize arrays
123652 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
123653 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
123654 
123655 --
123656 -- Bug 4458708
123657 --
123658 XLA_AE_LINES_PKG.g_LineNumber := 0;
123659 
123660 
123661 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
123662 g_last_hdr_idx := l_array_event_id.LAST;
123663 --
123664 -- loop for the headers. Each iteration is for each header extract row
123665 -- fetched in header cursor
123666 --
123667 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
123668 
123669 --
123670 -- set event info as cache for other routines to refer event attributes
123671 --
123672 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
123673    (p_application_id           => p_application_id
123674    ,p_primary_ledger_id        => p_primary_ledger_id
123675    ,p_base_ledger_id           => p_base_ledger_id
123676    ,p_target_ledger_id         => p_target_ledger_id
123677    ,p_entity_id                => l_array_entity_id(hdr_idx)
123678    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
123679    ,p_entity_code              => l_array_entity_code(hdr_idx)
123680    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
123681    ,p_event_id                 => l_array_event_id(hdr_idx)
123682    ,p_event_class_code         => l_array_class_code(hdr_idx)
123683    ,p_event_type_code          => l_array_event_type(hdr_idx)
123684    ,p_event_number             => l_array_event_number(hdr_idx)
123685    ,p_event_date               => l_array_event_date(hdr_idx)
123686    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
123687    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
123688    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
123689    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
123690    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
123691    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
123692    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
123693    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
123694    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
123695    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
123696    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
123697    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
123698    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
123699    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
123700    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
123701 
123702 --
123703 -- set the status of entry to C_VALID (0)
123704 --
123705 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
123706 
123707 --
123708 -- initialize a row for ae header
123709 --
123710 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
123711 
123712 l_event_id := l_array_event_id(hdr_idx);
123713 
123714 --
123715 -- storing the hdr_idx for event. May be used by line cursor.
123716 --
123720 -- store sources from header extract. This can be improved to
123717 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
123718 
123719 --
123721 -- store only those sources from header extract that may be used in lines
123722 --
123723 
123724 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
123725 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
123726 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
123727 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
123728 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
123729 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
123730 
123731 --
123732 -- initilaize the status of ae headers for diffrent balance types
123733 -- the status is initialised to C_NOT_CREATED (2)
123734 --
123735 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
123736 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
123737 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
123738 
123739 --
123740 -- call api to validate and store accounting attributes for header
123741 --
123742 
123743 ------------------------------------------------------------
123744 -- Accrual Reversal : to get date for Standard Source (NONE)
123745 ------------------------------------------------------------
123746 l_acc_rev_gl_date_source := NULL;
123747 
123748      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
123749       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
123750 
123751 
123752 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
123753 
123754 XLA_AE_HEADER_PKG.SetJeCategoryName;
123755 
123756 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
123757 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
123758 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
123759 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
123760 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
123761 
123762 
123763 -- No header level analytical criteria
123764 
123765 --
123766 --accounting attribute enhancement, bug 3612931
123767 --
123768 l_trx_reversal_source := SUBSTR(NULL, 1,30);
123769 
123770 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
123771    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
123772 
123773    xla_accounting_err_pkg.build_message
123774       (p_appli_s_name            => 'XLA'
123775       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
123776       ,p_token_1                 => 'ACCT_ATTR_NAME'
123777       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
123778       ,p_token_2                 => 'PRODUCT_NAME'
123779       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
123780       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
123781       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
123782       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
123783 
123784 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
123785    --
123786    -- following sets the accounting attributes needed to reverse
123787    -- accounting for a distributeion
123788    --
123789    xla_ae_lines_pkg.SetTrxReversalAttrs
123790       (p_event_id              => l_event_id
123791       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
123792       ,p_trx_reversal_source   => l_trx_reversal_source);
123793 
123794 END IF;
123795 
123796 
123797 ----------------------------------------------------------------
123798 -- 4262811 -  update the header statuses to invalid in need be
123799 ----------------------------------------------------------------
123800 --
123801 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
123802 
123803 
123804   -----------------------------------------------
123805   -- No accrual reversal for the event class/type
123806   -----------------------------------------------
123807 ----------------------------------------------------------------
123808 
123809 --
123810 -- this ends the header loop iteration for one bulk fetch
123811 --
123812 END LOOP;
123813 
123814 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
123815 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
123816 
123817 --
123818 -- insert dummy rows into lines gt table that were created due to
123819 -- transaction reversals
123820 --
123821 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
123822    l_result := XLA_AE_LINES_PKG.InsertLines;
123823 END IF;
123824 
123825 --
123826 -- reset the temp_line_num for each set of events fetched from header
123827 -- cursor rather than doing it for each new event in line cursor
123828 -- Bug 3939231
123829 --
123830 xla_ae_lines_pkg.g_temp_line_num := 0;
123831 
123832 
123833 
123834 --
123835 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
123836 --
123837 --
123838 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
123842          ,p_level    => C_LEVEL_STATEMENT
123839 
123840       trace
123841          (p_msg      => 'SQL - FETCH line_cur'
123843          ,p_module   => l_log_module);
123844 
123845 END IF;
123846 --
123847 --
123848 LOOP
123849   --
123850   FETCH line_cur BULK COLLECT INTO
123851         l_array_entity_id
123852       , l_array_legal_entity_id
123853       , l_array_entity_code
123854       , l_array_transaction_num
123855       , l_array_event_id
123856       , l_array_class_code
123857       , l_array_event_type
123858       , l_array_event_number
123859       , l_array_event_date
123860       , l_array_transaction_date
123861       , l_array_reference_num_1
123862       , l_array_reference_num_2
123863       , l_array_reference_num_3
123864       , l_array_reference_num_4
123865       , l_array_reference_char_1
123866       , l_array_reference_char_2
123867       , l_array_reference_char_3
123868       , l_array_reference_char_4
123869       , l_array_reference_date_1
123870       , l_array_reference_date_2
123871       , l_array_reference_date_3
123872       , l_array_reference_date_4
123873       , l_array_event_created_by
123874       , l_array_budgetary_control_flag
123875       , l_array_extract_line_num 
123876       , l_array_source_1
123877       , l_array_source_2
123878       , l_array_source_3
123879       , l_array_source_5
123880       , l_array_source_11
123881       LIMIT l_rows;
123882 
123883   --
123884   IF (C_LEVEL_EVENT >= g_log_level) THEN
123885             trace
123886                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
123887                ,p_level    => C_LEVEL_EVENT
123888                ,p_module   => l_log_module);
123889   END IF;
123890   --
123891   EXIT WHEN l_array_entity_id.count = 0;
123892 
123893   XLA_AE_LINES_PKG.g_rec_lines := null;
123894 
123895 --
123896 -- Bug 4458708
123897 --
123898 XLA_AE_LINES_PKG.g_LineNumber := 0;
123899 --
123900 --
123901 
123902 FOR Idx IN 1..l_array_event_id.count LOOP
123903    --
123904    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
123905    --
123906    l_event_id := l_array_event_id(idx);  -- 5648433
123907 
123908    --
123909    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
123910    --
123911 
123912    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
123913              (g_array_event(l_event_id).array_value_num('header_index'))
123914          ,'N'
123915          ) <> 'Y'
123916    THEN
123917       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
123918          trace
123919             (p_msg      => 'Trancaction revesal option is not Y '
123920             ,p_level    => C_LEVEL_STATEMENT
123921             ,p_module   => l_log_module);
123922       END IF;
123923 
123924 --
123925 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
123926 --
123927 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
123928 --
123929 -- set event info as cache for other routines to refer event attributes
123930 --
123931 
123932 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
123933    l_previous_event_id := l_event_id;
123934 
123935    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
123936       (p_application_id           => p_application_id
123937       ,p_primary_ledger_id        => p_primary_ledger_id
123938       ,p_base_ledger_id           => p_base_ledger_id
123939       ,p_target_ledger_id         => p_target_ledger_id
123940       ,p_entity_id                => l_array_entity_id(Idx)
123941       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
123942       ,p_entity_code              => l_array_entity_code(Idx)
123943       ,p_transaction_num          => l_array_transaction_num(Idx)
123944       ,p_event_id                 => l_array_event_id(Idx)
123945       ,p_event_class_code         => l_array_class_code(Idx)
123946       ,p_event_type_code          => l_array_event_type(Idx)
123947       ,p_event_number             => l_array_event_number(Idx)
123948       ,p_event_date               => l_array_event_date(Idx)
123949       ,p_transaction_date         => l_array_transaction_date(Idx)
123950       ,p_reference_num_1          => l_array_reference_num_1(Idx)
123951       ,p_reference_num_2          => l_array_reference_num_2(Idx)
123952       ,p_reference_num_3          => l_array_reference_num_3(Idx)
123953       ,p_reference_num_4          => l_array_reference_num_4(Idx)
123954       ,p_reference_char_1         => l_array_reference_char_1(Idx)
123955       ,p_reference_char_2         => l_array_reference_char_2(Idx)
123956       ,p_reference_char_3         => l_array_reference_char_3(Idx)
123957       ,p_reference_char_4         => l_array_reference_char_4(Idx)
123958       ,p_reference_date_1         => l_array_reference_date_1(Idx)
123959       ,p_reference_date_2         => l_array_reference_date_2(Idx)
123960       ,p_reference_date_3         => l_array_reference_date_3(Idx)
123961       ,p_reference_date_4         => l_array_reference_date_4(Idx)
123962       ,p_event_created_by         => l_array_event_created_by(Idx)
123963       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
123964        --
123965 END IF;
123966 
123967 
123968 
123969 --
123970 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
123971 
123972 l_acct_reversal_source := SUBSTR(NULL, 1,30);
123973 
123974 IF l_continue_with_lines THEN
123978       xla_accounting_err_pkg.build_message
123975    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
123976       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
123977 
123979          (p_appli_s_name            => 'XLA'
123980          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
123981          ,p_token_1                 => 'LINE_NUMBER'
123982          ,p_value_1                 => l_array_extract_line_num(Idx)
123983          ,p_token_2                 => 'PRODUCT_NAME'
123984          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
123985          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
123986          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
123987          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
123988 
123989    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
123990       --
123991       -- following sets the accounting attributes needed to reverse
123992       -- accounting for a distributeion
123993       --
123994 
123995       --
123996       -- 5217187
123997       --
123998       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
123999       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
124000                                        g_array_event(l_event_id).array_value_num('header_index'));
124001       --
124002       --
124003 
124004       -- No reversal code generated
124005 
124006       xla_ae_lines_pkg.SetAcctReversalAttrs
124007          (p_event_id             => l_event_id
124008          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
124009          ,p_calculate_acctd_flag => l_calculate_acctd_flag
124010          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
124011    END IF;
124012 
124013    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
124014        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
124015 
124016 --
124017 AcctLineType_59 (
124018  p_application_id  => p_application_id
124019  ,p_event_id     => l_event_id
124020  ,p_calculate_acctd_flag => l_calculate_acctd_flag
124021  ,p_calculate_g_l_flag => l_calculate_g_l_flag
124022  ,p_actual_flag => l_actual_flag
124023  ,p_balance_type_code => l_balance_type_code
124024  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
124025  
124026  , p_source_1 => l_array_source_1(Idx)
124027  , p_source_2 => l_array_source_2(Idx)
124028  , p_source_3 => l_array_source_3(Idx)
124029  , p_source_5 => l_array_source_5(Idx)
124030  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
124031  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
124032  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
124033  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
124034  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
124035  , p_source_11 => l_array_source_11(Idx)
124036  );
124037 If(l_balance_type_code = 'A') THEN
124038   l_actual_gain_loss_ref := l_gain_or_loss_ref;
124039 END IF;
124040 
124041 --
124042 
124043 
124044 --
124045 AcctLineType_154 (
124046  p_application_id  => p_application_id
124047  ,p_event_id     => l_event_id
124048  ,p_calculate_acctd_flag => l_calculate_acctd_flag
124049  ,p_calculate_g_l_flag => l_calculate_g_l_flag
124050  ,p_actual_flag => l_actual_flag
124051  ,p_balance_type_code => l_balance_type_code
124052  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
124053  
124054  , p_source_1 => l_array_source_1(Idx)
124055  , p_source_2 => l_array_source_2(Idx)
124056  , p_source_3 => l_array_source_3(Idx)
124057  , p_source_5 => l_array_source_5(Idx)
124058  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
124059  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
124060  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
124061  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
124062  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
124063  , p_source_11 => l_array_source_11(Idx)
124064  );
124065 If(l_balance_type_code = 'A') THEN
124066   l_actual_gain_loss_ref := l_gain_or_loss_ref;
124067 END IF;
124068 
124069 --
124070 
124071 
124072 --
124073 AcctLineType_215 (
124074  p_application_id  => p_application_id
124075  ,p_event_id     => l_event_id
124076  ,p_calculate_acctd_flag => l_calculate_acctd_flag
124077  ,p_calculate_g_l_flag => l_calculate_g_l_flag
124078  ,p_actual_flag => l_actual_flag
124079  ,p_balance_type_code => l_balance_type_code
124080  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
124081  
124082  , p_source_1 => l_array_source_1(Idx)
124083  , p_source_2 => l_array_source_2(Idx)
124084  , p_source_3 => l_array_source_3(Idx)
124085  , p_source_5 => l_array_source_5(Idx)
124086  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
124087  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
124088  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
124089  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
124090  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
124091  , p_source_11 => l_array_source_11(Idx)
124092  );
124093 If(l_balance_type_code = 'A') THEN
124094   l_actual_gain_loss_ref := l_gain_or_loss_ref;
124095 END IF;
124096 
124097 --
124098 
124099 
124100 --
124101 AcctLineType_230 (
124105  ,p_calculate_g_l_flag => l_calculate_g_l_flag
124102  p_application_id  => p_application_id
124103  ,p_event_id     => l_event_id
124104  ,p_calculate_acctd_flag => l_calculate_acctd_flag
124106  ,p_actual_flag => l_actual_flag
124107  ,p_balance_type_code => l_balance_type_code
124108  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
124109  
124110  , p_source_1 => l_array_source_1(Idx)
124111  , p_source_2 => l_array_source_2(Idx)
124112  , p_source_3 => l_array_source_3(Idx)
124113  , p_source_5 => l_array_source_5(Idx)
124114  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
124115  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
124116  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
124117  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
124118  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
124119  , p_source_11 => l_array_source_11(Idx)
124120  );
124121 If(l_balance_type_code = 'A') THEN
124122   l_actual_gain_loss_ref := l_gain_or_loss_ref;
124123 END IF;
124124 
124125 --
124126 
124127 
124128 --
124129 AcctLineType_239 (
124130  p_application_id  => p_application_id
124131  ,p_event_id     => l_event_id
124132  ,p_calculate_acctd_flag => l_calculate_acctd_flag
124133  ,p_calculate_g_l_flag => l_calculate_g_l_flag
124134  ,p_actual_flag => l_actual_flag
124135  ,p_balance_type_code => l_balance_type_code
124136  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
124137  
124138  , p_source_1 => l_array_source_1(Idx)
124139  , p_source_2 => l_array_source_2(Idx)
124140  , p_source_3 => l_array_source_3(Idx)
124141  , p_source_5 => l_array_source_5(Idx)
124142  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
124143  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
124144  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
124145  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
124146  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
124147  , p_source_11 => l_array_source_11(Idx)
124148  );
124149 If(l_balance_type_code = 'A') THEN
124150   l_actual_gain_loss_ref := l_gain_or_loss_ref;
124151 END IF;
124152 
124153 --
124154 
124155       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
124156       -- or secondary ledger that has different currency with primary
124157       -- or alc that is calculated by sla
124158       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
124159             (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'))
124160 
124161 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
124162 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
124163           AND (l_actual_flag = 'A')) THEN
124164         XLA_AE_LINES_PKG.CreateGainOrLossLines(
124165           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
124166          ,p_application_id   => p_application_id
124167          ,p_amb_context_code => 'DEFAULT'
124168          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
124169          ,p_event_class_code => C_EVENT_CLASS_CODE
124170          ,p_event_type_code  => C_EVENT_TYPE_CODE
124171          
124172          ,p_gain_ccid        => -1
124173          ,p_loss_ccid        => -1
124174 
124175          ,p_actual_flag      => l_actual_flag
124176          ,p_enc_flag         => null
124177          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
124178          ,p_enc_g_l_ref      => null
124179          );
124180       END IF;
124181    END IF;
124182 END IF;
124183 
124184    ELSE
124185       --
124186       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
124187       --
124188       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
124189          trace
124190             (p_msg      => 'Trancaction revesal option is Y'
124191             ,p_level    => C_LEVEL_STATEMENT
124192             ,p_module   => l_log_module);
124193       END IF;
124194    END IF;
124195 
124196 END LOOP;
124197 l_result := XLA_AE_LINES_PKG.InsertLines ;
124198 end loop;
124199 close line_cur;
124200 
124201 
124202 --
124203 -- insert headers into xla_ae_headers_gt table
124204 --
124205 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
124206 
124207 -- insert into errors table here.
124208 
124209 END LOOP;
124210 
124211 --
124212 -- 4865292
124213 --
124214 -- Compare g_hdr_extract_count with event count in
124215 -- CreateHeadersAndLines.
124216 --
124217 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
124218 
124219 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
124220    trace (p_msg     => '# rows extracted from header extract objects '
124221                     || ' (running total): '
124222                     || g_hdr_extract_count
124223          ,p_level   => C_LEVEL_STATEMENT
124224          ,p_module  => l_log_module);
124225 END IF;
124226 
124227 CLOSE header_cur;
124228 --
124229 
124230 --
124231 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124232    trace
124233       (p_msg      => 'END of EventType_251'
124234       ,p_level    => C_LEVEL_PROCEDURE
124235       ,p_module   => l_log_module);
124236 END IF;
124237 --
124238 RETURN l_result;
124242 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
124239 EXCEPTION
124240 WHEN xla_exceptions_pkg.application_exception THEN
124241    
124243 
124244    
124245 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
124246 
124247    RAISE;
124248 
124249 WHEN NO_DATA_FOUND THEN
124250 
124251 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
124252 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
124253 
124254 FOR header_record IN header_cur
124255 LOOP
124256     l_array_header_events(header_record.event_id) := header_record.event_id;
124257 END LOOP;
124258 
124259 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
124260 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
124261 
124262 fnd_file.put_line(fnd_file.LOG, '                    ');
124263 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
124264 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
124265 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
124266 
124267 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
124268 LOOP
124269 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
124270 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
124271         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
124272 	END IF;
124273 END LOOP;
124274 
124275 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
124276 fnd_file.put_line(fnd_file.LOG, '                    ');
124277 
124278 
124279 xla_exceptions_pkg.raise_message
124280       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_251');
124281 
124282 
124283 WHEN OTHERS THEN
124284    xla_exceptions_pkg.raise_message
124285       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_251');
124286 END EventType_251;
124287 --
124288 
124289 ---------------------------------------
124290 --
124291 -- PRIVATE PROCEDURE
124292 --         insert_sources_252
124293 --
124294 ----------------------------------------
124295 --
124296 PROCEDURE insert_sources_252(
124297                                 p_target_ledger_id       IN NUMBER
124298                               , p_language               IN VARCHAR2
124299                               , p_sla_ledger_id          IN NUMBER
124300                               , p_pad_start_date         IN DATE
124301                               , p_pad_end_date           IN DATE
124302                          )
124303 IS
124304 
124305 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CLOS';
124306 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BATCH_CLOSE';
124307 p_apps_owner                   VARCHAR2(30);
124308 l_log_module                   VARCHAR2(240);
124309 BEGIN
124310 IF g_log_enabled THEN
124311       l_log_module := C_DEFAULT_MODULE||'.insert_sources_252';
124312 END IF;
124313 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124314 
124315       trace
124316          (p_msg      => 'BEGIN of insert_sources_252'
124317          ,p_level    => C_LEVEL_PROCEDURE
124318          ,p_module   => l_log_module);
124319 
124320 END IF;
124321 
124322 -- select APPS owner
124323 SELECT oracle_username
124324   INTO p_apps_owner
124325   FROM fnd_oracle_userid
124326  WHERE read_only_flag = 'U'
124327 ;
124328 
124329 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
124330       trace
124331          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
124332                         ' - p_language = '||p_language||
124333                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
124334                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
124335                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
124336                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
124337          ,p_level    => C_LEVEL_STATEMENT
124338          ,p_module   => l_log_module);
124339 END IF;
124340 
124341 
124342 --
124343 INSERT INTO xla_diag_sources --hdr1
124344 (
124345         event_id
124346       , ledger_id
124347       , sla_ledger_id
124348       , description_language
124349       , object_name
124350       , object_type_code
124351       , line_number
124352       , source_application_id
124353       , source_type_code
124354       , source_code
124355       , source_value
124356       , source_meaning
124357       , created_by
124358       , creation_date
124359       , last_update_date
124360       , last_updated_by
124361       , last_update_login
124362       , program_update_date
124363       , program_application_id
124364       , program_id
124365       , request_id
124366 )
124367 SELECT
124368         event_id
124369       , p_target_ledger_id
124370       , p_sla_ledger_id
124371       , p_language
124372       , object_name
124373       , object_type_code
124374       , line_number
124375       , source_application_id
124376       , source_type_code
124377       , source_code
124378       , SUBSTR(source_value ,1,1996)
124379       , SUBSTR(source_meaning,1,200)
124380       , xla_environment_pkg.g_Usr_Id
124381       , TRUNC(SYSDATE)
124382       , TRUNC(SYSDATE)
124383       , xla_environment_pkg.g_Usr_Id
124384       , xla_environment_pkg.g_Login_Id
124385       , TRUNC(SYSDATE)
124389   FROM (
124386       , xla_environment_pkg.g_Prog_Appl_Id
124387       , xla_environment_pkg.g_Prog_Id
124388       , xla_environment_pkg.g_Req_Id
124390        SELECT xet.event_id                  event_id
124391             , 0                             line_number
124392             , CASE r
124393                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
124394                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
124395                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
124396                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
124397                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
124398                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
124399                 
124400                ELSE null
124401               END                           object_name
124402             , CASE r
124403                 WHEN 1 THEN 'HEADER' 
124404                 WHEN 2 THEN 'HEADER' 
124405                 WHEN 3 THEN 'HEADER' 
124406                 WHEN 4 THEN 'HEADER' 
124407                 WHEN 5 THEN 'HEADER' 
124408                 WHEN 6 THEN 'HEADER' 
124409                 
124410                 ELSE null
124411               END                           object_type_code
124412             , CASE r
124413                 WHEN 1 THEN '555' 
124414                 WHEN 2 THEN '555' 
124415                 WHEN 3 THEN '555' 
124416                 WHEN 4 THEN '555' 
124417                 WHEN 5 THEN '555' 
124418                 WHEN 6 THEN '555' 
124419                 
124420                 ELSE null
124421               END                           source_application_id
124422             , 'S'             source_type_code
124423             , CASE r
124424                 WHEN 1 THEN 'ENTITY_CODE' 
124425                 WHEN 2 THEN 'CURRENCY_CODE' 
124426                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
124427                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
124428                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
124429                 WHEN 6 THEN 'TRANSACTION_DATE' 
124430                 
124431                 ELSE null
124432               END                           source_code
124433             , CASE r
124434                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
124435                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
124436                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
124437                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
124438                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
124439                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
124440                 
124441                 ELSE null
124442               END                           source_value
124443             , CASE r
124444                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
124445                           1010186
124446                          ,TO_CHAR(h1.CURRENCY_CODE)
124447                          ,'CURRENCY_CODE'
124448                          ,'S'
124449                          ,555)
124450                 
124451                 ELSE null
124452               END               source_meaning
124453         FROM xla_events_gt     xet  
124454       , GMF_XLA_EXTRACT_HEADERS  h1
124455             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
124456        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
124457          AND xet.event_type_code = C_EVENT_TYPE_CODE
124458             AND h1.event_id = xet.event_id
124459 
124460 )
124461 ;
124462 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
124463 
124464       trace
124465          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
124466          ,p_level    => C_LEVEL_STATEMENT
124467          ,p_module   => l_log_module);
124468 
124469 END IF;
124470 --
124471 
124472 
124473 
124474 --
124475 INSERT INTO xla_diag_sources --line1
124476 (
124477         event_id
124478       , ledger_id
124479       , sla_ledger_id
124480       , description_language
124481       , object_name
124482       , object_type_code
124483       , line_number
124484       , source_application_id
124485       , source_type_code
124486       , source_code
124487       , source_value
124488       , source_meaning
124489       , created_by
124490       , creation_date
124491       , last_update_date
124492       , last_updated_by
124493       , last_update_login
124494       , program_update_date
124495       , program_application_id
124496       , program_id
124497       , request_id
124498 )
124499 SELECT  event_id
124500       , p_target_ledger_id
124501       , p_sla_ledger_id
124502       , p_language
124503       , object_name
124504       , object_type_code
124505       , line_number
124506       , source_application_id
124507       , source_type_code
124508       , source_code
124509       , SUBSTR(source_value,1,1996)
124510       , SUBSTR(source_meaning,1,200)
124511       , xla_environment_pkg.g_Usr_Id
124512       , TRUNC(SYSDATE)
124513       , TRUNC(SYSDATE)
124514       , xla_environment_pkg.g_Usr_Id
124515       , xla_environment_pkg.g_Login_Id
124516       , TRUNC(SYSDATE)
124517       , xla_environment_pkg.g_Prog_Appl_Id
124518       , xla_environment_pkg.g_Prog_Id
124519       , xla_environment_pkg.g_Req_Id
124520   FROM (
124521        SELECT xet.event_id                  event_id
124522             , l2.line_number                 line_number
124523             , CASE r
124527                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
124524                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
124525                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
124526                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
124528                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
124529                 
124530                ELSE null
124531               END                           object_name
124532             , CASE r
124533                 WHEN 1 THEN 'LINE' 
124534                 WHEN 2 THEN 'LINE' 
124535                 WHEN 3 THEN 'LINE' 
124536                 WHEN 4 THEN 'LINE' 
124537                 WHEN 5 THEN 'LINE' 
124538                 
124539                 ELSE null
124540               END                           object_type_code
124541             , CASE r
124542                 WHEN 1 THEN '555' 
124543                 WHEN 2 THEN '555' 
124544                 WHEN 3 THEN '555' 
124545                 WHEN 4 THEN '555' 
124546                 WHEN 5 THEN '555' 
124547                 
124548                 ELSE null
124549               END                           source_application_id
124550             , 'S'             source_type_code
124551             , CASE r
124552                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
124553                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
124554                 WHEN 3 THEN 'ENTERED_AMOUNT' 
124555                 WHEN 4 THEN 'LINE_ID' 
124556                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
124557                 
124558                 ELSE null
124559               END                           source_code
124560             , CASE r
124561                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
124562                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
124563                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
124564                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
124565                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
124566                 
124567                 ELSE null
124568               END                           source_value
124569             , null              source_meaning
124570          FROM  xla_events_gt     xet  
124571         , GMF_XLA_EXTRACT_LINES  l2
124572             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
124573         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
124574           AND xet.event_type_code = C_EVENT_TYPE_CODE
124575             AND l2.event_id          = xet.event_id
124576 
124577 )
124578 ;
124579 --
124580 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
124581 
124582       trace
124583          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
124584          ,p_level    => C_LEVEL_STATEMENT
124585          ,p_module   => l_log_module);
124586 
124587 END IF;
124588 
124589 
124590 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124591       trace
124592          (p_msg      => 'END of insert_sources_252'
124593          ,p_level    => C_LEVEL_PROCEDURE
124594          ,p_module   => l_log_module);
124595 END IF;
124596 EXCEPTION
124597   WHEN xla_exceptions_pkg.application_exception THEN
124598       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
124599             trace
124600                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
124601                ,p_level    => C_LEVEL_EXCEPTION
124602                ,p_module   => l_log_module);
124603       END IF;
124604       RAISE;
124605   WHEN OTHERS THEN
124606       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
124607             trace
124608                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
124609                ,p_level    => C_LEVEL_EXCEPTION
124610                ,p_module   => l_log_module);
124611        END IF;
124612        xla_exceptions_pkg.raise_message
124613            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_252');
124614 END insert_sources_252;
124615 --
124616 
124617 ---------------------------------------
124618 --
124619 -- PRIVATE FUNCTION
124620 --         EventType_252
124621 --
124622 ----------------------------------------
124623 --
124624 FUNCTION EventType_252
124625        (p_application_id         IN NUMBER
124626        ,p_base_ledger_id         IN NUMBER
124627        ,p_target_ledger_id       IN NUMBER
124628        ,p_language               IN VARCHAR2
124629        ,p_currency_code          IN VARCHAR2
124630        ,p_sla_ledger_id          IN NUMBER
124631        ,p_pad_start_date         IN DATE
124632        ,p_pad_end_date           IN DATE
124633        ,p_primary_ledger_id      IN NUMBER)
124634 RETURN BOOLEAN IS
124635 --
124636 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CLOS';
124637 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BATCH_CLOSE';
124638 
124639 l_calculate_acctd_flag   VARCHAR2(1) :='N';
124640 l_calculate_g_l_flag     VARCHAR2(1) :='N';
124641 --
124642 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
124643 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
124644 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
124645 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
124646 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
124647 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
124648 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
124649 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
124653 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
124650 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
124651 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
124652 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
124654 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
124655 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
124656 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
124657 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
124658 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
124659 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
124660 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
124661 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
124662 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
124663 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
124664 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
124665 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
124666 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
124667 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
124668 
124669 l_event_id                             NUMBER;
124670 l_previous_event_id                    NUMBER;
124671 l_first_event_id                       NUMBER;
124672 l_last_event_id                        NUMBER;
124673 
124674 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
124675 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
124676 --
124677 --
124678 l_result                    BOOLEAN := TRUE;
124679 l_rows                      NUMBER  := 1000;
124680 l_event_type_name           VARCHAR2(80) := 'Batch Close';
124681 l_event_class_name          VARCHAR2(80) := 'Batch Close Variances';
124682 l_description               VARCHAR2(4000);
124683 l_transaction_reversal      NUMBER;
124684 l_ae_header_id              NUMBER;
124685 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
124686 l_log_module                VARCHAR2(240);
124687 --
124688 l_acct_reversal_source      VARCHAR2(30);
124689 l_trx_reversal_source       VARCHAR2(30);
124690 
124691 l_continue_with_lines       BOOLEAN := TRUE;
124692 --
124693 l_acc_rev_gl_date_source    DATE;                      -- 4262811
124694 --
124695 type t_array_event_id is table of number index by binary_integer;
124696 
124697 l_rec_array_event                    t_rec_array_event;
124698 l_null_rec_array_event               t_rec_array_event;
124699 l_array_ae_header_id                 xla_number_array_type;
124700 l_actual_flag                        VARCHAR2(1) := NULL;
124701 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
124702 l_balance_type_code                  VARCHAR2(1) :=NULL;
124703 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
124704 
124705 --
124706 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
124707 --
124708 
124709 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
124710 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
124711 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
124712 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
124713 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
124714 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
124715 
124716 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
124717 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
124718 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
124719 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
124720 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
124721 
124722 l_array_source_6              t_array_source_6;
124723 l_array_source_7              t_array_source_7;
124724 l_array_source_8              t_array_source_8;
124725 l_array_source_9              t_array_source_9;
124726 l_array_source_10              t_array_source_10;
124727 l_array_source_12              t_array_source_12;
124728 
124729 l_array_source_1      t_array_source_1;
124730 l_array_source_2      t_array_source_2;
124731 l_array_source_3      t_array_source_3;
124732 l_array_source_5      t_array_source_5;
124733 l_array_source_11      t_array_source_11;
124734 
124735 --
124736 CURSOR header_cur
124737 IS
124738 SELECT /*+ leading(xet) cardinality(xet,1) */
124739 -- Event Type Code: CLOS
124740 -- Event Class Code: BATCH_CLOSE
124741     xet.entity_id
124742   , xet.legal_entity_id
124743   , xet.entity_code
124744   , xet.transaction_number
124745   , xet.event_id
124746   , xet.event_class_code
124747   , xet.event_type_code
124748   , xet.event_number
124749   , xet.event_date
124750   , xet.transaction_date
124751   , xet.reference_num_1
124755   , xet.reference_char_1
124752   , xet.reference_num_2
124753   , xet.reference_num_3
124754   , xet.reference_num_4
124756   , xet.reference_char_2
124757   , xet.reference_char_3
124758   , xet.reference_char_4
124759   , xet.reference_date_1
124760   , xet.reference_date_2
124761   , xet.reference_date_3
124762   , xet.reference_date_4
124763   , xet.event_created_by
124764   , xet.budgetary_control_flag 
124765   , h1.ENTITY_CODE    source_6
124766   , h1.CURRENCY_CODE    source_7
124767   , h1.CURRENCY_CONVERSION_DATE    source_8
124768   , h1.CURRENCY_CONVERSION_RATE    source_9
124769   , h1.CURRENCY_CONVERSION_TYPE    source_10
124770   , h1.TRANSACTION_DATE    source_12
124771   FROM xla_events_gt     xet 
124772   , GMF_XLA_EXTRACT_HEADERS  h1
124773  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
124774    and xet.event_type_code = C_EVENT_TYPE_CODE
124775    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
124776 
124777  ORDER BY event_id
124778 ;
124779 
124780 
124781 --
124782 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
124783 IS
124784 SELECT /*+ leading(xet) cardinality(xet,1) */
124785 -- Event Type Code: CLOS
124786 -- Event Class Code: BATCH_CLOSE
124787     xet.entity_id
124788    ,xet.legal_entity_id
124789    ,xet.entity_code
124790    ,xet.transaction_number
124791    ,xet.event_id
124792    ,xet.event_class_code
124793    ,xet.event_type_code
124794    ,xet.event_number
124795    ,xet.event_date
124796    ,xet.transaction_date
124797    ,xet.reference_num_1
124798    ,xet.reference_num_2
124799    ,xet.reference_num_3
124800    ,xet.reference_num_4
124801    ,xet.reference_char_1
124802    ,xet.reference_char_2
124803    ,xet.reference_char_3
124804    ,xet.reference_char_4
124805    ,xet.reference_date_1
124806    ,xet.reference_date_2
124807    ,xet.reference_date_3
124808    ,xet.reference_date_4
124809    ,xet.event_created_by
124810    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
124811   , l2.TRANSACTION_ACCOUNT_ID    source_1
124812   , l2.JOURNAL_LINE_TYPE    source_2
124813   , l2.ENTERED_AMOUNT    source_3
124814   , l2.LINE_ID    source_5
124815   , l2.ACCOUNTED_AMOUNT    source_11
124816   FROM xla_events_gt     xet 
124817   , GMF_XLA_EXTRACT_LINES  l2
124818  WHERE xet.event_id between x_first_event_id and x_last_event_id
124819    and xet.event_date between p_pad_start_date and p_pad_end_date
124820    and xet.event_type_code = C_EVENT_TYPE_CODE
124821    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
124822 ;
124823 
124824 --
124825 BEGIN
124826 IF g_log_enabled THEN
124827    l_log_module := C_DEFAULT_MODULE||'.EventType_252';
124828 END IF;
124829 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124830    trace
124831       (p_msg      => 'BEGIN of EventType_252'
124832       ,p_level    => C_LEVEL_PROCEDURE
124833       ,p_module   => l_log_module);
124834 END IF;
124835 
124836 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
124837    trace
124838       (p_msg      => 'p_application_id = '||p_application_id||
124839                      ' - p_base_ledger_id = '||p_base_ledger_id||
124840                      ' - p_target_ledger_id  = '||p_target_ledger_id||
124841                      ' - p_language = '||p_language||
124842                      ' - p_currency_code = '||p_currency_code||
124843                      ' - p_sla_ledger_id = '||p_sla_ledger_id
124844       ,p_level    => C_LEVEL_STATEMENT
124845       ,p_module   => l_log_module);
124846 END IF;
124847 --
124848 -- initialze arrays
124849 --
124850 g_array_event.DELETE;
124851 l_rec_array_event := l_null_rec_array_event;
124852 --
124853 --------------------------------------
124854 -- 4262811 Initialze MPA Line Number
124855 --------------------------------------
124856 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
124857 
124858 --
124859 
124860 --
124861 OPEN header_cur;
124862 --
124863 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
124864    trace
124865    (p_msg      => 'SQL - FETCH header_cur'
124866    ,p_level    => C_LEVEL_STATEMENT
124867    ,p_module   => l_log_module);
124868 END IF;
124869 --
124870 LOOP
124871 FETCH header_cur BULK COLLECT INTO
124872         l_array_entity_id
124873       , l_array_legal_entity_id
124874       , l_array_entity_code
124875       , l_array_transaction_num
124876       , l_array_event_id
124877       , l_array_class_code
124878       , l_array_event_type
124879       , l_array_event_number
124880       , l_array_event_date
124881       , l_array_transaction_date
124882       , l_array_reference_num_1
124883       , l_array_reference_num_2
124884       , l_array_reference_num_3
124885       , l_array_reference_num_4
124886       , l_array_reference_char_1
124887       , l_array_reference_char_2
124888       , l_array_reference_char_3
124889       , l_array_reference_char_4
124890       , l_array_reference_date_1
124891       , l_array_reference_date_2
124892       , l_array_reference_date_3
124893       , l_array_reference_date_4
124894       , l_array_event_created_by
124895       , l_array_budgetary_control_flag 
124896       , l_array_source_6
124897       , l_array_source_7
124898       , l_array_source_8
124899       , l_array_source_9
124900       , l_array_source_10
124901       , l_array_source_12
124902       LIMIT l_rows;
124903 --
124904 IF (C_LEVEL_EVENT >= g_log_level) THEN
124905    trace
124909 END IF;
124906    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
124907    ,p_level    => C_LEVEL_EVENT
124908    ,p_module   => l_log_module);
124910 --
124911 EXIT WHEN l_array_entity_id.COUNT = 0;
124912 
124913 -- initialize arrays
124914 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
124915 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
124916 
124917 --
124918 -- Bug 4458708
124919 --
124920 XLA_AE_LINES_PKG.g_LineNumber := 0;
124921 
124922 
124923 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
124924 g_last_hdr_idx := l_array_event_id.LAST;
124925 --
124926 -- loop for the headers. Each iteration is for each header extract row
124927 -- fetched in header cursor
124928 --
124929 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
124930 
124931 --
124932 -- set event info as cache for other routines to refer event attributes
124933 --
124934 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
124935    (p_application_id           => p_application_id
124936    ,p_primary_ledger_id        => p_primary_ledger_id
124937    ,p_base_ledger_id           => p_base_ledger_id
124938    ,p_target_ledger_id         => p_target_ledger_id
124939    ,p_entity_id                => l_array_entity_id(hdr_idx)
124940    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
124941    ,p_entity_code              => l_array_entity_code(hdr_idx)
124942    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
124943    ,p_event_id                 => l_array_event_id(hdr_idx)
124944    ,p_event_class_code         => l_array_class_code(hdr_idx)
124945    ,p_event_type_code          => l_array_event_type(hdr_idx)
124946    ,p_event_number             => l_array_event_number(hdr_idx)
124947    ,p_event_date               => l_array_event_date(hdr_idx)
124948    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
124949    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
124950    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
124951    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
124952    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
124953    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
124954    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
124955    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
124956    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
124957    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
124958    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
124959    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
124960    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
124961    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
124962    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
124963 
124964 --
124965 -- set the status of entry to C_VALID (0)
124966 --
124967 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
124968 
124969 --
124970 -- initialize a row for ae header
124971 --
124972 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
124973 
124974 l_event_id := l_array_event_id(hdr_idx);
124975 
124976 --
124977 -- storing the hdr_idx for event. May be used by line cursor.
124978 --
124979 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
124980 
124981 --
124982 -- store sources from header extract. This can be improved to
124983 -- store only those sources from header extract that may be used in lines
124984 --
124985 
124986 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
124987 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
124988 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
124989 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
124990 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
124991 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
124992 
124993 --
124994 -- initilaize the status of ae headers for diffrent balance types
124995 -- the status is initialised to C_NOT_CREATED (2)
124996 --
124997 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
124998 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
124999 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
125000 
125001 --
125002 -- call api to validate and store accounting attributes for header
125003 --
125004 
125005 ------------------------------------------------------------
125006 -- Accrual Reversal : to get date for Standard Source (NONE)
125007 ------------------------------------------------------------
125008 l_acc_rev_gl_date_source := NULL;
125009 
125010      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
125011       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
125012 
125013 
125014 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
125015 
125016 XLA_AE_HEADER_PKG.SetJeCategoryName;
125017 
125018 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
125019 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
125020 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
125024 
125021 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
125022 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
125023 
125025 -- No header level analytical criteria
125026 
125027 --
125028 --accounting attribute enhancement, bug 3612931
125029 --
125030 l_trx_reversal_source := SUBSTR(NULL, 1,30);
125031 
125032 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
125033    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
125034 
125035    xla_accounting_err_pkg.build_message
125036       (p_appli_s_name            => 'XLA'
125037       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
125038       ,p_token_1                 => 'ACCT_ATTR_NAME'
125039       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
125040       ,p_token_2                 => 'PRODUCT_NAME'
125041       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
125042       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
125043       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
125044       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
125045 
125046 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
125047    --
125048    -- following sets the accounting attributes needed to reverse
125049    -- accounting for a distributeion
125050    --
125051    xla_ae_lines_pkg.SetTrxReversalAttrs
125052       (p_event_id              => l_event_id
125053       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
125054       ,p_trx_reversal_source   => l_trx_reversal_source);
125055 
125056 END IF;
125057 
125058 
125059 ----------------------------------------------------------------
125060 -- 4262811 -  update the header statuses to invalid in need be
125061 ----------------------------------------------------------------
125062 --
125063 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
125064 
125065 
125066   -----------------------------------------------
125067   -- No accrual reversal for the event class/type
125068   -----------------------------------------------
125069 ----------------------------------------------------------------
125070 
125071 --
125072 -- this ends the header loop iteration for one bulk fetch
125073 --
125074 END LOOP;
125075 
125076 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
125077 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
125078 
125079 --
125080 -- insert dummy rows into lines gt table that were created due to
125081 -- transaction reversals
125082 --
125083 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
125084    l_result := XLA_AE_LINES_PKG.InsertLines;
125085 END IF;
125086 
125087 --
125088 -- reset the temp_line_num for each set of events fetched from header
125089 -- cursor rather than doing it for each new event in line cursor
125090 -- Bug 3939231
125091 --
125092 xla_ae_lines_pkg.g_temp_line_num := 0;
125093 
125094 
125095 
125096 --
125097 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
125098 --
125099 --
125100 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
125101 
125102       trace
125103          (p_msg      => 'SQL - FETCH line_cur'
125104          ,p_level    => C_LEVEL_STATEMENT
125105          ,p_module   => l_log_module);
125106 
125107 END IF;
125108 --
125109 --
125110 LOOP
125111   --
125112   FETCH line_cur BULK COLLECT INTO
125113         l_array_entity_id
125114       , l_array_legal_entity_id
125115       , l_array_entity_code
125116       , l_array_transaction_num
125117       , l_array_event_id
125118       , l_array_class_code
125119       , l_array_event_type
125120       , l_array_event_number
125121       , l_array_event_date
125122       , l_array_transaction_date
125123       , l_array_reference_num_1
125124       , l_array_reference_num_2
125125       , l_array_reference_num_3
125126       , l_array_reference_num_4
125127       , l_array_reference_char_1
125128       , l_array_reference_char_2
125129       , l_array_reference_char_3
125130       , l_array_reference_char_4
125131       , l_array_reference_date_1
125132       , l_array_reference_date_2
125133       , l_array_reference_date_3
125134       , l_array_reference_date_4
125135       , l_array_event_created_by
125136       , l_array_budgetary_control_flag
125137       , l_array_extract_line_num 
125138       , l_array_source_1
125139       , l_array_source_2
125140       , l_array_source_3
125141       , l_array_source_5
125142       , l_array_source_11
125143       LIMIT l_rows;
125144 
125145   --
125146   IF (C_LEVEL_EVENT >= g_log_level) THEN
125147             trace
125148                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
125149                ,p_level    => C_LEVEL_EVENT
125150                ,p_module   => l_log_module);
125151   END IF;
125152   --
125153   EXIT WHEN l_array_entity_id.count = 0;
125154 
125155   XLA_AE_LINES_PKG.g_rec_lines := null;
125156 
125157 --
125158 -- Bug 4458708
125159 --
125160 XLA_AE_LINES_PKG.g_LineNumber := 0;
125161 --
125162 --
125163 
125164 FOR Idx IN 1..l_array_event_id.count LOOP
125165    --
125169 
125166    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
125167    --
125168    l_event_id := l_array_event_id(idx);  -- 5648433
125170    --
125171    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
125172    --
125173 
125174    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
125175              (g_array_event(l_event_id).array_value_num('header_index'))
125176          ,'N'
125177          ) <> 'Y'
125178    THEN
125179       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
125180          trace
125181             (p_msg      => 'Trancaction revesal option is not Y '
125182             ,p_level    => C_LEVEL_STATEMENT
125183             ,p_module   => l_log_module);
125184       END IF;
125185 
125186 --
125187 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
125188 --
125189 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
125190 --
125191 -- set event info as cache for other routines to refer event attributes
125192 --
125193 
125194 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
125195    l_previous_event_id := l_event_id;
125196 
125197    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
125198       (p_application_id           => p_application_id
125199       ,p_primary_ledger_id        => p_primary_ledger_id
125200       ,p_base_ledger_id           => p_base_ledger_id
125201       ,p_target_ledger_id         => p_target_ledger_id
125202       ,p_entity_id                => l_array_entity_id(Idx)
125203       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
125204       ,p_entity_code              => l_array_entity_code(Idx)
125205       ,p_transaction_num          => l_array_transaction_num(Idx)
125206       ,p_event_id                 => l_array_event_id(Idx)
125207       ,p_event_class_code         => l_array_class_code(Idx)
125208       ,p_event_type_code          => l_array_event_type(Idx)
125209       ,p_event_number             => l_array_event_number(Idx)
125210       ,p_event_date               => l_array_event_date(Idx)
125211       ,p_transaction_date         => l_array_transaction_date(Idx)
125212       ,p_reference_num_1          => l_array_reference_num_1(Idx)
125213       ,p_reference_num_2          => l_array_reference_num_2(Idx)
125214       ,p_reference_num_3          => l_array_reference_num_3(Idx)
125215       ,p_reference_num_4          => l_array_reference_num_4(Idx)
125216       ,p_reference_char_1         => l_array_reference_char_1(Idx)
125217       ,p_reference_char_2         => l_array_reference_char_2(Idx)
125218       ,p_reference_char_3         => l_array_reference_char_3(Idx)
125219       ,p_reference_char_4         => l_array_reference_char_4(Idx)
125220       ,p_reference_date_1         => l_array_reference_date_1(Idx)
125221       ,p_reference_date_2         => l_array_reference_date_2(Idx)
125222       ,p_reference_date_3         => l_array_reference_date_3(Idx)
125223       ,p_reference_date_4         => l_array_reference_date_4(Idx)
125224       ,p_event_created_by         => l_array_event_created_by(Idx)
125225       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
125226        --
125227 END IF;
125228 
125229 
125230 
125231 --
125232 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
125233 
125234 l_acct_reversal_source := SUBSTR(NULL, 1,30);
125235 
125236 IF l_continue_with_lines THEN
125237    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
125238       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
125239 
125240       xla_accounting_err_pkg.build_message
125241          (p_appli_s_name            => 'XLA'
125242          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
125243          ,p_token_1                 => 'LINE_NUMBER'
125244          ,p_value_1                 => l_array_extract_line_num(Idx)
125245          ,p_token_2                 => 'PRODUCT_NAME'
125246          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
125247          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
125248          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
125249          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
125250 
125251    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
125252       --
125253       -- following sets the accounting attributes needed to reverse
125254       -- accounting for a distributeion
125255       --
125256 
125257       --
125258       -- 5217187
125259       --
125260       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
125261       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
125262                                        g_array_event(l_event_id).array_value_num('header_index'));
125263       --
125264       --
125265 
125266       -- No reversal code generated
125267 
125268       xla_ae_lines_pkg.SetAcctReversalAttrs
125269          (p_event_id             => l_event_id
125270          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
125271          ,p_calculate_acctd_flag => l_calculate_acctd_flag
125272          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
125273    END IF;
125274 
125275    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
125276        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
125277 
125278 --
125279 AcctLineType_61 (
125280  p_application_id  => p_application_id
125284  ,p_actual_flag => l_actual_flag
125281  ,p_event_id     => l_event_id
125282  ,p_calculate_acctd_flag => l_calculate_acctd_flag
125283  ,p_calculate_g_l_flag => l_calculate_g_l_flag
125285  ,p_balance_type_code => l_balance_type_code
125286  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125287  
125288  , p_source_1 => l_array_source_1(Idx)
125289  , p_source_2 => l_array_source_2(Idx)
125290  , p_source_3 => l_array_source_3(Idx)
125291  , p_source_5 => l_array_source_5(Idx)
125292  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125293  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125294  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125295  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125296  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125297  , p_source_11 => l_array_source_11(Idx)
125298  );
125299 If(l_balance_type_code = 'A') THEN
125300   l_actual_gain_loss_ref := l_gain_or_loss_ref;
125301 END IF;
125302 
125303 --
125304 
125305 
125306 --
125307 AcctLineType_68 (
125308  p_application_id  => p_application_id
125309  ,p_event_id     => l_event_id
125310  ,p_calculate_acctd_flag => l_calculate_acctd_flag
125311  ,p_calculate_g_l_flag => l_calculate_g_l_flag
125312  ,p_actual_flag => l_actual_flag
125313  ,p_balance_type_code => l_balance_type_code
125314  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125315  
125316  , p_source_1 => l_array_source_1(Idx)
125317  , p_source_2 => l_array_source_2(Idx)
125318  , p_source_3 => l_array_source_3(Idx)
125319  , p_source_5 => l_array_source_5(Idx)
125320  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125321  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125322  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125323  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125324  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125325  , p_source_11 => l_array_source_11(Idx)
125326  );
125327 If(l_balance_type_code = 'A') THEN
125328   l_actual_gain_loss_ref := l_gain_or_loss_ref;
125329 END IF;
125330 
125331 --
125332 
125333 
125334 --
125335 AcctLineType_214 (
125336  p_application_id  => p_application_id
125337  ,p_event_id     => l_event_id
125338  ,p_calculate_acctd_flag => l_calculate_acctd_flag
125339  ,p_calculate_g_l_flag => l_calculate_g_l_flag
125340  ,p_actual_flag => l_actual_flag
125341  ,p_balance_type_code => l_balance_type_code
125342  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125343  
125344  , p_source_1 => l_array_source_1(Idx)
125345  , p_source_2 => l_array_source_2(Idx)
125346  , p_source_3 => l_array_source_3(Idx)
125347  , p_source_5 => l_array_source_5(Idx)
125348  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125349  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125350  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125351  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125352  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125353  , p_source_11 => l_array_source_11(Idx)
125354  );
125355 If(l_balance_type_code = 'A') THEN
125356   l_actual_gain_loss_ref := l_gain_or_loss_ref;
125357 END IF;
125358 
125359 --
125360 
125361 
125362 --
125363 AcctLineType_232 (
125364  p_application_id  => p_application_id
125365  ,p_event_id     => l_event_id
125366  ,p_calculate_acctd_flag => l_calculate_acctd_flag
125367  ,p_calculate_g_l_flag => l_calculate_g_l_flag
125368  ,p_actual_flag => l_actual_flag
125369  ,p_balance_type_code => l_balance_type_code
125370  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125371  
125372  , p_source_1 => l_array_source_1(Idx)
125373  , p_source_2 => l_array_source_2(Idx)
125374  , p_source_3 => l_array_source_3(Idx)
125375  , p_source_5 => l_array_source_5(Idx)
125376  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125377  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125378  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125379  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125380  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125381  , p_source_11 => l_array_source_11(Idx)
125382  );
125383 If(l_balance_type_code = 'A') THEN
125384   l_actual_gain_loss_ref := l_gain_or_loss_ref;
125385 END IF;
125386 
125387 --
125388 
125389 
125390 --
125391 AcctLineType_235 (
125392  p_application_id  => p_application_id
125393  ,p_event_id     => l_event_id
125394  ,p_calculate_acctd_flag => l_calculate_acctd_flag
125395  ,p_calculate_g_l_flag => l_calculate_g_l_flag
125396  ,p_actual_flag => l_actual_flag
125397  ,p_balance_type_code => l_balance_type_code
125398  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125399  
125400  , p_source_1 => l_array_source_1(Idx)
125401  , p_source_2 => l_array_source_2(Idx)
125402  , p_source_3 => l_array_source_3(Idx)
125403  , p_source_5 => l_array_source_5(Idx)
125404  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125405  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125406  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125407  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125408  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125412   l_actual_gain_loss_ref := l_gain_or_loss_ref;
125409  , p_source_11 => l_array_source_11(Idx)
125410  );
125411 If(l_balance_type_code = 'A') THEN
125413 END IF;
125414 
125415 --
125416 
125417 
125418 --
125419 AcctLineType_236 (
125420  p_application_id  => p_application_id
125421  ,p_event_id     => l_event_id
125422  ,p_calculate_acctd_flag => l_calculate_acctd_flag
125423  ,p_calculate_g_l_flag => l_calculate_g_l_flag
125424  ,p_actual_flag => l_actual_flag
125425  ,p_balance_type_code => l_balance_type_code
125426  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125427  
125428  , p_source_1 => l_array_source_1(Idx)
125429  , p_source_2 => l_array_source_2(Idx)
125430  , p_source_3 => l_array_source_3(Idx)
125431  , p_source_5 => l_array_source_5(Idx)
125432  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125433  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125434  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125435  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125436  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125437  , p_source_11 => l_array_source_11(Idx)
125438  );
125439 If(l_balance_type_code = 'A') THEN
125440   l_actual_gain_loss_ref := l_gain_or_loss_ref;
125441 END IF;
125442 
125443 --
125444 
125445 
125446 --
125447 AcctLineType_237 (
125448  p_application_id  => p_application_id
125449  ,p_event_id     => l_event_id
125450  ,p_calculate_acctd_flag => l_calculate_acctd_flag
125451  ,p_calculate_g_l_flag => l_calculate_g_l_flag
125452  ,p_actual_flag => l_actual_flag
125453  ,p_balance_type_code => l_balance_type_code
125454  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125455  
125456  , p_source_1 => l_array_source_1(Idx)
125457  , p_source_2 => l_array_source_2(Idx)
125458  , p_source_3 => l_array_source_3(Idx)
125459  , p_source_5 => l_array_source_5(Idx)
125460  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125461  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125462  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125463  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125464  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125465  , p_source_11 => l_array_source_11(Idx)
125466  );
125467 If(l_balance_type_code = 'A') THEN
125468   l_actual_gain_loss_ref := l_gain_or_loss_ref;
125469 END IF;
125470 
125471 --
125472 
125473 
125474 --
125475 AcctLineType_238 (
125476  p_application_id  => p_application_id
125477  ,p_event_id     => l_event_id
125478  ,p_calculate_acctd_flag => l_calculate_acctd_flag
125479  ,p_calculate_g_l_flag => l_calculate_g_l_flag
125480  ,p_actual_flag => l_actual_flag
125481  ,p_balance_type_code => l_balance_type_code
125482  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125483  
125484  , p_source_1 => l_array_source_1(Idx)
125485  , p_source_2 => l_array_source_2(Idx)
125486  , p_source_3 => l_array_source_3(Idx)
125487  , p_source_5 => l_array_source_5(Idx)
125488  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125489  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125490  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125491  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125492  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125493  , p_source_11 => l_array_source_11(Idx)
125494  );
125495 If(l_balance_type_code = 'A') THEN
125496   l_actual_gain_loss_ref := l_gain_or_loss_ref;
125497 END IF;
125498 
125499 --
125500 
125501 
125502 --
125503 AcctLineType_241 (
125504  p_application_id  => p_application_id
125505  ,p_event_id     => l_event_id
125506  ,p_calculate_acctd_flag => l_calculate_acctd_flag
125507  ,p_calculate_g_l_flag => l_calculate_g_l_flag
125508  ,p_actual_flag => l_actual_flag
125509  ,p_balance_type_code => l_balance_type_code
125510  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125511  
125512  , p_source_1 => l_array_source_1(Idx)
125513  , p_source_2 => l_array_source_2(Idx)
125514  , p_source_3 => l_array_source_3(Idx)
125515  , p_source_5 => l_array_source_5(Idx)
125516  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125517  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125518  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125519  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125520  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125521  , p_source_11 => l_array_source_11(Idx)
125522  );
125523 If(l_balance_type_code = 'A') THEN
125524   l_actual_gain_loss_ref := l_gain_or_loss_ref;
125525 END IF;
125526 
125527 --
125528 
125529 
125530 --
125531 AcctLineType_247 (
125532  p_application_id  => p_application_id
125533  ,p_event_id     => l_event_id
125534  ,p_calculate_acctd_flag => l_calculate_acctd_flag
125535  ,p_calculate_g_l_flag => l_calculate_g_l_flag
125536  ,p_actual_flag => l_actual_flag
125537  ,p_balance_type_code => l_balance_type_code
125538  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125539  
125540  , p_source_1 => l_array_source_1(Idx)
125541  , p_source_2 => l_array_source_2(Idx)
125542  , p_source_3 => l_array_source_3(Idx)
125543  , p_source_5 => l_array_source_5(Idx)
125544  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125545  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125549  , p_source_11 => l_array_source_11(Idx)
125546  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125547  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125548  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125550  );
125551 If(l_balance_type_code = 'A') THEN
125552   l_actual_gain_loss_ref := l_gain_or_loss_ref;
125553 END IF;
125554 
125555 --
125556 
125557       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
125558       -- or secondary ledger that has different currency with primary
125559       -- or alc that is calculated by sla
125560       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
125561             (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'))
125562 
125563 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
125564 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
125565           AND (l_actual_flag = 'A')) THEN
125566         XLA_AE_LINES_PKG.CreateGainOrLossLines(
125567           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
125568          ,p_application_id   => p_application_id
125569          ,p_amb_context_code => 'DEFAULT'
125570          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
125571          ,p_event_class_code => C_EVENT_CLASS_CODE
125572          ,p_event_type_code  => C_EVENT_TYPE_CODE
125573          
125574          ,p_gain_ccid        => -1
125575          ,p_loss_ccid        => -1
125576 
125577          ,p_actual_flag      => l_actual_flag
125578          ,p_enc_flag         => null
125579          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
125580          ,p_enc_g_l_ref      => null
125581          );
125582       END IF;
125583    END IF;
125584 END IF;
125585 
125586    ELSE
125587       --
125588       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
125589       --
125590       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
125591          trace
125592             (p_msg      => 'Trancaction revesal option is Y'
125593             ,p_level    => C_LEVEL_STATEMENT
125594             ,p_module   => l_log_module);
125595       END IF;
125596    END IF;
125597 
125598 END LOOP;
125599 l_result := XLA_AE_LINES_PKG.InsertLines ;
125600 end loop;
125601 close line_cur;
125602 
125603 
125604 --
125605 -- insert headers into xla_ae_headers_gt table
125606 --
125607 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
125608 
125609 -- insert into errors table here.
125610 
125611 END LOOP;
125612 
125613 --
125614 -- 4865292
125615 --
125616 -- Compare g_hdr_extract_count with event count in
125617 -- CreateHeadersAndLines.
125618 --
125619 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
125620 
125621 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
125622    trace (p_msg     => '# rows extracted from header extract objects '
125623                     || ' (running total): '
125624                     || g_hdr_extract_count
125625          ,p_level   => C_LEVEL_STATEMENT
125626          ,p_module  => l_log_module);
125627 END IF;
125628 
125629 CLOSE header_cur;
125630 --
125631 
125632 --
125633 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125634    trace
125635       (p_msg      => 'END of EventType_252'
125636       ,p_level    => C_LEVEL_PROCEDURE
125637       ,p_module   => l_log_module);
125638 END IF;
125639 --
125640 RETURN l_result;
125641 EXCEPTION
125642 WHEN xla_exceptions_pkg.application_exception THEN
125643    
125644 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
125645 
125646    
125647 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
125648 
125649    RAISE;
125650 
125651 WHEN NO_DATA_FOUND THEN
125652 
125653 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
125654 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
125655 
125656 FOR header_record IN header_cur
125657 LOOP
125658     l_array_header_events(header_record.event_id) := header_record.event_id;
125659 END LOOP;
125660 
125661 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
125662 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
125663 
125664 fnd_file.put_line(fnd_file.LOG, '                    ');
125665 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
125666 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
125667 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
125668 
125669 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
125670 LOOP
125671 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
125672 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
125673         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
125674 	END IF;
125675 END LOOP;
125676 
125677 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
125678 fnd_file.put_line(fnd_file.LOG, '                    ');
125679 
125680 
125681 xla_exceptions_pkg.raise_message
125682       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_252');
125686    xla_exceptions_pkg.raise_message
125683 
125684 
125685 WHEN OTHERS THEN
125687       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_252');
125688 END EventType_252;
125689 --
125690 
125691 ---------------------------------------
125692 --
125693 -- PRIVATE PROCEDURE
125694 --         insert_sources_253
125695 --
125696 ----------------------------------------
125697 --
125698 PROCEDURE insert_sources_253(
125699                                 p_target_ledger_id       IN NUMBER
125700                               , p_language               IN VARCHAR2
125701                               , p_sla_ledger_id          IN NUMBER
125702                               , p_pad_start_date         IN DATE
125703                               , p_pad_end_date           IN DATE
125704                          )
125705 IS
125706 
125707 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'COGS_RECOGNITION';
125708 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SHIPPING';
125709 p_apps_owner                   VARCHAR2(30);
125710 l_log_module                   VARCHAR2(240);
125711 BEGIN
125712 IF g_log_enabled THEN
125713       l_log_module := C_DEFAULT_MODULE||'.insert_sources_253';
125714 END IF;
125715 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125716 
125717       trace
125718          (p_msg      => 'BEGIN of insert_sources_253'
125719          ,p_level    => C_LEVEL_PROCEDURE
125720          ,p_module   => l_log_module);
125721 
125722 END IF;
125723 
125724 -- select APPS owner
125725 SELECT oracle_username
125726   INTO p_apps_owner
125727   FROM fnd_oracle_userid
125728  WHERE read_only_flag = 'U'
125729 ;
125730 
125731 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
125732       trace
125733          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
125734                         ' - p_language = '||p_language||
125735                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
125736                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
125737                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
125738                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
125739          ,p_level    => C_LEVEL_STATEMENT
125740          ,p_module   => l_log_module);
125741 END IF;
125742 
125743 
125744 --
125745 INSERT INTO xla_diag_sources --hdr1
125746 (
125747         event_id
125748       , ledger_id
125749       , sla_ledger_id
125750       , description_language
125751       , object_name
125752       , object_type_code
125753       , line_number
125754       , source_application_id
125755       , source_type_code
125756       , source_code
125757       , source_value
125758       , source_meaning
125759       , created_by
125760       , creation_date
125761       , last_update_date
125762       , last_updated_by
125763       , last_update_login
125764       , program_update_date
125765       , program_application_id
125766       , program_id
125767       , request_id
125768 )
125769 SELECT
125770         event_id
125771       , p_target_ledger_id
125772       , p_sla_ledger_id
125773       , p_language
125774       , object_name
125775       , object_type_code
125776       , line_number
125777       , source_application_id
125778       , source_type_code
125779       , source_code
125780       , SUBSTR(source_value ,1,1996)
125781       , SUBSTR(source_meaning,1,200)
125782       , xla_environment_pkg.g_Usr_Id
125783       , TRUNC(SYSDATE)
125784       , TRUNC(SYSDATE)
125785       , xla_environment_pkg.g_Usr_Id
125786       , xla_environment_pkg.g_Login_Id
125787       , TRUNC(SYSDATE)
125788       , xla_environment_pkg.g_Prog_Appl_Id
125789       , xla_environment_pkg.g_Prog_Id
125790       , xla_environment_pkg.g_Req_Id
125791   FROM (
125792        SELECT xet.event_id                  event_id
125793             , 0                             line_number
125794             , CASE r
125795                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
125796                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
125797                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
125798                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
125799                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
125800                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
125801                 
125802                ELSE null
125803               END                           object_name
125804             , CASE r
125805                 WHEN 1 THEN 'HEADER' 
125806                 WHEN 2 THEN 'HEADER' 
125807                 WHEN 3 THEN 'HEADER' 
125808                 WHEN 4 THEN 'HEADER' 
125809                 WHEN 5 THEN 'HEADER' 
125810                 WHEN 6 THEN 'HEADER' 
125811                 
125812                 ELSE null
125813               END                           object_type_code
125814             , CASE r
125815                 WHEN 1 THEN '555' 
125816                 WHEN 2 THEN '555' 
125817                 WHEN 3 THEN '555' 
125818                 WHEN 4 THEN '555' 
125819                 WHEN 5 THEN '555' 
125820                 WHEN 6 THEN '555' 
125821                 
125822                 ELSE null
125823               END                           source_application_id
125824             , 'S'             source_type_code
125825             , CASE r
125826                 WHEN 1 THEN 'ENTITY_CODE' 
125827                 WHEN 2 THEN 'CURRENCY_CODE' 
125831                 WHEN 6 THEN 'TRANSACTION_DATE' 
125828                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
125829                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
125830                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
125832                 
125833                 ELSE null
125834               END                           source_code
125835             , CASE r
125836                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
125837                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
125838                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
125839                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
125840                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
125841                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
125842                 
125843                 ELSE null
125844               END                           source_value
125845             , CASE r
125846                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
125847                           1010186
125848                          ,TO_CHAR(h1.CURRENCY_CODE)
125849                          ,'CURRENCY_CODE'
125850                          ,'S'
125851                          ,555)
125852                 
125853                 ELSE null
125854               END               source_meaning
125855         FROM xla_events_gt     xet  
125856       , GMF_XLA_EXTRACT_HEADERS  h1
125857             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
125858        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
125859          AND xet.event_type_code = C_EVENT_TYPE_CODE
125860             AND h1.event_id = xet.event_id
125861 
125862 )
125863 ;
125864 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
125865 
125866       trace
125867          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
125868          ,p_level    => C_LEVEL_STATEMENT
125869          ,p_module   => l_log_module);
125870 
125871 END IF;
125872 --
125873 
125874 
125875 
125876 --
125877 INSERT INTO xla_diag_sources --line1
125878 (
125879         event_id
125880       , ledger_id
125881       , sla_ledger_id
125882       , description_language
125883       , object_name
125884       , object_type_code
125885       , line_number
125886       , source_application_id
125887       , source_type_code
125888       , source_code
125889       , source_value
125890       , source_meaning
125891       , created_by
125892       , creation_date
125893       , last_update_date
125894       , last_updated_by
125895       , last_update_login
125896       , program_update_date
125897       , program_application_id
125898       , program_id
125899       , request_id
125900 )
125901 SELECT  event_id
125902       , p_target_ledger_id
125903       , p_sla_ledger_id
125904       , p_language
125905       , object_name
125906       , object_type_code
125907       , line_number
125908       , source_application_id
125909       , source_type_code
125910       , source_code
125911       , SUBSTR(source_value,1,1996)
125912       , SUBSTR(source_meaning,1,200)
125913       , xla_environment_pkg.g_Usr_Id
125914       , TRUNC(SYSDATE)
125915       , TRUNC(SYSDATE)
125916       , xla_environment_pkg.g_Usr_Id
125917       , xla_environment_pkg.g_Login_Id
125918       , TRUNC(SYSDATE)
125919       , xla_environment_pkg.g_Prog_Appl_Id
125920       , xla_environment_pkg.g_Prog_Id
125921       , xla_environment_pkg.g_Req_Id
125922   FROM (
125923        SELECT xet.event_id                  event_id
125924             , l2.line_number                 line_number
125925             , CASE r
125926                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
125927                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
125928                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
125929                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
125930                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
125931                 
125932                ELSE null
125933               END                           object_name
125934             , CASE r
125935                 WHEN 1 THEN 'LINE' 
125936                 WHEN 2 THEN 'LINE' 
125937                 WHEN 3 THEN 'LINE' 
125938                 WHEN 4 THEN 'LINE' 
125939                 WHEN 5 THEN 'LINE' 
125940                 
125941                 ELSE null
125942               END                           object_type_code
125943             , CASE r
125944                 WHEN 1 THEN '555' 
125945                 WHEN 2 THEN '555' 
125946                 WHEN 3 THEN '555' 
125947                 WHEN 4 THEN '555' 
125948                 WHEN 5 THEN '555' 
125949                 
125950                 ELSE null
125951               END                           source_application_id
125952             , 'S'             source_type_code
125953             , CASE r
125954                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
125955                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
125956                 WHEN 3 THEN 'ENTERED_AMOUNT' 
125957                 WHEN 4 THEN 'LINE_ID' 
125958                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
125959                 
125960                 ELSE null
125961               END                           source_code
125962             , CASE r
125963                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
125964                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
125968                 
125965                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
125966                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
125967                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
125969                 ELSE null
125970               END                           source_value
125971             , null              source_meaning
125972          FROM  xla_events_gt     xet  
125973         , GMF_XLA_EXTRACT_LINES  l2
125974             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
125975         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
125976           AND xet.event_type_code = C_EVENT_TYPE_CODE
125977             AND l2.event_id          = xet.event_id
125978 
125979 )
125980 ;
125981 --
125982 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
125983 
125984       trace
125985          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
125986          ,p_level    => C_LEVEL_STATEMENT
125987          ,p_module   => l_log_module);
125988 
125989 END IF;
125990 
125991 
125992 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125993       trace
125994          (p_msg      => 'END of insert_sources_253'
125995          ,p_level    => C_LEVEL_PROCEDURE
125996          ,p_module   => l_log_module);
125997 END IF;
125998 EXCEPTION
125999   WHEN xla_exceptions_pkg.application_exception THEN
126000       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
126001             trace
126002                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
126003                ,p_level    => C_LEVEL_EXCEPTION
126004                ,p_module   => l_log_module);
126005       END IF;
126006       RAISE;
126007   WHEN OTHERS THEN
126008       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
126009             trace
126010                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
126011                ,p_level    => C_LEVEL_EXCEPTION
126012                ,p_module   => l_log_module);
126013        END IF;
126014        xla_exceptions_pkg.raise_message
126015            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_253');
126016 END insert_sources_253;
126017 --
126018 
126019 ---------------------------------------
126020 --
126021 -- PRIVATE FUNCTION
126022 --         EventType_253
126023 --
126024 ----------------------------------------
126025 --
126026 FUNCTION EventType_253
126027        (p_application_id         IN NUMBER
126028        ,p_base_ledger_id         IN NUMBER
126029        ,p_target_ledger_id       IN NUMBER
126030        ,p_language               IN VARCHAR2
126031        ,p_currency_code          IN VARCHAR2
126032        ,p_sla_ledger_id          IN NUMBER
126033        ,p_pad_start_date         IN DATE
126034        ,p_pad_end_date           IN DATE
126035        ,p_primary_ledger_id      IN NUMBER)
126036 RETURN BOOLEAN IS
126037 --
126038 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'COGS_RECOGNITION';
126039 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SHIPPING';
126040 
126041 l_calculate_acctd_flag   VARCHAR2(1) :='N';
126042 l_calculate_g_l_flag     VARCHAR2(1) :='N';
126043 --
126044 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
126045 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
126046 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
126047 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
126048 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
126049 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
126050 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
126051 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
126052 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
126053 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
126054 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
126055 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
126056 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
126057 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
126058 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
126059 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
126060 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
126061 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
126062 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
126063 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
126064 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
126065 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
126066 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
126067 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
126068 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
126069 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
126070 
126071 l_event_id                             NUMBER;
126072 l_previous_event_id                    NUMBER;
126073 l_first_event_id                       NUMBER;
126074 l_last_event_id                        NUMBER;
126075 
126076 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
126077 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
126078 --
126079 --
126080 l_result                    BOOLEAN := TRUE;
126084 l_description               VARCHAR2(4000);
126081 l_rows                      NUMBER  := 1000;
126082 l_event_type_name           VARCHAR2(80) := 'COGS Recognition';
126083 l_event_class_name          VARCHAR2(80) := 'Shipments';
126085 l_transaction_reversal      NUMBER;
126086 l_ae_header_id              NUMBER;
126087 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
126088 l_log_module                VARCHAR2(240);
126089 --
126090 l_acct_reversal_source      VARCHAR2(30);
126091 l_trx_reversal_source       VARCHAR2(30);
126092 
126093 l_continue_with_lines       BOOLEAN := TRUE;
126094 --
126095 l_acc_rev_gl_date_source    DATE;                      -- 4262811
126096 --
126097 type t_array_event_id is table of number index by binary_integer;
126098 
126099 l_rec_array_event                    t_rec_array_event;
126100 l_null_rec_array_event               t_rec_array_event;
126101 l_array_ae_header_id                 xla_number_array_type;
126102 l_actual_flag                        VARCHAR2(1) := NULL;
126103 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
126104 l_balance_type_code                  VARCHAR2(1) :=NULL;
126105 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
126106 
126107 --
126108 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
126109 --
126110 
126111 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
126112 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
126113 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
126114 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
126115 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
126116 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
126117 
126118 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
126119 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
126120 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
126121 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
126122 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
126123 
126124 l_array_source_6              t_array_source_6;
126125 l_array_source_7              t_array_source_7;
126126 l_array_source_8              t_array_source_8;
126127 l_array_source_9              t_array_source_9;
126128 l_array_source_10              t_array_source_10;
126129 l_array_source_12              t_array_source_12;
126130 
126131 l_array_source_1      t_array_source_1;
126132 l_array_source_2      t_array_source_2;
126133 l_array_source_3      t_array_source_3;
126134 l_array_source_5      t_array_source_5;
126135 l_array_source_11      t_array_source_11;
126136 
126137 --
126138 CURSOR header_cur
126139 IS
126140 SELECT /*+ leading(xet) cardinality(xet,1) */
126141 -- Event Type Code: COGS_RECOGNITION
126142 -- Event Class Code: SHIPPING
126143     xet.entity_id
126144   , xet.legal_entity_id
126145   , xet.entity_code
126146   , xet.transaction_number
126147   , xet.event_id
126148   , xet.event_class_code
126149   , xet.event_type_code
126150   , xet.event_number
126151   , xet.event_date
126152   , xet.transaction_date
126153   , xet.reference_num_1
126154   , xet.reference_num_2
126155   , xet.reference_num_3
126156   , xet.reference_num_4
126157   , xet.reference_char_1
126158   , xet.reference_char_2
126159   , xet.reference_char_3
126160   , xet.reference_char_4
126161   , xet.reference_date_1
126162   , xet.reference_date_2
126163   , xet.reference_date_3
126164   , xet.reference_date_4
126165   , xet.event_created_by
126166   , xet.budgetary_control_flag 
126167   , h1.ENTITY_CODE    source_6
126168   , h1.CURRENCY_CODE    source_7
126169   , h1.CURRENCY_CONVERSION_DATE    source_8
126170   , h1.CURRENCY_CONVERSION_RATE    source_9
126171   , h1.CURRENCY_CONVERSION_TYPE    source_10
126172   , h1.TRANSACTION_DATE    source_12
126173   FROM xla_events_gt     xet 
126174   , GMF_XLA_EXTRACT_HEADERS  h1
126175  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
126176    and xet.event_type_code = C_EVENT_TYPE_CODE
126177    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
126178 
126179  ORDER BY event_id
126180 ;
126181 
126182 
126183 --
126184 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
126185 IS
126186 SELECT /*+ leading(xet) cardinality(xet,1) */
126187 -- Event Type Code: COGS_RECOGNITION
126188 -- Event Class Code: SHIPPING
126189     xet.entity_id
126190    ,xet.legal_entity_id
126191    ,xet.entity_code
126192    ,xet.transaction_number
126193    ,xet.event_id
126194    ,xet.event_class_code
126195    ,xet.event_type_code
126196    ,xet.event_number
126197    ,xet.event_date
126198    ,xet.transaction_date
126199    ,xet.reference_num_1
126200    ,xet.reference_num_2
126201    ,xet.reference_num_3
126202    ,xet.reference_num_4
126203    ,xet.reference_char_1
126204    ,xet.reference_char_2
126205    ,xet.reference_char_3
126206    ,xet.reference_char_4
126207    ,xet.reference_date_1
126208    ,xet.reference_date_2
126212    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
126209    ,xet.reference_date_3
126210    ,xet.reference_date_4
126211    ,xet.event_created_by
126213   , l2.TRANSACTION_ACCOUNT_ID    source_1
126214   , l2.JOURNAL_LINE_TYPE    source_2
126215   , l2.ENTERED_AMOUNT    source_3
126216   , l2.LINE_ID    source_5
126217   , l2.ACCOUNTED_AMOUNT    source_11
126218   FROM xla_events_gt     xet 
126219   , GMF_XLA_EXTRACT_LINES  l2
126220  WHERE xet.event_id between x_first_event_id and x_last_event_id
126221    and xet.event_date between p_pad_start_date and p_pad_end_date
126222    and xet.event_type_code = C_EVENT_TYPE_CODE
126223    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
126224 ;
126225 
126226 --
126227 BEGIN
126228 IF g_log_enabled THEN
126229    l_log_module := C_DEFAULT_MODULE||'.EventType_253';
126230 END IF;
126231 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126232    trace
126233       (p_msg      => 'BEGIN of EventType_253'
126234       ,p_level    => C_LEVEL_PROCEDURE
126235       ,p_module   => l_log_module);
126236 END IF;
126237 
126238 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
126239    trace
126240       (p_msg      => 'p_application_id = '||p_application_id||
126241                      ' - p_base_ledger_id = '||p_base_ledger_id||
126242                      ' - p_target_ledger_id  = '||p_target_ledger_id||
126243                      ' - p_language = '||p_language||
126244                      ' - p_currency_code = '||p_currency_code||
126245                      ' - p_sla_ledger_id = '||p_sla_ledger_id
126246       ,p_level    => C_LEVEL_STATEMENT
126247       ,p_module   => l_log_module);
126248 END IF;
126249 --
126250 -- initialze arrays
126251 --
126252 g_array_event.DELETE;
126253 l_rec_array_event := l_null_rec_array_event;
126254 --
126255 --------------------------------------
126256 -- 4262811 Initialze MPA Line Number
126257 --------------------------------------
126258 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
126259 
126260 --
126261 
126262 --
126263 OPEN header_cur;
126264 --
126265 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
126266    trace
126267    (p_msg      => 'SQL - FETCH header_cur'
126268    ,p_level    => C_LEVEL_STATEMENT
126269    ,p_module   => l_log_module);
126270 END IF;
126271 --
126272 LOOP
126273 FETCH header_cur BULK COLLECT INTO
126274         l_array_entity_id
126275       , l_array_legal_entity_id
126276       , l_array_entity_code
126277       , l_array_transaction_num
126278       , l_array_event_id
126279       , l_array_class_code
126280       , l_array_event_type
126281       , l_array_event_number
126282       , l_array_event_date
126283       , l_array_transaction_date
126284       , l_array_reference_num_1
126285       , l_array_reference_num_2
126286       , l_array_reference_num_3
126287       , l_array_reference_num_4
126288       , l_array_reference_char_1
126289       , l_array_reference_char_2
126290       , l_array_reference_char_3
126291       , l_array_reference_char_4
126292       , l_array_reference_date_1
126293       , l_array_reference_date_2
126294       , l_array_reference_date_3
126295       , l_array_reference_date_4
126296       , l_array_event_created_by
126297       , l_array_budgetary_control_flag 
126298       , l_array_source_6
126299       , l_array_source_7
126300       , l_array_source_8
126301       , l_array_source_9
126302       , l_array_source_10
126303       , l_array_source_12
126304       LIMIT l_rows;
126305 --
126306 IF (C_LEVEL_EVENT >= g_log_level) THEN
126307    trace
126308    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
126309    ,p_level    => C_LEVEL_EVENT
126310    ,p_module   => l_log_module);
126311 END IF;
126312 --
126313 EXIT WHEN l_array_entity_id.COUNT = 0;
126314 
126315 -- initialize arrays
126316 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
126317 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
126318 
126319 --
126320 -- Bug 4458708
126321 --
126322 XLA_AE_LINES_PKG.g_LineNumber := 0;
126323 
126324 
126325 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
126326 g_last_hdr_idx := l_array_event_id.LAST;
126327 --
126328 -- loop for the headers. Each iteration is for each header extract row
126329 -- fetched in header cursor
126330 --
126331 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
126332 
126333 --
126334 -- set event info as cache for other routines to refer event attributes
126335 --
126336 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
126337    (p_application_id           => p_application_id
126338    ,p_primary_ledger_id        => p_primary_ledger_id
126339    ,p_base_ledger_id           => p_base_ledger_id
126340    ,p_target_ledger_id         => p_target_ledger_id
126341    ,p_entity_id                => l_array_entity_id(hdr_idx)
126342    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
126343    ,p_entity_code              => l_array_entity_code(hdr_idx)
126344    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
126345    ,p_event_id                 => l_array_event_id(hdr_idx)
126346    ,p_event_class_code         => l_array_class_code(hdr_idx)
126347    ,p_event_type_code          => l_array_event_type(hdr_idx)
126348    ,p_event_number             => l_array_event_number(hdr_idx)
126349    ,p_event_date               => l_array_event_date(hdr_idx)
126353    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
126350    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
126351    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
126352    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
126354    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
126355    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
126356    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
126357    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
126358    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
126359    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
126360    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
126361    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
126362    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
126363    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
126364    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
126365 
126366 --
126367 -- set the status of entry to C_VALID (0)
126368 --
126369 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
126370 
126371 --
126372 -- initialize a row for ae header
126373 --
126374 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
126375 
126376 l_event_id := l_array_event_id(hdr_idx);
126377 
126378 --
126379 -- storing the hdr_idx for event. May be used by line cursor.
126380 --
126381 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
126382 
126383 --
126384 -- store sources from header extract. This can be improved to
126385 -- store only those sources from header extract that may be used in lines
126386 --
126387 
126388 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
126389 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
126390 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
126391 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
126392 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
126393 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
126394 
126395 --
126396 -- initilaize the status of ae headers for diffrent balance types
126397 -- the status is initialised to C_NOT_CREATED (2)
126398 --
126399 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
126400 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
126401 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
126402 
126403 --
126404 -- call api to validate and store accounting attributes for header
126405 --
126406 
126407 ------------------------------------------------------------
126408 -- Accrual Reversal : to get date for Standard Source (NONE)
126409 ------------------------------------------------------------
126410 l_acc_rev_gl_date_source := NULL;
126411 
126412      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
126413       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
126414 
126415 
126416 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
126417 
126418 XLA_AE_HEADER_PKG.SetJeCategoryName;
126419 
126420 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
126421 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
126422 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
126423 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
126424 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
126425 
126426 
126427 -- No header level analytical criteria
126428 
126429 --
126430 --accounting attribute enhancement, bug 3612931
126431 --
126432 l_trx_reversal_source := SUBSTR(NULL, 1,30);
126433 
126434 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
126435    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
126436 
126437    xla_accounting_err_pkg.build_message
126438       (p_appli_s_name            => 'XLA'
126439       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
126440       ,p_token_1                 => 'ACCT_ATTR_NAME'
126441       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
126442       ,p_token_2                 => 'PRODUCT_NAME'
126443       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
126444       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
126445       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
126446       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
126447 
126448 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
126449    --
126450    -- following sets the accounting attributes needed to reverse
126451    -- accounting for a distributeion
126452    --
126453    xla_ae_lines_pkg.SetTrxReversalAttrs
126454       (p_event_id              => l_event_id
126455       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
126456       ,p_trx_reversal_source   => l_trx_reversal_source);
126457 
126461 ----------------------------------------------------------------
126458 END IF;
126459 
126460 
126462 -- 4262811 -  update the header statuses to invalid in need be
126463 ----------------------------------------------------------------
126464 --
126465 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
126466 
126467 
126468   -----------------------------------------------
126469   -- No accrual reversal for the event class/type
126470   -----------------------------------------------
126471 ----------------------------------------------------------------
126472 
126473 --
126474 -- this ends the header loop iteration for one bulk fetch
126475 --
126476 END LOOP;
126477 
126478 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
126479 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
126480 
126481 --
126482 -- insert dummy rows into lines gt table that were created due to
126483 -- transaction reversals
126484 --
126485 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
126486    l_result := XLA_AE_LINES_PKG.InsertLines;
126487 END IF;
126488 
126489 --
126490 -- reset the temp_line_num for each set of events fetched from header
126491 -- cursor rather than doing it for each new event in line cursor
126492 -- Bug 3939231
126493 --
126494 xla_ae_lines_pkg.g_temp_line_num := 0;
126495 
126496 
126497 
126498 --
126499 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
126500 --
126501 --
126502 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
126503 
126504       trace
126505          (p_msg      => 'SQL - FETCH line_cur'
126506          ,p_level    => C_LEVEL_STATEMENT
126507          ,p_module   => l_log_module);
126508 
126509 END IF;
126510 --
126511 --
126512 LOOP
126513   --
126514   FETCH line_cur BULK COLLECT INTO
126515         l_array_entity_id
126516       , l_array_legal_entity_id
126517       , l_array_entity_code
126518       , l_array_transaction_num
126519       , l_array_event_id
126520       , l_array_class_code
126521       , l_array_event_type
126522       , l_array_event_number
126523       , l_array_event_date
126524       , l_array_transaction_date
126525       , l_array_reference_num_1
126526       , l_array_reference_num_2
126527       , l_array_reference_num_3
126528       , l_array_reference_num_4
126529       , l_array_reference_char_1
126530       , l_array_reference_char_2
126531       , l_array_reference_char_3
126532       , l_array_reference_char_4
126533       , l_array_reference_date_1
126534       , l_array_reference_date_2
126535       , l_array_reference_date_3
126536       , l_array_reference_date_4
126537       , l_array_event_created_by
126538       , l_array_budgetary_control_flag
126539       , l_array_extract_line_num 
126540       , l_array_source_1
126541       , l_array_source_2
126542       , l_array_source_3
126543       , l_array_source_5
126544       , l_array_source_11
126545       LIMIT l_rows;
126546 
126547   --
126548   IF (C_LEVEL_EVENT >= g_log_level) THEN
126549             trace
126550                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
126551                ,p_level    => C_LEVEL_EVENT
126552                ,p_module   => l_log_module);
126553   END IF;
126554   --
126555   EXIT WHEN l_array_entity_id.count = 0;
126556 
126557   XLA_AE_LINES_PKG.g_rec_lines := null;
126558 
126559 --
126560 -- Bug 4458708
126561 --
126562 XLA_AE_LINES_PKG.g_LineNumber := 0;
126563 --
126564 --
126565 
126566 FOR Idx IN 1..l_array_event_id.count LOOP
126567    --
126568    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
126569    --
126570    l_event_id := l_array_event_id(idx);  -- 5648433
126571 
126572    --
126573    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
126574    --
126575 
126576    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
126577              (g_array_event(l_event_id).array_value_num('header_index'))
126578          ,'N'
126579          ) <> 'Y'
126580    THEN
126581       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
126582          trace
126583             (p_msg      => 'Trancaction revesal option is not Y '
126584             ,p_level    => C_LEVEL_STATEMENT
126585             ,p_module   => l_log_module);
126586       END IF;
126587 
126588 --
126589 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
126590 --
126591 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
126592 --
126593 -- set event info as cache for other routines to refer event attributes
126594 --
126595 
126596 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
126597    l_previous_event_id := l_event_id;
126598 
126599    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
126600       (p_application_id           => p_application_id
126601       ,p_primary_ledger_id        => p_primary_ledger_id
126602       ,p_base_ledger_id           => p_base_ledger_id
126603       ,p_target_ledger_id         => p_target_ledger_id
126604       ,p_entity_id                => l_array_entity_id(Idx)
126605       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
126606       ,p_entity_code              => l_array_entity_code(Idx)
126607       ,p_transaction_num          => l_array_transaction_num(Idx)
126611       ,p_event_number             => l_array_event_number(Idx)
126608       ,p_event_id                 => l_array_event_id(Idx)
126609       ,p_event_class_code         => l_array_class_code(Idx)
126610       ,p_event_type_code          => l_array_event_type(Idx)
126612       ,p_event_date               => l_array_event_date(Idx)
126613       ,p_transaction_date         => l_array_transaction_date(Idx)
126614       ,p_reference_num_1          => l_array_reference_num_1(Idx)
126615       ,p_reference_num_2          => l_array_reference_num_2(Idx)
126616       ,p_reference_num_3          => l_array_reference_num_3(Idx)
126617       ,p_reference_num_4          => l_array_reference_num_4(Idx)
126618       ,p_reference_char_1         => l_array_reference_char_1(Idx)
126619       ,p_reference_char_2         => l_array_reference_char_2(Idx)
126620       ,p_reference_char_3         => l_array_reference_char_3(Idx)
126621       ,p_reference_char_4         => l_array_reference_char_4(Idx)
126622       ,p_reference_date_1         => l_array_reference_date_1(Idx)
126623       ,p_reference_date_2         => l_array_reference_date_2(Idx)
126624       ,p_reference_date_3         => l_array_reference_date_3(Idx)
126625       ,p_reference_date_4         => l_array_reference_date_4(Idx)
126626       ,p_event_created_by         => l_array_event_created_by(Idx)
126627       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
126628        --
126629 END IF;
126630 
126631 
126632 
126633 --
126634 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
126635 
126636 l_acct_reversal_source := SUBSTR(NULL, 1,30);
126637 
126638 IF l_continue_with_lines THEN
126639    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
126640       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
126641 
126642       xla_accounting_err_pkg.build_message
126643          (p_appli_s_name            => 'XLA'
126644          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
126645          ,p_token_1                 => 'LINE_NUMBER'
126646          ,p_value_1                 => l_array_extract_line_num(Idx)
126647          ,p_token_2                 => 'PRODUCT_NAME'
126648          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
126649          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
126650          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
126651          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
126652 
126653    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
126654       --
126655       -- following sets the accounting attributes needed to reverse
126656       -- accounting for a distributeion
126657       --
126658 
126659       --
126660       -- 5217187
126661       --
126662       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
126663       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
126664                                        g_array_event(l_event_id).array_value_num('header_index'));
126665       --
126666       --
126667 
126668       -- No reversal code generated
126669 
126670       xla_ae_lines_pkg.SetAcctReversalAttrs
126671          (p_event_id             => l_event_id
126672          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
126673          ,p_calculate_acctd_flag => l_calculate_acctd_flag
126674          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
126675    END IF;
126676 
126677    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
126678        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
126679 
126680 --
126681 AcctLineType_71 (
126682  p_application_id  => p_application_id
126683  ,p_event_id     => l_event_id
126684  ,p_calculate_acctd_flag => l_calculate_acctd_flag
126685  ,p_calculate_g_l_flag => l_calculate_g_l_flag
126686  ,p_actual_flag => l_actual_flag
126687  ,p_balance_type_code => l_balance_type_code
126688  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
126689  
126690  , p_source_1 => l_array_source_1(Idx)
126691  , p_source_2 => l_array_source_2(Idx)
126692  , p_source_3 => l_array_source_3(Idx)
126693  , p_source_5 => l_array_source_5(Idx)
126694  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
126695  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
126696  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
126697  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
126698  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
126699  , p_source_11 => l_array_source_11(Idx)
126700  );
126701 If(l_balance_type_code = 'A') THEN
126702   l_actual_gain_loss_ref := l_gain_or_loss_ref;
126703 END IF;
126704 
126705 --
126706 
126707 
126708 --
126709 AcctLineType_77 (
126710  p_application_id  => p_application_id
126711  ,p_event_id     => l_event_id
126712  ,p_calculate_acctd_flag => l_calculate_acctd_flag
126713  ,p_calculate_g_l_flag => l_calculate_g_l_flag
126714  ,p_actual_flag => l_actual_flag
126715  ,p_balance_type_code => l_balance_type_code
126716  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
126717  
126718  , p_source_1 => l_array_source_1(Idx)
126719  , p_source_2 => l_array_source_2(Idx)
126720  , p_source_3 => l_array_source_3(Idx)
126721  , p_source_5 => l_array_source_5(Idx)
126722  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
126723  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
126724  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
126728  );
126725  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
126726  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
126727  , p_source_11 => l_array_source_11(Idx)
126729 If(l_balance_type_code = 'A') THEN
126730   l_actual_gain_loss_ref := l_gain_or_loss_ref;
126731 END IF;
126732 
126733 --
126734 
126735       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
126736       -- or secondary ledger that has different currency with primary
126737       -- or alc that is calculated by sla
126738       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
126739             (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'))
126740 
126741 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
126742 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
126743           AND (l_actual_flag = 'A')) THEN
126744         XLA_AE_LINES_PKG.CreateGainOrLossLines(
126745           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
126746          ,p_application_id   => p_application_id
126747          ,p_amb_context_code => 'DEFAULT'
126748          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
126749          ,p_event_class_code => C_EVENT_CLASS_CODE
126750          ,p_event_type_code  => C_EVENT_TYPE_CODE
126751          
126752          ,p_gain_ccid        => -1
126753          ,p_loss_ccid        => -1
126754 
126755          ,p_actual_flag      => l_actual_flag
126756          ,p_enc_flag         => null
126757          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
126758          ,p_enc_g_l_ref      => null
126759          );
126760       END IF;
126761    END IF;
126762 END IF;
126763 
126764    ELSE
126765       --
126766       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
126767       --
126768       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
126769          trace
126770             (p_msg      => 'Trancaction revesal option is Y'
126771             ,p_level    => C_LEVEL_STATEMENT
126772             ,p_module   => l_log_module);
126773       END IF;
126774    END IF;
126775 
126776 END LOOP;
126777 l_result := XLA_AE_LINES_PKG.InsertLines ;
126778 end loop;
126779 close line_cur;
126780 
126781 
126782 --
126783 -- insert headers into xla_ae_headers_gt table
126784 --
126785 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
126786 
126787 -- insert into errors table here.
126788 
126789 END LOOP;
126790 
126791 --
126792 -- 4865292
126793 --
126794 -- Compare g_hdr_extract_count with event count in
126795 -- CreateHeadersAndLines.
126796 --
126797 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
126798 
126799 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
126800    trace (p_msg     => '# rows extracted from header extract objects '
126801                     || ' (running total): '
126802                     || g_hdr_extract_count
126803          ,p_level   => C_LEVEL_STATEMENT
126804          ,p_module  => l_log_module);
126805 END IF;
126806 
126807 CLOSE header_cur;
126808 --
126809 
126810 --
126811 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126812    trace
126813       (p_msg      => 'END of EventType_253'
126814       ,p_level    => C_LEVEL_PROCEDURE
126815       ,p_module   => l_log_module);
126816 END IF;
126817 --
126818 RETURN l_result;
126819 EXCEPTION
126820 WHEN xla_exceptions_pkg.application_exception THEN
126821    
126822 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
126823 
126824    
126825 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
126826 
126827    RAISE;
126828 
126829 WHEN NO_DATA_FOUND THEN
126830 
126831 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
126832 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
126833 
126834 FOR header_record IN header_cur
126835 LOOP
126836     l_array_header_events(header_record.event_id) := header_record.event_id;
126837 END LOOP;
126838 
126839 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
126840 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
126841 
126842 fnd_file.put_line(fnd_file.LOG, '                    ');
126843 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
126844 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
126845 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
126846 
126847 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
126848 LOOP
126849 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
126850 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
126851         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
126852 	END IF;
126853 END LOOP;
126854 
126855 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
126856 fnd_file.put_line(fnd_file.LOG, '                    ');
126857 
126858 
126859 xla_exceptions_pkg.raise_message
126860       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_253');
126861 
126862 
126863 WHEN OTHERS THEN
126867 --
126864    xla_exceptions_pkg.raise_message
126865       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_253');
126866 END EventType_253;
126868 
126869 ---------------------------------------
126870 --
126871 -- PRIVATE PROCEDURE
126872 --         insert_sources_254
126873 --
126874 ----------------------------------------
126875 --
126876 PROCEDURE insert_sources_254(
126877                                 p_target_ledger_id       IN NUMBER
126878                               , p_language               IN VARCHAR2
126879                               , p_sla_ledger_id          IN NUMBER
126880                               , p_pad_start_date         IN DATE
126881                               , p_pad_end_date           IN DATE
126882                          )
126883 IS
126884 
126885 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'COGS_RECOGNITION_ADJ';
126886 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SHIPPING';
126887 p_apps_owner                   VARCHAR2(30);
126888 l_log_module                   VARCHAR2(240);
126889 BEGIN
126890 IF g_log_enabled THEN
126891       l_log_module := C_DEFAULT_MODULE||'.insert_sources_254';
126892 END IF;
126893 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126894 
126895       trace
126896          (p_msg      => 'BEGIN of insert_sources_254'
126897          ,p_level    => C_LEVEL_PROCEDURE
126898          ,p_module   => l_log_module);
126899 
126900 END IF;
126901 
126902 -- select APPS owner
126903 SELECT oracle_username
126904   INTO p_apps_owner
126905   FROM fnd_oracle_userid
126906  WHERE read_only_flag = 'U'
126907 ;
126908 
126909 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
126910       trace
126911          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
126912                         ' - p_language = '||p_language||
126913                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
126914                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
126915                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
126916                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
126917          ,p_level    => C_LEVEL_STATEMENT
126918          ,p_module   => l_log_module);
126919 END IF;
126920 
126921 
126922 --
126923 INSERT INTO xla_diag_sources --hdr1
126924 (
126925         event_id
126926       , ledger_id
126927       , sla_ledger_id
126928       , description_language
126929       , object_name
126930       , object_type_code
126931       , line_number
126932       , source_application_id
126933       , source_type_code
126934       , source_code
126935       , source_value
126936       , source_meaning
126937       , created_by
126938       , creation_date
126939       , last_update_date
126940       , last_updated_by
126941       , last_update_login
126942       , program_update_date
126943       , program_application_id
126944       , program_id
126945       , request_id
126946 )
126947 SELECT
126948         event_id
126949       , p_target_ledger_id
126950       , p_sla_ledger_id
126951       , p_language
126952       , object_name
126953       , object_type_code
126954       , line_number
126955       , source_application_id
126956       , source_type_code
126957       , source_code
126958       , SUBSTR(source_value ,1,1996)
126959       , SUBSTR(source_meaning,1,200)
126960       , xla_environment_pkg.g_Usr_Id
126961       , TRUNC(SYSDATE)
126962       , TRUNC(SYSDATE)
126963       , xla_environment_pkg.g_Usr_Id
126964       , xla_environment_pkg.g_Login_Id
126965       , TRUNC(SYSDATE)
126966       , xla_environment_pkg.g_Prog_Appl_Id
126967       , xla_environment_pkg.g_Prog_Id
126968       , xla_environment_pkg.g_Req_Id
126969   FROM (
126970        SELECT xet.event_id                  event_id
126971             , 0                             line_number
126972             , CASE r
126973                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
126974                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
126975                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
126976                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
126977                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
126978                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
126979                 
126980                ELSE null
126981               END                           object_name
126982             , CASE r
126983                 WHEN 1 THEN 'HEADER' 
126984                 WHEN 2 THEN 'HEADER' 
126985                 WHEN 3 THEN 'HEADER' 
126986                 WHEN 4 THEN 'HEADER' 
126987                 WHEN 5 THEN 'HEADER' 
126988                 WHEN 6 THEN 'HEADER' 
126989                 
126990                 ELSE null
126991               END                           object_type_code
126992             , CASE r
126993                 WHEN 1 THEN '555' 
126994                 WHEN 2 THEN '555' 
126995                 WHEN 3 THEN '555' 
126996                 WHEN 4 THEN '555' 
126997                 WHEN 5 THEN '555' 
126998                 WHEN 6 THEN '555' 
126999                 
127000                 ELSE null
127001               END                           source_application_id
127002             , 'S'             source_type_code
127003             , CASE r
127004                 WHEN 1 THEN 'ENTITY_CODE' 
127005                 WHEN 2 THEN 'CURRENCY_CODE' 
127006                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
127010                 
127007                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
127008                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
127009                 WHEN 6 THEN 'TRANSACTION_DATE' 
127011                 ELSE null
127012               END                           source_code
127013             , CASE r
127014                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
127015                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
127016                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
127017                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
127018                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
127019                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
127020                 
127021                 ELSE null
127022               END                           source_value
127023             , CASE r
127024                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
127025                           1010186
127026                          ,TO_CHAR(h1.CURRENCY_CODE)
127027                          ,'CURRENCY_CODE'
127028                          ,'S'
127029                          ,555)
127030                 
127031                 ELSE null
127032               END               source_meaning
127033         FROM xla_events_gt     xet  
127034       , GMF_XLA_EXTRACT_HEADERS  h1
127035             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
127036        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
127037          AND xet.event_type_code = C_EVENT_TYPE_CODE
127038             AND h1.event_id = xet.event_id
127039 
127040 )
127041 ;
127042 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
127043 
127044       trace
127045          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
127046          ,p_level    => C_LEVEL_STATEMENT
127047          ,p_module   => l_log_module);
127048 
127049 END IF;
127050 --
127051 
127052 
127053 
127054 --
127055 INSERT INTO xla_diag_sources --line1
127056 (
127057         event_id
127058       , ledger_id
127059       , sla_ledger_id
127060       , description_language
127061       , object_name
127062       , object_type_code
127063       , line_number
127064       , source_application_id
127065       , source_type_code
127066       , source_code
127067       , source_value
127068       , source_meaning
127069       , created_by
127070       , creation_date
127071       , last_update_date
127072       , last_updated_by
127073       , last_update_login
127074       , program_update_date
127075       , program_application_id
127076       , program_id
127077       , request_id
127078 )
127079 SELECT  event_id
127080       , p_target_ledger_id
127081       , p_sla_ledger_id
127082       , p_language
127083       , object_name
127084       , object_type_code
127085       , line_number
127086       , source_application_id
127087       , source_type_code
127088       , source_code
127089       , SUBSTR(source_value,1,1996)
127090       , SUBSTR(source_meaning,1,200)
127091       , xla_environment_pkg.g_Usr_Id
127092       , TRUNC(SYSDATE)
127093       , TRUNC(SYSDATE)
127094       , xla_environment_pkg.g_Usr_Id
127095       , xla_environment_pkg.g_Login_Id
127096       , TRUNC(SYSDATE)
127097       , xla_environment_pkg.g_Prog_Appl_Id
127098       , xla_environment_pkg.g_Prog_Id
127099       , xla_environment_pkg.g_Req_Id
127100   FROM (
127101        SELECT xet.event_id                  event_id
127102             , l2.line_number                 line_number
127103             , CASE r
127104                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
127105                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
127106                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
127107                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
127108                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
127109                 
127110                ELSE null
127111               END                           object_name
127112             , CASE r
127113                 WHEN 1 THEN 'LINE' 
127114                 WHEN 2 THEN 'LINE' 
127115                 WHEN 3 THEN 'LINE' 
127116                 WHEN 4 THEN 'LINE' 
127117                 WHEN 5 THEN 'LINE' 
127118                 
127119                 ELSE null
127120               END                           object_type_code
127121             , CASE r
127122                 WHEN 1 THEN '555' 
127123                 WHEN 2 THEN '555' 
127124                 WHEN 3 THEN '555' 
127125                 WHEN 4 THEN '555' 
127126                 WHEN 5 THEN '555' 
127127                 
127128                 ELSE null
127129               END                           source_application_id
127130             , 'S'             source_type_code
127131             , CASE r
127132                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
127133                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
127134                 WHEN 3 THEN 'ENTERED_AMOUNT' 
127135                 WHEN 4 THEN 'LINE_ID' 
127136                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
127137                 
127138                 ELSE null
127139               END                           source_code
127140             , CASE r
127141                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
127142                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
127143                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
127144                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
127148               END                           source_value
127145                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
127146                 
127147                 ELSE null
127149             , null              source_meaning
127150          FROM  xla_events_gt     xet  
127151         , GMF_XLA_EXTRACT_LINES  l2
127152             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
127153         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
127154           AND xet.event_type_code = C_EVENT_TYPE_CODE
127155             AND l2.event_id          = xet.event_id
127156 
127157 )
127158 ;
127159 --
127160 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
127161 
127162       trace
127163          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
127164          ,p_level    => C_LEVEL_STATEMENT
127165          ,p_module   => l_log_module);
127166 
127167 END IF;
127168 
127169 
127170 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
127171       trace
127172          (p_msg      => 'END of insert_sources_254'
127173          ,p_level    => C_LEVEL_PROCEDURE
127174          ,p_module   => l_log_module);
127175 END IF;
127176 EXCEPTION
127177   WHEN xla_exceptions_pkg.application_exception THEN
127178       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
127179             trace
127180                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
127181                ,p_level    => C_LEVEL_EXCEPTION
127182                ,p_module   => l_log_module);
127183       END IF;
127184       RAISE;
127185   WHEN OTHERS THEN
127186       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
127187             trace
127188                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
127189                ,p_level    => C_LEVEL_EXCEPTION
127190                ,p_module   => l_log_module);
127191        END IF;
127192        xla_exceptions_pkg.raise_message
127193            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_254');
127194 END insert_sources_254;
127195 --
127196 
127197 ---------------------------------------
127198 --
127199 -- PRIVATE FUNCTION
127200 --         EventType_254
127201 --
127202 ----------------------------------------
127203 --
127204 FUNCTION EventType_254
127205        (p_application_id         IN NUMBER
127206        ,p_base_ledger_id         IN NUMBER
127207        ,p_target_ledger_id       IN NUMBER
127208        ,p_language               IN VARCHAR2
127209        ,p_currency_code          IN VARCHAR2
127210        ,p_sla_ledger_id          IN NUMBER
127211        ,p_pad_start_date         IN DATE
127212        ,p_pad_end_date           IN DATE
127213        ,p_primary_ledger_id      IN NUMBER)
127214 RETURN BOOLEAN IS
127215 --
127216 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'COGS_RECOGNITION_ADJ';
127217 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SHIPPING';
127218 
127219 l_calculate_acctd_flag   VARCHAR2(1) :='N';
127220 l_calculate_g_l_flag     VARCHAR2(1) :='N';
127221 --
127222 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
127223 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
127224 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
127225 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
127226 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
127227 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
127228 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
127229 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
127230 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
127231 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
127232 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
127233 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
127234 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
127235 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
127236 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
127237 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
127238 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
127239 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
127240 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
127241 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
127242 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
127243 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
127244 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
127245 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
127246 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
127247 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
127248 
127249 l_event_id                             NUMBER;
127250 l_previous_event_id                    NUMBER;
127251 l_first_event_id                       NUMBER;
127252 l_last_event_id                        NUMBER;
127253 
127254 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
127255 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
127256 --
127257 --
127258 l_result                    BOOLEAN := TRUE;
127259 l_rows                      NUMBER  := 1000;
127263 l_transaction_reversal      NUMBER;
127260 l_event_type_name           VARCHAR2(80) := 'COGS Recognition Adjustment';
127261 l_event_class_name          VARCHAR2(80) := 'Shipments';
127262 l_description               VARCHAR2(4000);
127264 l_ae_header_id              NUMBER;
127265 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
127266 l_log_module                VARCHAR2(240);
127267 --
127268 l_acct_reversal_source      VARCHAR2(30);
127269 l_trx_reversal_source       VARCHAR2(30);
127270 
127271 l_continue_with_lines       BOOLEAN := TRUE;
127272 --
127273 l_acc_rev_gl_date_source    DATE;                      -- 4262811
127274 --
127275 type t_array_event_id is table of number index by binary_integer;
127276 
127277 l_rec_array_event                    t_rec_array_event;
127278 l_null_rec_array_event               t_rec_array_event;
127279 l_array_ae_header_id                 xla_number_array_type;
127280 l_actual_flag                        VARCHAR2(1) := NULL;
127281 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
127282 l_balance_type_code                  VARCHAR2(1) :=NULL;
127283 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
127284 
127285 --
127286 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
127287 --
127288 
127289 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
127290 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
127291 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
127292 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
127293 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
127294 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
127295 
127296 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
127297 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
127298 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
127299 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
127300 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
127301 
127302 l_array_source_6              t_array_source_6;
127303 l_array_source_7              t_array_source_7;
127304 l_array_source_8              t_array_source_8;
127305 l_array_source_9              t_array_source_9;
127306 l_array_source_10              t_array_source_10;
127307 l_array_source_12              t_array_source_12;
127308 
127309 l_array_source_1      t_array_source_1;
127310 l_array_source_2      t_array_source_2;
127311 l_array_source_3      t_array_source_3;
127312 l_array_source_5      t_array_source_5;
127313 l_array_source_11      t_array_source_11;
127314 
127315 --
127316 CURSOR header_cur
127317 IS
127318 SELECT /*+ leading(xet) cardinality(xet,1) */
127319 -- Event Type Code: COGS_RECOGNITION_ADJ
127320 -- Event Class Code: SHIPPING
127321     xet.entity_id
127322   , xet.legal_entity_id
127323   , xet.entity_code
127324   , xet.transaction_number
127325   , xet.event_id
127326   , xet.event_class_code
127327   , xet.event_type_code
127328   , xet.event_number
127329   , xet.event_date
127330   , xet.transaction_date
127331   , xet.reference_num_1
127332   , xet.reference_num_2
127333   , xet.reference_num_3
127334   , xet.reference_num_4
127335   , xet.reference_char_1
127336   , xet.reference_char_2
127337   , xet.reference_char_3
127338   , xet.reference_char_4
127339   , xet.reference_date_1
127340   , xet.reference_date_2
127341   , xet.reference_date_3
127342   , xet.reference_date_4
127343   , xet.event_created_by
127344   , xet.budgetary_control_flag 
127345   , h1.ENTITY_CODE    source_6
127346   , h1.CURRENCY_CODE    source_7
127347   , h1.CURRENCY_CONVERSION_DATE    source_8
127348   , h1.CURRENCY_CONVERSION_RATE    source_9
127349   , h1.CURRENCY_CONVERSION_TYPE    source_10
127350   , h1.TRANSACTION_DATE    source_12
127351   FROM xla_events_gt     xet 
127352   , GMF_XLA_EXTRACT_HEADERS  h1
127353  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
127354    and xet.event_type_code = C_EVENT_TYPE_CODE
127355    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
127356 
127357  ORDER BY event_id
127358 ;
127359 
127360 
127361 --
127362 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
127363 IS
127364 SELECT /*+ leading(xet) cardinality(xet,1) */
127365 -- Event Type Code: COGS_RECOGNITION_ADJ
127366 -- Event Class Code: SHIPPING
127367     xet.entity_id
127368    ,xet.legal_entity_id
127369    ,xet.entity_code
127370    ,xet.transaction_number
127371    ,xet.event_id
127372    ,xet.event_class_code
127373    ,xet.event_type_code
127374    ,xet.event_number
127375    ,xet.event_date
127376    ,xet.transaction_date
127377    ,xet.reference_num_1
127378    ,xet.reference_num_2
127379    ,xet.reference_num_3
127380    ,xet.reference_num_4
127381    ,xet.reference_char_1
127382    ,xet.reference_char_2
127383    ,xet.reference_char_3
127384    ,xet.reference_char_4
127385    ,xet.reference_date_1
127386    ,xet.reference_date_2
127387    ,xet.reference_date_3
127388    ,xet.reference_date_4
127392   , l2.JOURNAL_LINE_TYPE    source_2
127389    ,xet.event_created_by
127390    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
127391   , l2.TRANSACTION_ACCOUNT_ID    source_1
127393   , l2.ENTERED_AMOUNT    source_3
127394   , l2.LINE_ID    source_5
127395   , l2.ACCOUNTED_AMOUNT    source_11
127396   FROM xla_events_gt     xet 
127397   , GMF_XLA_EXTRACT_LINES  l2
127398  WHERE xet.event_id between x_first_event_id and x_last_event_id
127399    and xet.event_date between p_pad_start_date and p_pad_end_date
127400    and xet.event_type_code = C_EVENT_TYPE_CODE
127401    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
127402 ;
127403 
127404 --
127405 BEGIN
127406 IF g_log_enabled THEN
127407    l_log_module := C_DEFAULT_MODULE||'.EventType_254';
127408 END IF;
127409 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
127410    trace
127411       (p_msg      => 'BEGIN of EventType_254'
127412       ,p_level    => C_LEVEL_PROCEDURE
127413       ,p_module   => l_log_module);
127414 END IF;
127415 
127416 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
127417    trace
127418       (p_msg      => 'p_application_id = '||p_application_id||
127419                      ' - p_base_ledger_id = '||p_base_ledger_id||
127420                      ' - p_target_ledger_id  = '||p_target_ledger_id||
127421                      ' - p_language = '||p_language||
127422                      ' - p_currency_code = '||p_currency_code||
127423                      ' - p_sla_ledger_id = '||p_sla_ledger_id
127424       ,p_level    => C_LEVEL_STATEMENT
127425       ,p_module   => l_log_module);
127426 END IF;
127427 --
127428 -- initialze arrays
127429 --
127430 g_array_event.DELETE;
127431 l_rec_array_event := l_null_rec_array_event;
127432 --
127433 --------------------------------------
127434 -- 4262811 Initialze MPA Line Number
127435 --------------------------------------
127436 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
127437 
127438 --
127439 
127440 --
127441 OPEN header_cur;
127442 --
127443 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
127444    trace
127445    (p_msg      => 'SQL - FETCH header_cur'
127446    ,p_level    => C_LEVEL_STATEMENT
127447    ,p_module   => l_log_module);
127448 END IF;
127449 --
127450 LOOP
127451 FETCH header_cur BULK COLLECT INTO
127452         l_array_entity_id
127453       , l_array_legal_entity_id
127454       , l_array_entity_code
127455       , l_array_transaction_num
127456       , l_array_event_id
127457       , l_array_class_code
127458       , l_array_event_type
127459       , l_array_event_number
127460       , l_array_event_date
127461       , l_array_transaction_date
127462       , l_array_reference_num_1
127463       , l_array_reference_num_2
127464       , l_array_reference_num_3
127465       , l_array_reference_num_4
127466       , l_array_reference_char_1
127467       , l_array_reference_char_2
127468       , l_array_reference_char_3
127469       , l_array_reference_char_4
127470       , l_array_reference_date_1
127471       , l_array_reference_date_2
127472       , l_array_reference_date_3
127473       , l_array_reference_date_4
127474       , l_array_event_created_by
127475       , l_array_budgetary_control_flag 
127476       , l_array_source_6
127477       , l_array_source_7
127478       , l_array_source_8
127479       , l_array_source_9
127480       , l_array_source_10
127481       , l_array_source_12
127482       LIMIT l_rows;
127483 --
127484 IF (C_LEVEL_EVENT >= g_log_level) THEN
127485    trace
127486    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
127487    ,p_level    => C_LEVEL_EVENT
127488    ,p_module   => l_log_module);
127489 END IF;
127490 --
127491 EXIT WHEN l_array_entity_id.COUNT = 0;
127492 
127493 -- initialize arrays
127494 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
127495 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
127496 
127497 --
127498 -- Bug 4458708
127499 --
127500 XLA_AE_LINES_PKG.g_LineNumber := 0;
127501 
127502 
127503 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
127504 g_last_hdr_idx := l_array_event_id.LAST;
127505 --
127506 -- loop for the headers. Each iteration is for each header extract row
127507 -- fetched in header cursor
127508 --
127509 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
127510 
127511 --
127512 -- set event info as cache for other routines to refer event attributes
127513 --
127514 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
127515    (p_application_id           => p_application_id
127516    ,p_primary_ledger_id        => p_primary_ledger_id
127517    ,p_base_ledger_id           => p_base_ledger_id
127518    ,p_target_ledger_id         => p_target_ledger_id
127519    ,p_entity_id                => l_array_entity_id(hdr_idx)
127520    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
127521    ,p_entity_code              => l_array_entity_code(hdr_idx)
127522    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
127523    ,p_event_id                 => l_array_event_id(hdr_idx)
127524    ,p_event_class_code         => l_array_class_code(hdr_idx)
127525    ,p_event_type_code          => l_array_event_type(hdr_idx)
127526    ,p_event_number             => l_array_event_number(hdr_idx)
127527    ,p_event_date               => l_array_event_date(hdr_idx)
127528    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
127532    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
127529    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
127530    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
127531    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
127533    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
127534    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
127535    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
127536    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
127537    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
127538    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
127539    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
127540    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
127541    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
127542    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
127543 
127544 --
127545 -- set the status of entry to C_VALID (0)
127546 --
127547 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
127548 
127549 --
127550 -- initialize a row for ae header
127551 --
127552 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
127553 
127554 l_event_id := l_array_event_id(hdr_idx);
127555 
127556 --
127557 -- storing the hdr_idx for event. May be used by line cursor.
127558 --
127559 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
127560 
127561 --
127562 -- store sources from header extract. This can be improved to
127563 -- store only those sources from header extract that may be used in lines
127564 --
127565 
127566 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
127567 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
127568 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
127569 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
127570 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
127571 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
127572 
127573 --
127574 -- initilaize the status of ae headers for diffrent balance types
127575 -- the status is initialised to C_NOT_CREATED (2)
127576 --
127577 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
127578 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
127579 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
127580 
127581 --
127582 -- call api to validate and store accounting attributes for header
127583 --
127584 
127585 ------------------------------------------------------------
127586 -- Accrual Reversal : to get date for Standard Source (NONE)
127587 ------------------------------------------------------------
127588 l_acc_rev_gl_date_source := NULL;
127589 
127590      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
127591       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
127592 
127593 
127594 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
127595 
127596 XLA_AE_HEADER_PKG.SetJeCategoryName;
127597 
127598 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
127599 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
127600 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
127601 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
127602 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
127603 
127604 
127605 -- No header level analytical criteria
127606 
127607 --
127608 --accounting attribute enhancement, bug 3612931
127609 --
127610 l_trx_reversal_source := SUBSTR(NULL, 1,30);
127611 
127612 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
127613    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
127614 
127615    xla_accounting_err_pkg.build_message
127616       (p_appli_s_name            => 'XLA'
127617       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
127618       ,p_token_1                 => 'ACCT_ATTR_NAME'
127619       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
127620       ,p_token_2                 => 'PRODUCT_NAME'
127621       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
127622       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
127623       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
127624       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
127625 
127626 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
127627    --
127628    -- following sets the accounting attributes needed to reverse
127629    -- accounting for a distributeion
127630    --
127631    xla_ae_lines_pkg.SetTrxReversalAttrs
127632       (p_event_id              => l_event_id
127633       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
127634       ,p_trx_reversal_source   => l_trx_reversal_source);
127635 
127636 END IF;
127637 
127638 
127642 --
127639 ----------------------------------------------------------------
127640 -- 4262811 -  update the header statuses to invalid in need be
127641 ----------------------------------------------------------------
127643 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
127644 
127645 
127646   -----------------------------------------------
127647   -- No accrual reversal for the event class/type
127648   -----------------------------------------------
127649 ----------------------------------------------------------------
127650 
127651 --
127652 -- this ends the header loop iteration for one bulk fetch
127653 --
127654 END LOOP;
127655 
127656 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
127657 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
127658 
127659 --
127660 -- insert dummy rows into lines gt table that were created due to
127661 -- transaction reversals
127662 --
127663 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
127664    l_result := XLA_AE_LINES_PKG.InsertLines;
127665 END IF;
127666 
127667 --
127668 -- reset the temp_line_num for each set of events fetched from header
127669 -- cursor rather than doing it for each new event in line cursor
127670 -- Bug 3939231
127671 --
127672 xla_ae_lines_pkg.g_temp_line_num := 0;
127673 
127674 
127675 
127676 --
127677 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
127678 --
127679 --
127680 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
127681 
127682       trace
127683          (p_msg      => 'SQL - FETCH line_cur'
127684          ,p_level    => C_LEVEL_STATEMENT
127685          ,p_module   => l_log_module);
127686 
127687 END IF;
127688 --
127689 --
127690 LOOP
127691   --
127692   FETCH line_cur BULK COLLECT INTO
127693         l_array_entity_id
127694       , l_array_legal_entity_id
127695       , l_array_entity_code
127696       , l_array_transaction_num
127697       , l_array_event_id
127698       , l_array_class_code
127699       , l_array_event_type
127700       , l_array_event_number
127701       , l_array_event_date
127702       , l_array_transaction_date
127703       , l_array_reference_num_1
127704       , l_array_reference_num_2
127705       , l_array_reference_num_3
127706       , l_array_reference_num_4
127707       , l_array_reference_char_1
127708       , l_array_reference_char_2
127709       , l_array_reference_char_3
127710       , l_array_reference_char_4
127711       , l_array_reference_date_1
127712       , l_array_reference_date_2
127713       , l_array_reference_date_3
127714       , l_array_reference_date_4
127715       , l_array_event_created_by
127716       , l_array_budgetary_control_flag
127717       , l_array_extract_line_num 
127718       , l_array_source_1
127719       , l_array_source_2
127720       , l_array_source_3
127721       , l_array_source_5
127722       , l_array_source_11
127723       LIMIT l_rows;
127724 
127725   --
127726   IF (C_LEVEL_EVENT >= g_log_level) THEN
127727             trace
127728                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
127729                ,p_level    => C_LEVEL_EVENT
127730                ,p_module   => l_log_module);
127731   END IF;
127732   --
127733   EXIT WHEN l_array_entity_id.count = 0;
127734 
127735   XLA_AE_LINES_PKG.g_rec_lines := null;
127736 
127737 --
127738 -- Bug 4458708
127739 --
127740 XLA_AE_LINES_PKG.g_LineNumber := 0;
127741 --
127742 --
127743 
127744 FOR Idx IN 1..l_array_event_id.count LOOP
127745    --
127746    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
127747    --
127748    l_event_id := l_array_event_id(idx);  -- 5648433
127749 
127750    --
127751    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
127752    --
127753 
127754    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
127755              (g_array_event(l_event_id).array_value_num('header_index'))
127756          ,'N'
127757          ) <> 'Y'
127758    THEN
127759       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
127760          trace
127761             (p_msg      => 'Trancaction revesal option is not Y '
127762             ,p_level    => C_LEVEL_STATEMENT
127763             ,p_module   => l_log_module);
127764       END IF;
127765 
127766 --
127767 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
127768 --
127769 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
127770 --
127771 -- set event info as cache for other routines to refer event attributes
127772 --
127773 
127774 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
127775    l_previous_event_id := l_event_id;
127776 
127777    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
127778       (p_application_id           => p_application_id
127779       ,p_primary_ledger_id        => p_primary_ledger_id
127780       ,p_base_ledger_id           => p_base_ledger_id
127781       ,p_target_ledger_id         => p_target_ledger_id
127782       ,p_entity_id                => l_array_entity_id(Idx)
127783       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
127784       ,p_entity_code              => l_array_entity_code(Idx)
127785       ,p_transaction_num          => l_array_transaction_num(Idx)
127786       ,p_event_id                 => l_array_event_id(Idx)
127787       ,p_event_class_code         => l_array_class_code(Idx)
127791       ,p_transaction_date         => l_array_transaction_date(Idx)
127788       ,p_event_type_code          => l_array_event_type(Idx)
127789       ,p_event_number             => l_array_event_number(Idx)
127790       ,p_event_date               => l_array_event_date(Idx)
127792       ,p_reference_num_1          => l_array_reference_num_1(Idx)
127793       ,p_reference_num_2          => l_array_reference_num_2(Idx)
127794       ,p_reference_num_3          => l_array_reference_num_3(Idx)
127795       ,p_reference_num_4          => l_array_reference_num_4(Idx)
127796       ,p_reference_char_1         => l_array_reference_char_1(Idx)
127797       ,p_reference_char_2         => l_array_reference_char_2(Idx)
127798       ,p_reference_char_3         => l_array_reference_char_3(Idx)
127799       ,p_reference_char_4         => l_array_reference_char_4(Idx)
127800       ,p_reference_date_1         => l_array_reference_date_1(Idx)
127801       ,p_reference_date_2         => l_array_reference_date_2(Idx)
127802       ,p_reference_date_3         => l_array_reference_date_3(Idx)
127803       ,p_reference_date_4         => l_array_reference_date_4(Idx)
127804       ,p_event_created_by         => l_array_event_created_by(Idx)
127805       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
127806        --
127807 END IF;
127808 
127809 
127810 
127811 --
127812 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
127813 
127814 l_acct_reversal_source := SUBSTR(NULL, 1,30);
127815 
127816 IF l_continue_with_lines THEN
127817    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
127818       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
127819 
127820       xla_accounting_err_pkg.build_message
127821          (p_appli_s_name            => 'XLA'
127822          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
127823          ,p_token_1                 => 'LINE_NUMBER'
127824          ,p_value_1                 => l_array_extract_line_num(Idx)
127825          ,p_token_2                 => 'PRODUCT_NAME'
127826          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
127827          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
127828          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
127829          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
127830 
127831    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
127832       --
127833       -- following sets the accounting attributes needed to reverse
127834       -- accounting for a distributeion
127835       --
127836 
127837       --
127838       -- 5217187
127839       --
127840       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
127841       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
127842                                        g_array_event(l_event_id).array_value_num('header_index'));
127843       --
127844       --
127845 
127846       -- No reversal code generated
127847 
127848       xla_ae_lines_pkg.SetAcctReversalAttrs
127849          (p_event_id             => l_event_id
127850          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
127851          ,p_calculate_acctd_flag => l_calculate_acctd_flag
127852          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
127853    END IF;
127854 
127855    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
127856        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
127857 
127858 --
127859 AcctLineType_69 (
127860  p_application_id  => p_application_id
127861  ,p_event_id     => l_event_id
127862  ,p_calculate_acctd_flag => l_calculate_acctd_flag
127863  ,p_calculate_g_l_flag => l_calculate_g_l_flag
127864  ,p_actual_flag => l_actual_flag
127865  ,p_balance_type_code => l_balance_type_code
127866  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
127867  
127868  , p_source_1 => l_array_source_1(Idx)
127869  , p_source_2 => l_array_source_2(Idx)
127870  , p_source_3 => l_array_source_3(Idx)
127871  , p_source_5 => l_array_source_5(Idx)
127872  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
127873  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
127874  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
127875  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
127876  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
127877  , p_source_11 => l_array_source_11(Idx)
127878  );
127879 If(l_balance_type_code = 'A') THEN
127880   l_actual_gain_loss_ref := l_gain_or_loss_ref;
127881 END IF;
127882 
127883 --
127884 
127885 
127886 --
127887 AcctLineType_78 (
127888  p_application_id  => p_application_id
127889  ,p_event_id     => l_event_id
127890  ,p_calculate_acctd_flag => l_calculate_acctd_flag
127891  ,p_calculate_g_l_flag => l_calculate_g_l_flag
127892  ,p_actual_flag => l_actual_flag
127893  ,p_balance_type_code => l_balance_type_code
127894  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
127895  
127896  , p_source_1 => l_array_source_1(Idx)
127897  , p_source_2 => l_array_source_2(Idx)
127898  , p_source_3 => l_array_source_3(Idx)
127899  , p_source_5 => l_array_source_5(Idx)
127900  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
127901  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
127902  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
127903  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
127907 If(l_balance_type_code = 'A') THEN
127904  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
127905  , p_source_11 => l_array_source_11(Idx)
127906  );
127908   l_actual_gain_loss_ref := l_gain_or_loss_ref;
127909 END IF;
127910 
127911 --
127912 
127913 
127914 --
127915 AcctLineType_132 (
127916  p_application_id  => p_application_id
127917  ,p_event_id     => l_event_id
127918  ,p_calculate_acctd_flag => l_calculate_acctd_flag
127919  ,p_calculate_g_l_flag => l_calculate_g_l_flag
127920  ,p_actual_flag => l_actual_flag
127921  ,p_balance_type_code => l_balance_type_code
127922  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
127923  
127924  , p_source_1 => l_array_source_1(Idx)
127925  , p_source_2 => l_array_source_2(Idx)
127926  , p_source_3 => l_array_source_3(Idx)
127927  , p_source_5 => l_array_source_5(Idx)
127928  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
127929  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
127930  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
127931  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
127932  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
127933  , p_source_11 => l_array_source_11(Idx)
127934  );
127935 If(l_balance_type_code = 'A') THEN
127936   l_actual_gain_loss_ref := l_gain_or_loss_ref;
127937 END IF;
127938 
127939 --
127940 
127941       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
127942       -- or secondary ledger that has different currency with primary
127943       -- or alc that is calculated by sla
127944       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
127945             (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'))
127946 
127947 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
127948 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
127949           AND (l_actual_flag = 'A')) THEN
127950         XLA_AE_LINES_PKG.CreateGainOrLossLines(
127951           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
127952          ,p_application_id   => p_application_id
127953          ,p_amb_context_code => 'DEFAULT'
127954          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
127955          ,p_event_class_code => C_EVENT_CLASS_CODE
127956          ,p_event_type_code  => C_EVENT_TYPE_CODE
127957          
127958          ,p_gain_ccid        => -1
127959          ,p_loss_ccid        => -1
127960 
127961          ,p_actual_flag      => l_actual_flag
127962          ,p_enc_flag         => null
127963          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
127964          ,p_enc_g_l_ref      => null
127965          );
127966       END IF;
127967    END IF;
127968 END IF;
127969 
127970    ELSE
127971       --
127972       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
127973       --
127974       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
127975          trace
127976             (p_msg      => 'Trancaction revesal option is Y'
127977             ,p_level    => C_LEVEL_STATEMENT
127978             ,p_module   => l_log_module);
127979       END IF;
127980    END IF;
127981 
127982 END LOOP;
127983 l_result := XLA_AE_LINES_PKG.InsertLines ;
127984 end loop;
127985 close line_cur;
127986 
127987 
127988 --
127989 -- insert headers into xla_ae_headers_gt table
127990 --
127991 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
127992 
127993 -- insert into errors table here.
127994 
127995 END LOOP;
127996 
127997 --
127998 -- 4865292
127999 --
128000 -- Compare g_hdr_extract_count with event count in
128001 -- CreateHeadersAndLines.
128002 --
128003 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
128004 
128005 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
128006    trace (p_msg     => '# rows extracted from header extract objects '
128007                     || ' (running total): '
128008                     || g_hdr_extract_count
128009          ,p_level   => C_LEVEL_STATEMENT
128010          ,p_module  => l_log_module);
128011 END IF;
128012 
128013 CLOSE header_cur;
128014 --
128015 
128016 --
128017 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128018    trace
128019       (p_msg      => 'END of EventType_254'
128020       ,p_level    => C_LEVEL_PROCEDURE
128021       ,p_module   => l_log_module);
128022 END IF;
128023 --
128024 RETURN l_result;
128025 EXCEPTION
128026 WHEN xla_exceptions_pkg.application_exception THEN
128027    
128028 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
128029 
128030    
128031 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
128032 
128033    RAISE;
128034 
128035 WHEN NO_DATA_FOUND THEN
128036 
128037 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
128038 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
128039 
128040 FOR header_record IN header_cur
128041 LOOP
128042     l_array_header_events(header_record.event_id) := header_record.event_id;
128043 END LOOP;
128044 
128045 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
128046 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
128047 
128048 fnd_file.put_line(fnd_file.LOG, '                    ');
128052 
128049 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
128050 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
128051 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
128053 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
128054 LOOP
128055 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
128056 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
128057         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
128058 	END IF;
128059 END LOOP;
128060 
128061 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
128062 fnd_file.put_line(fnd_file.LOG, '                    ');
128063 
128064 
128065 xla_exceptions_pkg.raise_message
128066       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_254');
128067 
128068 
128069 WHEN OTHERS THEN
128070    xla_exceptions_pkg.raise_message
128071       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_254');
128072 END EventType_254;
128073 --
128074 
128075 ---------------------------------------
128076 --
128077 -- PRIVATE PROCEDURE
128078 --         insert_sources_255
128079 --
128080 ----------------------------------------
128081 --
128082 PROCEDURE insert_sources_255(
128083                                 p_target_ledger_id       IN NUMBER
128084                               , p_language               IN VARCHAR2
128085                               , p_sla_ledger_id          IN NUMBER
128086                               , p_pad_start_date         IN DATE
128087                               , p_pad_end_date           IN DATE
128088                          )
128089 IS
128090 
128091 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CORRECTION_RECEIVE';
128092 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RECEIVE';
128093 p_apps_owner                   VARCHAR2(30);
128094 l_log_module                   VARCHAR2(240);
128095 BEGIN
128096 IF g_log_enabled THEN
128097       l_log_module := C_DEFAULT_MODULE||'.insert_sources_255';
128098 END IF;
128099 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128100 
128101       trace
128102          (p_msg      => 'BEGIN of insert_sources_255'
128103          ,p_level    => C_LEVEL_PROCEDURE
128104          ,p_module   => l_log_module);
128105 
128106 END IF;
128107 
128108 -- select APPS owner
128109 SELECT oracle_username
128110   INTO p_apps_owner
128111   FROM fnd_oracle_userid
128112  WHERE read_only_flag = 'U'
128113 ;
128114 
128115 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
128116       trace
128117          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
128118                         ' - p_language = '||p_language||
128119                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
128120                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
128121                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
128122                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
128123          ,p_level    => C_LEVEL_STATEMENT
128124          ,p_module   => l_log_module);
128125 END IF;
128126 
128127 
128128 --
128129 INSERT INTO xla_diag_sources --hdr1
128130 (
128131         event_id
128132       , ledger_id
128133       , sla_ledger_id
128134       , description_language
128135       , object_name
128136       , object_type_code
128137       , line_number
128138       , source_application_id
128139       , source_type_code
128140       , source_code
128141       , source_value
128142       , source_meaning
128143       , created_by
128144       , creation_date
128145       , last_update_date
128146       , last_updated_by
128147       , last_update_login
128148       , program_update_date
128149       , program_application_id
128150       , program_id
128151       , request_id
128152 )
128153 SELECT
128154         event_id
128155       , p_target_ledger_id
128156       , p_sla_ledger_id
128157       , p_language
128158       , object_name
128159       , object_type_code
128160       , line_number
128161       , source_application_id
128162       , source_type_code
128163       , source_code
128164       , SUBSTR(source_value ,1,1996)
128165       , SUBSTR(source_meaning,1,200)
128166       , xla_environment_pkg.g_Usr_Id
128167       , TRUNC(SYSDATE)
128168       , TRUNC(SYSDATE)
128169       , xla_environment_pkg.g_Usr_Id
128170       , xla_environment_pkg.g_Login_Id
128171       , TRUNC(SYSDATE)
128172       , xla_environment_pkg.g_Prog_Appl_Id
128173       , xla_environment_pkg.g_Prog_Id
128174       , xla_environment_pkg.g_Req_Id
128175   FROM (
128176        SELECT xet.event_id                  event_id
128177             , 0                             line_number
128178             , CASE r
128179                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
128180                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
128181                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
128182                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
128183                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
128184                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
128185                 
128186                ELSE null
128190                 WHEN 2 THEN 'HEADER' 
128187               END                           object_name
128188             , CASE r
128189                 WHEN 1 THEN 'HEADER' 
128191                 WHEN 3 THEN 'HEADER' 
128192                 WHEN 4 THEN 'HEADER' 
128193                 WHEN 5 THEN 'HEADER' 
128194                 WHEN 6 THEN 'HEADER' 
128195                 
128196                 ELSE null
128197               END                           object_type_code
128198             , CASE r
128199                 WHEN 1 THEN '555' 
128200                 WHEN 2 THEN '555' 
128201                 WHEN 3 THEN '555' 
128202                 WHEN 4 THEN '555' 
128203                 WHEN 5 THEN '555' 
128204                 WHEN 6 THEN '555' 
128205                 
128206                 ELSE null
128207               END                           source_application_id
128208             , 'S'             source_type_code
128209             , CASE r
128210                 WHEN 1 THEN 'ENTITY_CODE' 
128211                 WHEN 2 THEN 'CURRENCY_CODE' 
128212                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
128213                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
128214                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
128215                 WHEN 6 THEN 'TRANSACTION_DATE' 
128216                 
128217                 ELSE null
128218               END                           source_code
128219             , CASE r
128220                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
128221                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
128222                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
128223                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
128224                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
128225                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
128226                 
128227                 ELSE null
128228               END                           source_value
128229             , CASE r
128230                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
128231                           1010186
128232                          ,TO_CHAR(h1.CURRENCY_CODE)
128233                          ,'CURRENCY_CODE'
128234                          ,'S'
128235                          ,555)
128236                 
128237                 ELSE null
128238               END               source_meaning
128239         FROM xla_events_gt     xet  
128240       , GMF_XLA_EXTRACT_HEADERS  h1
128241             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
128242        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
128243          AND xet.event_type_code = C_EVENT_TYPE_CODE
128244             AND h1.event_id = xet.event_id
128245 
128246 )
128247 ;
128248 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
128249 
128250       trace
128251          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
128252          ,p_level    => C_LEVEL_STATEMENT
128253          ,p_module   => l_log_module);
128254 
128255 END IF;
128256 --
128257 
128258 
128259 
128260 --
128261 INSERT INTO xla_diag_sources --line1
128262 (
128263         event_id
128264       , ledger_id
128265       , sla_ledger_id
128266       , description_language
128267       , object_name
128268       , object_type_code
128269       , line_number
128270       , source_application_id
128271       , source_type_code
128272       , source_code
128273       , source_value
128274       , source_meaning
128275       , created_by
128276       , creation_date
128277       , last_update_date
128278       , last_updated_by
128279       , last_update_login
128280       , program_update_date
128281       , program_application_id
128282       , program_id
128283       , request_id
128284 )
128285 SELECT  event_id
128286       , p_target_ledger_id
128287       , p_sla_ledger_id
128288       , p_language
128289       , object_name
128290       , object_type_code
128291       , line_number
128292       , source_application_id
128293       , source_type_code
128294       , source_code
128295       , SUBSTR(source_value,1,1996)
128296       , SUBSTR(source_meaning,1,200)
128297       , xla_environment_pkg.g_Usr_Id
128298       , TRUNC(SYSDATE)
128299       , TRUNC(SYSDATE)
128300       , xla_environment_pkg.g_Usr_Id
128301       , xla_environment_pkg.g_Login_Id
128302       , TRUNC(SYSDATE)
128303       , xla_environment_pkg.g_Prog_Appl_Id
128304       , xla_environment_pkg.g_Prog_Id
128305       , xla_environment_pkg.g_Req_Id
128306   FROM (
128307        SELECT xet.event_id                  event_id
128308             , l2.line_number                 line_number
128309             , CASE r
128310                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
128311                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
128312                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
128313                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
128314                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
128315                 
128316                ELSE null
128317               END                           object_name
128318             , CASE r
128319                 WHEN 1 THEN 'LINE' 
128320                 WHEN 2 THEN 'LINE' 
128321                 WHEN 3 THEN 'LINE' 
128322                 WHEN 4 THEN 'LINE' 
128323                 WHEN 5 THEN 'LINE' 
128324                 
128325                 ELSE null
128329                 WHEN 2 THEN '555' 
128326               END                           object_type_code
128327             , CASE r
128328                 WHEN 1 THEN '555' 
128330                 WHEN 3 THEN '555' 
128331                 WHEN 4 THEN '555' 
128332                 WHEN 5 THEN '555' 
128333                 
128334                 ELSE null
128335               END                           source_application_id
128336             , 'S'             source_type_code
128337             , CASE r
128338                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
128339                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
128340                 WHEN 3 THEN 'ENTERED_AMOUNT' 
128341                 WHEN 4 THEN 'LINE_ID' 
128342                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
128343                 
128344                 ELSE null
128345               END                           source_code
128346             , CASE r
128347                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
128348                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
128349                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
128350                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
128351                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
128352                 
128353                 ELSE null
128354               END                           source_value
128355             , null              source_meaning
128356          FROM  xla_events_gt     xet  
128357         , GMF_XLA_EXTRACT_LINES  l2
128358             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
128359         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
128360           AND xet.event_type_code = C_EVENT_TYPE_CODE
128361             AND l2.event_id          = xet.event_id
128362 
128363 )
128364 ;
128365 --
128366 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
128367 
128368       trace
128369          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
128370          ,p_level    => C_LEVEL_STATEMENT
128371          ,p_module   => l_log_module);
128372 
128373 END IF;
128374 
128375 
128376 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128377       trace
128378          (p_msg      => 'END of insert_sources_255'
128379          ,p_level    => C_LEVEL_PROCEDURE
128380          ,p_module   => l_log_module);
128381 END IF;
128382 EXCEPTION
128383   WHEN xla_exceptions_pkg.application_exception THEN
128384       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
128385             trace
128386                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
128387                ,p_level    => C_LEVEL_EXCEPTION
128388                ,p_module   => l_log_module);
128389       END IF;
128390       RAISE;
128391   WHEN OTHERS THEN
128392       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
128393             trace
128394                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
128395                ,p_level    => C_LEVEL_EXCEPTION
128396                ,p_module   => l_log_module);
128397        END IF;
128398        xla_exceptions_pkg.raise_message
128399            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_255');
128400 END insert_sources_255;
128401 --
128402 
128403 ---------------------------------------
128404 --
128405 -- PRIVATE FUNCTION
128406 --         EventType_255
128407 --
128408 ----------------------------------------
128409 --
128410 FUNCTION EventType_255
128411        (p_application_id         IN NUMBER
128412        ,p_base_ledger_id         IN NUMBER
128413        ,p_target_ledger_id       IN NUMBER
128414        ,p_language               IN VARCHAR2
128415        ,p_currency_code          IN VARCHAR2
128416        ,p_sla_ledger_id          IN NUMBER
128417        ,p_pad_start_date         IN DATE
128418        ,p_pad_end_date           IN DATE
128419        ,p_primary_ledger_id      IN NUMBER)
128420 RETURN BOOLEAN IS
128421 --
128422 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CORRECTION_RECEIVE';
128423 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RECEIVE';
128424 
128425 l_calculate_acctd_flag   VARCHAR2(1) :='N';
128426 l_calculate_g_l_flag     VARCHAR2(1) :='N';
128427 --
128428 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
128429 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
128430 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
128431 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
128432 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
128433 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
128434 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
128435 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
128436 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
128437 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
128438 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
128439 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
128440 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
128441 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
128442 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
128443 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
128444 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
128445 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
128449 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
128446 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
128447 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
128448 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
128450 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
128451 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
128452 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
128453 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
128454 
128455 l_event_id                             NUMBER;
128456 l_previous_event_id                    NUMBER;
128457 l_first_event_id                       NUMBER;
128458 l_last_event_id                        NUMBER;
128459 
128460 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
128461 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
128462 --
128463 --
128464 l_result                    BOOLEAN := TRUE;
128465 l_rows                      NUMBER  := 1000;
128466 l_event_type_name           VARCHAR2(80) := 'Correction Receive';
128467 l_event_class_name          VARCHAR2(80) := 'Receiving';
128468 l_description               VARCHAR2(4000);
128469 l_transaction_reversal      NUMBER;
128470 l_ae_header_id              NUMBER;
128471 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
128472 l_log_module                VARCHAR2(240);
128473 --
128474 l_acct_reversal_source      VARCHAR2(30);
128475 l_trx_reversal_source       VARCHAR2(30);
128476 
128477 l_continue_with_lines       BOOLEAN := TRUE;
128478 --
128479 l_acc_rev_gl_date_source    DATE;                      -- 4262811
128480 --
128481 type t_array_event_id is table of number index by binary_integer;
128482 
128483 l_rec_array_event                    t_rec_array_event;
128484 l_null_rec_array_event               t_rec_array_event;
128485 l_array_ae_header_id                 xla_number_array_type;
128486 l_actual_flag                        VARCHAR2(1) := NULL;
128487 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
128488 l_balance_type_code                  VARCHAR2(1) :=NULL;
128489 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
128490 
128491 --
128492 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
128493 --
128494 
128495 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
128496 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
128497 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
128498 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
128499 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
128500 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
128501 
128502 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
128503 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
128504 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
128505 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
128506 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
128507 
128508 l_array_source_6              t_array_source_6;
128509 l_array_source_7              t_array_source_7;
128510 l_array_source_8              t_array_source_8;
128511 l_array_source_9              t_array_source_9;
128512 l_array_source_10              t_array_source_10;
128513 l_array_source_12              t_array_source_12;
128514 
128515 l_array_source_1      t_array_source_1;
128516 l_array_source_2      t_array_source_2;
128517 l_array_source_3      t_array_source_3;
128518 l_array_source_5      t_array_source_5;
128519 l_array_source_11      t_array_source_11;
128520 
128521 --
128522 CURSOR header_cur
128523 IS
128524 SELECT /*+ leading(xet) cardinality(xet,1) */
128525 -- Event Type Code: CORRECTION_RECEIVE
128526 -- Event Class Code: RECEIVE
128527     xet.entity_id
128528   , xet.legal_entity_id
128529   , xet.entity_code
128530   , xet.transaction_number
128531   , xet.event_id
128532   , xet.event_class_code
128533   , xet.event_type_code
128534   , xet.event_number
128535   , xet.event_date
128536   , xet.transaction_date
128537   , xet.reference_num_1
128538   , xet.reference_num_2
128539   , xet.reference_num_3
128540   , xet.reference_num_4
128541   , xet.reference_char_1
128542   , xet.reference_char_2
128543   , xet.reference_char_3
128544   , xet.reference_char_4
128545   , xet.reference_date_1
128546   , xet.reference_date_2
128547   , xet.reference_date_3
128548   , xet.reference_date_4
128549   , xet.event_created_by
128550   , xet.budgetary_control_flag 
128551   , h1.ENTITY_CODE    source_6
128552   , h1.CURRENCY_CODE    source_7
128553   , h1.CURRENCY_CONVERSION_DATE    source_8
128554   , h1.CURRENCY_CONVERSION_RATE    source_9
128555   , h1.CURRENCY_CONVERSION_TYPE    source_10
128556   , h1.TRANSACTION_DATE    source_12
128557   FROM xla_events_gt     xet 
128558   , GMF_XLA_EXTRACT_HEADERS  h1
128559  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
128563  ORDER BY event_id
128560    and xet.event_type_code = C_EVENT_TYPE_CODE
128561    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
128562 
128564 ;
128565 
128566 
128567 --
128568 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
128569 IS
128570 SELECT /*+ leading(xet) cardinality(xet,1) */
128571 -- Event Type Code: CORRECTION_RECEIVE
128572 -- Event Class Code: RECEIVE
128573     xet.entity_id
128574    ,xet.legal_entity_id
128575    ,xet.entity_code
128576    ,xet.transaction_number
128577    ,xet.event_id
128578    ,xet.event_class_code
128579    ,xet.event_type_code
128580    ,xet.event_number
128581    ,xet.event_date
128582    ,xet.transaction_date
128583    ,xet.reference_num_1
128584    ,xet.reference_num_2
128585    ,xet.reference_num_3
128586    ,xet.reference_num_4
128587    ,xet.reference_char_1
128588    ,xet.reference_char_2
128589    ,xet.reference_char_3
128590    ,xet.reference_char_4
128591    ,xet.reference_date_1
128592    ,xet.reference_date_2
128593    ,xet.reference_date_3
128594    ,xet.reference_date_4
128595    ,xet.event_created_by
128596    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
128597   , l2.TRANSACTION_ACCOUNT_ID    source_1
128598   , l2.JOURNAL_LINE_TYPE    source_2
128599   , l2.ENTERED_AMOUNT    source_3
128600   , l2.LINE_ID    source_5
128601   , l2.ACCOUNTED_AMOUNT    source_11
128602   FROM xla_events_gt     xet 
128603   , GMF_XLA_EXTRACT_LINES  l2
128604  WHERE xet.event_id between x_first_event_id and x_last_event_id
128605    and xet.event_date between p_pad_start_date and p_pad_end_date
128606    and xet.event_type_code = C_EVENT_TYPE_CODE
128607    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
128608 ;
128609 
128610 --
128611 BEGIN
128612 IF g_log_enabled THEN
128613    l_log_module := C_DEFAULT_MODULE||'.EventType_255';
128614 END IF;
128615 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128616    trace
128617       (p_msg      => 'BEGIN of EventType_255'
128618       ,p_level    => C_LEVEL_PROCEDURE
128619       ,p_module   => l_log_module);
128620 END IF;
128621 
128622 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
128623    trace
128624       (p_msg      => 'p_application_id = '||p_application_id||
128625                      ' - p_base_ledger_id = '||p_base_ledger_id||
128626                      ' - p_target_ledger_id  = '||p_target_ledger_id||
128627                      ' - p_language = '||p_language||
128628                      ' - p_currency_code = '||p_currency_code||
128629                      ' - p_sla_ledger_id = '||p_sla_ledger_id
128630       ,p_level    => C_LEVEL_STATEMENT
128631       ,p_module   => l_log_module);
128632 END IF;
128633 --
128634 -- initialze arrays
128635 --
128636 g_array_event.DELETE;
128637 l_rec_array_event := l_null_rec_array_event;
128638 --
128639 --------------------------------------
128640 -- 4262811 Initialze MPA Line Number
128641 --------------------------------------
128642 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
128643 
128644 --
128645 
128646 --
128647 OPEN header_cur;
128648 --
128649 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
128650    trace
128651    (p_msg      => 'SQL - FETCH header_cur'
128652    ,p_level    => C_LEVEL_STATEMENT
128653    ,p_module   => l_log_module);
128654 END IF;
128655 --
128656 LOOP
128657 FETCH header_cur BULK COLLECT INTO
128658         l_array_entity_id
128659       , l_array_legal_entity_id
128660       , l_array_entity_code
128661       , l_array_transaction_num
128662       , l_array_event_id
128663       , l_array_class_code
128664       , l_array_event_type
128665       , l_array_event_number
128666       , l_array_event_date
128667       , l_array_transaction_date
128668       , l_array_reference_num_1
128669       , l_array_reference_num_2
128670       , l_array_reference_num_3
128671       , l_array_reference_num_4
128672       , l_array_reference_char_1
128673       , l_array_reference_char_2
128674       , l_array_reference_char_3
128675       , l_array_reference_char_4
128676       , l_array_reference_date_1
128677       , l_array_reference_date_2
128678       , l_array_reference_date_3
128679       , l_array_reference_date_4
128680       , l_array_event_created_by
128681       , l_array_budgetary_control_flag 
128682       , l_array_source_6
128683       , l_array_source_7
128684       , l_array_source_8
128685       , l_array_source_9
128686       , l_array_source_10
128687       , l_array_source_12
128688       LIMIT l_rows;
128689 --
128690 IF (C_LEVEL_EVENT >= g_log_level) THEN
128691    trace
128692    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
128693    ,p_level    => C_LEVEL_EVENT
128694    ,p_module   => l_log_module);
128695 END IF;
128696 --
128697 EXIT WHEN l_array_entity_id.COUNT = 0;
128698 
128699 -- initialize arrays
128700 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
128701 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
128702 
128703 --
128704 -- Bug 4458708
128705 --
128706 XLA_AE_LINES_PKG.g_LineNumber := 0;
128707 
128708 
128709 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
128710 g_last_hdr_idx := l_array_event_id.LAST;
128711 --
128712 -- loop for the headers. Each iteration is for each header extract row
128716 
128713 -- fetched in header cursor
128714 --
128715 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
128717 --
128718 -- set event info as cache for other routines to refer event attributes
128719 --
128720 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
128721    (p_application_id           => p_application_id
128722    ,p_primary_ledger_id        => p_primary_ledger_id
128723    ,p_base_ledger_id           => p_base_ledger_id
128724    ,p_target_ledger_id         => p_target_ledger_id
128725    ,p_entity_id                => l_array_entity_id(hdr_idx)
128726    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
128727    ,p_entity_code              => l_array_entity_code(hdr_idx)
128728    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
128729    ,p_event_id                 => l_array_event_id(hdr_idx)
128730    ,p_event_class_code         => l_array_class_code(hdr_idx)
128731    ,p_event_type_code          => l_array_event_type(hdr_idx)
128732    ,p_event_number             => l_array_event_number(hdr_idx)
128733    ,p_event_date               => l_array_event_date(hdr_idx)
128734    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
128735    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
128736    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
128737    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
128738    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
128739    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
128740    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
128741    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
128742    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
128743    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
128744    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
128745    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
128746    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
128747    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
128748    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
128749 
128750 --
128751 -- set the status of entry to C_VALID (0)
128752 --
128753 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
128754 
128755 --
128756 -- initialize a row for ae header
128757 --
128758 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
128759 
128760 l_event_id := l_array_event_id(hdr_idx);
128761 
128762 --
128763 -- storing the hdr_idx for event. May be used by line cursor.
128764 --
128765 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
128766 
128767 --
128768 -- store sources from header extract. This can be improved to
128769 -- store only those sources from header extract that may be used in lines
128770 --
128771 
128772 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
128773 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
128774 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
128775 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
128776 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
128777 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
128778 
128779 --
128780 -- initilaize the status of ae headers for diffrent balance types
128781 -- the status is initialised to C_NOT_CREATED (2)
128782 --
128783 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
128784 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
128785 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
128786 
128787 --
128788 -- call api to validate and store accounting attributes for header
128789 --
128790 
128791 ------------------------------------------------------------
128792 -- Accrual Reversal : to get date for Standard Source (NONE)
128793 ------------------------------------------------------------
128794 l_acc_rev_gl_date_source := NULL;
128795 
128796      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
128797       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
128798 
128799 
128800 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
128801 
128802 XLA_AE_HEADER_PKG.SetJeCategoryName;
128803 
128804 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
128805 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
128806 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
128807 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
128808 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
128809 
128810 
128811 -- No header level analytical criteria
128812 
128813 --
128814 --accounting attribute enhancement, bug 3612931
128815 --
128816 l_trx_reversal_source := SUBSTR(NULL, 1,30);
128817 
128818 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
128819    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
128820 
128821    xla_accounting_err_pkg.build_message
128822       (p_appli_s_name            => 'XLA'
128826       ,p_token_2                 => 'PRODUCT_NAME'
128823       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
128824       ,p_token_1                 => 'ACCT_ATTR_NAME'
128825       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
128827       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
128828       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
128829       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
128830       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
128831 
128832 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
128833    --
128834    -- following sets the accounting attributes needed to reverse
128835    -- accounting for a distributeion
128836    --
128837    xla_ae_lines_pkg.SetTrxReversalAttrs
128838       (p_event_id              => l_event_id
128839       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
128840       ,p_trx_reversal_source   => l_trx_reversal_source);
128841 
128842 END IF;
128843 
128844 
128845 ----------------------------------------------------------------
128846 -- 4262811 -  update the header statuses to invalid in need be
128847 ----------------------------------------------------------------
128848 --
128849 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
128850 
128851 
128852   -----------------------------------------------
128853   -- No accrual reversal for the event class/type
128854   -----------------------------------------------
128855 ----------------------------------------------------------------
128856 
128857 --
128858 -- this ends the header loop iteration for one bulk fetch
128859 --
128860 END LOOP;
128861 
128862 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
128863 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
128864 
128865 --
128866 -- insert dummy rows into lines gt table that were created due to
128867 -- transaction reversals
128868 --
128869 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
128870    l_result := XLA_AE_LINES_PKG.InsertLines;
128871 END IF;
128872 
128873 --
128874 -- reset the temp_line_num for each set of events fetched from header
128875 -- cursor rather than doing it for each new event in line cursor
128876 -- Bug 3939231
128877 --
128878 xla_ae_lines_pkg.g_temp_line_num := 0;
128879 
128880 
128881 
128882 --
128883 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
128884 --
128885 --
128886 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
128887 
128888       trace
128889          (p_msg      => 'SQL - FETCH line_cur'
128890          ,p_level    => C_LEVEL_STATEMENT
128891          ,p_module   => l_log_module);
128892 
128893 END IF;
128894 --
128895 --
128896 LOOP
128897   --
128898   FETCH line_cur BULK COLLECT INTO
128899         l_array_entity_id
128900       , l_array_legal_entity_id
128901       , l_array_entity_code
128902       , l_array_transaction_num
128903       , l_array_event_id
128904       , l_array_class_code
128905       , l_array_event_type
128906       , l_array_event_number
128907       , l_array_event_date
128908       , l_array_transaction_date
128909       , l_array_reference_num_1
128910       , l_array_reference_num_2
128911       , l_array_reference_num_3
128912       , l_array_reference_num_4
128913       , l_array_reference_char_1
128914       , l_array_reference_char_2
128915       , l_array_reference_char_3
128916       , l_array_reference_char_4
128917       , l_array_reference_date_1
128918       , l_array_reference_date_2
128919       , l_array_reference_date_3
128920       , l_array_reference_date_4
128921       , l_array_event_created_by
128922       , l_array_budgetary_control_flag
128923       , l_array_extract_line_num 
128924       , l_array_source_1
128925       , l_array_source_2
128926       , l_array_source_3
128927       , l_array_source_5
128928       , l_array_source_11
128929       LIMIT l_rows;
128930 
128931   --
128932   IF (C_LEVEL_EVENT >= g_log_level) THEN
128933             trace
128934                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
128935                ,p_level    => C_LEVEL_EVENT
128936                ,p_module   => l_log_module);
128937   END IF;
128938   --
128939   EXIT WHEN l_array_entity_id.count = 0;
128940 
128941   XLA_AE_LINES_PKG.g_rec_lines := null;
128942 
128943 --
128944 -- Bug 4458708
128945 --
128946 XLA_AE_LINES_PKG.g_LineNumber := 0;
128947 --
128948 --
128949 
128950 FOR Idx IN 1..l_array_event_id.count LOOP
128951    --
128952    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
128953    --
128954    l_event_id := l_array_event_id(idx);  -- 5648433
128955 
128956    --
128957    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
128958    --
128959 
128960    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
128961              (g_array_event(l_event_id).array_value_num('header_index'))
128962          ,'N'
128963          ) <> 'Y'
128964    THEN
128965       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
128966          trace
128967             (p_msg      => 'Trancaction revesal option is not Y '
128968             ,p_level    => C_LEVEL_STATEMENT
128972 --
128969             ,p_module   => l_log_module);
128970       END IF;
128971 
128973 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
128974 --
128975 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
128976 --
128977 -- set event info as cache for other routines to refer event attributes
128978 --
128979 
128980 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
128981    l_previous_event_id := l_event_id;
128982 
128983    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
128984       (p_application_id           => p_application_id
128985       ,p_primary_ledger_id        => p_primary_ledger_id
128986       ,p_base_ledger_id           => p_base_ledger_id
128987       ,p_target_ledger_id         => p_target_ledger_id
128988       ,p_entity_id                => l_array_entity_id(Idx)
128989       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
128990       ,p_entity_code              => l_array_entity_code(Idx)
128991       ,p_transaction_num          => l_array_transaction_num(Idx)
128992       ,p_event_id                 => l_array_event_id(Idx)
128993       ,p_event_class_code         => l_array_class_code(Idx)
128994       ,p_event_type_code          => l_array_event_type(Idx)
128995       ,p_event_number             => l_array_event_number(Idx)
128996       ,p_event_date               => l_array_event_date(Idx)
128997       ,p_transaction_date         => l_array_transaction_date(Idx)
128998       ,p_reference_num_1          => l_array_reference_num_1(Idx)
128999       ,p_reference_num_2          => l_array_reference_num_2(Idx)
129000       ,p_reference_num_3          => l_array_reference_num_3(Idx)
129001       ,p_reference_num_4          => l_array_reference_num_4(Idx)
129002       ,p_reference_char_1         => l_array_reference_char_1(Idx)
129003       ,p_reference_char_2         => l_array_reference_char_2(Idx)
129004       ,p_reference_char_3         => l_array_reference_char_3(Idx)
129005       ,p_reference_char_4         => l_array_reference_char_4(Idx)
129006       ,p_reference_date_1         => l_array_reference_date_1(Idx)
129007       ,p_reference_date_2         => l_array_reference_date_2(Idx)
129008       ,p_reference_date_3         => l_array_reference_date_3(Idx)
129009       ,p_reference_date_4         => l_array_reference_date_4(Idx)
129010       ,p_event_created_by         => l_array_event_created_by(Idx)
129011       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
129012        --
129013 END IF;
129014 
129015 
129016 
129017 --
129018 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
129019 
129020 l_acct_reversal_source := SUBSTR(NULL, 1,30);
129021 
129022 IF l_continue_with_lines THEN
129023    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
129024       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
129025 
129026       xla_accounting_err_pkg.build_message
129027          (p_appli_s_name            => 'XLA'
129028          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
129029          ,p_token_1                 => 'LINE_NUMBER'
129030          ,p_value_1                 => l_array_extract_line_num(Idx)
129031          ,p_token_2                 => 'PRODUCT_NAME'
129032          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
129033          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
129034          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
129035          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
129036 
129037    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
129038       --
129039       -- following sets the accounting attributes needed to reverse
129040       -- accounting for a distributeion
129041       --
129042 
129043       --
129044       -- 5217187
129045       --
129046       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
129047       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
129048                                        g_array_event(l_event_id).array_value_num('header_index'));
129049       --
129050       --
129051 
129052       -- No reversal code generated
129053 
129054       xla_ae_lines_pkg.SetAcctReversalAttrs
129055          (p_event_id             => l_event_id
129056          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
129057          ,p_calculate_acctd_flag => l_calculate_acctd_flag
129058          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
129059    END IF;
129060 
129061    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
129062        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
129063 
129064 --
129065 AcctLineType_52 (
129066  p_application_id  => p_application_id
129067  ,p_event_id     => l_event_id
129068  ,p_calculate_acctd_flag => l_calculate_acctd_flag
129069  ,p_calculate_g_l_flag => l_calculate_g_l_flag
129070  ,p_actual_flag => l_actual_flag
129071  ,p_balance_type_code => l_balance_type_code
129072  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
129073  
129074  , p_source_1 => l_array_source_1(Idx)
129075  , p_source_2 => l_array_source_2(Idx)
129076  , p_source_3 => l_array_source_3(Idx)
129077  , p_source_5 => l_array_source_5(Idx)
129078  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
129079  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
129080  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
129081  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
129082  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
129086   l_actual_gain_loss_ref := l_gain_or_loss_ref;
129083  , p_source_11 => l_array_source_11(Idx)
129084  );
129085 If(l_balance_type_code = 'A') THEN
129087 END IF;
129088 
129089 --
129090 
129091 
129092 --
129093 AcctLineType_120 (
129094  p_application_id  => p_application_id
129095  ,p_event_id     => l_event_id
129096  ,p_calculate_acctd_flag => l_calculate_acctd_flag
129097  ,p_calculate_g_l_flag => l_calculate_g_l_flag
129098  ,p_actual_flag => l_actual_flag
129099  ,p_balance_type_code => l_balance_type_code
129100  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
129101  
129102  , p_source_1 => l_array_source_1(Idx)
129103  , p_source_2 => l_array_source_2(Idx)
129104  , p_source_3 => l_array_source_3(Idx)
129105  , p_source_5 => l_array_source_5(Idx)
129106  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
129107  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
129108  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
129109  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
129110  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
129111  , p_source_11 => l_array_source_11(Idx)
129112  );
129113 If(l_balance_type_code = 'A') THEN
129114   l_actual_gain_loss_ref := l_gain_or_loss_ref;
129115 END IF;
129116 
129117 --
129118 
129119 
129120 --
129121 AcctLineType_206 (
129122  p_application_id  => p_application_id
129123  ,p_event_id     => l_event_id
129124  ,p_calculate_acctd_flag => l_calculate_acctd_flag
129125  ,p_calculate_g_l_flag => l_calculate_g_l_flag
129126  ,p_actual_flag => l_actual_flag
129127  ,p_balance_type_code => l_balance_type_code
129128  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
129129  
129130  , p_source_1 => l_array_source_1(Idx)
129131  , p_source_2 => l_array_source_2(Idx)
129132  , p_source_3 => l_array_source_3(Idx)
129133  , p_source_5 => l_array_source_5(Idx)
129134  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
129135  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
129136  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
129137  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
129138  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
129139  , p_source_11 => l_array_source_11(Idx)
129140  );
129141 If(l_balance_type_code = 'A') THEN
129142   l_actual_gain_loss_ref := l_gain_or_loss_ref;
129143 END IF;
129144 
129145 --
129146 
129147       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
129148       -- or secondary ledger that has different currency with primary
129149       -- or alc that is calculated by sla
129150       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
129151             (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'))
129152 
129153 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
129154 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
129155           AND (l_actual_flag = 'A')) THEN
129156         XLA_AE_LINES_PKG.CreateGainOrLossLines(
129157           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
129158          ,p_application_id   => p_application_id
129159          ,p_amb_context_code => 'DEFAULT'
129160          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
129161          ,p_event_class_code => C_EVENT_CLASS_CODE
129162          ,p_event_type_code  => C_EVENT_TYPE_CODE
129163          
129164          ,p_gain_ccid        => -1
129165          ,p_loss_ccid        => -1
129166 
129167          ,p_actual_flag      => l_actual_flag
129168          ,p_enc_flag         => null
129169          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
129170          ,p_enc_g_l_ref      => null
129171          );
129172       END IF;
129173    END IF;
129174 END IF;
129175 
129176    ELSE
129177       --
129178       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
129179       --
129180       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
129181          trace
129182             (p_msg      => 'Trancaction revesal option is Y'
129183             ,p_level    => C_LEVEL_STATEMENT
129184             ,p_module   => l_log_module);
129185       END IF;
129186    END IF;
129187 
129188 END LOOP;
129189 l_result := XLA_AE_LINES_PKG.InsertLines ;
129190 end loop;
129191 close line_cur;
129192 
129193 
129194 --
129195 -- insert headers into xla_ae_headers_gt table
129196 --
129197 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
129198 
129199 -- insert into errors table here.
129200 
129201 END LOOP;
129202 
129203 --
129204 -- 4865292
129205 --
129206 -- Compare g_hdr_extract_count with event count in
129207 -- CreateHeadersAndLines.
129208 --
129209 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
129210 
129211 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
129212    trace (p_msg     => '# rows extracted from header extract objects '
129213                     || ' (running total): '
129214                     || g_hdr_extract_count
129215          ,p_level   => C_LEVEL_STATEMENT
129216          ,p_module  => l_log_module);
129217 END IF;
129218 
129219 CLOSE header_cur;
129220 --
129221 
129225       (p_msg      => 'END of EventType_255'
129222 --
129223 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129224    trace
129226       ,p_level    => C_LEVEL_PROCEDURE
129227       ,p_module   => l_log_module);
129228 END IF;
129229 --
129230 RETURN l_result;
129231 EXCEPTION
129232 WHEN xla_exceptions_pkg.application_exception THEN
129233    
129234 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
129235 
129236    
129237 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
129238 
129239    RAISE;
129240 
129241 WHEN NO_DATA_FOUND THEN
129242 
129243 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
129244 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
129245 
129246 FOR header_record IN header_cur
129247 LOOP
129248     l_array_header_events(header_record.event_id) := header_record.event_id;
129249 END LOOP;
129250 
129251 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
129252 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
129253 
129254 fnd_file.put_line(fnd_file.LOG, '                    ');
129255 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
129256 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
129257 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
129258 
129259 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
129260 LOOP
129261 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
129262 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
129263         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
129264 	END IF;
129265 END LOOP;
129266 
129267 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
129268 fnd_file.put_line(fnd_file.LOG, '                    ');
129269 
129270 
129271 xla_exceptions_pkg.raise_message
129272       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_255');
129273 
129274 
129275 WHEN OTHERS THEN
129276    xla_exceptions_pkg.raise_message
129277       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_255');
129278 END EventType_255;
129279 --
129280 
129281 ---------------------------------------
129282 --
129283 -- PRIVATE PROCEDURE
129284 --         insert_sources_256
129285 --
129286 ----------------------------------------
129287 --
129288 PROCEDURE insert_sources_256(
129289                                 p_target_ledger_id       IN NUMBER
129290                               , p_language               IN VARCHAR2
129291                               , p_sla_ledger_id          IN NUMBER
129292                               , p_pad_start_date         IN DATE
129293                               , p_pad_end_date           IN DATE
129294                          )
129295 IS
129296 
129297 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'COSTREVAL';
129298 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'COSTREVAL';
129299 p_apps_owner                   VARCHAR2(30);
129300 l_log_module                   VARCHAR2(240);
129301 BEGIN
129302 IF g_log_enabled THEN
129303       l_log_module := C_DEFAULT_MODULE||'.insert_sources_256';
129304 END IF;
129305 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129306 
129307       trace
129308          (p_msg      => 'BEGIN of insert_sources_256'
129309          ,p_level    => C_LEVEL_PROCEDURE
129310          ,p_module   => l_log_module);
129311 
129312 END IF;
129313 
129314 -- select APPS owner
129315 SELECT oracle_username
129316   INTO p_apps_owner
129317   FROM fnd_oracle_userid
129318  WHERE read_only_flag = 'U'
129319 ;
129320 
129321 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
129322       trace
129323          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
129324                         ' - p_language = '||p_language||
129325                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
129326                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
129327                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
129328                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
129329          ,p_level    => C_LEVEL_STATEMENT
129330          ,p_module   => l_log_module);
129331 END IF;
129332 
129333 
129334 --
129335 INSERT INTO xla_diag_sources --hdr1
129336 (
129337         event_id
129338       , ledger_id
129339       , sla_ledger_id
129340       , description_language
129341       , object_name
129342       , object_type_code
129343       , line_number
129344       , source_application_id
129345       , source_type_code
129346       , source_code
129347       , source_value
129348       , source_meaning
129349       , created_by
129350       , creation_date
129351       , last_update_date
129352       , last_updated_by
129353       , last_update_login
129354       , program_update_date
129355       , program_application_id
129356       , program_id
129357       , request_id
129358 )
129359 SELECT
129360         event_id
129361       , p_target_ledger_id
129362       , p_sla_ledger_id
129363       , p_language
129364       , object_name
129365       , object_type_code
129366       , line_number
129367       , source_application_id
129368       , source_type_code
129372       , xla_environment_pkg.g_Usr_Id
129369       , source_code
129370       , SUBSTR(source_value ,1,1996)
129371       , SUBSTR(source_meaning,1,200)
129373       , TRUNC(SYSDATE)
129374       , TRUNC(SYSDATE)
129375       , xla_environment_pkg.g_Usr_Id
129376       , xla_environment_pkg.g_Login_Id
129377       , TRUNC(SYSDATE)
129378       , xla_environment_pkg.g_Prog_Appl_Id
129379       , xla_environment_pkg.g_Prog_Id
129380       , xla_environment_pkg.g_Req_Id
129381   FROM (
129382        SELECT xet.event_id                  event_id
129383             , 0                             line_number
129384             , CASE r
129385                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
129386                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
129387                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
129388                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
129389                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
129390                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
129391                 
129392                ELSE null
129393               END                           object_name
129394             , CASE r
129395                 WHEN 1 THEN 'HEADER' 
129396                 WHEN 2 THEN 'HEADER' 
129397                 WHEN 3 THEN 'HEADER' 
129398                 WHEN 4 THEN 'HEADER' 
129399                 WHEN 5 THEN 'HEADER' 
129400                 WHEN 6 THEN 'HEADER' 
129401                 
129402                 ELSE null
129403               END                           object_type_code
129404             , CASE r
129405                 WHEN 1 THEN '555' 
129406                 WHEN 2 THEN '555' 
129407                 WHEN 3 THEN '555' 
129408                 WHEN 4 THEN '555' 
129409                 WHEN 5 THEN '555' 
129410                 WHEN 6 THEN '555' 
129411                 
129412                 ELSE null
129413               END                           source_application_id
129414             , 'S'             source_type_code
129415             , CASE r
129416                 WHEN 1 THEN 'ENTITY_CODE' 
129417                 WHEN 2 THEN 'CURRENCY_CODE' 
129418                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
129419                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
129420                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
129421                 WHEN 6 THEN 'TRANSACTION_DATE' 
129422                 
129423                 ELSE null
129424               END                           source_code
129425             , CASE r
129426                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
129427                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
129428                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
129429                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
129430                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
129431                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
129432                 
129433                 ELSE null
129434               END                           source_value
129435             , CASE r
129436                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
129437                           1010186
129438                          ,TO_CHAR(h1.CURRENCY_CODE)
129439                          ,'CURRENCY_CODE'
129440                          ,'S'
129441                          ,555)
129442                 
129443                 ELSE null
129444               END               source_meaning
129445         FROM xla_events_gt     xet  
129446       , GMF_XLA_EXTRACT_HEADERS  h1
129447             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
129448        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
129449          AND xet.event_type_code = C_EVENT_TYPE_CODE
129450             AND h1.event_id = xet.event_id
129451 
129452 )
129453 ;
129454 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
129455 
129456       trace
129457          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
129458          ,p_level    => C_LEVEL_STATEMENT
129459          ,p_module   => l_log_module);
129460 
129461 END IF;
129462 --
129463 
129464 
129465 
129466 --
129467 INSERT INTO xla_diag_sources --line1
129468 (
129469         event_id
129470       , ledger_id
129471       , sla_ledger_id
129472       , description_language
129473       , object_name
129474       , object_type_code
129475       , line_number
129476       , source_application_id
129477       , source_type_code
129478       , source_code
129479       , source_value
129480       , source_meaning
129481       , created_by
129482       , creation_date
129483       , last_update_date
129484       , last_updated_by
129485       , last_update_login
129486       , program_update_date
129487       , program_application_id
129488       , program_id
129489       , request_id
129490 )
129491 SELECT  event_id
129492       , p_target_ledger_id
129493       , p_sla_ledger_id
129494       , p_language
129495       , object_name
129496       , object_type_code
129497       , line_number
129498       , source_application_id
129499       , source_type_code
129500       , source_code
129501       , SUBSTR(source_value,1,1996)
129502       , SUBSTR(source_meaning,1,200)
129503       , xla_environment_pkg.g_Usr_Id
129504       , TRUNC(SYSDATE)
129505       , TRUNC(SYSDATE)
129506       , xla_environment_pkg.g_Usr_Id
129507       , xla_environment_pkg.g_Login_Id
129511       , xla_environment_pkg.g_Req_Id
129508       , TRUNC(SYSDATE)
129509       , xla_environment_pkg.g_Prog_Appl_Id
129510       , xla_environment_pkg.g_Prog_Id
129512   FROM (
129513        SELECT xet.event_id                  event_id
129514             , l2.line_number                 line_number
129515             , CASE r
129516                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
129517                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
129518                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
129519                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
129520                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
129521                 
129522                ELSE null
129523               END                           object_name
129524             , CASE r
129525                 WHEN 1 THEN 'LINE' 
129526                 WHEN 2 THEN 'LINE' 
129527                 WHEN 3 THEN 'LINE' 
129528                 WHEN 4 THEN 'LINE' 
129529                 WHEN 5 THEN 'LINE' 
129530                 
129531                 ELSE null
129532               END                           object_type_code
129533             , CASE r
129534                 WHEN 1 THEN '555' 
129535                 WHEN 2 THEN '555' 
129536                 WHEN 3 THEN '555' 
129537                 WHEN 4 THEN '555' 
129538                 WHEN 5 THEN '555' 
129539                 
129540                 ELSE null
129541               END                           source_application_id
129542             , 'S'             source_type_code
129543             , CASE r
129544                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
129545                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
129546                 WHEN 3 THEN 'ENTERED_AMOUNT' 
129547                 WHEN 4 THEN 'LINE_ID' 
129548                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
129549                 
129550                 ELSE null
129551               END                           source_code
129552             , CASE r
129553                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
129554                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
129555                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
129556                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
129557                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
129558                 
129559                 ELSE null
129560               END                           source_value
129561             , null              source_meaning
129562          FROM  xla_events_gt     xet  
129563         , GMF_XLA_EXTRACT_LINES  l2
129564             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
129565         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
129566           AND xet.event_type_code = C_EVENT_TYPE_CODE
129567             AND l2.event_id          = xet.event_id
129568 
129569 )
129570 ;
129571 --
129572 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
129573 
129574       trace
129575          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
129576          ,p_level    => C_LEVEL_STATEMENT
129577          ,p_module   => l_log_module);
129578 
129579 END IF;
129580 
129581 
129582 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129583       trace
129584          (p_msg      => 'END of insert_sources_256'
129585          ,p_level    => C_LEVEL_PROCEDURE
129586          ,p_module   => l_log_module);
129587 END IF;
129588 EXCEPTION
129589   WHEN xla_exceptions_pkg.application_exception THEN
129590       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
129591             trace
129592                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
129593                ,p_level    => C_LEVEL_EXCEPTION
129594                ,p_module   => l_log_module);
129595       END IF;
129596       RAISE;
129597   WHEN OTHERS THEN
129598       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
129599             trace
129600                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
129601                ,p_level    => C_LEVEL_EXCEPTION
129602                ,p_module   => l_log_module);
129603        END IF;
129604        xla_exceptions_pkg.raise_message
129605            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_256');
129606 END insert_sources_256;
129607 --
129608 
129609 ---------------------------------------
129610 --
129611 -- PRIVATE FUNCTION
129612 --         EventType_256
129613 --
129614 ----------------------------------------
129615 --
129616 FUNCTION EventType_256
129617        (p_application_id         IN NUMBER
129618        ,p_base_ledger_id         IN NUMBER
129619        ,p_target_ledger_id       IN NUMBER
129620        ,p_language               IN VARCHAR2
129621        ,p_currency_code          IN VARCHAR2
129622        ,p_sla_ledger_id          IN NUMBER
129623        ,p_pad_start_date         IN DATE
129624        ,p_pad_end_date           IN DATE
129625        ,p_primary_ledger_id      IN NUMBER)
129626 RETURN BOOLEAN IS
129627 --
129628 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'COSTREVAL';
129629 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'COSTREVAL';
129630 
129631 l_calculate_acctd_flag   VARCHAR2(1) :='N';
129632 l_calculate_g_l_flag     VARCHAR2(1) :='N';
129633 --
129634 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
129635 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
129636 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
129637 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
129638 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
129642 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
129639 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
129640 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
129641 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
129643 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
129644 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
129645 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
129646 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
129647 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
129648 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
129649 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
129650 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
129651 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
129652 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
129653 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
129654 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
129655 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
129656 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
129657 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
129658 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
129659 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
129660 
129661 l_event_id                             NUMBER;
129662 l_previous_event_id                    NUMBER;
129663 l_first_event_id                       NUMBER;
129664 l_last_event_id                        NUMBER;
129665 
129666 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
129667 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
129668 --
129669 --
129670 l_result                    BOOLEAN := TRUE;
129671 l_rows                      NUMBER  := 1000;
129672 l_event_type_name           VARCHAR2(80) := 'Cost Revaluation';
129673 l_event_class_name          VARCHAR2(80) := 'Cost Revaluation';
129674 l_description               VARCHAR2(4000);
129675 l_transaction_reversal      NUMBER;
129676 l_ae_header_id              NUMBER;
129677 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
129678 l_log_module                VARCHAR2(240);
129679 --
129680 l_acct_reversal_source      VARCHAR2(30);
129681 l_trx_reversal_source       VARCHAR2(30);
129682 
129683 l_continue_with_lines       BOOLEAN := TRUE;
129684 --
129685 l_acc_rev_gl_date_source    DATE;                      -- 4262811
129686 --
129687 type t_array_event_id is table of number index by binary_integer;
129688 
129689 l_rec_array_event                    t_rec_array_event;
129690 l_null_rec_array_event               t_rec_array_event;
129691 l_array_ae_header_id                 xla_number_array_type;
129692 l_actual_flag                        VARCHAR2(1) := NULL;
129693 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
129694 l_balance_type_code                  VARCHAR2(1) :=NULL;
129695 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
129696 
129697 --
129698 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
129699 --
129700 
129701 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
129702 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
129703 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
129704 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
129705 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
129706 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
129707 
129708 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
129709 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
129710 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
129711 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
129712 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
129713 
129714 l_array_source_6              t_array_source_6;
129715 l_array_source_7              t_array_source_7;
129716 l_array_source_8              t_array_source_8;
129717 l_array_source_9              t_array_source_9;
129718 l_array_source_10              t_array_source_10;
129719 l_array_source_12              t_array_source_12;
129720 
129721 l_array_source_1      t_array_source_1;
129722 l_array_source_2      t_array_source_2;
129723 l_array_source_3      t_array_source_3;
129724 l_array_source_5      t_array_source_5;
129725 l_array_source_11      t_array_source_11;
129726 
129727 --
129728 CURSOR header_cur
129729 IS
129730 SELECT /*+ leading(xet) cardinality(xet,1) */
129731 -- Event Type Code: COSTREVAL
129732 -- Event Class Code: COSTREVAL
129733     xet.entity_id
129734   , xet.legal_entity_id
129735   , xet.entity_code
129736   , xet.transaction_number
129737   , xet.event_id
129741   , xet.event_date
129738   , xet.event_class_code
129739   , xet.event_type_code
129740   , xet.event_number
129742   , xet.transaction_date
129743   , xet.reference_num_1
129744   , xet.reference_num_2
129745   , xet.reference_num_3
129746   , xet.reference_num_4
129747   , xet.reference_char_1
129748   , xet.reference_char_2
129749   , xet.reference_char_3
129750   , xet.reference_char_4
129751   , xet.reference_date_1
129752   , xet.reference_date_2
129753   , xet.reference_date_3
129754   , xet.reference_date_4
129755   , xet.event_created_by
129756   , xet.budgetary_control_flag 
129757   , h1.ENTITY_CODE    source_6
129758   , h1.CURRENCY_CODE    source_7
129759   , h1.CURRENCY_CONVERSION_DATE    source_8
129760   , h1.CURRENCY_CONVERSION_RATE    source_9
129761   , h1.CURRENCY_CONVERSION_TYPE    source_10
129762   , h1.TRANSACTION_DATE    source_12
129763   FROM xla_events_gt     xet 
129764   , GMF_XLA_EXTRACT_HEADERS  h1
129765  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
129766    and xet.event_type_code = C_EVENT_TYPE_CODE
129767    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
129768 
129769  ORDER BY event_id
129770 ;
129771 
129772 
129773 --
129774 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
129775 IS
129776 SELECT /*+ leading(xet) cardinality(xet,1) */
129777 -- Event Type Code: COSTREVAL
129778 -- Event Class Code: COSTREVAL
129779     xet.entity_id
129780    ,xet.legal_entity_id
129781    ,xet.entity_code
129782    ,xet.transaction_number
129783    ,xet.event_id
129784    ,xet.event_class_code
129785    ,xet.event_type_code
129786    ,xet.event_number
129787    ,xet.event_date
129788    ,xet.transaction_date
129789    ,xet.reference_num_1
129790    ,xet.reference_num_2
129791    ,xet.reference_num_3
129792    ,xet.reference_num_4
129793    ,xet.reference_char_1
129794    ,xet.reference_char_2
129795    ,xet.reference_char_3
129796    ,xet.reference_char_4
129797    ,xet.reference_date_1
129798    ,xet.reference_date_2
129799    ,xet.reference_date_3
129800    ,xet.reference_date_4
129801    ,xet.event_created_by
129802    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
129803   , l2.TRANSACTION_ACCOUNT_ID    source_1
129804   , l2.JOURNAL_LINE_TYPE    source_2
129805   , l2.ENTERED_AMOUNT    source_3
129806   , l2.LINE_ID    source_5
129807   , l2.ACCOUNTED_AMOUNT    source_11
129808   FROM xla_events_gt     xet 
129809   , GMF_XLA_EXTRACT_LINES  l2
129810  WHERE xet.event_id between x_first_event_id and x_last_event_id
129811    and xet.event_date between p_pad_start_date and p_pad_end_date
129812    and xet.event_type_code = C_EVENT_TYPE_CODE
129813    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
129814 ;
129815 
129816 --
129817 BEGIN
129818 IF g_log_enabled THEN
129819    l_log_module := C_DEFAULT_MODULE||'.EventType_256';
129820 END IF;
129821 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129822    trace
129823       (p_msg      => 'BEGIN of EventType_256'
129824       ,p_level    => C_LEVEL_PROCEDURE
129825       ,p_module   => l_log_module);
129826 END IF;
129827 
129828 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
129829    trace
129830       (p_msg      => 'p_application_id = '||p_application_id||
129831                      ' - p_base_ledger_id = '||p_base_ledger_id||
129832                      ' - p_target_ledger_id  = '||p_target_ledger_id||
129833                      ' - p_language = '||p_language||
129834                      ' - p_currency_code = '||p_currency_code||
129835                      ' - p_sla_ledger_id = '||p_sla_ledger_id
129836       ,p_level    => C_LEVEL_STATEMENT
129837       ,p_module   => l_log_module);
129838 END IF;
129839 --
129840 -- initialze arrays
129841 --
129842 g_array_event.DELETE;
129843 l_rec_array_event := l_null_rec_array_event;
129844 --
129845 --------------------------------------
129846 -- 4262811 Initialze MPA Line Number
129847 --------------------------------------
129848 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
129849 
129850 --
129851 
129852 --
129853 OPEN header_cur;
129854 --
129855 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
129856    trace
129857    (p_msg      => 'SQL - FETCH header_cur'
129858    ,p_level    => C_LEVEL_STATEMENT
129859    ,p_module   => l_log_module);
129860 END IF;
129861 --
129862 LOOP
129863 FETCH header_cur BULK COLLECT INTO
129864         l_array_entity_id
129865       , l_array_legal_entity_id
129866       , l_array_entity_code
129867       , l_array_transaction_num
129868       , l_array_event_id
129869       , l_array_class_code
129870       , l_array_event_type
129871       , l_array_event_number
129872       , l_array_event_date
129873       , l_array_transaction_date
129874       , l_array_reference_num_1
129875       , l_array_reference_num_2
129876       , l_array_reference_num_3
129877       , l_array_reference_num_4
129878       , l_array_reference_char_1
129879       , l_array_reference_char_2
129880       , l_array_reference_char_3
129881       , l_array_reference_char_4
129882       , l_array_reference_date_1
129883       , l_array_reference_date_2
129884       , l_array_reference_date_3
129885       , l_array_reference_date_4
129886       , l_array_event_created_by
129887       , l_array_budgetary_control_flag 
129888       , l_array_source_6
129889       , l_array_source_7
129893       , l_array_source_12
129890       , l_array_source_8
129891       , l_array_source_9
129892       , l_array_source_10
129894       LIMIT l_rows;
129895 --
129896 IF (C_LEVEL_EVENT >= g_log_level) THEN
129897    trace
129898    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
129899    ,p_level    => C_LEVEL_EVENT
129900    ,p_module   => l_log_module);
129901 END IF;
129902 --
129903 EXIT WHEN l_array_entity_id.COUNT = 0;
129904 
129905 -- initialize arrays
129906 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
129907 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
129908 
129909 --
129910 -- Bug 4458708
129911 --
129912 XLA_AE_LINES_PKG.g_LineNumber := 0;
129913 
129914 
129915 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
129916 g_last_hdr_idx := l_array_event_id.LAST;
129917 --
129918 -- loop for the headers. Each iteration is for each header extract row
129919 -- fetched in header cursor
129920 --
129921 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
129922 
129923 --
129924 -- set event info as cache for other routines to refer event attributes
129925 --
129926 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
129927    (p_application_id           => p_application_id
129928    ,p_primary_ledger_id        => p_primary_ledger_id
129929    ,p_base_ledger_id           => p_base_ledger_id
129930    ,p_target_ledger_id         => p_target_ledger_id
129931    ,p_entity_id                => l_array_entity_id(hdr_idx)
129932    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
129933    ,p_entity_code              => l_array_entity_code(hdr_idx)
129934    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
129935    ,p_event_id                 => l_array_event_id(hdr_idx)
129936    ,p_event_class_code         => l_array_class_code(hdr_idx)
129937    ,p_event_type_code          => l_array_event_type(hdr_idx)
129938    ,p_event_number             => l_array_event_number(hdr_idx)
129939    ,p_event_date               => l_array_event_date(hdr_idx)
129940    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
129941    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
129942    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
129943    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
129944    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
129945    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
129946    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
129947    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
129948    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
129949    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
129950    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
129951    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
129952    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
129953    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
129954    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
129955 
129956 --
129957 -- set the status of entry to C_VALID (0)
129958 --
129959 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
129960 
129961 --
129962 -- initialize a row for ae header
129963 --
129964 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
129965 
129966 l_event_id := l_array_event_id(hdr_idx);
129967 
129968 --
129969 -- storing the hdr_idx for event. May be used by line cursor.
129970 --
129971 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
129972 
129973 --
129974 -- store sources from header extract. This can be improved to
129975 -- store only those sources from header extract that may be used in lines
129976 --
129977 
129978 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
129979 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
129980 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
129981 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
129982 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
129983 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
129984 
129985 --
129986 -- initilaize the status of ae headers for diffrent balance types
129987 -- the status is initialised to C_NOT_CREATED (2)
129988 --
129989 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
129990 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
129991 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
129992 
129993 --
129994 -- call api to validate and store accounting attributes for header
129995 --
129996 
129997 ------------------------------------------------------------
129998 -- Accrual Reversal : to get date for Standard Source (NONE)
129999 ------------------------------------------------------------
130000 l_acc_rev_gl_date_source := NULL;
130001 
130002      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
130003       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
130004 
130005 
130006 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
130010 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
130007 
130008 XLA_AE_HEADER_PKG.SetJeCategoryName;
130009 
130011 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
130012 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
130013 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
130014 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
130015 
130016 
130017 -- No header level analytical criteria
130018 
130019 --
130020 --accounting attribute enhancement, bug 3612931
130021 --
130022 l_trx_reversal_source := SUBSTR(NULL, 1,30);
130023 
130024 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
130025    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
130026 
130027    xla_accounting_err_pkg.build_message
130028       (p_appli_s_name            => 'XLA'
130029       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
130030       ,p_token_1                 => 'ACCT_ATTR_NAME'
130031       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
130032       ,p_token_2                 => 'PRODUCT_NAME'
130033       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
130034       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
130035       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
130036       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
130037 
130038 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
130039    --
130040    -- following sets the accounting attributes needed to reverse
130041    -- accounting for a distributeion
130042    --
130043    xla_ae_lines_pkg.SetTrxReversalAttrs
130044       (p_event_id              => l_event_id
130045       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
130046       ,p_trx_reversal_source   => l_trx_reversal_source);
130047 
130048 END IF;
130049 
130050 
130051 ----------------------------------------------------------------
130052 -- 4262811 -  update the header statuses to invalid in need be
130053 ----------------------------------------------------------------
130054 --
130055 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
130056 
130057 
130058   -----------------------------------------------
130059   -- No accrual reversal for the event class/type
130060   -----------------------------------------------
130061 ----------------------------------------------------------------
130062 
130063 --
130064 -- this ends the header loop iteration for one bulk fetch
130065 --
130066 END LOOP;
130067 
130068 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
130069 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
130070 
130071 --
130072 -- insert dummy rows into lines gt table that were created due to
130073 -- transaction reversals
130074 --
130075 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
130076    l_result := XLA_AE_LINES_PKG.InsertLines;
130077 END IF;
130078 
130079 --
130080 -- reset the temp_line_num for each set of events fetched from header
130081 -- cursor rather than doing it for each new event in line cursor
130082 -- Bug 3939231
130083 --
130084 xla_ae_lines_pkg.g_temp_line_num := 0;
130085 
130086 
130087 
130088 --
130089 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
130090 --
130091 --
130092 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
130093 
130094       trace
130095          (p_msg      => 'SQL - FETCH line_cur'
130096          ,p_level    => C_LEVEL_STATEMENT
130097          ,p_module   => l_log_module);
130098 
130099 END IF;
130100 --
130101 --
130102 LOOP
130103   --
130104   FETCH line_cur BULK COLLECT INTO
130105         l_array_entity_id
130106       , l_array_legal_entity_id
130107       , l_array_entity_code
130108       , l_array_transaction_num
130109       , l_array_event_id
130110       , l_array_class_code
130111       , l_array_event_type
130112       , l_array_event_number
130113       , l_array_event_date
130114       , l_array_transaction_date
130115       , l_array_reference_num_1
130116       , l_array_reference_num_2
130117       , l_array_reference_num_3
130118       , l_array_reference_num_4
130119       , l_array_reference_char_1
130120       , l_array_reference_char_2
130121       , l_array_reference_char_3
130122       , l_array_reference_char_4
130123       , l_array_reference_date_1
130124       , l_array_reference_date_2
130125       , l_array_reference_date_3
130126       , l_array_reference_date_4
130127       , l_array_event_created_by
130128       , l_array_budgetary_control_flag
130129       , l_array_extract_line_num 
130130       , l_array_source_1
130131       , l_array_source_2
130132       , l_array_source_3
130133       , l_array_source_5
130134       , l_array_source_11
130135       LIMIT l_rows;
130136 
130137   --
130138   IF (C_LEVEL_EVENT >= g_log_level) THEN
130139             trace
130140                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
130141                ,p_level    => C_LEVEL_EVENT
130142                ,p_module   => l_log_module);
130143   END IF;
130144   --
130145   EXIT WHEN l_array_entity_id.count = 0;
130146 
130150 -- Bug 4458708
130147   XLA_AE_LINES_PKG.g_rec_lines := null;
130148 
130149 --
130151 --
130152 XLA_AE_LINES_PKG.g_LineNumber := 0;
130153 --
130154 --
130155 
130156 FOR Idx IN 1..l_array_event_id.count LOOP
130157    --
130158    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
130159    --
130160    l_event_id := l_array_event_id(idx);  -- 5648433
130161 
130162    --
130163    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
130164    --
130165 
130166    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
130167              (g_array_event(l_event_id).array_value_num('header_index'))
130168          ,'N'
130169          ) <> 'Y'
130170    THEN
130171       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
130172          trace
130173             (p_msg      => 'Trancaction revesal option is not Y '
130174             ,p_level    => C_LEVEL_STATEMENT
130175             ,p_module   => l_log_module);
130176       END IF;
130177 
130178 --
130179 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
130180 --
130181 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
130182 --
130183 -- set event info as cache for other routines to refer event attributes
130184 --
130185 
130186 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
130187    l_previous_event_id := l_event_id;
130188 
130189    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
130190       (p_application_id           => p_application_id
130191       ,p_primary_ledger_id        => p_primary_ledger_id
130192       ,p_base_ledger_id           => p_base_ledger_id
130193       ,p_target_ledger_id         => p_target_ledger_id
130194       ,p_entity_id                => l_array_entity_id(Idx)
130195       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
130196       ,p_entity_code              => l_array_entity_code(Idx)
130197       ,p_transaction_num          => l_array_transaction_num(Idx)
130198       ,p_event_id                 => l_array_event_id(Idx)
130199       ,p_event_class_code         => l_array_class_code(Idx)
130200       ,p_event_type_code          => l_array_event_type(Idx)
130201       ,p_event_number             => l_array_event_number(Idx)
130202       ,p_event_date               => l_array_event_date(Idx)
130203       ,p_transaction_date         => l_array_transaction_date(Idx)
130204       ,p_reference_num_1          => l_array_reference_num_1(Idx)
130205       ,p_reference_num_2          => l_array_reference_num_2(Idx)
130206       ,p_reference_num_3          => l_array_reference_num_3(Idx)
130207       ,p_reference_num_4          => l_array_reference_num_4(Idx)
130208       ,p_reference_char_1         => l_array_reference_char_1(Idx)
130209       ,p_reference_char_2         => l_array_reference_char_2(Idx)
130210       ,p_reference_char_3         => l_array_reference_char_3(Idx)
130211       ,p_reference_char_4         => l_array_reference_char_4(Idx)
130212       ,p_reference_date_1         => l_array_reference_date_1(Idx)
130213       ,p_reference_date_2         => l_array_reference_date_2(Idx)
130214       ,p_reference_date_3         => l_array_reference_date_3(Idx)
130215       ,p_reference_date_4         => l_array_reference_date_4(Idx)
130216       ,p_event_created_by         => l_array_event_created_by(Idx)
130217       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
130218        --
130219 END IF;
130220 
130221 
130222 
130223 --
130224 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
130225 
130226 l_acct_reversal_source := SUBSTR(NULL, 1,30);
130227 
130228 IF l_continue_with_lines THEN
130229    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
130230       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
130231 
130232       xla_accounting_err_pkg.build_message
130233          (p_appli_s_name            => 'XLA'
130234          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
130235          ,p_token_1                 => 'LINE_NUMBER'
130236          ,p_value_1                 => l_array_extract_line_num(Idx)
130237          ,p_token_2                 => 'PRODUCT_NAME'
130238          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
130239          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
130240          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
130241          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
130242 
130243    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
130244       --
130245       -- following sets the accounting attributes needed to reverse
130246       -- accounting for a distributeion
130247       --
130248 
130249       --
130250       -- 5217187
130251       --
130252       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
130253       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
130254                                        g_array_event(l_event_id).array_value_num('header_index'));
130255       --
130256       --
130257 
130258       -- No reversal code generated
130259 
130260       xla_ae_lines_pkg.SetAcctReversalAttrs
130261          (p_event_id             => l_event_id
130262          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
130263          ,p_calculate_acctd_flag => l_calculate_acctd_flag
130264          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
130265    END IF;
130266 
130270 --
130267    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
130268        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
130269 
130271 AcctLineType_146 (
130272  p_application_id  => p_application_id
130273  ,p_event_id     => l_event_id
130274  ,p_calculate_acctd_flag => l_calculate_acctd_flag
130275  ,p_calculate_g_l_flag => l_calculate_g_l_flag
130276  ,p_actual_flag => l_actual_flag
130277  ,p_balance_type_code => l_balance_type_code
130278  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
130279  
130280  , p_source_1 => l_array_source_1(Idx)
130281  , p_source_2 => l_array_source_2(Idx)
130282  , p_source_3 => l_array_source_3(Idx)
130283  , p_source_5 => l_array_source_5(Idx)
130284  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
130285  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
130286  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
130287  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
130288  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
130289  , p_source_11 => l_array_source_11(Idx)
130290  );
130291 If(l_balance_type_code = 'A') THEN
130292   l_actual_gain_loss_ref := l_gain_or_loss_ref;
130293 END IF;
130294 
130295 --
130296 
130297 
130298 --
130299 AcctLineType_193 (
130300  p_application_id  => p_application_id
130301  ,p_event_id     => l_event_id
130302  ,p_calculate_acctd_flag => l_calculate_acctd_flag
130303  ,p_calculate_g_l_flag => l_calculate_g_l_flag
130304  ,p_actual_flag => l_actual_flag
130305  ,p_balance_type_code => l_balance_type_code
130306  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
130307  
130308  , p_source_1 => l_array_source_1(Idx)
130309  , p_source_2 => l_array_source_2(Idx)
130310  , p_source_3 => l_array_source_3(Idx)
130311  , p_source_5 => l_array_source_5(Idx)
130312  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
130313  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
130314  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
130315  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
130316  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
130317  , p_source_11 => l_array_source_11(Idx)
130318  );
130319 If(l_balance_type_code = 'A') THEN
130320   l_actual_gain_loss_ref := l_gain_or_loss_ref;
130321 END IF;
130322 
130323 --
130324 
130325       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
130326       -- or secondary ledger that has different currency with primary
130327       -- or alc that is calculated by sla
130328       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
130329             (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'))
130330 
130331 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
130332 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
130333           AND (l_actual_flag = 'A')) THEN
130334         XLA_AE_LINES_PKG.CreateGainOrLossLines(
130335           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
130336          ,p_application_id   => p_application_id
130337          ,p_amb_context_code => 'DEFAULT'
130338          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
130339          ,p_event_class_code => C_EVENT_CLASS_CODE
130340          ,p_event_type_code  => C_EVENT_TYPE_CODE
130341          
130342          ,p_gain_ccid        => -1
130343          ,p_loss_ccid        => -1
130344 
130345          ,p_actual_flag      => l_actual_flag
130346          ,p_enc_flag         => null
130347          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
130348          ,p_enc_g_l_ref      => null
130349          );
130350       END IF;
130351    END IF;
130352 END IF;
130353 
130354    ELSE
130355       --
130356       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
130357       --
130358       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
130359          trace
130360             (p_msg      => 'Trancaction revesal option is Y'
130361             ,p_level    => C_LEVEL_STATEMENT
130362             ,p_module   => l_log_module);
130363       END IF;
130364    END IF;
130365 
130366 END LOOP;
130367 l_result := XLA_AE_LINES_PKG.InsertLines ;
130368 end loop;
130369 close line_cur;
130370 
130371 
130372 --
130373 -- insert headers into xla_ae_headers_gt table
130374 --
130375 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
130376 
130377 -- insert into errors table here.
130378 
130379 END LOOP;
130380 
130381 --
130382 -- 4865292
130383 --
130384 -- Compare g_hdr_extract_count with event count in
130385 -- CreateHeadersAndLines.
130386 --
130387 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
130388 
130389 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
130390    trace (p_msg     => '# rows extracted from header extract objects '
130391                     || ' (running total): '
130392                     || g_hdr_extract_count
130393          ,p_level   => C_LEVEL_STATEMENT
130394          ,p_module  => l_log_module);
130395 END IF;
130396 
130397 CLOSE header_cur;
130398 --
130399 
130400 --
130401 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130402    trace
130406 END IF;
130403       (p_msg      => 'END of EventType_256'
130404       ,p_level    => C_LEVEL_PROCEDURE
130405       ,p_module   => l_log_module);
130407 --
130408 RETURN l_result;
130409 EXCEPTION
130410 WHEN xla_exceptions_pkg.application_exception THEN
130411    
130412 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
130413 
130414    
130415 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
130416 
130417    RAISE;
130418 
130419 WHEN NO_DATA_FOUND THEN
130420 
130421 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
130422 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
130423 
130424 FOR header_record IN header_cur
130425 LOOP
130426     l_array_header_events(header_record.event_id) := header_record.event_id;
130427 END LOOP;
130428 
130429 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
130430 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
130431 
130432 fnd_file.put_line(fnd_file.LOG, '                    ');
130433 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
130434 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
130435 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
130436 
130437 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
130438 LOOP
130439 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
130440 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
130441         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
130442 	END IF;
130443 END LOOP;
130444 
130445 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
130446 fnd_file.put_line(fnd_file.LOG, '                    ');
130447 
130448 
130449 xla_exceptions_pkg.raise_message
130450       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_256');
130451 
130452 
130453 WHEN OTHERS THEN
130454    xla_exceptions_pkg.raise_message
130455       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_256');
130456 END EventType_256;
130457 --
130458 
130459 ---------------------------------------
130460 --
130461 -- PRIVATE PROCEDURE
130462 --         insert_sources_257
130463 --
130464 ----------------------------------------
130465 --
130466 PROCEDURE insert_sources_257(
130467                                 p_target_ledger_id       IN NUMBER
130468                               , p_language               IN VARCHAR2
130469                               , p_sla_ledger_id          IN NUMBER
130470                               , p_pad_start_date         IN DATE
130471                               , p_pad_end_date           IN DATE
130472                          )
130473 IS
130474 
130475 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DELIVER_EXPENSE';
130476 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RECEIVE';
130477 p_apps_owner                   VARCHAR2(30);
130478 l_log_module                   VARCHAR2(240);
130479 BEGIN
130480 IF g_log_enabled THEN
130481       l_log_module := C_DEFAULT_MODULE||'.insert_sources_257';
130482 END IF;
130483 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130484 
130485       trace
130486          (p_msg      => 'BEGIN of insert_sources_257'
130487          ,p_level    => C_LEVEL_PROCEDURE
130488          ,p_module   => l_log_module);
130489 
130490 END IF;
130491 
130492 -- select APPS owner
130493 SELECT oracle_username
130494   INTO p_apps_owner
130495   FROM fnd_oracle_userid
130496  WHERE read_only_flag = 'U'
130497 ;
130498 
130499 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
130500       trace
130501          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
130502                         ' - p_language = '||p_language||
130503                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
130504                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
130505                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
130506                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
130507          ,p_level    => C_LEVEL_STATEMENT
130508          ,p_module   => l_log_module);
130509 END IF;
130510 
130511 
130512 --
130513 INSERT INTO xla_diag_sources --hdr1
130514 (
130515         event_id
130516       , ledger_id
130517       , sla_ledger_id
130518       , description_language
130519       , object_name
130520       , object_type_code
130521       , line_number
130522       , source_application_id
130523       , source_type_code
130524       , source_code
130525       , source_value
130526       , source_meaning
130527       , created_by
130528       , creation_date
130529       , last_update_date
130530       , last_updated_by
130531       , last_update_login
130532       , program_update_date
130533       , program_application_id
130534       , program_id
130535       , request_id
130536 )
130537 SELECT
130538         event_id
130539       , p_target_ledger_id
130540       , p_sla_ledger_id
130541       , p_language
130542       , object_name
130543       , object_type_code
130544       , line_number
130545       , source_application_id
130546       , source_type_code
130547       , source_code
130548       , SUBSTR(source_value ,1,1996)
130552       , TRUNC(SYSDATE)
130549       , SUBSTR(source_meaning,1,200)
130550       , xla_environment_pkg.g_Usr_Id
130551       , TRUNC(SYSDATE)
130553       , xla_environment_pkg.g_Usr_Id
130554       , xla_environment_pkg.g_Login_Id
130555       , TRUNC(SYSDATE)
130556       , xla_environment_pkg.g_Prog_Appl_Id
130557       , xla_environment_pkg.g_Prog_Id
130558       , xla_environment_pkg.g_Req_Id
130559   FROM (
130560        SELECT xet.event_id                  event_id
130561             , 0                             line_number
130562             , CASE r
130563                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
130564                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
130565                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
130566                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
130567                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
130568                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
130569                 
130570                ELSE null
130571               END                           object_name
130572             , CASE r
130573                 WHEN 1 THEN 'HEADER' 
130574                 WHEN 2 THEN 'HEADER' 
130575                 WHEN 3 THEN 'HEADER' 
130576                 WHEN 4 THEN 'HEADER' 
130577                 WHEN 5 THEN 'HEADER' 
130578                 WHEN 6 THEN 'HEADER' 
130579                 
130580                 ELSE null
130581               END                           object_type_code
130582             , CASE r
130583                 WHEN 1 THEN '555' 
130584                 WHEN 2 THEN '555' 
130585                 WHEN 3 THEN '555' 
130586                 WHEN 4 THEN '555' 
130587                 WHEN 5 THEN '555' 
130588                 WHEN 6 THEN '555' 
130589                 
130590                 ELSE null
130591               END                           source_application_id
130592             , 'S'             source_type_code
130593             , CASE r
130594                 WHEN 1 THEN 'ENTITY_CODE' 
130595                 WHEN 2 THEN 'CURRENCY_CODE' 
130596                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
130597                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
130598                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
130599                 WHEN 6 THEN 'TRANSACTION_DATE' 
130600                 
130601                 ELSE null
130602               END                           source_code
130603             , CASE r
130604                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
130605                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
130606                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
130607                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
130608                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
130609                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
130610                 
130611                 ELSE null
130612               END                           source_value
130613             , CASE r
130614                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
130615                           1010186
130616                          ,TO_CHAR(h1.CURRENCY_CODE)
130617                          ,'CURRENCY_CODE'
130618                          ,'S'
130619                          ,555)
130620                 
130621                 ELSE null
130622               END               source_meaning
130623         FROM xla_events_gt     xet  
130624       , GMF_XLA_EXTRACT_HEADERS  h1
130625             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
130626        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
130627          AND xet.event_type_code = C_EVENT_TYPE_CODE
130628             AND h1.event_id = xet.event_id
130629 
130630 )
130631 ;
130632 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
130633 
130634       trace
130635          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
130636          ,p_level    => C_LEVEL_STATEMENT
130637          ,p_module   => l_log_module);
130638 
130639 END IF;
130640 --
130641 
130642 
130643 
130644 --
130645 INSERT INTO xla_diag_sources --line1
130646 (
130647         event_id
130648       , ledger_id
130649       , sla_ledger_id
130650       , description_language
130651       , object_name
130652       , object_type_code
130653       , line_number
130654       , source_application_id
130655       , source_type_code
130656       , source_code
130657       , source_value
130658       , source_meaning
130659       , created_by
130660       , creation_date
130661       , last_update_date
130662       , last_updated_by
130663       , last_update_login
130664       , program_update_date
130665       , program_application_id
130666       , program_id
130667       , request_id
130668 )
130669 SELECT  event_id
130670       , p_target_ledger_id
130671       , p_sla_ledger_id
130672       , p_language
130673       , object_name
130674       , object_type_code
130675       , line_number
130676       , source_application_id
130677       , source_type_code
130678       , source_code
130679       , SUBSTR(source_value,1,1996)
130680       , SUBSTR(source_meaning,1,200)
130681       , xla_environment_pkg.g_Usr_Id
130682       , TRUNC(SYSDATE)
130683       , TRUNC(SYSDATE)
130684       , xla_environment_pkg.g_Usr_Id
130685       , xla_environment_pkg.g_Login_Id
130686       , TRUNC(SYSDATE)
130687       , xla_environment_pkg.g_Prog_Appl_Id
130688       , xla_environment_pkg.g_Prog_Id
130692             , l2.line_number                 line_number
130689       , xla_environment_pkg.g_Req_Id
130690   FROM (
130691        SELECT xet.event_id                  event_id
130693             , CASE r
130694                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
130695                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
130696                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
130697                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
130698                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
130699                 
130700                ELSE null
130701               END                           object_name
130702             , CASE r
130703                 WHEN 1 THEN 'LINE' 
130704                 WHEN 2 THEN 'LINE' 
130705                 WHEN 3 THEN 'LINE' 
130706                 WHEN 4 THEN 'LINE' 
130707                 WHEN 5 THEN 'LINE' 
130708                 
130709                 ELSE null
130710               END                           object_type_code
130711             , CASE r
130712                 WHEN 1 THEN '555' 
130713                 WHEN 2 THEN '555' 
130714                 WHEN 3 THEN '555' 
130715                 WHEN 4 THEN '555' 
130716                 WHEN 5 THEN '555' 
130717                 
130718                 ELSE null
130719               END                           source_application_id
130720             , 'S'             source_type_code
130721             , CASE r
130722                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
130723                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
130724                 WHEN 3 THEN 'ENTERED_AMOUNT' 
130725                 WHEN 4 THEN 'LINE_ID' 
130726                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
130727                 
130728                 ELSE null
130729               END                           source_code
130730             , CASE r
130731                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
130732                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
130733                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
130734                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
130735                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
130736                 
130737                 ELSE null
130738               END                           source_value
130739             , null              source_meaning
130740          FROM  xla_events_gt     xet  
130741         , GMF_XLA_EXTRACT_LINES  l2
130742             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
130743         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
130744           AND xet.event_type_code = C_EVENT_TYPE_CODE
130745             AND l2.event_id          = xet.event_id
130746 
130747 )
130748 ;
130749 --
130750 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
130751 
130752       trace
130753          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
130754          ,p_level    => C_LEVEL_STATEMENT
130755          ,p_module   => l_log_module);
130756 
130757 END IF;
130758 
130759 
130760 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130761       trace
130762          (p_msg      => 'END of insert_sources_257'
130763          ,p_level    => C_LEVEL_PROCEDURE
130764          ,p_module   => l_log_module);
130765 END IF;
130766 EXCEPTION
130767   WHEN xla_exceptions_pkg.application_exception THEN
130768       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
130769             trace
130770                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
130771                ,p_level    => C_LEVEL_EXCEPTION
130772                ,p_module   => l_log_module);
130773       END IF;
130774       RAISE;
130775   WHEN OTHERS THEN
130776       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
130777             trace
130778                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
130779                ,p_level    => C_LEVEL_EXCEPTION
130780                ,p_module   => l_log_module);
130781        END IF;
130782        xla_exceptions_pkg.raise_message
130783            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_257');
130784 END insert_sources_257;
130785 --
130786 
130787 ---------------------------------------
130788 --
130789 -- PRIVATE FUNCTION
130790 --         EventType_257
130791 --
130792 ----------------------------------------
130793 --
130794 FUNCTION EventType_257
130795        (p_application_id         IN NUMBER
130796        ,p_base_ledger_id         IN NUMBER
130797        ,p_target_ledger_id       IN NUMBER
130798        ,p_language               IN VARCHAR2
130799        ,p_currency_code          IN VARCHAR2
130800        ,p_sla_ledger_id          IN NUMBER
130801        ,p_pad_start_date         IN DATE
130802        ,p_pad_end_date           IN DATE
130803        ,p_primary_ledger_id      IN NUMBER)
130804 RETURN BOOLEAN IS
130805 --
130806 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DELIVER_EXPENSE';
130807 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RECEIVE';
130808 
130809 l_calculate_acctd_flag   VARCHAR2(1) :='N';
130810 l_calculate_g_l_flag     VARCHAR2(1) :='N';
130811 --
130812 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
130813 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
130814 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
130815 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
130816 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
130817 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
130821 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
130818 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
130819 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
130820 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
130822 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
130823 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
130824 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
130825 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
130826 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
130827 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
130828 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
130829 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
130830 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
130831 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
130832 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
130833 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
130834 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
130835 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
130836 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
130837 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
130838 
130839 l_event_id                             NUMBER;
130840 l_previous_event_id                    NUMBER;
130841 l_first_event_id                       NUMBER;
130842 l_last_event_id                        NUMBER;
130843 
130844 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
130845 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
130846 --
130847 --
130848 l_result                    BOOLEAN := TRUE;
130849 l_rows                      NUMBER  := 1000;
130850 l_event_type_name           VARCHAR2(80) := 'Deliver to Expense';
130851 l_event_class_name          VARCHAR2(80) := 'Receiving';
130852 l_description               VARCHAR2(4000);
130853 l_transaction_reversal      NUMBER;
130854 l_ae_header_id              NUMBER;
130855 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
130856 l_log_module                VARCHAR2(240);
130857 --
130858 l_acct_reversal_source      VARCHAR2(30);
130859 l_trx_reversal_source       VARCHAR2(30);
130860 
130861 l_continue_with_lines       BOOLEAN := TRUE;
130862 --
130863 l_acc_rev_gl_date_source    DATE;                      -- 4262811
130864 --
130865 type t_array_event_id is table of number index by binary_integer;
130866 
130867 l_rec_array_event                    t_rec_array_event;
130868 l_null_rec_array_event               t_rec_array_event;
130869 l_array_ae_header_id                 xla_number_array_type;
130870 l_actual_flag                        VARCHAR2(1) := NULL;
130871 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
130872 l_balance_type_code                  VARCHAR2(1) :=NULL;
130873 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
130874 
130875 --
130876 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
130877 --
130878 
130879 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
130880 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
130881 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
130882 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
130883 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
130884 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
130885 
130886 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
130887 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
130888 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
130889 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
130890 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
130891 
130892 l_array_source_6              t_array_source_6;
130893 l_array_source_7              t_array_source_7;
130894 l_array_source_8              t_array_source_8;
130895 l_array_source_9              t_array_source_9;
130896 l_array_source_10              t_array_source_10;
130897 l_array_source_12              t_array_source_12;
130898 
130899 l_array_source_1      t_array_source_1;
130900 l_array_source_2      t_array_source_2;
130901 l_array_source_3      t_array_source_3;
130902 l_array_source_5      t_array_source_5;
130903 l_array_source_11      t_array_source_11;
130904 
130905 --
130906 CURSOR header_cur
130907 IS
130908 SELECT /*+ leading(xet) cardinality(xet,1) */
130909 -- Event Type Code: DELIVER_EXPENSE
130910 -- Event Class Code: RECEIVE
130911     xet.entity_id
130912   , xet.legal_entity_id
130913   , xet.entity_code
130914   , xet.transaction_number
130915   , xet.event_id
130916   , xet.event_class_code
130917   , xet.event_type_code
130918   , xet.event_number
130922   , xet.reference_num_2
130919   , xet.event_date
130920   , xet.transaction_date
130921   , xet.reference_num_1
130923   , xet.reference_num_3
130924   , xet.reference_num_4
130925   , xet.reference_char_1
130926   , xet.reference_char_2
130927   , xet.reference_char_3
130928   , xet.reference_char_4
130929   , xet.reference_date_1
130930   , xet.reference_date_2
130931   , xet.reference_date_3
130932   , xet.reference_date_4
130933   , xet.event_created_by
130934   , xet.budgetary_control_flag 
130935   , h1.ENTITY_CODE    source_6
130936   , h1.CURRENCY_CODE    source_7
130937   , h1.CURRENCY_CONVERSION_DATE    source_8
130938   , h1.CURRENCY_CONVERSION_RATE    source_9
130939   , h1.CURRENCY_CONVERSION_TYPE    source_10
130940   , h1.TRANSACTION_DATE    source_12
130941   FROM xla_events_gt     xet 
130942   , GMF_XLA_EXTRACT_HEADERS  h1
130943  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
130944    and xet.event_type_code = C_EVENT_TYPE_CODE
130945    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
130946 
130947  ORDER BY event_id
130948 ;
130949 
130950 
130951 --
130952 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
130953 IS
130954 SELECT /*+ leading(xet) cardinality(xet,1) */
130955 -- Event Type Code: DELIVER_EXPENSE
130956 -- Event Class Code: RECEIVE
130957     xet.entity_id
130958    ,xet.legal_entity_id
130959    ,xet.entity_code
130960    ,xet.transaction_number
130961    ,xet.event_id
130962    ,xet.event_class_code
130963    ,xet.event_type_code
130964    ,xet.event_number
130965    ,xet.event_date
130966    ,xet.transaction_date
130967    ,xet.reference_num_1
130968    ,xet.reference_num_2
130969    ,xet.reference_num_3
130970    ,xet.reference_num_4
130971    ,xet.reference_char_1
130972    ,xet.reference_char_2
130973    ,xet.reference_char_3
130974    ,xet.reference_char_4
130975    ,xet.reference_date_1
130976    ,xet.reference_date_2
130977    ,xet.reference_date_3
130978    ,xet.reference_date_4
130979    ,xet.event_created_by
130980    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
130981   , l2.TRANSACTION_ACCOUNT_ID    source_1
130982   , l2.JOURNAL_LINE_TYPE    source_2
130983   , l2.ENTERED_AMOUNT    source_3
130984   , l2.LINE_ID    source_5
130985   , l2.ACCOUNTED_AMOUNT    source_11
130986   FROM xla_events_gt     xet 
130987   , GMF_XLA_EXTRACT_LINES  l2
130988  WHERE xet.event_id between x_first_event_id and x_last_event_id
130989    and xet.event_date between p_pad_start_date and p_pad_end_date
130990    and xet.event_type_code = C_EVENT_TYPE_CODE
130991    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
130992 ;
130993 
130994 --
130995 BEGIN
130996 IF g_log_enabled THEN
130997    l_log_module := C_DEFAULT_MODULE||'.EventType_257';
130998 END IF;
130999 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131000    trace
131001       (p_msg      => 'BEGIN of EventType_257'
131002       ,p_level    => C_LEVEL_PROCEDURE
131003       ,p_module   => l_log_module);
131004 END IF;
131005 
131006 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
131007    trace
131008       (p_msg      => 'p_application_id = '||p_application_id||
131009                      ' - p_base_ledger_id = '||p_base_ledger_id||
131010                      ' - p_target_ledger_id  = '||p_target_ledger_id||
131011                      ' - p_language = '||p_language||
131012                      ' - p_currency_code = '||p_currency_code||
131013                      ' - p_sla_ledger_id = '||p_sla_ledger_id
131014       ,p_level    => C_LEVEL_STATEMENT
131015       ,p_module   => l_log_module);
131016 END IF;
131017 --
131018 -- initialze arrays
131019 --
131020 g_array_event.DELETE;
131021 l_rec_array_event := l_null_rec_array_event;
131022 --
131023 --------------------------------------
131024 -- 4262811 Initialze MPA Line Number
131025 --------------------------------------
131026 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
131027 
131028 --
131029 
131030 --
131031 OPEN header_cur;
131032 --
131033 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
131034    trace
131035    (p_msg      => 'SQL - FETCH header_cur'
131036    ,p_level    => C_LEVEL_STATEMENT
131037    ,p_module   => l_log_module);
131038 END IF;
131039 --
131040 LOOP
131041 FETCH header_cur BULK COLLECT INTO
131042         l_array_entity_id
131043       , l_array_legal_entity_id
131044       , l_array_entity_code
131045       , l_array_transaction_num
131046       , l_array_event_id
131047       , l_array_class_code
131048       , l_array_event_type
131049       , l_array_event_number
131050       , l_array_event_date
131051       , l_array_transaction_date
131052       , l_array_reference_num_1
131053       , l_array_reference_num_2
131054       , l_array_reference_num_3
131055       , l_array_reference_num_4
131056       , l_array_reference_char_1
131057       , l_array_reference_char_2
131058       , l_array_reference_char_3
131059       , l_array_reference_char_4
131060       , l_array_reference_date_1
131061       , l_array_reference_date_2
131062       , l_array_reference_date_3
131063       , l_array_reference_date_4
131064       , l_array_event_created_by
131065       , l_array_budgetary_control_flag 
131066       , l_array_source_6
131067       , l_array_source_7
131068       , l_array_source_8
131069       , l_array_source_9
131073 --
131070       , l_array_source_10
131071       , l_array_source_12
131072       LIMIT l_rows;
131074 IF (C_LEVEL_EVENT >= g_log_level) THEN
131075    trace
131076    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
131077    ,p_level    => C_LEVEL_EVENT
131078    ,p_module   => l_log_module);
131079 END IF;
131080 --
131081 EXIT WHEN l_array_entity_id.COUNT = 0;
131082 
131083 -- initialize arrays
131084 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
131085 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
131086 
131087 --
131088 -- Bug 4458708
131089 --
131090 XLA_AE_LINES_PKG.g_LineNumber := 0;
131091 
131092 
131093 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
131094 g_last_hdr_idx := l_array_event_id.LAST;
131095 --
131096 -- loop for the headers. Each iteration is for each header extract row
131097 -- fetched in header cursor
131098 --
131099 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
131100 
131101 --
131102 -- set event info as cache for other routines to refer event attributes
131103 --
131104 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
131105    (p_application_id           => p_application_id
131106    ,p_primary_ledger_id        => p_primary_ledger_id
131107    ,p_base_ledger_id           => p_base_ledger_id
131108    ,p_target_ledger_id         => p_target_ledger_id
131109    ,p_entity_id                => l_array_entity_id(hdr_idx)
131110    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
131111    ,p_entity_code              => l_array_entity_code(hdr_idx)
131112    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
131113    ,p_event_id                 => l_array_event_id(hdr_idx)
131114    ,p_event_class_code         => l_array_class_code(hdr_idx)
131115    ,p_event_type_code          => l_array_event_type(hdr_idx)
131116    ,p_event_number             => l_array_event_number(hdr_idx)
131117    ,p_event_date               => l_array_event_date(hdr_idx)
131118    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
131119    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
131120    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
131121    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
131122    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
131123    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
131124    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
131125    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
131126    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
131127    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
131128    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
131129    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
131130    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
131131    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
131132    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
131133 
131134 --
131135 -- set the status of entry to C_VALID (0)
131136 --
131137 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
131138 
131139 --
131140 -- initialize a row for ae header
131141 --
131142 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
131143 
131144 l_event_id := l_array_event_id(hdr_idx);
131145 
131146 --
131147 -- storing the hdr_idx for event. May be used by line cursor.
131148 --
131149 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
131150 
131151 --
131152 -- store sources from header extract. This can be improved to
131153 -- store only those sources from header extract that may be used in lines
131154 --
131155 
131156 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
131157 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
131158 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
131159 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
131160 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
131161 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
131162 
131163 --
131164 -- initilaize the status of ae headers for diffrent balance types
131165 -- the status is initialised to C_NOT_CREATED (2)
131166 --
131167 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
131168 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
131169 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
131170 
131171 --
131172 -- call api to validate and store accounting attributes for header
131173 --
131174 
131175 ------------------------------------------------------------
131176 -- Accrual Reversal : to get date for Standard Source (NONE)
131177 ------------------------------------------------------------
131178 l_acc_rev_gl_date_source := NULL;
131179 
131180      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
131181       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
131182 
131183 
131184 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
131185 
131186 XLA_AE_HEADER_PKG.SetJeCategoryName;
131187 
131191 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
131188 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
131189 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
131190 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
131192 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
131193 
131194 
131195 -- No header level analytical criteria
131196 
131197 --
131198 --accounting attribute enhancement, bug 3612931
131199 --
131200 l_trx_reversal_source := SUBSTR(NULL, 1,30);
131201 
131202 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
131203    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
131204 
131205    xla_accounting_err_pkg.build_message
131206       (p_appli_s_name            => 'XLA'
131207       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
131208       ,p_token_1                 => 'ACCT_ATTR_NAME'
131209       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
131210       ,p_token_2                 => 'PRODUCT_NAME'
131211       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
131212       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
131213       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
131214       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
131215 
131216 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
131217    --
131218    -- following sets the accounting attributes needed to reverse
131219    -- accounting for a distributeion
131220    --
131221    xla_ae_lines_pkg.SetTrxReversalAttrs
131222       (p_event_id              => l_event_id
131223       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
131224       ,p_trx_reversal_source   => l_trx_reversal_source);
131225 
131226 END IF;
131227 
131228 
131229 ----------------------------------------------------------------
131230 -- 4262811 -  update the header statuses to invalid in need be
131231 ----------------------------------------------------------------
131232 --
131233 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
131234 
131235 
131236   -----------------------------------------------
131237   -- No accrual reversal for the event class/type
131238   -----------------------------------------------
131239 ----------------------------------------------------------------
131240 
131241 --
131242 -- this ends the header loop iteration for one bulk fetch
131243 --
131244 END LOOP;
131245 
131246 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
131247 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
131248 
131249 --
131250 -- insert dummy rows into lines gt table that were created due to
131251 -- transaction reversals
131252 --
131253 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
131254    l_result := XLA_AE_LINES_PKG.InsertLines;
131255 END IF;
131256 
131257 --
131258 -- reset the temp_line_num for each set of events fetched from header
131259 -- cursor rather than doing it for each new event in line cursor
131260 -- Bug 3939231
131261 --
131262 xla_ae_lines_pkg.g_temp_line_num := 0;
131263 
131264 
131265 
131266 --
131267 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
131268 --
131269 --
131270 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
131271 
131272       trace
131273          (p_msg      => 'SQL - FETCH line_cur'
131274          ,p_level    => C_LEVEL_STATEMENT
131275          ,p_module   => l_log_module);
131276 
131277 END IF;
131278 --
131279 --
131280 LOOP
131281   --
131282   FETCH line_cur BULK COLLECT INTO
131283         l_array_entity_id
131284       , l_array_legal_entity_id
131285       , l_array_entity_code
131286       , l_array_transaction_num
131287       , l_array_event_id
131288       , l_array_class_code
131289       , l_array_event_type
131290       , l_array_event_number
131291       , l_array_event_date
131292       , l_array_transaction_date
131293       , l_array_reference_num_1
131294       , l_array_reference_num_2
131295       , l_array_reference_num_3
131296       , l_array_reference_num_4
131297       , l_array_reference_char_1
131298       , l_array_reference_char_2
131299       , l_array_reference_char_3
131300       , l_array_reference_char_4
131301       , l_array_reference_date_1
131302       , l_array_reference_date_2
131303       , l_array_reference_date_3
131304       , l_array_reference_date_4
131305       , l_array_event_created_by
131306       , l_array_budgetary_control_flag
131307       , l_array_extract_line_num 
131308       , l_array_source_1
131309       , l_array_source_2
131310       , l_array_source_3
131311       , l_array_source_5
131312       , l_array_source_11
131313       LIMIT l_rows;
131314 
131315   --
131316   IF (C_LEVEL_EVENT >= g_log_level) THEN
131317             trace
131318                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
131319                ,p_level    => C_LEVEL_EVENT
131320                ,p_module   => l_log_module);
131321   END IF;
131322   --
131323   EXIT WHEN l_array_entity_id.count = 0;
131324 
131325   XLA_AE_LINES_PKG.g_rec_lines := null;
131326 
131327 --
131331 --
131328 -- Bug 4458708
131329 --
131330 XLA_AE_LINES_PKG.g_LineNumber := 0;
131332 --
131333 
131334 FOR Idx IN 1..l_array_event_id.count LOOP
131335    --
131336    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
131337    --
131338    l_event_id := l_array_event_id(idx);  -- 5648433
131339 
131340    --
131341    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
131342    --
131343 
131344    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
131345              (g_array_event(l_event_id).array_value_num('header_index'))
131346          ,'N'
131347          ) <> 'Y'
131348    THEN
131349       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
131350          trace
131351             (p_msg      => 'Trancaction revesal option is not Y '
131352             ,p_level    => C_LEVEL_STATEMENT
131353             ,p_module   => l_log_module);
131354       END IF;
131355 
131356 --
131357 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
131358 --
131359 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
131360 --
131361 -- set event info as cache for other routines to refer event attributes
131362 --
131363 
131364 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
131365    l_previous_event_id := l_event_id;
131366 
131367    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
131368       (p_application_id           => p_application_id
131369       ,p_primary_ledger_id        => p_primary_ledger_id
131370       ,p_base_ledger_id           => p_base_ledger_id
131371       ,p_target_ledger_id         => p_target_ledger_id
131372       ,p_entity_id                => l_array_entity_id(Idx)
131373       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
131374       ,p_entity_code              => l_array_entity_code(Idx)
131375       ,p_transaction_num          => l_array_transaction_num(Idx)
131376       ,p_event_id                 => l_array_event_id(Idx)
131377       ,p_event_class_code         => l_array_class_code(Idx)
131378       ,p_event_type_code          => l_array_event_type(Idx)
131379       ,p_event_number             => l_array_event_number(Idx)
131380       ,p_event_date               => l_array_event_date(Idx)
131381       ,p_transaction_date         => l_array_transaction_date(Idx)
131382       ,p_reference_num_1          => l_array_reference_num_1(Idx)
131383       ,p_reference_num_2          => l_array_reference_num_2(Idx)
131384       ,p_reference_num_3          => l_array_reference_num_3(Idx)
131385       ,p_reference_num_4          => l_array_reference_num_4(Idx)
131386       ,p_reference_char_1         => l_array_reference_char_1(Idx)
131387       ,p_reference_char_2         => l_array_reference_char_2(Idx)
131388       ,p_reference_char_3         => l_array_reference_char_3(Idx)
131389       ,p_reference_char_4         => l_array_reference_char_4(Idx)
131390       ,p_reference_date_1         => l_array_reference_date_1(Idx)
131391       ,p_reference_date_2         => l_array_reference_date_2(Idx)
131392       ,p_reference_date_3         => l_array_reference_date_3(Idx)
131393       ,p_reference_date_4         => l_array_reference_date_4(Idx)
131394       ,p_event_created_by         => l_array_event_created_by(Idx)
131395       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
131396        --
131397 END IF;
131398 
131399 
131400 
131401 --
131402 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
131403 
131404 l_acct_reversal_source := SUBSTR(NULL, 1,30);
131405 
131406 IF l_continue_with_lines THEN
131407    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
131408       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
131409 
131410       xla_accounting_err_pkg.build_message
131411          (p_appli_s_name            => 'XLA'
131412          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
131413          ,p_token_1                 => 'LINE_NUMBER'
131414          ,p_value_1                 => l_array_extract_line_num(Idx)
131415          ,p_token_2                 => 'PRODUCT_NAME'
131416          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
131417          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
131418          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
131419          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
131420 
131421    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
131422       --
131423       -- following sets the accounting attributes needed to reverse
131424       -- accounting for a distributeion
131425       --
131426 
131427       --
131428       -- 5217187
131429       --
131430       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
131431       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
131432                                        g_array_event(l_event_id).array_value_num('header_index'));
131433       --
131434       --
131435 
131436       -- No reversal code generated
131437 
131438       xla_ae_lines_pkg.SetAcctReversalAttrs
131439          (p_event_id             => l_event_id
131440          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
131441          ,p_calculate_acctd_flag => l_calculate_acctd_flag
131442          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
131443    END IF;
131444 
131445    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
131449 AcctLineType_97 (
131446        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
131447 
131448 --
131450  p_application_id  => p_application_id
131451  ,p_event_id     => l_event_id
131452  ,p_calculate_acctd_flag => l_calculate_acctd_flag
131453  ,p_calculate_g_l_flag => l_calculate_g_l_flag
131454  ,p_actual_flag => l_actual_flag
131455  ,p_balance_type_code => l_balance_type_code
131456  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
131457  
131458  , p_source_1 => l_array_source_1(Idx)
131459  , p_source_2 => l_array_source_2(Idx)
131460  , p_source_3 => l_array_source_3(Idx)
131461  , p_source_5 => l_array_source_5(Idx)
131462  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
131463  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
131464  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
131465  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
131466  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
131467  , p_source_11 => l_array_source_11(Idx)
131468  );
131469 If(l_balance_type_code = 'A') THEN
131470   l_actual_gain_loss_ref := l_gain_or_loss_ref;
131471 END IF;
131472 
131473 --
131474 
131475 
131476 --
131477 AcctLineType_199 (
131478  p_application_id  => p_application_id
131479  ,p_event_id     => l_event_id
131480  ,p_calculate_acctd_flag => l_calculate_acctd_flag
131481  ,p_calculate_g_l_flag => l_calculate_g_l_flag
131482  ,p_actual_flag => l_actual_flag
131483  ,p_balance_type_code => l_balance_type_code
131484  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
131485  
131486  , p_source_1 => l_array_source_1(Idx)
131487  , p_source_2 => l_array_source_2(Idx)
131488  , p_source_3 => l_array_source_3(Idx)
131489  , p_source_5 => l_array_source_5(Idx)
131490  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
131491  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
131492  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
131493  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
131494  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
131495  , p_source_11 => l_array_source_11(Idx)
131496  );
131497 If(l_balance_type_code = 'A') THEN
131498   l_actual_gain_loss_ref := l_gain_or_loss_ref;
131499 END IF;
131500 
131501 --
131502 
131503       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
131504       -- or secondary ledger that has different currency with primary
131505       -- or alc that is calculated by sla
131506       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
131507             (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'))
131508 
131509 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
131510 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
131511           AND (l_actual_flag = 'A')) THEN
131512         XLA_AE_LINES_PKG.CreateGainOrLossLines(
131513           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
131514          ,p_application_id   => p_application_id
131515          ,p_amb_context_code => 'DEFAULT'
131516          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
131517          ,p_event_class_code => C_EVENT_CLASS_CODE
131518          ,p_event_type_code  => C_EVENT_TYPE_CODE
131519          
131520          ,p_gain_ccid        => -1
131521          ,p_loss_ccid        => -1
131522 
131523          ,p_actual_flag      => l_actual_flag
131524          ,p_enc_flag         => null
131525          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
131526          ,p_enc_g_l_ref      => null
131527          );
131528       END IF;
131529    END IF;
131530 END IF;
131531 
131532    ELSE
131533       --
131534       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
131535       --
131536       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
131537          trace
131538             (p_msg      => 'Trancaction revesal option is Y'
131539             ,p_level    => C_LEVEL_STATEMENT
131540             ,p_module   => l_log_module);
131541       END IF;
131542    END IF;
131543 
131544 END LOOP;
131545 l_result := XLA_AE_LINES_PKG.InsertLines ;
131546 end loop;
131547 close line_cur;
131548 
131549 
131550 --
131551 -- insert headers into xla_ae_headers_gt table
131552 --
131553 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
131554 
131555 -- insert into errors table here.
131556 
131557 END LOOP;
131558 
131559 --
131560 -- 4865292
131561 --
131562 -- Compare g_hdr_extract_count with event count in
131563 -- CreateHeadersAndLines.
131564 --
131565 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
131566 
131567 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
131568    trace (p_msg     => '# rows extracted from header extract objects '
131569                     || ' (running total): '
131570                     || g_hdr_extract_count
131571          ,p_level   => C_LEVEL_STATEMENT
131572          ,p_module  => l_log_module);
131573 END IF;
131574 
131575 CLOSE header_cur;
131576 --
131577 
131578 --
131579 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131580    trace
131581       (p_msg      => 'END of EventType_257'
131585 --
131582       ,p_level    => C_LEVEL_PROCEDURE
131583       ,p_module   => l_log_module);
131584 END IF;
131586 RETURN l_result;
131587 EXCEPTION
131588 WHEN xla_exceptions_pkg.application_exception THEN
131589    
131590 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
131591 
131592    
131593 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
131594 
131595    RAISE;
131596 
131597 WHEN NO_DATA_FOUND THEN
131598 
131599 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
131600 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
131601 
131602 FOR header_record IN header_cur
131603 LOOP
131604     l_array_header_events(header_record.event_id) := header_record.event_id;
131605 END LOOP;
131606 
131607 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
131608 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
131609 
131610 fnd_file.put_line(fnd_file.LOG, '                    ');
131611 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
131612 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
131613 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
131614 
131615 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
131616 LOOP
131617 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
131618 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
131619         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
131620 	END IF;
131621 END LOOP;
131622 
131623 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
131624 fnd_file.put_line(fnd_file.LOG, '                    ');
131625 
131626 
131627 xla_exceptions_pkg.raise_message
131628       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_257');
131629 
131630 
131631 WHEN OTHERS THEN
131632    xla_exceptions_pkg.raise_message
131633       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_257');
131634 END EventType_257;
131635 --
131636 
131637 ---------------------------------------
131638 --
131639 -- PRIVATE PROCEDURE
131640 --         insert_sources_258
131641 --
131642 ----------------------------------------
131643 --
131644 PROCEDURE insert_sources_258(
131645                                 p_target_ledger_id       IN NUMBER
131646                               , p_language               IN VARCHAR2
131647                               , p_sla_ledger_id          IN NUMBER
131648                               , p_pad_start_date         IN DATE
131649                               , p_pad_end_date           IN DATE
131650                          )
131651 IS
131652 
131653 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_RCPT';
131654 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_RCPT';
131655 p_apps_owner                   VARCHAR2(30);
131656 l_log_module                   VARCHAR2(240);
131657 BEGIN
131658 IF g_log_enabled THEN
131659       l_log_module := C_DEFAULT_MODULE||'.insert_sources_258';
131660 END IF;
131661 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131662 
131663       trace
131664          (p_msg      => 'BEGIN of insert_sources_258'
131665          ,p_level    => C_LEVEL_PROCEDURE
131666          ,p_module   => l_log_module);
131667 
131668 END IF;
131669 
131670 -- select APPS owner
131671 SELECT oracle_username
131672   INTO p_apps_owner
131673   FROM fnd_oracle_userid
131674  WHERE read_only_flag = 'U'
131675 ;
131676 
131677 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
131678       trace
131679          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
131680                         ' - p_language = '||p_language||
131681                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
131682                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
131683                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
131684                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
131685          ,p_level    => C_LEVEL_STATEMENT
131686          ,p_module   => l_log_module);
131687 END IF;
131688 
131689 
131690 --
131691 INSERT INTO xla_diag_sources --hdr1
131692 (
131693         event_id
131694       , ledger_id
131695       , sla_ledger_id
131696       , description_language
131697       , object_name
131698       , object_type_code
131699       , line_number
131700       , source_application_id
131701       , source_type_code
131702       , source_code
131703       , source_value
131704       , source_meaning
131705       , created_by
131706       , creation_date
131707       , last_update_date
131708       , last_updated_by
131709       , last_update_login
131710       , program_update_date
131711       , program_application_id
131712       , program_id
131713       , request_id
131714 )
131715 SELECT
131716         event_id
131717       , p_target_ledger_id
131718       , p_sla_ledger_id
131719       , p_language
131720       , object_name
131721       , object_type_code
131722       , line_number
131723       , source_application_id
131724       , source_type_code
131725       , source_code
131726       , SUBSTR(source_value ,1,1996)
131730       , TRUNC(SYSDATE)
131727       , SUBSTR(source_meaning,1,200)
131728       , xla_environment_pkg.g_Usr_Id
131729       , TRUNC(SYSDATE)
131731       , xla_environment_pkg.g_Usr_Id
131732       , xla_environment_pkg.g_Login_Id
131733       , TRUNC(SYSDATE)
131734       , xla_environment_pkg.g_Prog_Appl_Id
131735       , xla_environment_pkg.g_Prog_Id
131736       , xla_environment_pkg.g_Req_Id
131737   FROM (
131738        SELECT xet.event_id                  event_id
131739             , 0                             line_number
131740             , CASE r
131741                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
131742                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
131743                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
131744                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
131745                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
131746                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
131747                 
131748                ELSE null
131749               END                           object_name
131750             , CASE r
131751                 WHEN 1 THEN 'HEADER' 
131752                 WHEN 2 THEN 'HEADER' 
131753                 WHEN 3 THEN 'HEADER' 
131754                 WHEN 4 THEN 'HEADER' 
131755                 WHEN 5 THEN 'HEADER' 
131756                 WHEN 6 THEN 'HEADER' 
131757                 
131758                 ELSE null
131759               END                           object_type_code
131760             , CASE r
131761                 WHEN 1 THEN '555' 
131762                 WHEN 2 THEN '555' 
131763                 WHEN 3 THEN '555' 
131764                 WHEN 4 THEN '555' 
131765                 WHEN 5 THEN '555' 
131766                 WHEN 6 THEN '555' 
131767                 
131768                 ELSE null
131769               END                           source_application_id
131770             , 'S'             source_type_code
131771             , CASE r
131772                 WHEN 1 THEN 'ENTITY_CODE' 
131773                 WHEN 2 THEN 'CURRENCY_CODE' 
131774                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
131775                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
131776                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
131777                 WHEN 6 THEN 'TRANSACTION_DATE' 
131778                 
131779                 ELSE null
131780               END                           source_code
131781             , CASE r
131782                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
131783                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
131784                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
131785                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
131786                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
131787                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
131788                 
131789                 ELSE null
131790               END                           source_value
131791             , CASE r
131792                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
131793                           1010186
131794                          ,TO_CHAR(h1.CURRENCY_CODE)
131795                          ,'CURRENCY_CODE'
131796                          ,'S'
131797                          ,555)
131798                 
131799                 ELSE null
131800               END               source_meaning
131801         FROM xla_events_gt     xet  
131802       , GMF_XLA_EXTRACT_HEADERS  h1
131803             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
131804        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
131805          AND xet.event_type_code = C_EVENT_TYPE_CODE
131806             AND h1.event_id = xet.event_id
131807 
131808 )
131809 ;
131810 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
131811 
131812       trace
131813          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
131814          ,p_level    => C_LEVEL_STATEMENT
131815          ,p_module   => l_log_module);
131816 
131817 END IF;
131818 --
131819 
131820 
131821 
131822 --
131823 INSERT INTO xla_diag_sources --line1
131824 (
131825         event_id
131826       , ledger_id
131827       , sla_ledger_id
131828       , description_language
131829       , object_name
131830       , object_type_code
131831       , line_number
131832       , source_application_id
131833       , source_type_code
131834       , source_code
131835       , source_value
131836       , source_meaning
131837       , created_by
131838       , creation_date
131839       , last_update_date
131840       , last_updated_by
131841       , last_update_login
131842       , program_update_date
131843       , program_application_id
131844       , program_id
131845       , request_id
131846 )
131847 SELECT  event_id
131848       , p_target_ledger_id
131849       , p_sla_ledger_id
131850       , p_language
131851       , object_name
131852       , object_type_code
131853       , line_number
131854       , source_application_id
131855       , source_type_code
131856       , source_code
131857       , SUBSTR(source_value,1,1996)
131858       , SUBSTR(source_meaning,1,200)
131859       , xla_environment_pkg.g_Usr_Id
131860       , TRUNC(SYSDATE)
131861       , TRUNC(SYSDATE)
131862       , xla_environment_pkg.g_Usr_Id
131863       , xla_environment_pkg.g_Login_Id
131864       , TRUNC(SYSDATE)
131865       , xla_environment_pkg.g_Prog_Appl_Id
131866       , xla_environment_pkg.g_Prog_Id
131870             , l2.line_number                 line_number
131867       , xla_environment_pkg.g_Req_Id
131868   FROM (
131869        SELECT xet.event_id                  event_id
131871             , CASE r
131872                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
131873                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
131874                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
131875                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
131876                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
131877                 
131878                ELSE null
131879               END                           object_name
131880             , CASE r
131881                 WHEN 1 THEN 'LINE' 
131882                 WHEN 2 THEN 'LINE' 
131883                 WHEN 3 THEN 'LINE' 
131884                 WHEN 4 THEN 'LINE' 
131885                 WHEN 5 THEN 'LINE' 
131886                 
131887                 ELSE null
131888               END                           object_type_code
131889             , CASE r
131890                 WHEN 1 THEN '555' 
131891                 WHEN 2 THEN '555' 
131892                 WHEN 3 THEN '555' 
131893                 WHEN 4 THEN '555' 
131894                 WHEN 5 THEN '555' 
131895                 
131896                 ELSE null
131897               END                           source_application_id
131898             , 'S'             source_type_code
131899             , CASE r
131900                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
131901                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
131902                 WHEN 3 THEN 'ENTERED_AMOUNT' 
131903                 WHEN 4 THEN 'LINE_ID' 
131904                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
131905                 
131906                 ELSE null
131907               END                           source_code
131908             , CASE r
131909                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
131910                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
131911                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
131912                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
131913                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
131914                 
131915                 ELSE null
131916               END                           source_value
131917             , null              source_meaning
131918          FROM  xla_events_gt     xet  
131919         , GMF_XLA_EXTRACT_LINES  l2
131920             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
131921         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
131922           AND xet.event_type_code = C_EVENT_TYPE_CODE
131923             AND l2.event_id          = xet.event_id
131924 
131925 )
131926 ;
131927 --
131928 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
131929 
131930       trace
131931          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
131932          ,p_level    => C_LEVEL_STATEMENT
131933          ,p_module   => l_log_module);
131934 
131935 END IF;
131936 
131937 
131938 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131939       trace
131940          (p_msg      => 'END of insert_sources_258'
131941          ,p_level    => C_LEVEL_PROCEDURE
131942          ,p_module   => l_log_module);
131943 END IF;
131944 EXCEPTION
131945   WHEN xla_exceptions_pkg.application_exception THEN
131946       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
131947             trace
131948                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
131949                ,p_level    => C_LEVEL_EXCEPTION
131950                ,p_module   => l_log_module);
131951       END IF;
131952       RAISE;
131953   WHEN OTHERS THEN
131954       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
131955             trace
131956                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
131957                ,p_level    => C_LEVEL_EXCEPTION
131958                ,p_module   => l_log_module);
131959        END IF;
131960        xla_exceptions_pkg.raise_message
131961            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_258');
131962 END insert_sources_258;
131963 --
131964 
131965 ---------------------------------------
131966 --
131967 -- PRIVATE FUNCTION
131968 --         EventType_258
131969 --
131970 ----------------------------------------
131971 --
131972 FUNCTION EventType_258
131973        (p_application_id         IN NUMBER
131974        ,p_base_ledger_id         IN NUMBER
131975        ,p_target_ledger_id       IN NUMBER
131976        ,p_language               IN VARCHAR2
131977        ,p_currency_code          IN VARCHAR2
131978        ,p_sla_ledger_id          IN NUMBER
131979        ,p_pad_start_date         IN DATE
131980        ,p_pad_end_date           IN DATE
131981        ,p_primary_ledger_id      IN NUMBER)
131982 RETURN BOOLEAN IS
131983 --
131984 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_RCPT';
131985 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_RCPT';
131986 
131987 l_calculate_acctd_flag   VARCHAR2(1) :='N';
131988 l_calculate_g_l_flag     VARCHAR2(1) :='N';
131989 --
131990 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
131991 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
131992 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
131993 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
131994 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
131995 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
131999 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
131996 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
131997 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
131998 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
132000 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
132001 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
132002 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
132003 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
132004 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
132005 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
132006 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
132007 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
132008 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
132009 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
132010 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
132011 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
132012 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
132013 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
132014 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
132015 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
132016 
132017 l_event_id                             NUMBER;
132018 l_previous_event_id                    NUMBER;
132019 l_first_event_id                       NUMBER;
132020 l_last_event_id                        NUMBER;
132021 
132022 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
132023 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
132024 --
132025 --
132026 l_result                    BOOLEAN := TRUE;
132027 l_rows                      NUMBER  := 1000;
132028 l_event_type_name           VARCHAR2(80) := 'Direct Interorg Receipt, no Transfer Pricing';
132029 l_event_class_name          VARCHAR2(80) := 'Direct Interorg Receipt';
132030 l_description               VARCHAR2(4000);
132031 l_transaction_reversal      NUMBER;
132032 l_ae_header_id              NUMBER;
132033 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
132034 l_log_module                VARCHAR2(240);
132035 --
132036 l_acct_reversal_source      VARCHAR2(30);
132037 l_trx_reversal_source       VARCHAR2(30);
132038 
132039 l_continue_with_lines       BOOLEAN := TRUE;
132040 --
132041 l_acc_rev_gl_date_source    DATE;                      -- 4262811
132042 --
132043 type t_array_event_id is table of number index by binary_integer;
132044 
132045 l_rec_array_event                    t_rec_array_event;
132046 l_null_rec_array_event               t_rec_array_event;
132047 l_array_ae_header_id                 xla_number_array_type;
132048 l_actual_flag                        VARCHAR2(1) := NULL;
132049 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
132050 l_balance_type_code                  VARCHAR2(1) :=NULL;
132051 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
132052 
132053 --
132054 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
132055 --
132056 
132057 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
132058 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
132059 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
132060 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
132061 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
132062 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
132063 
132064 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
132065 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
132066 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
132067 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
132068 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
132069 
132070 l_array_source_6              t_array_source_6;
132071 l_array_source_7              t_array_source_7;
132072 l_array_source_8              t_array_source_8;
132073 l_array_source_9              t_array_source_9;
132074 l_array_source_10              t_array_source_10;
132075 l_array_source_12              t_array_source_12;
132076 
132077 l_array_source_1      t_array_source_1;
132078 l_array_source_2      t_array_source_2;
132079 l_array_source_3      t_array_source_3;
132080 l_array_source_5      t_array_source_5;
132081 l_array_source_11      t_array_source_11;
132082 
132083 --
132084 CURSOR header_cur
132085 IS
132086 SELECT /*+ leading(xet) cardinality(xet,1) */
132087 -- Event Type Code: DIR_INTERORG_RCPT
132088 -- Event Class Code: DIR_INTERORG_RCPT
132089     xet.entity_id
132090   , xet.legal_entity_id
132091   , xet.entity_code
132092   , xet.transaction_number
132093   , xet.event_id
132094   , xet.event_class_code
132095   , xet.event_type_code
132099   , xet.reference_num_1
132096   , xet.event_number
132097   , xet.event_date
132098   , xet.transaction_date
132100   , xet.reference_num_2
132101   , xet.reference_num_3
132102   , xet.reference_num_4
132103   , xet.reference_char_1
132104   , xet.reference_char_2
132105   , xet.reference_char_3
132106   , xet.reference_char_4
132107   , xet.reference_date_1
132108   , xet.reference_date_2
132109   , xet.reference_date_3
132110   , xet.reference_date_4
132111   , xet.event_created_by
132112   , xet.budgetary_control_flag 
132113   , h1.ENTITY_CODE    source_6
132114   , h1.CURRENCY_CODE    source_7
132115   , h1.CURRENCY_CONVERSION_DATE    source_8
132116   , h1.CURRENCY_CONVERSION_RATE    source_9
132117   , h1.CURRENCY_CONVERSION_TYPE    source_10
132118   , h1.TRANSACTION_DATE    source_12
132119   FROM xla_events_gt     xet 
132120   , GMF_XLA_EXTRACT_HEADERS  h1
132121  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
132122    and xet.event_type_code = C_EVENT_TYPE_CODE
132123    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
132124 
132125  ORDER BY event_id
132126 ;
132127 
132128 
132129 --
132130 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
132131 IS
132132 SELECT /*+ leading(xet) cardinality(xet,1) */
132133 -- Event Type Code: DIR_INTERORG_RCPT
132134 -- Event Class Code: DIR_INTERORG_RCPT
132135     xet.entity_id
132136    ,xet.legal_entity_id
132137    ,xet.entity_code
132138    ,xet.transaction_number
132139    ,xet.event_id
132140    ,xet.event_class_code
132141    ,xet.event_type_code
132142    ,xet.event_number
132143    ,xet.event_date
132144    ,xet.transaction_date
132145    ,xet.reference_num_1
132146    ,xet.reference_num_2
132147    ,xet.reference_num_3
132148    ,xet.reference_num_4
132149    ,xet.reference_char_1
132150    ,xet.reference_char_2
132151    ,xet.reference_char_3
132152    ,xet.reference_char_4
132153    ,xet.reference_date_1
132154    ,xet.reference_date_2
132155    ,xet.reference_date_3
132156    ,xet.reference_date_4
132157    ,xet.event_created_by
132158    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
132159   , l2.TRANSACTION_ACCOUNT_ID    source_1
132160   , l2.JOURNAL_LINE_TYPE    source_2
132161   , l2.ENTERED_AMOUNT    source_3
132162   , l2.LINE_ID    source_5
132163   , l2.ACCOUNTED_AMOUNT    source_11
132164   FROM xla_events_gt     xet 
132165   , GMF_XLA_EXTRACT_LINES  l2
132166  WHERE xet.event_id between x_first_event_id and x_last_event_id
132167    and xet.event_date between p_pad_start_date and p_pad_end_date
132168    and xet.event_type_code = C_EVENT_TYPE_CODE
132169    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
132170 ;
132171 
132172 --
132173 BEGIN
132174 IF g_log_enabled THEN
132175    l_log_module := C_DEFAULT_MODULE||'.EventType_258';
132176 END IF;
132177 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132178    trace
132179       (p_msg      => 'BEGIN of EventType_258'
132180       ,p_level    => C_LEVEL_PROCEDURE
132181       ,p_module   => l_log_module);
132182 END IF;
132183 
132184 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
132185    trace
132186       (p_msg      => 'p_application_id = '||p_application_id||
132187                      ' - p_base_ledger_id = '||p_base_ledger_id||
132188                      ' - p_target_ledger_id  = '||p_target_ledger_id||
132189                      ' - p_language = '||p_language||
132190                      ' - p_currency_code = '||p_currency_code||
132191                      ' - p_sla_ledger_id = '||p_sla_ledger_id
132192       ,p_level    => C_LEVEL_STATEMENT
132193       ,p_module   => l_log_module);
132194 END IF;
132195 --
132196 -- initialze arrays
132197 --
132198 g_array_event.DELETE;
132199 l_rec_array_event := l_null_rec_array_event;
132200 --
132201 --------------------------------------
132202 -- 4262811 Initialze MPA Line Number
132203 --------------------------------------
132204 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
132205 
132206 --
132207 
132208 --
132209 OPEN header_cur;
132210 --
132211 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
132212    trace
132213    (p_msg      => 'SQL - FETCH header_cur'
132214    ,p_level    => C_LEVEL_STATEMENT
132215    ,p_module   => l_log_module);
132216 END IF;
132217 --
132218 LOOP
132219 FETCH header_cur BULK COLLECT INTO
132220         l_array_entity_id
132221       , l_array_legal_entity_id
132222       , l_array_entity_code
132223       , l_array_transaction_num
132224       , l_array_event_id
132225       , l_array_class_code
132226       , l_array_event_type
132227       , l_array_event_number
132228       , l_array_event_date
132229       , l_array_transaction_date
132230       , l_array_reference_num_1
132231       , l_array_reference_num_2
132232       , l_array_reference_num_3
132233       , l_array_reference_num_4
132234       , l_array_reference_char_1
132235       , l_array_reference_char_2
132236       , l_array_reference_char_3
132237       , l_array_reference_char_4
132238       , l_array_reference_date_1
132239       , l_array_reference_date_2
132240       , l_array_reference_date_3
132241       , l_array_reference_date_4
132242       , l_array_event_created_by
132243       , l_array_budgetary_control_flag 
132244       , l_array_source_6
132245       , l_array_source_7
132246       , l_array_source_8
132250       LIMIT l_rows;
132247       , l_array_source_9
132248       , l_array_source_10
132249       , l_array_source_12
132251 --
132252 IF (C_LEVEL_EVENT >= g_log_level) THEN
132253    trace
132254    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
132255    ,p_level    => C_LEVEL_EVENT
132256    ,p_module   => l_log_module);
132257 END IF;
132258 --
132259 EXIT WHEN l_array_entity_id.COUNT = 0;
132260 
132261 -- initialize arrays
132262 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
132263 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
132264 
132265 --
132266 -- Bug 4458708
132267 --
132268 XLA_AE_LINES_PKG.g_LineNumber := 0;
132269 
132270 
132271 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
132272 g_last_hdr_idx := l_array_event_id.LAST;
132273 --
132274 -- loop for the headers. Each iteration is for each header extract row
132275 -- fetched in header cursor
132276 --
132277 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
132278 
132279 --
132280 -- set event info as cache for other routines to refer event attributes
132281 --
132282 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
132283    (p_application_id           => p_application_id
132284    ,p_primary_ledger_id        => p_primary_ledger_id
132285    ,p_base_ledger_id           => p_base_ledger_id
132286    ,p_target_ledger_id         => p_target_ledger_id
132287    ,p_entity_id                => l_array_entity_id(hdr_idx)
132288    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
132289    ,p_entity_code              => l_array_entity_code(hdr_idx)
132290    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
132291    ,p_event_id                 => l_array_event_id(hdr_idx)
132292    ,p_event_class_code         => l_array_class_code(hdr_idx)
132293    ,p_event_type_code          => l_array_event_type(hdr_idx)
132294    ,p_event_number             => l_array_event_number(hdr_idx)
132295    ,p_event_date               => l_array_event_date(hdr_idx)
132296    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
132297    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
132298    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
132299    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
132300    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
132301    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
132302    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
132303    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
132304    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
132305    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
132306    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
132307    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
132308    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
132309    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
132310    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
132311 
132312 --
132313 -- set the status of entry to C_VALID (0)
132314 --
132315 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
132316 
132317 --
132318 -- initialize a row for ae header
132319 --
132320 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
132321 
132322 l_event_id := l_array_event_id(hdr_idx);
132323 
132324 --
132325 -- storing the hdr_idx for event. May be used by line cursor.
132326 --
132327 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
132328 
132329 --
132330 -- store sources from header extract. This can be improved to
132331 -- store only those sources from header extract that may be used in lines
132332 --
132333 
132334 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
132335 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
132336 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
132337 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
132338 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
132339 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
132340 
132341 --
132342 -- initilaize the status of ae headers for diffrent balance types
132343 -- the status is initialised to C_NOT_CREATED (2)
132344 --
132345 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
132346 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
132347 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
132348 
132349 --
132350 -- call api to validate and store accounting attributes for header
132351 --
132352 
132353 ------------------------------------------------------------
132354 -- Accrual Reversal : to get date for Standard Source (NONE)
132355 ------------------------------------------------------------
132356 l_acc_rev_gl_date_source := NULL;
132357 
132358      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
132359       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
132360 
132361 
132362 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
132363 
132364 XLA_AE_HEADER_PKG.SetJeCategoryName;
132365 
132369 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
132366 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
132367 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
132368 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
132370 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
132371 
132372 
132373 -- No header level analytical criteria
132374 
132375 --
132376 --accounting attribute enhancement, bug 3612931
132377 --
132378 l_trx_reversal_source := SUBSTR(NULL, 1,30);
132379 
132380 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
132381    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
132382 
132383    xla_accounting_err_pkg.build_message
132384       (p_appli_s_name            => 'XLA'
132385       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
132386       ,p_token_1                 => 'ACCT_ATTR_NAME'
132387       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
132388       ,p_token_2                 => 'PRODUCT_NAME'
132389       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
132390       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
132391       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
132392       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
132393 
132394 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
132395    --
132396    -- following sets the accounting attributes needed to reverse
132397    -- accounting for a distributeion
132398    --
132399    xla_ae_lines_pkg.SetTrxReversalAttrs
132400       (p_event_id              => l_event_id
132401       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
132402       ,p_trx_reversal_source   => l_trx_reversal_source);
132403 
132404 END IF;
132405 
132406 
132407 ----------------------------------------------------------------
132408 -- 4262811 -  update the header statuses to invalid in need be
132409 ----------------------------------------------------------------
132410 --
132411 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
132412 
132413 
132414   -----------------------------------------------
132415   -- No accrual reversal for the event class/type
132416   -----------------------------------------------
132417 ----------------------------------------------------------------
132418 
132419 --
132420 -- this ends the header loop iteration for one bulk fetch
132421 --
132422 END LOOP;
132423 
132424 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
132425 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
132426 
132427 --
132428 -- insert dummy rows into lines gt table that were created due to
132429 -- transaction reversals
132430 --
132431 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
132432    l_result := XLA_AE_LINES_PKG.InsertLines;
132433 END IF;
132434 
132435 --
132436 -- reset the temp_line_num for each set of events fetched from header
132437 -- cursor rather than doing it for each new event in line cursor
132438 -- Bug 3939231
132439 --
132440 xla_ae_lines_pkg.g_temp_line_num := 0;
132441 
132442 
132443 
132444 --
132445 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
132446 --
132447 --
132448 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
132449 
132450       trace
132451          (p_msg      => 'SQL - FETCH line_cur'
132452          ,p_level    => C_LEVEL_STATEMENT
132453          ,p_module   => l_log_module);
132454 
132455 END IF;
132456 --
132457 --
132458 LOOP
132459   --
132460   FETCH line_cur BULK COLLECT INTO
132461         l_array_entity_id
132462       , l_array_legal_entity_id
132463       , l_array_entity_code
132464       , l_array_transaction_num
132465       , l_array_event_id
132466       , l_array_class_code
132467       , l_array_event_type
132468       , l_array_event_number
132469       , l_array_event_date
132470       , l_array_transaction_date
132471       , l_array_reference_num_1
132472       , l_array_reference_num_2
132473       , l_array_reference_num_3
132474       , l_array_reference_num_4
132475       , l_array_reference_char_1
132476       , l_array_reference_char_2
132477       , l_array_reference_char_3
132478       , l_array_reference_char_4
132479       , l_array_reference_date_1
132480       , l_array_reference_date_2
132481       , l_array_reference_date_3
132482       , l_array_reference_date_4
132483       , l_array_event_created_by
132484       , l_array_budgetary_control_flag
132485       , l_array_extract_line_num 
132486       , l_array_source_1
132487       , l_array_source_2
132488       , l_array_source_3
132489       , l_array_source_5
132490       , l_array_source_11
132491       LIMIT l_rows;
132492 
132493   --
132494   IF (C_LEVEL_EVENT >= g_log_level) THEN
132495             trace
132496                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
132497                ,p_level    => C_LEVEL_EVENT
132498                ,p_module   => l_log_module);
132499   END IF;
132500   --
132501   EXIT WHEN l_array_entity_id.count = 0;
132502 
132503   XLA_AE_LINES_PKG.g_rec_lines := null;
132504 
132505 --
132509 --
132506 -- Bug 4458708
132507 --
132508 XLA_AE_LINES_PKG.g_LineNumber := 0;
132510 --
132511 
132512 FOR Idx IN 1..l_array_event_id.count LOOP
132513    --
132514    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
132515    --
132516    l_event_id := l_array_event_id(idx);  -- 5648433
132517 
132518    --
132519    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
132520    --
132521 
132522    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
132523              (g_array_event(l_event_id).array_value_num('header_index'))
132524          ,'N'
132525          ) <> 'Y'
132526    THEN
132527       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
132528          trace
132529             (p_msg      => 'Trancaction revesal option is not Y '
132530             ,p_level    => C_LEVEL_STATEMENT
132531             ,p_module   => l_log_module);
132532       END IF;
132533 
132534 --
132535 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
132536 --
132537 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
132538 --
132539 -- set event info as cache for other routines to refer event attributes
132540 --
132541 
132542 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
132543    l_previous_event_id := l_event_id;
132544 
132545    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
132546       (p_application_id           => p_application_id
132547       ,p_primary_ledger_id        => p_primary_ledger_id
132548       ,p_base_ledger_id           => p_base_ledger_id
132549       ,p_target_ledger_id         => p_target_ledger_id
132550       ,p_entity_id                => l_array_entity_id(Idx)
132551       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
132552       ,p_entity_code              => l_array_entity_code(Idx)
132553       ,p_transaction_num          => l_array_transaction_num(Idx)
132554       ,p_event_id                 => l_array_event_id(Idx)
132555       ,p_event_class_code         => l_array_class_code(Idx)
132556       ,p_event_type_code          => l_array_event_type(Idx)
132557       ,p_event_number             => l_array_event_number(Idx)
132558       ,p_event_date               => l_array_event_date(Idx)
132559       ,p_transaction_date         => l_array_transaction_date(Idx)
132560       ,p_reference_num_1          => l_array_reference_num_1(Idx)
132561       ,p_reference_num_2          => l_array_reference_num_2(Idx)
132562       ,p_reference_num_3          => l_array_reference_num_3(Idx)
132563       ,p_reference_num_4          => l_array_reference_num_4(Idx)
132564       ,p_reference_char_1         => l_array_reference_char_1(Idx)
132565       ,p_reference_char_2         => l_array_reference_char_2(Idx)
132566       ,p_reference_char_3         => l_array_reference_char_3(Idx)
132567       ,p_reference_char_4         => l_array_reference_char_4(Idx)
132568       ,p_reference_date_1         => l_array_reference_date_1(Idx)
132569       ,p_reference_date_2         => l_array_reference_date_2(Idx)
132570       ,p_reference_date_3         => l_array_reference_date_3(Idx)
132571       ,p_reference_date_4         => l_array_reference_date_4(Idx)
132572       ,p_event_created_by         => l_array_event_created_by(Idx)
132573       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
132574        --
132575 END IF;
132576 
132577 
132578 
132579 --
132580 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
132581 
132582 l_acct_reversal_source := SUBSTR(NULL, 1,30);
132583 
132584 IF l_continue_with_lines THEN
132585    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
132586       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
132587 
132588       xla_accounting_err_pkg.build_message
132589          (p_appli_s_name            => 'XLA'
132590          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
132591          ,p_token_1                 => 'LINE_NUMBER'
132592          ,p_value_1                 => l_array_extract_line_num(Idx)
132593          ,p_token_2                 => 'PRODUCT_NAME'
132594          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
132595          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
132596          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
132597          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
132598 
132599    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
132600       --
132601       -- following sets the accounting attributes needed to reverse
132602       -- accounting for a distributeion
132603       --
132604 
132605       --
132606       -- 5217187
132607       --
132608       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
132609       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
132610                                        g_array_event(l_event_id).array_value_num('header_index'));
132611       --
132612       --
132613 
132614       -- No reversal code generated
132615 
132616       xla_ae_lines_pkg.SetAcctReversalAttrs
132617          (p_event_id             => l_event_id
132618          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
132619          ,p_calculate_acctd_flag => l_calculate_acctd_flag
132620          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
132621    END IF;
132622 
132623    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
132627 AcctLineType_105 (
132624        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
132625 
132626 --
132628  p_application_id  => p_application_id
132629  ,p_event_id     => l_event_id
132630  ,p_calculate_acctd_flag => l_calculate_acctd_flag
132631  ,p_calculate_g_l_flag => l_calculate_g_l_flag
132632  ,p_actual_flag => l_actual_flag
132633  ,p_balance_type_code => l_balance_type_code
132634  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
132635  
132636  , p_source_1 => l_array_source_1(Idx)
132637  , p_source_2 => l_array_source_2(Idx)
132638  , p_source_3 => l_array_source_3(Idx)
132639  , p_source_5 => l_array_source_5(Idx)
132640  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
132641  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
132642  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
132643  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
132644  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
132645  , p_source_11 => l_array_source_11(Idx)
132646  );
132647 If(l_balance_type_code = 'A') THEN
132648   l_actual_gain_loss_ref := l_gain_or_loss_ref;
132649 END IF;
132650 
132651 --
132652 
132653 
132654 --
132655 AcctLineType_157 (
132656  p_application_id  => p_application_id
132657  ,p_event_id     => l_event_id
132658  ,p_calculate_acctd_flag => l_calculate_acctd_flag
132659  ,p_calculate_g_l_flag => l_calculate_g_l_flag
132660  ,p_actual_flag => l_actual_flag
132661  ,p_balance_type_code => l_balance_type_code
132662  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
132663  
132664  , p_source_1 => l_array_source_1(Idx)
132665  , p_source_2 => l_array_source_2(Idx)
132666  , p_source_3 => l_array_source_3(Idx)
132667  , p_source_5 => l_array_source_5(Idx)
132668  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
132669  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
132670  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
132671  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
132672  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
132673  , p_source_11 => l_array_source_11(Idx)
132674  );
132675 If(l_balance_type_code = 'A') THEN
132676   l_actual_gain_loss_ref := l_gain_or_loss_ref;
132677 END IF;
132678 
132679 --
132680 
132681 
132682 --
132683 AcctLineType_175 (
132684  p_application_id  => p_application_id
132685  ,p_event_id     => l_event_id
132686  ,p_calculate_acctd_flag => l_calculate_acctd_flag
132687  ,p_calculate_g_l_flag => l_calculate_g_l_flag
132688  ,p_actual_flag => l_actual_flag
132689  ,p_balance_type_code => l_balance_type_code
132690  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
132691  
132692  , p_source_1 => l_array_source_1(Idx)
132693  , p_source_2 => l_array_source_2(Idx)
132694  , p_source_3 => l_array_source_3(Idx)
132695  , p_source_5 => l_array_source_5(Idx)
132696  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
132697  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
132698  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
132699  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
132700  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
132701  , p_source_11 => l_array_source_11(Idx)
132702  );
132703 If(l_balance_type_code = 'A') THEN
132704   l_actual_gain_loss_ref := l_gain_or_loss_ref;
132705 END IF;
132706 
132707 --
132708 
132709 
132710 --
132711 AcctLineType_224 (
132712  p_application_id  => p_application_id
132713  ,p_event_id     => l_event_id
132714  ,p_calculate_acctd_flag => l_calculate_acctd_flag
132715  ,p_calculate_g_l_flag => l_calculate_g_l_flag
132716  ,p_actual_flag => l_actual_flag
132717  ,p_balance_type_code => l_balance_type_code
132718  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
132719  
132720  , p_source_1 => l_array_source_1(Idx)
132721  , p_source_2 => l_array_source_2(Idx)
132722  , p_source_3 => l_array_source_3(Idx)
132723  , p_source_5 => l_array_source_5(Idx)
132724  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
132725  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
132726  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
132727  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
132728  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
132729  , p_source_11 => l_array_source_11(Idx)
132730  );
132731 If(l_balance_type_code = 'A') THEN
132732   l_actual_gain_loss_ref := l_gain_or_loss_ref;
132733 END IF;
132734 
132735 --
132736 
132737       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
132738       -- or secondary ledger that has different currency with primary
132739       -- or alc that is calculated by sla
132740       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
132741             (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'))
132742 
132743 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
132744 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
132745           AND (l_actual_flag = 'A')) THEN
132746         XLA_AE_LINES_PKG.CreateGainOrLossLines(
132750          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
132747           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
132748          ,p_application_id   => p_application_id
132749          ,p_amb_context_code => 'DEFAULT'
132751          ,p_event_class_code => C_EVENT_CLASS_CODE
132752          ,p_event_type_code  => C_EVENT_TYPE_CODE
132753          
132754          ,p_gain_ccid        => -1
132755          ,p_loss_ccid        => -1
132756 
132757          ,p_actual_flag      => l_actual_flag
132758          ,p_enc_flag         => null
132759          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
132760          ,p_enc_g_l_ref      => null
132761          );
132762       END IF;
132763    END IF;
132764 END IF;
132765 
132766    ELSE
132767       --
132768       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
132769       --
132770       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
132771          trace
132772             (p_msg      => 'Trancaction revesal option is Y'
132773             ,p_level    => C_LEVEL_STATEMENT
132774             ,p_module   => l_log_module);
132775       END IF;
132776    END IF;
132777 
132778 END LOOP;
132779 l_result := XLA_AE_LINES_PKG.InsertLines ;
132780 end loop;
132781 close line_cur;
132782 
132783 
132784 --
132785 -- insert headers into xla_ae_headers_gt table
132786 --
132787 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
132788 
132789 -- insert into errors table here.
132790 
132791 END LOOP;
132792 
132793 --
132794 -- 4865292
132795 --
132796 -- Compare g_hdr_extract_count with event count in
132797 -- CreateHeadersAndLines.
132798 --
132799 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
132800 
132801 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
132802    trace (p_msg     => '# rows extracted from header extract objects '
132803                     || ' (running total): '
132804                     || g_hdr_extract_count
132805          ,p_level   => C_LEVEL_STATEMENT
132806          ,p_module  => l_log_module);
132807 END IF;
132808 
132809 CLOSE header_cur;
132810 --
132811 
132812 --
132813 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132814    trace
132815       (p_msg      => 'END of EventType_258'
132816       ,p_level    => C_LEVEL_PROCEDURE
132817       ,p_module   => l_log_module);
132818 END IF;
132819 --
132820 RETURN l_result;
132821 EXCEPTION
132822 WHEN xla_exceptions_pkg.application_exception THEN
132823    
132824 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
132825 
132826    
132827 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
132828 
132829    RAISE;
132830 
132831 WHEN NO_DATA_FOUND THEN
132832 
132833 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
132834 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
132835 
132836 FOR header_record IN header_cur
132837 LOOP
132838     l_array_header_events(header_record.event_id) := header_record.event_id;
132839 END LOOP;
132840 
132841 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
132842 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
132843 
132844 fnd_file.put_line(fnd_file.LOG, '                    ');
132845 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
132846 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
132847 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
132848 
132849 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
132850 LOOP
132851 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
132852 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
132853         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
132854 	END IF;
132855 END LOOP;
132856 
132857 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
132858 fnd_file.put_line(fnd_file.LOG, '                    ');
132859 
132860 
132861 xla_exceptions_pkg.raise_message
132862       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_258');
132863 
132864 
132865 WHEN OTHERS THEN
132866    xla_exceptions_pkg.raise_message
132867       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_258');
132868 END EventType_258;
132869 --
132870 
132871 ---------------------------------------
132872 --
132873 -- PRIVATE PROCEDURE
132874 --         insert_sources_259
132875 --
132876 ----------------------------------------
132877 --
132878 PROCEDURE insert_sources_259(
132879                                 p_target_ledger_id       IN NUMBER
132880                               , p_language               IN VARCHAR2
132881                               , p_sla_ledger_id          IN NUMBER
132882                               , p_pad_start_date         IN DATE
132883                               , p_pad_end_date           IN DATE
132884                          )
132885 IS
132886 
132887 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_RCPT_TP';
132888 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_RCPT';
132889 p_apps_owner                   VARCHAR2(30);
132890 l_log_module                   VARCHAR2(240);
132894 END IF;
132891 BEGIN
132892 IF g_log_enabled THEN
132893       l_log_module := C_DEFAULT_MODULE||'.insert_sources_259';
132895 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132896 
132897       trace
132898          (p_msg      => 'BEGIN of insert_sources_259'
132899          ,p_level    => C_LEVEL_PROCEDURE
132900          ,p_module   => l_log_module);
132901 
132902 END IF;
132903 
132904 -- select APPS owner
132905 SELECT oracle_username
132906   INTO p_apps_owner
132907   FROM fnd_oracle_userid
132908  WHERE read_only_flag = 'U'
132909 ;
132910 
132911 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
132912       trace
132913          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
132914                         ' - p_language = '||p_language||
132915                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
132916                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
132917                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
132918                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
132919          ,p_level    => C_LEVEL_STATEMENT
132920          ,p_module   => l_log_module);
132921 END IF;
132922 
132923 
132924 --
132925 INSERT INTO xla_diag_sources --hdr1
132926 (
132927         event_id
132928       , ledger_id
132929       , sla_ledger_id
132930       , description_language
132931       , object_name
132932       , object_type_code
132933       , line_number
132934       , source_application_id
132935       , source_type_code
132936       , source_code
132937       , source_value
132938       , source_meaning
132939       , created_by
132940       , creation_date
132941       , last_update_date
132942       , last_updated_by
132943       , last_update_login
132944       , program_update_date
132945       , program_application_id
132946       , program_id
132947       , request_id
132948 )
132949 SELECT
132950         event_id
132951       , p_target_ledger_id
132952       , p_sla_ledger_id
132953       , p_language
132954       , object_name
132955       , object_type_code
132956       , line_number
132957       , source_application_id
132958       , source_type_code
132959       , source_code
132960       , SUBSTR(source_value ,1,1996)
132961       , SUBSTR(source_meaning,1,200)
132962       , xla_environment_pkg.g_Usr_Id
132963       , TRUNC(SYSDATE)
132964       , TRUNC(SYSDATE)
132965       , xla_environment_pkg.g_Usr_Id
132966       , xla_environment_pkg.g_Login_Id
132967       , TRUNC(SYSDATE)
132968       , xla_environment_pkg.g_Prog_Appl_Id
132969       , xla_environment_pkg.g_Prog_Id
132970       , xla_environment_pkg.g_Req_Id
132971   FROM (
132972        SELECT xet.event_id                  event_id
132973             , 0                             line_number
132974             , CASE r
132975                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
132976                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
132977                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
132978                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
132979                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
132980                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
132981                 
132982                ELSE null
132983               END                           object_name
132984             , CASE r
132985                 WHEN 1 THEN 'HEADER' 
132986                 WHEN 2 THEN 'HEADER' 
132987                 WHEN 3 THEN 'HEADER' 
132988                 WHEN 4 THEN 'HEADER' 
132989                 WHEN 5 THEN 'HEADER' 
132990                 WHEN 6 THEN 'HEADER' 
132991                 
132992                 ELSE null
132993               END                           object_type_code
132994             , CASE r
132995                 WHEN 1 THEN '555' 
132996                 WHEN 2 THEN '555' 
132997                 WHEN 3 THEN '555' 
132998                 WHEN 4 THEN '555' 
132999                 WHEN 5 THEN '555' 
133000                 WHEN 6 THEN '555' 
133001                 
133002                 ELSE null
133003               END                           source_application_id
133004             , 'S'             source_type_code
133005             , CASE r
133006                 WHEN 1 THEN 'ENTITY_CODE' 
133007                 WHEN 2 THEN 'CURRENCY_CODE' 
133008                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
133009                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
133010                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
133011                 WHEN 6 THEN 'TRANSACTION_DATE' 
133012                 
133013                 ELSE null
133014               END                           source_code
133015             , CASE r
133016                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
133017                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
133018                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
133019                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
133020                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
133021                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
133022                 
133023                 ELSE null
133024               END                           source_value
133025             , CASE r
133026                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
133027                           1010186
133028                          ,TO_CHAR(h1.CURRENCY_CODE)
133029                          ,'CURRENCY_CODE'
133030                          ,'S'
133031                          ,555)
133032                 
133036       , GMF_XLA_EXTRACT_HEADERS  h1
133033                 ELSE null
133034               END               source_meaning
133035         FROM xla_events_gt     xet  
133037             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
133038        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
133039          AND xet.event_type_code = C_EVENT_TYPE_CODE
133040             AND h1.event_id = xet.event_id
133041 
133042 )
133043 ;
133044 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
133045 
133046       trace
133047          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
133048          ,p_level    => C_LEVEL_STATEMENT
133049          ,p_module   => l_log_module);
133050 
133051 END IF;
133052 --
133053 
133054 
133055 
133056 --
133057 INSERT INTO xla_diag_sources --line1
133058 (
133059         event_id
133060       , ledger_id
133061       , sla_ledger_id
133062       , description_language
133063       , object_name
133064       , object_type_code
133065       , line_number
133066       , source_application_id
133067       , source_type_code
133068       , source_code
133069       , source_value
133070       , source_meaning
133071       , created_by
133072       , creation_date
133073       , last_update_date
133074       , last_updated_by
133075       , last_update_login
133076       , program_update_date
133077       , program_application_id
133078       , program_id
133079       , request_id
133080 )
133081 SELECT  event_id
133082       , p_target_ledger_id
133083       , p_sla_ledger_id
133084       , p_language
133085       , object_name
133086       , object_type_code
133087       , line_number
133088       , source_application_id
133089       , source_type_code
133090       , source_code
133091       , SUBSTR(source_value,1,1996)
133092       , SUBSTR(source_meaning,1,200)
133093       , xla_environment_pkg.g_Usr_Id
133094       , TRUNC(SYSDATE)
133095       , TRUNC(SYSDATE)
133096       , xla_environment_pkg.g_Usr_Id
133097       , xla_environment_pkg.g_Login_Id
133098       , TRUNC(SYSDATE)
133099       , xla_environment_pkg.g_Prog_Appl_Id
133100       , xla_environment_pkg.g_Prog_Id
133101       , xla_environment_pkg.g_Req_Id
133102   FROM (
133103        SELECT xet.event_id                  event_id
133104             , l2.line_number                 line_number
133105             , CASE r
133106                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
133107                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
133108                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
133109                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
133110                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
133111                 
133112                ELSE null
133113               END                           object_name
133114             , CASE r
133115                 WHEN 1 THEN 'LINE' 
133116                 WHEN 2 THEN 'LINE' 
133117                 WHEN 3 THEN 'LINE' 
133118                 WHEN 4 THEN 'LINE' 
133119                 WHEN 5 THEN 'LINE' 
133120                 
133121                 ELSE null
133122               END                           object_type_code
133123             , CASE r
133124                 WHEN 1 THEN '555' 
133125                 WHEN 2 THEN '555' 
133126                 WHEN 3 THEN '555' 
133127                 WHEN 4 THEN '555' 
133128                 WHEN 5 THEN '555' 
133129                 
133130                 ELSE null
133131               END                           source_application_id
133132             , 'S'             source_type_code
133133             , CASE r
133134                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
133135                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
133136                 WHEN 3 THEN 'ENTERED_AMOUNT' 
133137                 WHEN 4 THEN 'LINE_ID' 
133138                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
133139                 
133140                 ELSE null
133141               END                           source_code
133142             , CASE r
133143                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
133144                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
133145                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
133146                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
133147                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
133148                 
133149                 ELSE null
133150               END                           source_value
133151             , null              source_meaning
133152          FROM  xla_events_gt     xet  
133153         , GMF_XLA_EXTRACT_LINES  l2
133154             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
133155         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
133156           AND xet.event_type_code = C_EVENT_TYPE_CODE
133157             AND l2.event_id          = xet.event_id
133158 
133159 )
133160 ;
133161 --
133162 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
133163 
133164       trace
133165          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
133166          ,p_level    => C_LEVEL_STATEMENT
133167          ,p_module   => l_log_module);
133168 
133169 END IF;
133170 
133171 
133172 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133173       trace
133174          (p_msg      => 'END of insert_sources_259'
133175          ,p_level    => C_LEVEL_PROCEDURE
133179   WHEN xla_exceptions_pkg.application_exception THEN
133176          ,p_module   => l_log_module);
133177 END IF;
133178 EXCEPTION
133180       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
133181             trace
133182                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
133183                ,p_level    => C_LEVEL_EXCEPTION
133184                ,p_module   => l_log_module);
133185       END IF;
133186       RAISE;
133187   WHEN OTHERS THEN
133188       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
133189             trace
133190                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
133191                ,p_level    => C_LEVEL_EXCEPTION
133192                ,p_module   => l_log_module);
133193        END IF;
133194        xla_exceptions_pkg.raise_message
133195            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_259');
133196 END insert_sources_259;
133197 --
133198 
133199 ---------------------------------------
133200 --
133201 -- PRIVATE FUNCTION
133202 --         EventType_259
133203 --
133204 ----------------------------------------
133205 --
133206 FUNCTION EventType_259
133207        (p_application_id         IN NUMBER
133208        ,p_base_ledger_id         IN NUMBER
133209        ,p_target_ledger_id       IN NUMBER
133210        ,p_language               IN VARCHAR2
133211        ,p_currency_code          IN VARCHAR2
133212        ,p_sla_ledger_id          IN NUMBER
133213        ,p_pad_start_date         IN DATE
133214        ,p_pad_end_date           IN DATE
133215        ,p_primary_ledger_id      IN NUMBER)
133216 RETURN BOOLEAN IS
133217 --
133218 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_RCPT_TP';
133219 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_RCPT';
133220 
133221 l_calculate_acctd_flag   VARCHAR2(1) :='N';
133222 l_calculate_g_l_flag     VARCHAR2(1) :='N';
133223 --
133224 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
133225 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
133226 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
133227 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
133228 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
133229 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
133230 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
133231 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
133232 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
133233 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
133234 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
133235 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
133236 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
133237 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
133238 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
133239 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
133240 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
133241 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
133242 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
133243 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
133244 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
133245 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
133246 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
133247 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
133248 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
133249 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
133250 
133251 l_event_id                             NUMBER;
133252 l_previous_event_id                    NUMBER;
133253 l_first_event_id                       NUMBER;
133254 l_last_event_id                        NUMBER;
133255 
133256 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
133257 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
133258 --
133259 --
133260 l_result                    BOOLEAN := TRUE;
133261 l_rows                      NUMBER  := 1000;
133262 l_event_type_name           VARCHAR2(80) := 'Direct Interorg Receipt, Transfer Pricing';
133263 l_event_class_name          VARCHAR2(80) := 'Direct Interorg Receipt';
133264 l_description               VARCHAR2(4000);
133265 l_transaction_reversal      NUMBER;
133266 l_ae_header_id              NUMBER;
133267 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
133268 l_log_module                VARCHAR2(240);
133269 --
133270 l_acct_reversal_source      VARCHAR2(30);
133271 l_trx_reversal_source       VARCHAR2(30);
133272 
133273 l_continue_with_lines       BOOLEAN := TRUE;
133274 --
133275 l_acc_rev_gl_date_source    DATE;                      -- 4262811
133276 --
133277 type t_array_event_id is table of number index by binary_integer;
133278 
133279 l_rec_array_event                    t_rec_array_event;
133280 l_null_rec_array_event               t_rec_array_event;
133281 l_array_ae_header_id                 xla_number_array_type;
133282 l_actual_flag                        VARCHAR2(1) := NULL;
133283 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
133287 --
133284 l_balance_type_code                  VARCHAR2(1) :=NULL;
133285 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
133286 
133288 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
133289 --
133290 
133291 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
133292 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
133293 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
133294 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
133295 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
133296 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
133297 
133298 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
133299 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
133300 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
133301 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
133302 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
133303 
133304 l_array_source_6              t_array_source_6;
133305 l_array_source_7              t_array_source_7;
133306 l_array_source_8              t_array_source_8;
133307 l_array_source_9              t_array_source_9;
133308 l_array_source_10              t_array_source_10;
133309 l_array_source_12              t_array_source_12;
133310 
133311 l_array_source_1      t_array_source_1;
133312 l_array_source_2      t_array_source_2;
133313 l_array_source_3      t_array_source_3;
133314 l_array_source_5      t_array_source_5;
133315 l_array_source_11      t_array_source_11;
133316 
133317 --
133318 CURSOR header_cur
133319 IS
133320 SELECT /*+ leading(xet) cardinality(xet,1) */
133321 -- Event Type Code: DIR_INTERORG_RCPT_TP
133322 -- Event Class Code: DIR_INTERORG_RCPT
133323     xet.entity_id
133324   , xet.legal_entity_id
133325   , xet.entity_code
133326   , xet.transaction_number
133327   , xet.event_id
133328   , xet.event_class_code
133329   , xet.event_type_code
133330   , xet.event_number
133331   , xet.event_date
133332   , xet.transaction_date
133333   , xet.reference_num_1
133334   , xet.reference_num_2
133335   , xet.reference_num_3
133336   , xet.reference_num_4
133337   , xet.reference_char_1
133338   , xet.reference_char_2
133339   , xet.reference_char_3
133340   , xet.reference_char_4
133341   , xet.reference_date_1
133342   , xet.reference_date_2
133343   , xet.reference_date_3
133344   , xet.reference_date_4
133345   , xet.event_created_by
133346   , xet.budgetary_control_flag 
133347   , h1.ENTITY_CODE    source_6
133348   , h1.CURRENCY_CODE    source_7
133349   , h1.CURRENCY_CONVERSION_DATE    source_8
133350   , h1.CURRENCY_CONVERSION_RATE    source_9
133351   , h1.CURRENCY_CONVERSION_TYPE    source_10
133352   , h1.TRANSACTION_DATE    source_12
133353   FROM xla_events_gt     xet 
133354   , GMF_XLA_EXTRACT_HEADERS  h1
133355  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
133356    and xet.event_type_code = C_EVENT_TYPE_CODE
133357    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
133358 
133359  ORDER BY event_id
133360 ;
133361 
133362 
133363 --
133364 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
133365 IS
133366 SELECT /*+ leading(xet) cardinality(xet,1) */
133367 -- Event Type Code: DIR_INTERORG_RCPT_TP
133368 -- Event Class Code: DIR_INTERORG_RCPT
133369     xet.entity_id
133370    ,xet.legal_entity_id
133371    ,xet.entity_code
133372    ,xet.transaction_number
133373    ,xet.event_id
133374    ,xet.event_class_code
133375    ,xet.event_type_code
133376    ,xet.event_number
133377    ,xet.event_date
133378    ,xet.transaction_date
133379    ,xet.reference_num_1
133380    ,xet.reference_num_2
133381    ,xet.reference_num_3
133382    ,xet.reference_num_4
133383    ,xet.reference_char_1
133384    ,xet.reference_char_2
133385    ,xet.reference_char_3
133386    ,xet.reference_char_4
133387    ,xet.reference_date_1
133388    ,xet.reference_date_2
133389    ,xet.reference_date_3
133390    ,xet.reference_date_4
133391    ,xet.event_created_by
133392    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
133393   , l2.TRANSACTION_ACCOUNT_ID    source_1
133394   , l2.JOURNAL_LINE_TYPE    source_2
133395   , l2.ENTERED_AMOUNT    source_3
133396   , l2.LINE_ID    source_5
133397   , l2.ACCOUNTED_AMOUNT    source_11
133398   FROM xla_events_gt     xet 
133399   , GMF_XLA_EXTRACT_LINES  l2
133400  WHERE xet.event_id between x_first_event_id and x_last_event_id
133401    and xet.event_date between p_pad_start_date and p_pad_end_date
133402    and xet.event_type_code = C_EVENT_TYPE_CODE
133403    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
133404 ;
133405 
133406 --
133407 BEGIN
133408 IF g_log_enabled THEN
133409    l_log_module := C_DEFAULT_MODULE||'.EventType_259';
133410 END IF;
133411 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133412    trace
133413       (p_msg      => 'BEGIN of EventType_259'
133414       ,p_level    => C_LEVEL_PROCEDURE
133415       ,p_module   => l_log_module);
133419    trace
133416 END IF;
133417 
133418 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
133420       (p_msg      => 'p_application_id = '||p_application_id||
133421                      ' - p_base_ledger_id = '||p_base_ledger_id||
133422                      ' - p_target_ledger_id  = '||p_target_ledger_id||
133423                      ' - p_language = '||p_language||
133424                      ' - p_currency_code = '||p_currency_code||
133425                      ' - p_sla_ledger_id = '||p_sla_ledger_id
133426       ,p_level    => C_LEVEL_STATEMENT
133427       ,p_module   => l_log_module);
133428 END IF;
133429 --
133430 -- initialze arrays
133431 --
133432 g_array_event.DELETE;
133433 l_rec_array_event := l_null_rec_array_event;
133434 --
133435 --------------------------------------
133436 -- 4262811 Initialze MPA Line Number
133437 --------------------------------------
133438 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
133439 
133440 --
133441 
133442 --
133443 OPEN header_cur;
133444 --
133445 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
133446    trace
133447    (p_msg      => 'SQL - FETCH header_cur'
133448    ,p_level    => C_LEVEL_STATEMENT
133449    ,p_module   => l_log_module);
133450 END IF;
133451 --
133452 LOOP
133453 FETCH header_cur BULK COLLECT INTO
133454         l_array_entity_id
133455       , l_array_legal_entity_id
133456       , l_array_entity_code
133457       , l_array_transaction_num
133458       , l_array_event_id
133459       , l_array_class_code
133460       , l_array_event_type
133461       , l_array_event_number
133462       , l_array_event_date
133463       , l_array_transaction_date
133464       , l_array_reference_num_1
133465       , l_array_reference_num_2
133466       , l_array_reference_num_3
133467       , l_array_reference_num_4
133468       , l_array_reference_char_1
133469       , l_array_reference_char_2
133470       , l_array_reference_char_3
133471       , l_array_reference_char_4
133472       , l_array_reference_date_1
133473       , l_array_reference_date_2
133474       , l_array_reference_date_3
133475       , l_array_reference_date_4
133476       , l_array_event_created_by
133477       , l_array_budgetary_control_flag 
133478       , l_array_source_6
133479       , l_array_source_7
133480       , l_array_source_8
133481       , l_array_source_9
133482       , l_array_source_10
133483       , l_array_source_12
133484       LIMIT l_rows;
133485 --
133486 IF (C_LEVEL_EVENT >= g_log_level) THEN
133487    trace
133488    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
133489    ,p_level    => C_LEVEL_EVENT
133490    ,p_module   => l_log_module);
133491 END IF;
133492 --
133493 EXIT WHEN l_array_entity_id.COUNT = 0;
133494 
133495 -- initialize arrays
133496 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
133497 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
133498 
133499 --
133500 -- Bug 4458708
133501 --
133502 XLA_AE_LINES_PKG.g_LineNumber := 0;
133503 
133504 
133505 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
133506 g_last_hdr_idx := l_array_event_id.LAST;
133507 --
133508 -- loop for the headers. Each iteration is for each header extract row
133509 -- fetched in header cursor
133510 --
133511 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
133512 
133513 --
133514 -- set event info as cache for other routines to refer event attributes
133515 --
133516 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
133517    (p_application_id           => p_application_id
133518    ,p_primary_ledger_id        => p_primary_ledger_id
133519    ,p_base_ledger_id           => p_base_ledger_id
133520    ,p_target_ledger_id         => p_target_ledger_id
133521    ,p_entity_id                => l_array_entity_id(hdr_idx)
133522    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
133523    ,p_entity_code              => l_array_entity_code(hdr_idx)
133524    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
133525    ,p_event_id                 => l_array_event_id(hdr_idx)
133526    ,p_event_class_code         => l_array_class_code(hdr_idx)
133527    ,p_event_type_code          => l_array_event_type(hdr_idx)
133528    ,p_event_number             => l_array_event_number(hdr_idx)
133529    ,p_event_date               => l_array_event_date(hdr_idx)
133530    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
133531    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
133532    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
133533    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
133534    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
133535    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
133536    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
133537    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
133538    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
133539    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
133540    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
133541    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
133542    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
133543    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
133544    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
133545 
133546 --
133547 -- set the status of entry to C_VALID (0)
133551 --
133548 --
133549 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
133550 
133552 -- initialize a row for ae header
133553 --
133554 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
133555 
133556 l_event_id := l_array_event_id(hdr_idx);
133557 
133558 --
133559 -- storing the hdr_idx for event. May be used by line cursor.
133560 --
133561 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
133562 
133563 --
133564 -- store sources from header extract. This can be improved to
133565 -- store only those sources from header extract that may be used in lines
133566 --
133567 
133568 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
133569 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
133570 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
133571 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
133572 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
133573 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
133574 
133575 --
133576 -- initilaize the status of ae headers for diffrent balance types
133577 -- the status is initialised to C_NOT_CREATED (2)
133578 --
133579 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
133580 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
133581 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
133582 
133583 --
133584 -- call api to validate and store accounting attributes for header
133585 --
133586 
133587 ------------------------------------------------------------
133588 -- Accrual Reversal : to get date for Standard Source (NONE)
133589 ------------------------------------------------------------
133590 l_acc_rev_gl_date_source := NULL;
133591 
133592      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
133593       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
133594 
133595 
133596 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
133597 
133598 XLA_AE_HEADER_PKG.SetJeCategoryName;
133599 
133600 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
133601 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
133602 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
133603 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
133604 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
133605 
133606 
133607 -- No header level analytical criteria
133608 
133609 --
133610 --accounting attribute enhancement, bug 3612931
133611 --
133612 l_trx_reversal_source := SUBSTR(NULL, 1,30);
133613 
133614 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
133615    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
133616 
133617    xla_accounting_err_pkg.build_message
133618       (p_appli_s_name            => 'XLA'
133619       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
133620       ,p_token_1                 => 'ACCT_ATTR_NAME'
133621       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
133622       ,p_token_2                 => 'PRODUCT_NAME'
133623       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
133624       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
133625       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
133626       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
133627 
133628 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
133629    --
133630    -- following sets the accounting attributes needed to reverse
133631    -- accounting for a distributeion
133632    --
133633    xla_ae_lines_pkg.SetTrxReversalAttrs
133634       (p_event_id              => l_event_id
133635       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
133636       ,p_trx_reversal_source   => l_trx_reversal_source);
133637 
133638 END IF;
133639 
133640 
133641 ----------------------------------------------------------------
133642 -- 4262811 -  update the header statuses to invalid in need be
133643 ----------------------------------------------------------------
133644 --
133645 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
133646 
133647 
133648   -----------------------------------------------
133649   -- No accrual reversal for the event class/type
133650   -----------------------------------------------
133651 ----------------------------------------------------------------
133652 
133653 --
133654 -- this ends the header loop iteration for one bulk fetch
133655 --
133656 END LOOP;
133657 
133658 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
133659 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
133660 
133661 --
133662 -- insert dummy rows into lines gt table that were created due to
133663 -- transaction reversals
133664 --
133665 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
133666    l_result := XLA_AE_LINES_PKG.InsertLines;
133667 END IF;
133668 
133669 --
133673 --
133670 -- reset the temp_line_num for each set of events fetched from header
133671 -- cursor rather than doing it for each new event in line cursor
133672 -- Bug 3939231
133674 xla_ae_lines_pkg.g_temp_line_num := 0;
133675 
133676 
133677 
133678 --
133679 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
133680 --
133681 --
133682 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
133683 
133684       trace
133685          (p_msg      => 'SQL - FETCH line_cur'
133686          ,p_level    => C_LEVEL_STATEMENT
133687          ,p_module   => l_log_module);
133688 
133689 END IF;
133690 --
133691 --
133692 LOOP
133693   --
133694   FETCH line_cur BULK COLLECT INTO
133695         l_array_entity_id
133696       , l_array_legal_entity_id
133697       , l_array_entity_code
133698       , l_array_transaction_num
133699       , l_array_event_id
133700       , l_array_class_code
133701       , l_array_event_type
133702       , l_array_event_number
133703       , l_array_event_date
133704       , l_array_transaction_date
133705       , l_array_reference_num_1
133706       , l_array_reference_num_2
133707       , l_array_reference_num_3
133708       , l_array_reference_num_4
133709       , l_array_reference_char_1
133710       , l_array_reference_char_2
133711       , l_array_reference_char_3
133712       , l_array_reference_char_4
133713       , l_array_reference_date_1
133714       , l_array_reference_date_2
133715       , l_array_reference_date_3
133716       , l_array_reference_date_4
133717       , l_array_event_created_by
133718       , l_array_budgetary_control_flag
133719       , l_array_extract_line_num 
133720       , l_array_source_1
133721       , l_array_source_2
133722       , l_array_source_3
133723       , l_array_source_5
133724       , l_array_source_11
133725       LIMIT l_rows;
133726 
133727   --
133728   IF (C_LEVEL_EVENT >= g_log_level) THEN
133729             trace
133730                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
133731                ,p_level    => C_LEVEL_EVENT
133732                ,p_module   => l_log_module);
133733   END IF;
133734   --
133735   EXIT WHEN l_array_entity_id.count = 0;
133736 
133737   XLA_AE_LINES_PKG.g_rec_lines := null;
133738 
133739 --
133740 -- Bug 4458708
133741 --
133742 XLA_AE_LINES_PKG.g_LineNumber := 0;
133743 --
133744 --
133745 
133746 FOR Idx IN 1..l_array_event_id.count LOOP
133747    --
133748    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
133749    --
133750    l_event_id := l_array_event_id(idx);  -- 5648433
133751 
133752    --
133753    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
133754    --
133755 
133756    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
133757              (g_array_event(l_event_id).array_value_num('header_index'))
133758          ,'N'
133759          ) <> 'Y'
133760    THEN
133761       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
133762          trace
133763             (p_msg      => 'Trancaction revesal option is not Y '
133764             ,p_level    => C_LEVEL_STATEMENT
133765             ,p_module   => l_log_module);
133766       END IF;
133767 
133768 --
133769 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
133770 --
133771 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
133772 --
133773 -- set event info as cache for other routines to refer event attributes
133774 --
133775 
133776 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
133777    l_previous_event_id := l_event_id;
133778 
133779    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
133780       (p_application_id           => p_application_id
133781       ,p_primary_ledger_id        => p_primary_ledger_id
133782       ,p_base_ledger_id           => p_base_ledger_id
133783       ,p_target_ledger_id         => p_target_ledger_id
133784       ,p_entity_id                => l_array_entity_id(Idx)
133785       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
133786       ,p_entity_code              => l_array_entity_code(Idx)
133787       ,p_transaction_num          => l_array_transaction_num(Idx)
133788       ,p_event_id                 => l_array_event_id(Idx)
133789       ,p_event_class_code         => l_array_class_code(Idx)
133790       ,p_event_type_code          => l_array_event_type(Idx)
133791       ,p_event_number             => l_array_event_number(Idx)
133792       ,p_event_date               => l_array_event_date(Idx)
133793       ,p_transaction_date         => l_array_transaction_date(Idx)
133794       ,p_reference_num_1          => l_array_reference_num_1(Idx)
133795       ,p_reference_num_2          => l_array_reference_num_2(Idx)
133796       ,p_reference_num_3          => l_array_reference_num_3(Idx)
133797       ,p_reference_num_4          => l_array_reference_num_4(Idx)
133798       ,p_reference_char_1         => l_array_reference_char_1(Idx)
133799       ,p_reference_char_2         => l_array_reference_char_2(Idx)
133800       ,p_reference_char_3         => l_array_reference_char_3(Idx)
133801       ,p_reference_char_4         => l_array_reference_char_4(Idx)
133802       ,p_reference_date_1         => l_array_reference_date_1(Idx)
133803       ,p_reference_date_2         => l_array_reference_date_2(Idx)
133804       ,p_reference_date_3         => l_array_reference_date_3(Idx)
133805       ,p_reference_date_4         => l_array_reference_date_4(Idx)
133809 END IF;
133806       ,p_event_created_by         => l_array_event_created_by(Idx)
133807       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
133808        --
133810 
133811 
133812 
133813 --
133814 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
133815 
133816 l_acct_reversal_source := SUBSTR(NULL, 1,30);
133817 
133818 IF l_continue_with_lines THEN
133819    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
133820       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
133821 
133822       xla_accounting_err_pkg.build_message
133823          (p_appli_s_name            => 'XLA'
133824          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
133825          ,p_token_1                 => 'LINE_NUMBER'
133826          ,p_value_1                 => l_array_extract_line_num(Idx)
133827          ,p_token_2                 => 'PRODUCT_NAME'
133828          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
133829          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
133830          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
133831          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
133832 
133833    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
133834       --
133835       -- following sets the accounting attributes needed to reverse
133836       -- accounting for a distributeion
133837       --
133838 
133839       --
133840       -- 5217187
133841       --
133842       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
133843       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
133844                                        g_array_event(l_event_id).array_value_num('header_index'));
133845       --
133846       --
133847 
133848       -- No reversal code generated
133849 
133850       xla_ae_lines_pkg.SetAcctReversalAttrs
133851          (p_event_id             => l_event_id
133852          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
133853          ,p_calculate_acctd_flag => l_calculate_acctd_flag
133854          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
133855    END IF;
133856 
133857    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
133858        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
133859 
133860 --
133861 AcctLineType_158 (
133862  p_application_id  => p_application_id
133863  ,p_event_id     => l_event_id
133864  ,p_calculate_acctd_flag => l_calculate_acctd_flag
133865  ,p_calculate_g_l_flag => l_calculate_g_l_flag
133866  ,p_actual_flag => l_actual_flag
133867  ,p_balance_type_code => l_balance_type_code
133868  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
133869  
133870  , p_source_1 => l_array_source_1(Idx)
133871  , p_source_2 => l_array_source_2(Idx)
133872  , p_source_3 => l_array_source_3(Idx)
133873  , p_source_5 => l_array_source_5(Idx)
133874  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
133875  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
133876  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
133877  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
133878  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
133879  , p_source_11 => l_array_source_11(Idx)
133880  );
133881 If(l_balance_type_code = 'A') THEN
133882   l_actual_gain_loss_ref := l_gain_or_loss_ref;
133883 END IF;
133884 
133885 --
133886 
133887 
133888 --
133889 AcctLineType_171 (
133890  p_application_id  => p_application_id
133891  ,p_event_id     => l_event_id
133892  ,p_calculate_acctd_flag => l_calculate_acctd_flag
133893  ,p_calculate_g_l_flag => l_calculate_g_l_flag
133894  ,p_actual_flag => l_actual_flag
133895  ,p_balance_type_code => l_balance_type_code
133896  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
133897  
133898  , p_source_1 => l_array_source_1(Idx)
133899  , p_source_2 => l_array_source_2(Idx)
133900  , p_source_3 => l_array_source_3(Idx)
133901  , p_source_5 => l_array_source_5(Idx)
133902  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
133903  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
133904  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
133905  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
133906  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
133907  , p_source_11 => l_array_source_11(Idx)
133908  );
133909 If(l_balance_type_code = 'A') THEN
133910   l_actual_gain_loss_ref := l_gain_or_loss_ref;
133911 END IF;
133912 
133913 --
133914 
133915 
133916 --
133917 AcctLineType_218 (
133918  p_application_id  => p_application_id
133919  ,p_event_id     => l_event_id
133920  ,p_calculate_acctd_flag => l_calculate_acctd_flag
133921  ,p_calculate_g_l_flag => l_calculate_g_l_flag
133922  ,p_actual_flag => l_actual_flag
133923  ,p_balance_type_code => l_balance_type_code
133924  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
133925  
133926  , p_source_1 => l_array_source_1(Idx)
133927  , p_source_2 => l_array_source_2(Idx)
133928  , p_source_3 => l_array_source_3(Idx)
133929  , p_source_5 => l_array_source_5(Idx)
133930  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
133931  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
133935  , p_source_11 => l_array_source_11(Idx)
133932  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
133933  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
133934  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
133936  );
133937 If(l_balance_type_code = 'A') THEN
133938   l_actual_gain_loss_ref := l_gain_or_loss_ref;
133939 END IF;
133940 
133941 --
133942 
133943       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
133944       -- or secondary ledger that has different currency with primary
133945       -- or alc that is calculated by sla
133946       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
133947             (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'))
133948 
133949 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
133950 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
133951           AND (l_actual_flag = 'A')) THEN
133952         XLA_AE_LINES_PKG.CreateGainOrLossLines(
133953           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
133954          ,p_application_id   => p_application_id
133955          ,p_amb_context_code => 'DEFAULT'
133956          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
133957          ,p_event_class_code => C_EVENT_CLASS_CODE
133958          ,p_event_type_code  => C_EVENT_TYPE_CODE
133959          
133960          ,p_gain_ccid        => -1
133961          ,p_loss_ccid        => -1
133962 
133963          ,p_actual_flag      => l_actual_flag
133964          ,p_enc_flag         => null
133965          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
133966          ,p_enc_g_l_ref      => null
133967          );
133968       END IF;
133969    END IF;
133970 END IF;
133971 
133972    ELSE
133973       --
133974       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
133975       --
133976       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
133977          trace
133978             (p_msg      => 'Trancaction revesal option is Y'
133979             ,p_level    => C_LEVEL_STATEMENT
133980             ,p_module   => l_log_module);
133981       END IF;
133982    END IF;
133983 
133984 END LOOP;
133985 l_result := XLA_AE_LINES_PKG.InsertLines ;
133986 end loop;
133987 close line_cur;
133988 
133989 
133990 --
133991 -- insert headers into xla_ae_headers_gt table
133992 --
133993 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
133994 
133995 -- insert into errors table here.
133996 
133997 END LOOP;
133998 
133999 --
134000 -- 4865292
134001 --
134002 -- Compare g_hdr_extract_count with event count in
134003 -- CreateHeadersAndLines.
134004 --
134005 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
134006 
134007 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
134008    trace (p_msg     => '# rows extracted from header extract objects '
134009                     || ' (running total): '
134010                     || g_hdr_extract_count
134011          ,p_level   => C_LEVEL_STATEMENT
134012          ,p_module  => l_log_module);
134013 END IF;
134014 
134015 CLOSE header_cur;
134016 --
134017 
134018 --
134019 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134020    trace
134021       (p_msg      => 'END of EventType_259'
134022       ,p_level    => C_LEVEL_PROCEDURE
134023       ,p_module   => l_log_module);
134024 END IF;
134025 --
134026 RETURN l_result;
134027 EXCEPTION
134028 WHEN xla_exceptions_pkg.application_exception THEN
134029    
134030 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
134031 
134032    
134033 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
134034 
134035    RAISE;
134036 
134037 WHEN NO_DATA_FOUND THEN
134038 
134039 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
134040 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
134041 
134042 FOR header_record IN header_cur
134043 LOOP
134044     l_array_header_events(header_record.event_id) := header_record.event_id;
134045 END LOOP;
134046 
134047 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
134048 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
134049 
134050 fnd_file.put_line(fnd_file.LOG, '                    ');
134051 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
134052 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
134053 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
134054 
134055 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
134056 LOOP
134057 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
134058 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
134059         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
134060 	END IF;
134061 END LOOP;
134062 
134063 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
134064 fnd_file.put_line(fnd_file.LOG, '                    ');
134065 
134066 
134067 xla_exceptions_pkg.raise_message
134071 WHEN OTHERS THEN
134068       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_259');
134069 
134070 
134072    xla_exceptions_pkg.raise_message
134073       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_259');
134074 END EventType_259;
134075 --
134076 
134077 ---------------------------------------
134078 --
134079 -- PRIVATE PROCEDURE
134080 --         insert_sources_260
134081 --
134082 ----------------------------------------
134083 --
134084 PROCEDURE insert_sources_260(
134085                                 p_target_ledger_id       IN NUMBER
134086                               , p_language               IN VARCHAR2
134087                               , p_sla_ledger_id          IN NUMBER
134088                               , p_pad_start_date         IN DATE
134089                               , p_pad_end_date           IN DATE
134090                          )
134091 IS
134092 
134093 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_SHIP';
134094 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_SHIP';
134095 p_apps_owner                   VARCHAR2(30);
134096 l_log_module                   VARCHAR2(240);
134097 BEGIN
134098 IF g_log_enabled THEN
134099       l_log_module := C_DEFAULT_MODULE||'.insert_sources_260';
134100 END IF;
134101 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134102 
134103       trace
134104          (p_msg      => 'BEGIN of insert_sources_260'
134105          ,p_level    => C_LEVEL_PROCEDURE
134106          ,p_module   => l_log_module);
134107 
134108 END IF;
134109 
134110 -- select APPS owner
134111 SELECT oracle_username
134112   INTO p_apps_owner
134113   FROM fnd_oracle_userid
134114  WHERE read_only_flag = 'U'
134115 ;
134116 
134117 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
134118       trace
134119          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
134120                         ' - p_language = '||p_language||
134121                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
134122                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
134123                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
134124                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
134125          ,p_level    => C_LEVEL_STATEMENT
134126          ,p_module   => l_log_module);
134127 END IF;
134128 
134129 
134130 --
134131 INSERT INTO xla_diag_sources --hdr1
134132 (
134133         event_id
134134       , ledger_id
134135       , sla_ledger_id
134136       , description_language
134137       , object_name
134138       , object_type_code
134139       , line_number
134140       , source_application_id
134141       , source_type_code
134142       , source_code
134143       , source_value
134144       , source_meaning
134145       , created_by
134146       , creation_date
134147       , last_update_date
134148       , last_updated_by
134149       , last_update_login
134150       , program_update_date
134151       , program_application_id
134152       , program_id
134153       , request_id
134154 )
134155 SELECT
134156         event_id
134157       , p_target_ledger_id
134158       , p_sla_ledger_id
134159       , p_language
134160       , object_name
134161       , object_type_code
134162       , line_number
134163       , source_application_id
134164       , source_type_code
134165       , source_code
134166       , SUBSTR(source_value ,1,1996)
134167       , SUBSTR(source_meaning,1,200)
134168       , xla_environment_pkg.g_Usr_Id
134169       , TRUNC(SYSDATE)
134170       , TRUNC(SYSDATE)
134171       , xla_environment_pkg.g_Usr_Id
134172       , xla_environment_pkg.g_Login_Id
134173       , TRUNC(SYSDATE)
134174       , xla_environment_pkg.g_Prog_Appl_Id
134175       , xla_environment_pkg.g_Prog_Id
134176       , xla_environment_pkg.g_Req_Id
134177   FROM (
134178        SELECT xet.event_id                  event_id
134179             , 0                             line_number
134180             , CASE r
134181                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
134182                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
134183                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
134184                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
134185                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
134186                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
134187                 
134188                ELSE null
134189               END                           object_name
134190             , CASE r
134191                 WHEN 1 THEN 'HEADER' 
134192                 WHEN 2 THEN 'HEADER' 
134193                 WHEN 3 THEN 'HEADER' 
134194                 WHEN 4 THEN 'HEADER' 
134195                 WHEN 5 THEN 'HEADER' 
134196                 WHEN 6 THEN 'HEADER' 
134197                 
134198                 ELSE null
134199               END                           object_type_code
134200             , CASE r
134201                 WHEN 1 THEN '555' 
134202                 WHEN 2 THEN '555' 
134203                 WHEN 3 THEN '555' 
134204                 WHEN 4 THEN '555' 
134205                 WHEN 5 THEN '555' 
134206                 WHEN 6 THEN '555' 
134207                 
134208                 ELSE null
134209               END                           source_application_id
134210             , 'S'             source_type_code
134211             , CASE r
134212                 WHEN 1 THEN 'ENTITY_CODE' 
134213                 WHEN 2 THEN 'CURRENCY_CODE' 
134217                 WHEN 6 THEN 'TRANSACTION_DATE' 
134214                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
134215                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
134216                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
134218                 
134219                 ELSE null
134220               END                           source_code
134221             , CASE r
134222                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
134223                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
134224                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
134225                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
134226                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
134227                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
134228                 
134229                 ELSE null
134230               END                           source_value
134231             , CASE r
134232                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
134233                           1010186
134234                          ,TO_CHAR(h1.CURRENCY_CODE)
134235                          ,'CURRENCY_CODE'
134236                          ,'S'
134237                          ,555)
134238                 
134239                 ELSE null
134240               END               source_meaning
134241         FROM xla_events_gt     xet  
134242       , GMF_XLA_EXTRACT_HEADERS  h1
134243             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
134244        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
134245          AND xet.event_type_code = C_EVENT_TYPE_CODE
134246             AND h1.event_id = xet.event_id
134247 
134248 )
134249 ;
134250 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
134251 
134252       trace
134253          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
134254          ,p_level    => C_LEVEL_STATEMENT
134255          ,p_module   => l_log_module);
134256 
134257 END IF;
134258 --
134259 
134260 
134261 
134262 --
134263 INSERT INTO xla_diag_sources --line1
134264 (
134265         event_id
134266       , ledger_id
134267       , sla_ledger_id
134268       , description_language
134269       , object_name
134270       , object_type_code
134271       , line_number
134272       , source_application_id
134273       , source_type_code
134274       , source_code
134275       , source_value
134276       , source_meaning
134277       , created_by
134278       , creation_date
134279       , last_update_date
134280       , last_updated_by
134281       , last_update_login
134282       , program_update_date
134283       , program_application_id
134284       , program_id
134285       , request_id
134286 )
134287 SELECT  event_id
134288       , p_target_ledger_id
134289       , p_sla_ledger_id
134290       , p_language
134291       , object_name
134292       , object_type_code
134293       , line_number
134294       , source_application_id
134295       , source_type_code
134296       , source_code
134297       , SUBSTR(source_value,1,1996)
134298       , SUBSTR(source_meaning,1,200)
134299       , xla_environment_pkg.g_Usr_Id
134300       , TRUNC(SYSDATE)
134301       , TRUNC(SYSDATE)
134302       , xla_environment_pkg.g_Usr_Id
134303       , xla_environment_pkg.g_Login_Id
134304       , TRUNC(SYSDATE)
134305       , xla_environment_pkg.g_Prog_Appl_Id
134306       , xla_environment_pkg.g_Prog_Id
134307       , xla_environment_pkg.g_Req_Id
134308   FROM (
134309        SELECT xet.event_id                  event_id
134310             , l2.line_number                 line_number
134311             , CASE r
134312                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
134313                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
134314                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
134315                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
134316                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
134317                 
134318                ELSE null
134319               END                           object_name
134320             , CASE r
134321                 WHEN 1 THEN 'LINE' 
134322                 WHEN 2 THEN 'LINE' 
134323                 WHEN 3 THEN 'LINE' 
134324                 WHEN 4 THEN 'LINE' 
134325                 WHEN 5 THEN 'LINE' 
134326                 
134327                 ELSE null
134328               END                           object_type_code
134329             , CASE r
134330                 WHEN 1 THEN '555' 
134331                 WHEN 2 THEN '555' 
134332                 WHEN 3 THEN '555' 
134333                 WHEN 4 THEN '555' 
134334                 WHEN 5 THEN '555' 
134335                 
134336                 ELSE null
134337               END                           source_application_id
134338             , 'S'             source_type_code
134339             , CASE r
134340                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
134341                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
134342                 WHEN 3 THEN 'ENTERED_AMOUNT' 
134343                 WHEN 4 THEN 'LINE_ID' 
134344                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
134345                 
134346                 ELSE null
134347               END                           source_code
134348             , CASE r
134349                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
134350                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
134351                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
134355                 ELSE null
134352                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
134353                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
134354                 
134356               END                           source_value
134357             , null              source_meaning
134358          FROM  xla_events_gt     xet  
134359         , GMF_XLA_EXTRACT_LINES  l2
134360             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
134361         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
134362           AND xet.event_type_code = C_EVENT_TYPE_CODE
134363             AND l2.event_id          = xet.event_id
134364 
134365 )
134366 ;
134367 --
134368 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
134369 
134370       trace
134371          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
134372          ,p_level    => C_LEVEL_STATEMENT
134373          ,p_module   => l_log_module);
134374 
134375 END IF;
134376 
134377 
134378 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134379       trace
134380          (p_msg      => 'END of insert_sources_260'
134381          ,p_level    => C_LEVEL_PROCEDURE
134382          ,p_module   => l_log_module);
134383 END IF;
134384 EXCEPTION
134385   WHEN xla_exceptions_pkg.application_exception THEN
134386       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
134387             trace
134388                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
134389                ,p_level    => C_LEVEL_EXCEPTION
134390                ,p_module   => l_log_module);
134391       END IF;
134392       RAISE;
134393   WHEN OTHERS THEN
134394       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
134395             trace
134396                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
134397                ,p_level    => C_LEVEL_EXCEPTION
134398                ,p_module   => l_log_module);
134399        END IF;
134400        xla_exceptions_pkg.raise_message
134401            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_260');
134402 END insert_sources_260;
134403 --
134404 
134405 ---------------------------------------
134406 --
134407 -- PRIVATE FUNCTION
134408 --         EventType_260
134409 --
134410 ----------------------------------------
134411 --
134412 FUNCTION EventType_260
134413        (p_application_id         IN NUMBER
134414        ,p_base_ledger_id         IN NUMBER
134415        ,p_target_ledger_id       IN NUMBER
134416        ,p_language               IN VARCHAR2
134417        ,p_currency_code          IN VARCHAR2
134418        ,p_sla_ledger_id          IN NUMBER
134419        ,p_pad_start_date         IN DATE
134420        ,p_pad_end_date           IN DATE
134421        ,p_primary_ledger_id      IN NUMBER)
134422 RETURN BOOLEAN IS
134423 --
134424 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_SHIP';
134425 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_SHIP';
134426 
134427 l_calculate_acctd_flag   VARCHAR2(1) :='N';
134428 l_calculate_g_l_flag     VARCHAR2(1) :='N';
134429 --
134430 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
134431 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
134432 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
134433 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
134434 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
134435 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
134436 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
134437 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
134438 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
134439 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
134440 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
134441 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
134442 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
134443 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
134444 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
134445 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
134446 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
134447 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
134448 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
134449 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
134450 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
134451 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
134452 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
134453 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
134454 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
134455 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
134456 
134457 l_event_id                             NUMBER;
134458 l_previous_event_id                    NUMBER;
134459 l_first_event_id                       NUMBER;
134460 l_last_event_id                        NUMBER;
134461 
134462 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
134463 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
134464 --
134465 --
134469 l_event_class_name          VARCHAR2(80) := 'Direct Interorg Shipment';
134466 l_result                    BOOLEAN := TRUE;
134467 l_rows                      NUMBER  := 1000;
134468 l_event_type_name           VARCHAR2(80) := 'Direct Interorg Shipment, no Transfer Pricing';
134470 l_description               VARCHAR2(4000);
134471 l_transaction_reversal      NUMBER;
134472 l_ae_header_id              NUMBER;
134473 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
134474 l_log_module                VARCHAR2(240);
134475 --
134476 l_acct_reversal_source      VARCHAR2(30);
134477 l_trx_reversal_source       VARCHAR2(30);
134478 
134479 l_continue_with_lines       BOOLEAN := TRUE;
134480 --
134481 l_acc_rev_gl_date_source    DATE;                      -- 4262811
134482 --
134483 type t_array_event_id is table of number index by binary_integer;
134484 
134485 l_rec_array_event                    t_rec_array_event;
134486 l_null_rec_array_event               t_rec_array_event;
134487 l_array_ae_header_id                 xla_number_array_type;
134488 l_actual_flag                        VARCHAR2(1) := NULL;
134489 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
134490 l_balance_type_code                  VARCHAR2(1) :=NULL;
134491 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
134492 
134493 --
134494 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
134495 --
134496 
134497 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
134498 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
134499 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
134500 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
134501 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
134502 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
134503 
134504 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
134505 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
134506 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
134507 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
134508 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
134509 
134510 l_array_source_6              t_array_source_6;
134511 l_array_source_7              t_array_source_7;
134512 l_array_source_8              t_array_source_8;
134513 l_array_source_9              t_array_source_9;
134514 l_array_source_10              t_array_source_10;
134515 l_array_source_12              t_array_source_12;
134516 
134517 l_array_source_1      t_array_source_1;
134518 l_array_source_2      t_array_source_2;
134519 l_array_source_3      t_array_source_3;
134520 l_array_source_5      t_array_source_5;
134521 l_array_source_11      t_array_source_11;
134522 
134523 --
134524 CURSOR header_cur
134525 IS
134526 SELECT /*+ leading(xet) cardinality(xet,1) */
134527 -- Event Type Code: DIR_INTERORG_SHIP
134528 -- Event Class Code: DIR_INTERORG_SHIP
134529     xet.entity_id
134530   , xet.legal_entity_id
134531   , xet.entity_code
134532   , xet.transaction_number
134533   , xet.event_id
134534   , xet.event_class_code
134535   , xet.event_type_code
134536   , xet.event_number
134537   , xet.event_date
134538   , xet.transaction_date
134539   , xet.reference_num_1
134540   , xet.reference_num_2
134541   , xet.reference_num_3
134542   , xet.reference_num_4
134543   , xet.reference_char_1
134544   , xet.reference_char_2
134545   , xet.reference_char_3
134546   , xet.reference_char_4
134547   , xet.reference_date_1
134548   , xet.reference_date_2
134549   , xet.reference_date_3
134550   , xet.reference_date_4
134551   , xet.event_created_by
134552   , xet.budgetary_control_flag 
134553   , h1.ENTITY_CODE    source_6
134554   , h1.CURRENCY_CODE    source_7
134555   , h1.CURRENCY_CONVERSION_DATE    source_8
134556   , h1.CURRENCY_CONVERSION_RATE    source_9
134557   , h1.CURRENCY_CONVERSION_TYPE    source_10
134558   , h1.TRANSACTION_DATE    source_12
134559   FROM xla_events_gt     xet 
134560   , GMF_XLA_EXTRACT_HEADERS  h1
134561  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
134562    and xet.event_type_code = C_EVENT_TYPE_CODE
134563    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
134564 
134565  ORDER BY event_id
134566 ;
134567 
134568 
134569 --
134570 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
134571 IS
134572 SELECT /*+ leading(xet) cardinality(xet,1) */
134573 -- Event Type Code: DIR_INTERORG_SHIP
134574 -- Event Class Code: DIR_INTERORG_SHIP
134575     xet.entity_id
134576    ,xet.legal_entity_id
134577    ,xet.entity_code
134578    ,xet.transaction_number
134579    ,xet.event_id
134580    ,xet.event_class_code
134581    ,xet.event_type_code
134582    ,xet.event_number
134583    ,xet.event_date
134584    ,xet.transaction_date
134585    ,xet.reference_num_1
134586    ,xet.reference_num_2
134587    ,xet.reference_num_3
134588    ,xet.reference_num_4
134589    ,xet.reference_char_1
134590    ,xet.reference_char_2
134591    ,xet.reference_char_3
134595    ,xet.reference_date_3
134592    ,xet.reference_char_4
134593    ,xet.reference_date_1
134594    ,xet.reference_date_2
134596    ,xet.reference_date_4
134597    ,xet.event_created_by
134598    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
134599   , l2.TRANSACTION_ACCOUNT_ID    source_1
134600   , l2.JOURNAL_LINE_TYPE    source_2
134601   , l2.ENTERED_AMOUNT    source_3
134602   , l2.LINE_ID    source_5
134603   , l2.ACCOUNTED_AMOUNT    source_11
134604   FROM xla_events_gt     xet 
134605   , GMF_XLA_EXTRACT_LINES  l2
134606  WHERE xet.event_id between x_first_event_id and x_last_event_id
134607    and xet.event_date between p_pad_start_date and p_pad_end_date
134608    and xet.event_type_code = C_EVENT_TYPE_CODE
134609    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
134610 ;
134611 
134612 --
134613 BEGIN
134614 IF g_log_enabled THEN
134615    l_log_module := C_DEFAULT_MODULE||'.EventType_260';
134616 END IF;
134617 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134618    trace
134619       (p_msg      => 'BEGIN of EventType_260'
134620       ,p_level    => C_LEVEL_PROCEDURE
134621       ,p_module   => l_log_module);
134622 END IF;
134623 
134624 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
134625    trace
134626       (p_msg      => 'p_application_id = '||p_application_id||
134627                      ' - p_base_ledger_id = '||p_base_ledger_id||
134628                      ' - p_target_ledger_id  = '||p_target_ledger_id||
134629                      ' - p_language = '||p_language||
134630                      ' - p_currency_code = '||p_currency_code||
134631                      ' - p_sla_ledger_id = '||p_sla_ledger_id
134632       ,p_level    => C_LEVEL_STATEMENT
134633       ,p_module   => l_log_module);
134634 END IF;
134635 --
134636 -- initialze arrays
134637 --
134638 g_array_event.DELETE;
134639 l_rec_array_event := l_null_rec_array_event;
134640 --
134641 --------------------------------------
134642 -- 4262811 Initialze MPA Line Number
134643 --------------------------------------
134644 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
134645 
134646 --
134647 
134648 --
134649 OPEN header_cur;
134650 --
134651 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
134652    trace
134653    (p_msg      => 'SQL - FETCH header_cur'
134654    ,p_level    => C_LEVEL_STATEMENT
134655    ,p_module   => l_log_module);
134656 END IF;
134657 --
134658 LOOP
134659 FETCH header_cur BULK COLLECT INTO
134660         l_array_entity_id
134661       , l_array_legal_entity_id
134662       , l_array_entity_code
134663       , l_array_transaction_num
134664       , l_array_event_id
134665       , l_array_class_code
134666       , l_array_event_type
134667       , l_array_event_number
134668       , l_array_event_date
134669       , l_array_transaction_date
134670       , l_array_reference_num_1
134671       , l_array_reference_num_2
134672       , l_array_reference_num_3
134673       , l_array_reference_num_4
134674       , l_array_reference_char_1
134675       , l_array_reference_char_2
134676       , l_array_reference_char_3
134677       , l_array_reference_char_4
134678       , l_array_reference_date_1
134679       , l_array_reference_date_2
134680       , l_array_reference_date_3
134681       , l_array_reference_date_4
134682       , l_array_event_created_by
134683       , l_array_budgetary_control_flag 
134684       , l_array_source_6
134685       , l_array_source_7
134686       , l_array_source_8
134687       , l_array_source_9
134688       , l_array_source_10
134689       , l_array_source_12
134690       LIMIT l_rows;
134691 --
134692 IF (C_LEVEL_EVENT >= g_log_level) THEN
134693    trace
134694    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
134695    ,p_level    => C_LEVEL_EVENT
134696    ,p_module   => l_log_module);
134697 END IF;
134698 --
134699 EXIT WHEN l_array_entity_id.COUNT = 0;
134700 
134701 -- initialize arrays
134702 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
134703 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
134704 
134705 --
134706 -- Bug 4458708
134707 --
134708 XLA_AE_LINES_PKG.g_LineNumber := 0;
134709 
134710 
134711 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
134712 g_last_hdr_idx := l_array_event_id.LAST;
134713 --
134714 -- loop for the headers. Each iteration is for each header extract row
134715 -- fetched in header cursor
134716 --
134717 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
134718 
134719 --
134720 -- set event info as cache for other routines to refer event attributes
134721 --
134722 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
134723    (p_application_id           => p_application_id
134724    ,p_primary_ledger_id        => p_primary_ledger_id
134725    ,p_base_ledger_id           => p_base_ledger_id
134726    ,p_target_ledger_id         => p_target_ledger_id
134727    ,p_entity_id                => l_array_entity_id(hdr_idx)
134728    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
134729    ,p_entity_code              => l_array_entity_code(hdr_idx)
134730    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
134731    ,p_event_id                 => l_array_event_id(hdr_idx)
134732    ,p_event_class_code         => l_array_class_code(hdr_idx)
134733    ,p_event_type_code          => l_array_event_type(hdr_idx)
134734    ,p_event_number             => l_array_event_number(hdr_idx)
134738    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
134735    ,p_event_date               => l_array_event_date(hdr_idx)
134736    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
134737    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
134739    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
134740    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
134741    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
134742    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
134743    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
134744    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
134745    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
134746    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
134747    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
134748    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
134749    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
134750    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
134751 
134752 --
134753 -- set the status of entry to C_VALID (0)
134754 --
134755 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
134756 
134757 --
134758 -- initialize a row for ae header
134759 --
134760 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
134761 
134762 l_event_id := l_array_event_id(hdr_idx);
134763 
134764 --
134765 -- storing the hdr_idx for event. May be used by line cursor.
134766 --
134767 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
134768 
134769 --
134770 -- store sources from header extract. This can be improved to
134771 -- store only those sources from header extract that may be used in lines
134772 --
134773 
134774 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
134775 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
134776 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
134777 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
134778 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
134779 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
134780 
134781 --
134782 -- initilaize the status of ae headers for diffrent balance types
134783 -- the status is initialised to C_NOT_CREATED (2)
134784 --
134785 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
134786 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
134787 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
134788 
134789 --
134790 -- call api to validate and store accounting attributes for header
134791 --
134792 
134793 ------------------------------------------------------------
134794 -- Accrual Reversal : to get date for Standard Source (NONE)
134795 ------------------------------------------------------------
134796 l_acc_rev_gl_date_source := NULL;
134797 
134798      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
134799       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
134800 
134801 
134802 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
134803 
134804 XLA_AE_HEADER_PKG.SetJeCategoryName;
134805 
134806 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
134807 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
134808 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
134809 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
134810 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
134811 
134812 
134813 -- No header level analytical criteria
134814 
134815 --
134816 --accounting attribute enhancement, bug 3612931
134817 --
134818 l_trx_reversal_source := SUBSTR(NULL, 1,30);
134819 
134820 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
134821    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
134822 
134823    xla_accounting_err_pkg.build_message
134824       (p_appli_s_name            => 'XLA'
134825       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
134826       ,p_token_1                 => 'ACCT_ATTR_NAME'
134827       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
134828       ,p_token_2                 => 'PRODUCT_NAME'
134829       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
134830       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
134831       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
134832       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
134833 
134834 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
134835    --
134836    -- following sets the accounting attributes needed to reverse
134837    -- accounting for a distributeion
134838    --
134839    xla_ae_lines_pkg.SetTrxReversalAttrs
134840       (p_event_id              => l_event_id
134841       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
134842       ,p_trx_reversal_source   => l_trx_reversal_source);
134843 
134844 END IF;
134845 
134846 
134850 --
134847 ----------------------------------------------------------------
134848 -- 4262811 -  update the header statuses to invalid in need be
134849 ----------------------------------------------------------------
134851 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
134852 
134853 
134854   -----------------------------------------------
134855   -- No accrual reversal for the event class/type
134856   -----------------------------------------------
134857 ----------------------------------------------------------------
134858 
134859 --
134860 -- this ends the header loop iteration for one bulk fetch
134861 --
134862 END LOOP;
134863 
134864 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
134865 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
134866 
134867 --
134868 -- insert dummy rows into lines gt table that were created due to
134869 -- transaction reversals
134870 --
134871 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
134872    l_result := XLA_AE_LINES_PKG.InsertLines;
134873 END IF;
134874 
134875 --
134876 -- reset the temp_line_num for each set of events fetched from header
134877 -- cursor rather than doing it for each new event in line cursor
134878 -- Bug 3939231
134879 --
134880 xla_ae_lines_pkg.g_temp_line_num := 0;
134881 
134882 
134883 
134884 --
134885 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
134886 --
134887 --
134888 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
134889 
134890       trace
134891          (p_msg      => 'SQL - FETCH line_cur'
134892          ,p_level    => C_LEVEL_STATEMENT
134893          ,p_module   => l_log_module);
134894 
134895 END IF;
134896 --
134897 --
134898 LOOP
134899   --
134900   FETCH line_cur BULK COLLECT INTO
134901         l_array_entity_id
134902       , l_array_legal_entity_id
134903       , l_array_entity_code
134904       , l_array_transaction_num
134905       , l_array_event_id
134906       , l_array_class_code
134907       , l_array_event_type
134908       , l_array_event_number
134909       , l_array_event_date
134910       , l_array_transaction_date
134911       , l_array_reference_num_1
134912       , l_array_reference_num_2
134913       , l_array_reference_num_3
134914       , l_array_reference_num_4
134915       , l_array_reference_char_1
134916       , l_array_reference_char_2
134917       , l_array_reference_char_3
134918       , l_array_reference_char_4
134919       , l_array_reference_date_1
134920       , l_array_reference_date_2
134921       , l_array_reference_date_3
134922       , l_array_reference_date_4
134923       , l_array_event_created_by
134924       , l_array_budgetary_control_flag
134925       , l_array_extract_line_num 
134926       , l_array_source_1
134927       , l_array_source_2
134928       , l_array_source_3
134929       , l_array_source_5
134930       , l_array_source_11
134931       LIMIT l_rows;
134932 
134933   --
134934   IF (C_LEVEL_EVENT >= g_log_level) THEN
134935             trace
134936                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
134937                ,p_level    => C_LEVEL_EVENT
134938                ,p_module   => l_log_module);
134939   END IF;
134940   --
134941   EXIT WHEN l_array_entity_id.count = 0;
134942 
134943   XLA_AE_LINES_PKG.g_rec_lines := null;
134944 
134945 --
134946 -- Bug 4458708
134947 --
134948 XLA_AE_LINES_PKG.g_LineNumber := 0;
134949 --
134950 --
134951 
134952 FOR Idx IN 1..l_array_event_id.count LOOP
134953    --
134954    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
134955    --
134956    l_event_id := l_array_event_id(idx);  -- 5648433
134957 
134958    --
134959    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
134960    --
134961 
134962    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
134963              (g_array_event(l_event_id).array_value_num('header_index'))
134964          ,'N'
134965          ) <> 'Y'
134966    THEN
134967       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
134968          trace
134969             (p_msg      => 'Trancaction revesal option is not Y '
134970             ,p_level    => C_LEVEL_STATEMENT
134971             ,p_module   => l_log_module);
134972       END IF;
134973 
134974 --
134975 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
134976 --
134977 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
134978 --
134979 -- set event info as cache for other routines to refer event attributes
134980 --
134981 
134982 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
134983    l_previous_event_id := l_event_id;
134984 
134985    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
134986       (p_application_id           => p_application_id
134987       ,p_primary_ledger_id        => p_primary_ledger_id
134988       ,p_base_ledger_id           => p_base_ledger_id
134989       ,p_target_ledger_id         => p_target_ledger_id
134990       ,p_entity_id                => l_array_entity_id(Idx)
134991       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
134992       ,p_entity_code              => l_array_entity_code(Idx)
134993       ,p_transaction_num          => l_array_transaction_num(Idx)
134994       ,p_event_id                 => l_array_event_id(Idx)
134998       ,p_event_date               => l_array_event_date(Idx)
134995       ,p_event_class_code         => l_array_class_code(Idx)
134996       ,p_event_type_code          => l_array_event_type(Idx)
134997       ,p_event_number             => l_array_event_number(Idx)
134999       ,p_transaction_date         => l_array_transaction_date(Idx)
135000       ,p_reference_num_1          => l_array_reference_num_1(Idx)
135001       ,p_reference_num_2          => l_array_reference_num_2(Idx)
135002       ,p_reference_num_3          => l_array_reference_num_3(Idx)
135003       ,p_reference_num_4          => l_array_reference_num_4(Idx)
135004       ,p_reference_char_1         => l_array_reference_char_1(Idx)
135005       ,p_reference_char_2         => l_array_reference_char_2(Idx)
135006       ,p_reference_char_3         => l_array_reference_char_3(Idx)
135007       ,p_reference_char_4         => l_array_reference_char_4(Idx)
135008       ,p_reference_date_1         => l_array_reference_date_1(Idx)
135009       ,p_reference_date_2         => l_array_reference_date_2(Idx)
135010       ,p_reference_date_3         => l_array_reference_date_3(Idx)
135011       ,p_reference_date_4         => l_array_reference_date_4(Idx)
135012       ,p_event_created_by         => l_array_event_created_by(Idx)
135013       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
135014        --
135015 END IF;
135016 
135017 
135018 
135019 --
135020 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
135021 
135022 l_acct_reversal_source := SUBSTR(NULL, 1,30);
135023 
135024 IF l_continue_with_lines THEN
135025    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
135026       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
135027 
135028       xla_accounting_err_pkg.build_message
135029          (p_appli_s_name            => 'XLA'
135030          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
135031          ,p_token_1                 => 'LINE_NUMBER'
135032          ,p_value_1                 => l_array_extract_line_num(Idx)
135033          ,p_token_2                 => 'PRODUCT_NAME'
135034          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
135035          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
135036          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
135037          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
135038 
135039    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
135040       --
135041       -- following sets the accounting attributes needed to reverse
135042       -- accounting for a distributeion
135043       --
135044 
135045       --
135046       -- 5217187
135047       --
135048       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
135049       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
135050                                        g_array_event(l_event_id).array_value_num('header_index'));
135051       --
135052       --
135053 
135054       -- No reversal code generated
135055 
135056       xla_ae_lines_pkg.SetAcctReversalAttrs
135057          (p_event_id             => l_event_id
135058          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
135059          ,p_calculate_acctd_flag => l_calculate_acctd_flag
135060          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
135061    END IF;
135062 
135063    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
135064        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
135065 
135066 --
135067 AcctLineType_98 (
135068  p_application_id  => p_application_id
135069  ,p_event_id     => l_event_id
135070  ,p_calculate_acctd_flag => l_calculate_acctd_flag
135071  ,p_calculate_g_l_flag => l_calculate_g_l_flag
135072  ,p_actual_flag => l_actual_flag
135073  ,p_balance_type_code => l_balance_type_code
135074  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
135075  
135076  , p_source_1 => l_array_source_1(Idx)
135077  , p_source_2 => l_array_source_2(Idx)
135078  , p_source_3 => l_array_source_3(Idx)
135079  , p_source_5 => l_array_source_5(Idx)
135080  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
135081  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
135082  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
135083  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
135084  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
135085  , p_source_11 => l_array_source_11(Idx)
135086  );
135087 If(l_balance_type_code = 'A') THEN
135088   l_actual_gain_loss_ref := l_gain_or_loss_ref;
135089 END IF;
135090 
135091 --
135092 
135093 
135094 --
135095 AcctLineType_115 (
135096  p_application_id  => p_application_id
135097  ,p_event_id     => l_event_id
135098  ,p_calculate_acctd_flag => l_calculate_acctd_flag
135099  ,p_calculate_g_l_flag => l_calculate_g_l_flag
135100  ,p_actual_flag => l_actual_flag
135101  ,p_balance_type_code => l_balance_type_code
135102  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
135103  
135104  , p_source_1 => l_array_source_1(Idx)
135105  , p_source_2 => l_array_source_2(Idx)
135106  , p_source_3 => l_array_source_3(Idx)
135107  , p_source_5 => l_array_source_5(Idx)
135108  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
135109  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
135113  , p_source_11 => l_array_source_11(Idx)
135110  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
135111  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
135112  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
135114  );
135115 If(l_balance_type_code = 'A') THEN
135116   l_actual_gain_loss_ref := l_gain_or_loss_ref;
135117 END IF;
135118 
135119 --
135120 
135121 
135122 --
135123 AcctLineType_164 (
135124  p_application_id  => p_application_id
135125  ,p_event_id     => l_event_id
135126  ,p_calculate_acctd_flag => l_calculate_acctd_flag
135127  ,p_calculate_g_l_flag => l_calculate_g_l_flag
135128  ,p_actual_flag => l_actual_flag
135129  ,p_balance_type_code => l_balance_type_code
135130  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
135131  
135132  , p_source_1 => l_array_source_1(Idx)
135133  , p_source_2 => l_array_source_2(Idx)
135134  , p_source_3 => l_array_source_3(Idx)
135135  , p_source_5 => l_array_source_5(Idx)
135136  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
135137  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
135138  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
135139  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
135140  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
135141  , p_source_11 => l_array_source_11(Idx)
135142  );
135143 If(l_balance_type_code = 'A') THEN
135144   l_actual_gain_loss_ref := l_gain_or_loss_ref;
135145 END IF;
135146 
135147 --
135148 
135149 
135150 --
135151 AcctLineType_190 (
135152  p_application_id  => p_application_id
135153  ,p_event_id     => l_event_id
135154  ,p_calculate_acctd_flag => l_calculate_acctd_flag
135155  ,p_calculate_g_l_flag => l_calculate_g_l_flag
135156  ,p_actual_flag => l_actual_flag
135157  ,p_balance_type_code => l_balance_type_code
135158  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
135159  
135160  , p_source_1 => l_array_source_1(Idx)
135161  , p_source_2 => l_array_source_2(Idx)
135162  , p_source_3 => l_array_source_3(Idx)
135163  , p_source_5 => l_array_source_5(Idx)
135164  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
135165  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
135166  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
135167  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
135168  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
135169  , p_source_11 => l_array_source_11(Idx)
135170  );
135171 If(l_balance_type_code = 'A') THEN
135172   l_actual_gain_loss_ref := l_gain_or_loss_ref;
135173 END IF;
135174 
135175 --
135176 
135177 
135178 --
135179 AcctLineType_246 (
135180  p_application_id  => p_application_id
135181  ,p_event_id     => l_event_id
135182  ,p_calculate_acctd_flag => l_calculate_acctd_flag
135183  ,p_calculate_g_l_flag => l_calculate_g_l_flag
135184  ,p_actual_flag => l_actual_flag
135185  ,p_balance_type_code => l_balance_type_code
135186  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
135187  
135188  , p_source_1 => l_array_source_1(Idx)
135189  , p_source_2 => l_array_source_2(Idx)
135190  , p_source_3 => l_array_source_3(Idx)
135191  , p_source_5 => l_array_source_5(Idx)
135192  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
135193  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
135194  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
135195  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
135196  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
135197  , p_source_11 => l_array_source_11(Idx)
135198  );
135199 If(l_balance_type_code = 'A') THEN
135200   l_actual_gain_loss_ref := l_gain_or_loss_ref;
135201 END IF;
135202 
135203 --
135204 
135205       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
135206       -- or secondary ledger that has different currency with primary
135207       -- or alc that is calculated by sla
135208       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
135209             (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'))
135210 
135211 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
135212 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
135213           AND (l_actual_flag = 'A')) THEN
135214         XLA_AE_LINES_PKG.CreateGainOrLossLines(
135215           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
135216          ,p_application_id   => p_application_id
135217          ,p_amb_context_code => 'DEFAULT'
135218          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
135219          ,p_event_class_code => C_EVENT_CLASS_CODE
135220          ,p_event_type_code  => C_EVENT_TYPE_CODE
135221          
135222          ,p_gain_ccid        => -1
135223          ,p_loss_ccid        => -1
135224 
135225          ,p_actual_flag      => l_actual_flag
135226          ,p_enc_flag         => null
135227          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
135228          ,p_enc_g_l_ref      => null
135229          );
135230       END IF;
135231    END IF;
135232 END IF;
135233 
135234    ELSE
135235       --
135239          trace
135236       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
135237       --
135238       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
135240             (p_msg      => 'Trancaction revesal option is Y'
135241             ,p_level    => C_LEVEL_STATEMENT
135242             ,p_module   => l_log_module);
135243       END IF;
135244    END IF;
135245 
135246 END LOOP;
135247 l_result := XLA_AE_LINES_PKG.InsertLines ;
135248 end loop;
135249 close line_cur;
135250 
135251 
135252 --
135253 -- insert headers into xla_ae_headers_gt table
135254 --
135255 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
135256 
135257 -- insert into errors table here.
135258 
135259 END LOOP;
135260 
135261 --
135262 -- 4865292
135263 --
135264 -- Compare g_hdr_extract_count with event count in
135265 -- CreateHeadersAndLines.
135266 --
135267 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
135268 
135269 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
135270    trace (p_msg     => '# rows extracted from header extract objects '
135271                     || ' (running total): '
135272                     || g_hdr_extract_count
135273          ,p_level   => C_LEVEL_STATEMENT
135274          ,p_module  => l_log_module);
135275 END IF;
135276 
135277 CLOSE header_cur;
135278 --
135279 
135280 --
135281 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135282    trace
135283       (p_msg      => 'END of EventType_260'
135284       ,p_level    => C_LEVEL_PROCEDURE
135285       ,p_module   => l_log_module);
135286 END IF;
135287 --
135288 RETURN l_result;
135289 EXCEPTION
135290 WHEN xla_exceptions_pkg.application_exception THEN
135291    
135292 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
135293 
135294    
135295 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
135296 
135297    RAISE;
135298 
135299 WHEN NO_DATA_FOUND THEN
135300 
135301 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
135302 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
135303 
135304 FOR header_record IN header_cur
135305 LOOP
135306     l_array_header_events(header_record.event_id) := header_record.event_id;
135307 END LOOP;
135308 
135309 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
135310 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
135311 
135312 fnd_file.put_line(fnd_file.LOG, '                    ');
135313 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
135314 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
135315 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
135316 
135317 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
135318 LOOP
135319 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
135320 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
135321         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
135322 	END IF;
135323 END LOOP;
135324 
135325 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
135326 fnd_file.put_line(fnd_file.LOG, '                    ');
135327 
135328 
135329 xla_exceptions_pkg.raise_message
135330       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_260');
135331 
135332 
135333 WHEN OTHERS THEN
135334    xla_exceptions_pkg.raise_message
135335       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_260');
135336 END EventType_260;
135337 --
135338 
135339 ---------------------------------------
135340 --
135341 -- PRIVATE PROCEDURE
135342 --         insert_sources_261
135343 --
135344 ----------------------------------------
135345 --
135346 PROCEDURE insert_sources_261(
135347                                 p_target_ledger_id       IN NUMBER
135348                               , p_language               IN VARCHAR2
135349                               , p_sla_ledger_id          IN NUMBER
135350                               , p_pad_start_date         IN DATE
135351                               , p_pad_end_date           IN DATE
135352                          )
135353 IS
135354 
135355 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_SHIP_TP';
135356 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_SHIP';
135357 p_apps_owner                   VARCHAR2(30);
135358 l_log_module                   VARCHAR2(240);
135359 BEGIN
135360 IF g_log_enabled THEN
135361       l_log_module := C_DEFAULT_MODULE||'.insert_sources_261';
135362 END IF;
135363 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135364 
135365       trace
135366          (p_msg      => 'BEGIN of insert_sources_261'
135367          ,p_level    => C_LEVEL_PROCEDURE
135368          ,p_module   => l_log_module);
135369 
135370 END IF;
135371 
135372 -- select APPS owner
135373 SELECT oracle_username
135374   INTO p_apps_owner
135375   FROM fnd_oracle_userid
135376  WHERE read_only_flag = 'U'
135377 ;
135378 
135379 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
135380       trace
135381          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
135382                         ' - p_language = '||p_language||
135383                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
135384                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
135388          ,p_module   => l_log_module);
135385                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
135386                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
135387          ,p_level    => C_LEVEL_STATEMENT
135389 END IF;
135390 
135391 
135392 --
135393 INSERT INTO xla_diag_sources --hdr1
135394 (
135395         event_id
135396       , ledger_id
135397       , sla_ledger_id
135398       , description_language
135399       , object_name
135400       , object_type_code
135401       , line_number
135402       , source_application_id
135403       , source_type_code
135404       , source_code
135405       , source_value
135406       , source_meaning
135407       , created_by
135408       , creation_date
135409       , last_update_date
135410       , last_updated_by
135411       , last_update_login
135412       , program_update_date
135413       , program_application_id
135414       , program_id
135415       , request_id
135416 )
135417 SELECT
135418         event_id
135419       , p_target_ledger_id
135420       , p_sla_ledger_id
135421       , p_language
135422       , object_name
135423       , object_type_code
135424       , line_number
135425       , source_application_id
135426       , source_type_code
135427       , source_code
135428       , SUBSTR(source_value ,1,1996)
135429       , SUBSTR(source_meaning,1,200)
135430       , xla_environment_pkg.g_Usr_Id
135431       , TRUNC(SYSDATE)
135432       , TRUNC(SYSDATE)
135433       , xla_environment_pkg.g_Usr_Id
135434       , xla_environment_pkg.g_Login_Id
135435       , TRUNC(SYSDATE)
135436       , xla_environment_pkg.g_Prog_Appl_Id
135437       , xla_environment_pkg.g_Prog_Id
135438       , xla_environment_pkg.g_Req_Id
135439   FROM (
135440        SELECT xet.event_id                  event_id
135441             , 0                             line_number
135442             , CASE r
135443                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
135444                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
135445                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
135446                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
135447                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
135448                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
135449                 
135450                ELSE null
135451               END                           object_name
135452             , CASE r
135453                 WHEN 1 THEN 'HEADER' 
135454                 WHEN 2 THEN 'HEADER' 
135455                 WHEN 3 THEN 'HEADER' 
135456                 WHEN 4 THEN 'HEADER' 
135457                 WHEN 5 THEN 'HEADER' 
135458                 WHEN 6 THEN 'HEADER' 
135459                 
135460                 ELSE null
135461               END                           object_type_code
135462             , CASE r
135463                 WHEN 1 THEN '555' 
135464                 WHEN 2 THEN '555' 
135465                 WHEN 3 THEN '555' 
135466                 WHEN 4 THEN '555' 
135467                 WHEN 5 THEN '555' 
135468                 WHEN 6 THEN '555' 
135469                 
135470                 ELSE null
135471               END                           source_application_id
135472             , 'S'             source_type_code
135473             , CASE r
135474                 WHEN 1 THEN 'ENTITY_CODE' 
135475                 WHEN 2 THEN 'CURRENCY_CODE' 
135476                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
135477                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
135478                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
135479                 WHEN 6 THEN 'TRANSACTION_DATE' 
135480                 
135481                 ELSE null
135482               END                           source_code
135483             , CASE r
135484                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
135485                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
135486                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
135487                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
135488                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
135489                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
135490                 
135491                 ELSE null
135492               END                           source_value
135493             , CASE r
135494                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
135495                           1010186
135496                          ,TO_CHAR(h1.CURRENCY_CODE)
135497                          ,'CURRENCY_CODE'
135498                          ,'S'
135499                          ,555)
135500                 
135501                 ELSE null
135502               END               source_meaning
135503         FROM xla_events_gt     xet  
135504       , GMF_XLA_EXTRACT_HEADERS  h1
135505             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
135506        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
135507          AND xet.event_type_code = C_EVENT_TYPE_CODE
135508             AND h1.event_id = xet.event_id
135509 
135510 )
135511 ;
135512 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
135513 
135514       trace
135515          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
135516          ,p_level    => C_LEVEL_STATEMENT
135517          ,p_module   => l_log_module);
135518 
135519 END IF;
135520 --
135521 
135522 
135523 
135524 --
135525 INSERT INTO xla_diag_sources --line1
135526 (
135530       , description_language
135527         event_id
135528       , ledger_id
135529       , sla_ledger_id
135531       , object_name
135532       , object_type_code
135533       , line_number
135534       , source_application_id
135535       , source_type_code
135536       , source_code
135537       , source_value
135538       , source_meaning
135539       , created_by
135540       , creation_date
135541       , last_update_date
135542       , last_updated_by
135543       , last_update_login
135544       , program_update_date
135545       , program_application_id
135546       , program_id
135547       , request_id
135548 )
135549 SELECT  event_id
135550       , p_target_ledger_id
135551       , p_sla_ledger_id
135552       , p_language
135553       , object_name
135554       , object_type_code
135555       , line_number
135556       , source_application_id
135557       , source_type_code
135558       , source_code
135559       , SUBSTR(source_value,1,1996)
135560       , SUBSTR(source_meaning,1,200)
135561       , xla_environment_pkg.g_Usr_Id
135562       , TRUNC(SYSDATE)
135563       , TRUNC(SYSDATE)
135564       , xla_environment_pkg.g_Usr_Id
135565       , xla_environment_pkg.g_Login_Id
135566       , TRUNC(SYSDATE)
135567       , xla_environment_pkg.g_Prog_Appl_Id
135568       , xla_environment_pkg.g_Prog_Id
135569       , xla_environment_pkg.g_Req_Id
135570   FROM (
135571        SELECT xet.event_id                  event_id
135572             , l2.line_number                 line_number
135573             , CASE r
135574                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
135575                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
135576                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
135577                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
135578                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
135579                 
135580                ELSE null
135581               END                           object_name
135582             , CASE r
135583                 WHEN 1 THEN 'LINE' 
135584                 WHEN 2 THEN 'LINE' 
135585                 WHEN 3 THEN 'LINE' 
135586                 WHEN 4 THEN 'LINE' 
135587                 WHEN 5 THEN 'LINE' 
135588                 
135589                 ELSE null
135590               END                           object_type_code
135591             , CASE r
135592                 WHEN 1 THEN '555' 
135593                 WHEN 2 THEN '555' 
135594                 WHEN 3 THEN '555' 
135595                 WHEN 4 THEN '555' 
135596                 WHEN 5 THEN '555' 
135597                 
135598                 ELSE null
135599               END                           source_application_id
135600             , 'S'             source_type_code
135601             , CASE r
135602                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
135603                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
135604                 WHEN 3 THEN 'ENTERED_AMOUNT' 
135605                 WHEN 4 THEN 'LINE_ID' 
135606                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
135607                 
135608                 ELSE null
135609               END                           source_code
135610             , CASE r
135611                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
135612                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
135613                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
135614                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
135615                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
135616                 
135617                 ELSE null
135618               END                           source_value
135619             , null              source_meaning
135620          FROM  xla_events_gt     xet  
135621         , GMF_XLA_EXTRACT_LINES  l2
135622             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
135623         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
135624           AND xet.event_type_code = C_EVENT_TYPE_CODE
135625             AND l2.event_id          = xet.event_id
135626 
135627 )
135628 ;
135629 --
135630 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
135631 
135632       trace
135633          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
135634          ,p_level    => C_LEVEL_STATEMENT
135635          ,p_module   => l_log_module);
135636 
135637 END IF;
135638 
135639 
135640 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135641       trace
135642          (p_msg      => 'END of insert_sources_261'
135643          ,p_level    => C_LEVEL_PROCEDURE
135644          ,p_module   => l_log_module);
135645 END IF;
135646 EXCEPTION
135647   WHEN xla_exceptions_pkg.application_exception THEN
135648       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
135649             trace
135650                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
135651                ,p_level    => C_LEVEL_EXCEPTION
135652                ,p_module   => l_log_module);
135653       END IF;
135654       RAISE;
135655   WHEN OTHERS THEN
135656       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
135657             trace
135658                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
135659                ,p_level    => C_LEVEL_EXCEPTION
135660                ,p_module   => l_log_module);
135661        END IF;
135662        xla_exceptions_pkg.raise_message
135663            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_261');
135664 END insert_sources_261;
135665 --
135669 -- PRIVATE FUNCTION
135666 
135667 ---------------------------------------
135668 --
135670 --         EventType_261
135671 --
135672 ----------------------------------------
135673 --
135674 FUNCTION EventType_261
135675        (p_application_id         IN NUMBER
135676        ,p_base_ledger_id         IN NUMBER
135677        ,p_target_ledger_id       IN NUMBER
135678        ,p_language               IN VARCHAR2
135679        ,p_currency_code          IN VARCHAR2
135680        ,p_sla_ledger_id          IN NUMBER
135681        ,p_pad_start_date         IN DATE
135682        ,p_pad_end_date           IN DATE
135683        ,p_primary_ledger_id      IN NUMBER)
135684 RETURN BOOLEAN IS
135685 --
135686 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_SHIP_TP';
135687 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_SHIP';
135688 
135689 l_calculate_acctd_flag   VARCHAR2(1) :='N';
135690 l_calculate_g_l_flag     VARCHAR2(1) :='N';
135691 --
135692 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
135693 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
135694 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
135695 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
135696 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
135697 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
135698 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
135699 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
135700 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
135701 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
135702 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
135703 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
135704 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
135705 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
135706 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
135707 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
135708 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
135709 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
135710 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
135711 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
135712 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
135713 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
135714 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
135715 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
135716 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
135717 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
135718 
135719 l_event_id                             NUMBER;
135720 l_previous_event_id                    NUMBER;
135721 l_first_event_id                       NUMBER;
135722 l_last_event_id                        NUMBER;
135723 
135724 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
135725 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
135726 --
135727 --
135728 l_result                    BOOLEAN := TRUE;
135729 l_rows                      NUMBER  := 1000;
135730 l_event_type_name           VARCHAR2(80) := 'Direct Interorg Shipment, Transfer Pricing';
135731 l_event_class_name          VARCHAR2(80) := 'Direct Interorg Shipment';
135732 l_description               VARCHAR2(4000);
135733 l_transaction_reversal      NUMBER;
135734 l_ae_header_id              NUMBER;
135735 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
135736 l_log_module                VARCHAR2(240);
135737 --
135738 l_acct_reversal_source      VARCHAR2(30);
135739 l_trx_reversal_source       VARCHAR2(30);
135740 
135741 l_continue_with_lines       BOOLEAN := TRUE;
135742 --
135743 l_acc_rev_gl_date_source    DATE;                      -- 4262811
135744 --
135745 type t_array_event_id is table of number index by binary_integer;
135746 
135747 l_rec_array_event                    t_rec_array_event;
135748 l_null_rec_array_event               t_rec_array_event;
135749 l_array_ae_header_id                 xla_number_array_type;
135750 l_actual_flag                        VARCHAR2(1) := NULL;
135751 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
135752 l_balance_type_code                  VARCHAR2(1) :=NULL;
135753 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
135754 
135755 --
135756 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
135757 --
135758 
135759 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
135760 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
135761 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
135762 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
135763 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
135764 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
135765 
135769 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
135766 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
135767 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
135768 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
135770 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
135771 
135772 l_array_source_6              t_array_source_6;
135773 l_array_source_7              t_array_source_7;
135774 l_array_source_8              t_array_source_8;
135775 l_array_source_9              t_array_source_9;
135776 l_array_source_10              t_array_source_10;
135777 l_array_source_12              t_array_source_12;
135778 
135779 l_array_source_1      t_array_source_1;
135780 l_array_source_2      t_array_source_2;
135781 l_array_source_3      t_array_source_3;
135782 l_array_source_5      t_array_source_5;
135783 l_array_source_11      t_array_source_11;
135784 
135785 --
135786 CURSOR header_cur
135787 IS
135788 SELECT /*+ leading(xet) cardinality(xet,1) */
135789 -- Event Type Code: DIR_INTERORG_SHIP_TP
135790 -- Event Class Code: DIR_INTERORG_SHIP
135791     xet.entity_id
135792   , xet.legal_entity_id
135793   , xet.entity_code
135794   , xet.transaction_number
135795   , xet.event_id
135796   , xet.event_class_code
135797   , xet.event_type_code
135798   , xet.event_number
135799   , xet.event_date
135800   , xet.transaction_date
135801   , xet.reference_num_1
135802   , xet.reference_num_2
135803   , xet.reference_num_3
135804   , xet.reference_num_4
135805   , xet.reference_char_1
135806   , xet.reference_char_2
135807   , xet.reference_char_3
135808   , xet.reference_char_4
135809   , xet.reference_date_1
135810   , xet.reference_date_2
135811   , xet.reference_date_3
135812   , xet.reference_date_4
135813   , xet.event_created_by
135814   , xet.budgetary_control_flag 
135815   , h1.ENTITY_CODE    source_6
135816   , h1.CURRENCY_CODE    source_7
135817   , h1.CURRENCY_CONVERSION_DATE    source_8
135818   , h1.CURRENCY_CONVERSION_RATE    source_9
135819   , h1.CURRENCY_CONVERSION_TYPE    source_10
135820   , h1.TRANSACTION_DATE    source_12
135821   FROM xla_events_gt     xet 
135822   , GMF_XLA_EXTRACT_HEADERS  h1
135823  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
135824    and xet.event_type_code = C_EVENT_TYPE_CODE
135825    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
135826 
135827  ORDER BY event_id
135828 ;
135829 
135830 
135831 --
135832 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
135833 IS
135834 SELECT /*+ leading(xet) cardinality(xet,1) */
135835 -- Event Type Code: DIR_INTERORG_SHIP_TP
135836 -- Event Class Code: DIR_INTERORG_SHIP
135837     xet.entity_id
135838    ,xet.legal_entity_id
135839    ,xet.entity_code
135840    ,xet.transaction_number
135841    ,xet.event_id
135842    ,xet.event_class_code
135843    ,xet.event_type_code
135844    ,xet.event_number
135845    ,xet.event_date
135846    ,xet.transaction_date
135847    ,xet.reference_num_1
135848    ,xet.reference_num_2
135849    ,xet.reference_num_3
135850    ,xet.reference_num_4
135851    ,xet.reference_char_1
135852    ,xet.reference_char_2
135853    ,xet.reference_char_3
135854    ,xet.reference_char_4
135855    ,xet.reference_date_1
135856    ,xet.reference_date_2
135857    ,xet.reference_date_3
135858    ,xet.reference_date_4
135859    ,xet.event_created_by
135860    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
135861   , l2.TRANSACTION_ACCOUNT_ID    source_1
135862   , l2.JOURNAL_LINE_TYPE    source_2
135863   , l2.ENTERED_AMOUNT    source_3
135864   , l2.LINE_ID    source_5
135865   , l2.ACCOUNTED_AMOUNT    source_11
135866   FROM xla_events_gt     xet 
135867   , GMF_XLA_EXTRACT_LINES  l2
135868  WHERE xet.event_id between x_first_event_id and x_last_event_id
135869    and xet.event_date between p_pad_start_date and p_pad_end_date
135870    and xet.event_type_code = C_EVENT_TYPE_CODE
135871    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
135872 ;
135873 
135874 --
135875 BEGIN
135876 IF g_log_enabled THEN
135877    l_log_module := C_DEFAULT_MODULE||'.EventType_261';
135878 END IF;
135879 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135880    trace
135881       (p_msg      => 'BEGIN of EventType_261'
135882       ,p_level    => C_LEVEL_PROCEDURE
135883       ,p_module   => l_log_module);
135884 END IF;
135885 
135886 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
135887    trace
135888       (p_msg      => 'p_application_id = '||p_application_id||
135889                      ' - p_base_ledger_id = '||p_base_ledger_id||
135890                      ' - p_target_ledger_id  = '||p_target_ledger_id||
135891                      ' - p_language = '||p_language||
135892                      ' - p_currency_code = '||p_currency_code||
135893                      ' - p_sla_ledger_id = '||p_sla_ledger_id
135894       ,p_level    => C_LEVEL_STATEMENT
135895       ,p_module   => l_log_module);
135896 END IF;
135897 --
135898 -- initialze arrays
135899 --
135900 g_array_event.DELETE;
135901 l_rec_array_event := l_null_rec_array_event;
135902 --
135903 --------------------------------------
135904 -- 4262811 Initialze MPA Line Number
135905 --------------------------------------
135909 
135906 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
135907 
135908 --
135910 --
135911 OPEN header_cur;
135912 --
135913 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
135914    trace
135915    (p_msg      => 'SQL - FETCH header_cur'
135916    ,p_level    => C_LEVEL_STATEMENT
135917    ,p_module   => l_log_module);
135918 END IF;
135919 --
135920 LOOP
135921 FETCH header_cur BULK COLLECT INTO
135922         l_array_entity_id
135923       , l_array_legal_entity_id
135924       , l_array_entity_code
135925       , l_array_transaction_num
135926       , l_array_event_id
135927       , l_array_class_code
135928       , l_array_event_type
135929       , l_array_event_number
135930       , l_array_event_date
135931       , l_array_transaction_date
135932       , l_array_reference_num_1
135933       , l_array_reference_num_2
135934       , l_array_reference_num_3
135935       , l_array_reference_num_4
135936       , l_array_reference_char_1
135937       , l_array_reference_char_2
135938       , l_array_reference_char_3
135939       , l_array_reference_char_4
135940       , l_array_reference_date_1
135941       , l_array_reference_date_2
135942       , l_array_reference_date_3
135943       , l_array_reference_date_4
135944       , l_array_event_created_by
135945       , l_array_budgetary_control_flag 
135946       , l_array_source_6
135947       , l_array_source_7
135948       , l_array_source_8
135949       , l_array_source_9
135950       , l_array_source_10
135951       , l_array_source_12
135952       LIMIT l_rows;
135953 --
135954 IF (C_LEVEL_EVENT >= g_log_level) THEN
135955    trace
135956    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
135957    ,p_level    => C_LEVEL_EVENT
135958    ,p_module   => l_log_module);
135959 END IF;
135960 --
135961 EXIT WHEN l_array_entity_id.COUNT = 0;
135962 
135963 -- initialize arrays
135964 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
135965 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
135966 
135967 --
135968 -- Bug 4458708
135969 --
135970 XLA_AE_LINES_PKG.g_LineNumber := 0;
135971 
135972 
135973 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
135974 g_last_hdr_idx := l_array_event_id.LAST;
135975 --
135976 -- loop for the headers. Each iteration is for each header extract row
135977 -- fetched in header cursor
135978 --
135979 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
135980 
135981 --
135982 -- set event info as cache for other routines to refer event attributes
135983 --
135984 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
135985    (p_application_id           => p_application_id
135986    ,p_primary_ledger_id        => p_primary_ledger_id
135987    ,p_base_ledger_id           => p_base_ledger_id
135988    ,p_target_ledger_id         => p_target_ledger_id
135989    ,p_entity_id                => l_array_entity_id(hdr_idx)
135990    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
135991    ,p_entity_code              => l_array_entity_code(hdr_idx)
135992    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
135993    ,p_event_id                 => l_array_event_id(hdr_idx)
135994    ,p_event_class_code         => l_array_class_code(hdr_idx)
135995    ,p_event_type_code          => l_array_event_type(hdr_idx)
135996    ,p_event_number             => l_array_event_number(hdr_idx)
135997    ,p_event_date               => l_array_event_date(hdr_idx)
135998    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
135999    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
136000    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
136001    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
136002    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
136003    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
136004    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
136005    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
136006    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
136007    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
136008    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
136009    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
136010    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
136011    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
136012    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
136013 
136014 --
136015 -- set the status of entry to C_VALID (0)
136016 --
136017 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
136018 
136019 --
136020 -- initialize a row for ae header
136021 --
136022 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
136023 
136024 l_event_id := l_array_event_id(hdr_idx);
136025 
136026 --
136027 -- storing the hdr_idx for event. May be used by line cursor.
136028 --
136029 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
136030 
136031 --
136032 -- store sources from header extract. This can be improved to
136033 -- store only those sources from header extract that may be used in lines
136034 --
136035 
136036 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
136037 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
136038 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
136042 
136039 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
136040 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
136041 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
136043 --
136044 -- initilaize the status of ae headers for diffrent balance types
136045 -- the status is initialised to C_NOT_CREATED (2)
136046 --
136047 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
136048 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
136049 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
136050 
136051 --
136052 -- call api to validate and store accounting attributes for header
136053 --
136054 
136055 ------------------------------------------------------------
136056 -- Accrual Reversal : to get date for Standard Source (NONE)
136057 ------------------------------------------------------------
136058 l_acc_rev_gl_date_source := NULL;
136059 
136060      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
136061       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
136062 
136063 
136064 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
136065 
136066 XLA_AE_HEADER_PKG.SetJeCategoryName;
136067 
136068 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
136069 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
136070 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
136071 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
136072 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
136073 
136074 
136075 -- No header level analytical criteria
136076 
136077 --
136078 --accounting attribute enhancement, bug 3612931
136079 --
136080 l_trx_reversal_source := SUBSTR(NULL, 1,30);
136081 
136082 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
136083    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
136084 
136085    xla_accounting_err_pkg.build_message
136086       (p_appli_s_name            => 'XLA'
136087       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
136088       ,p_token_1                 => 'ACCT_ATTR_NAME'
136089       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
136090       ,p_token_2                 => 'PRODUCT_NAME'
136091       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
136092       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
136093       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
136094       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
136095 
136096 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
136097    --
136098    -- following sets the accounting attributes needed to reverse
136099    -- accounting for a distributeion
136100    --
136101    xla_ae_lines_pkg.SetTrxReversalAttrs
136102       (p_event_id              => l_event_id
136103       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
136104       ,p_trx_reversal_source   => l_trx_reversal_source);
136105 
136106 END IF;
136107 
136108 
136109 ----------------------------------------------------------------
136110 -- 4262811 -  update the header statuses to invalid in need be
136111 ----------------------------------------------------------------
136112 --
136113 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
136114 
136115 
136116   -----------------------------------------------
136117   -- No accrual reversal for the event class/type
136118   -----------------------------------------------
136119 ----------------------------------------------------------------
136120 
136121 --
136122 -- this ends the header loop iteration for one bulk fetch
136123 --
136124 END LOOP;
136125 
136126 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
136127 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
136128 
136129 --
136130 -- insert dummy rows into lines gt table that were created due to
136131 -- transaction reversals
136132 --
136133 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
136134    l_result := XLA_AE_LINES_PKG.InsertLines;
136135 END IF;
136136 
136137 --
136138 -- reset the temp_line_num for each set of events fetched from header
136139 -- cursor rather than doing it for each new event in line cursor
136140 -- Bug 3939231
136141 --
136142 xla_ae_lines_pkg.g_temp_line_num := 0;
136143 
136144 
136145 
136146 --
136147 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
136148 --
136149 --
136150 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
136151 
136152       trace
136153          (p_msg      => 'SQL - FETCH line_cur'
136154          ,p_level    => C_LEVEL_STATEMENT
136155          ,p_module   => l_log_module);
136156 
136157 END IF;
136158 --
136159 --
136160 LOOP
136161   --
136162   FETCH line_cur BULK COLLECT INTO
136163         l_array_entity_id
136164       , l_array_legal_entity_id
136165       , l_array_entity_code
136166       , l_array_transaction_num
136170       , l_array_event_number
136167       , l_array_event_id
136168       , l_array_class_code
136169       , l_array_event_type
136171       , l_array_event_date
136172       , l_array_transaction_date
136173       , l_array_reference_num_1
136174       , l_array_reference_num_2
136175       , l_array_reference_num_3
136176       , l_array_reference_num_4
136177       , l_array_reference_char_1
136178       , l_array_reference_char_2
136179       , l_array_reference_char_3
136180       , l_array_reference_char_4
136181       , l_array_reference_date_1
136182       , l_array_reference_date_2
136183       , l_array_reference_date_3
136184       , l_array_reference_date_4
136185       , l_array_event_created_by
136186       , l_array_budgetary_control_flag
136187       , l_array_extract_line_num 
136188       , l_array_source_1
136189       , l_array_source_2
136190       , l_array_source_3
136191       , l_array_source_5
136192       , l_array_source_11
136193       LIMIT l_rows;
136194 
136195   --
136196   IF (C_LEVEL_EVENT >= g_log_level) THEN
136197             trace
136198                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
136199                ,p_level    => C_LEVEL_EVENT
136200                ,p_module   => l_log_module);
136201   END IF;
136202   --
136203   EXIT WHEN l_array_entity_id.count = 0;
136204 
136205   XLA_AE_LINES_PKG.g_rec_lines := null;
136206 
136207 --
136208 -- Bug 4458708
136209 --
136210 XLA_AE_LINES_PKG.g_LineNumber := 0;
136211 --
136212 --
136213 
136214 FOR Idx IN 1..l_array_event_id.count LOOP
136215    --
136216    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
136217    --
136218    l_event_id := l_array_event_id(idx);  -- 5648433
136219 
136220    --
136221    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
136222    --
136223 
136224    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
136225              (g_array_event(l_event_id).array_value_num('header_index'))
136226          ,'N'
136227          ) <> 'Y'
136228    THEN
136229       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
136230          trace
136231             (p_msg      => 'Trancaction revesal option is not Y '
136232             ,p_level    => C_LEVEL_STATEMENT
136233             ,p_module   => l_log_module);
136234       END IF;
136235 
136236 --
136237 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
136238 --
136239 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
136240 --
136241 -- set event info as cache for other routines to refer event attributes
136242 --
136243 
136244 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
136245    l_previous_event_id := l_event_id;
136246 
136247    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
136248       (p_application_id           => p_application_id
136249       ,p_primary_ledger_id        => p_primary_ledger_id
136250       ,p_base_ledger_id           => p_base_ledger_id
136251       ,p_target_ledger_id         => p_target_ledger_id
136252       ,p_entity_id                => l_array_entity_id(Idx)
136253       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
136254       ,p_entity_code              => l_array_entity_code(Idx)
136255       ,p_transaction_num          => l_array_transaction_num(Idx)
136256       ,p_event_id                 => l_array_event_id(Idx)
136257       ,p_event_class_code         => l_array_class_code(Idx)
136258       ,p_event_type_code          => l_array_event_type(Idx)
136259       ,p_event_number             => l_array_event_number(Idx)
136260       ,p_event_date               => l_array_event_date(Idx)
136261       ,p_transaction_date         => l_array_transaction_date(Idx)
136262       ,p_reference_num_1          => l_array_reference_num_1(Idx)
136263       ,p_reference_num_2          => l_array_reference_num_2(Idx)
136264       ,p_reference_num_3          => l_array_reference_num_3(Idx)
136265       ,p_reference_num_4          => l_array_reference_num_4(Idx)
136266       ,p_reference_char_1         => l_array_reference_char_1(Idx)
136267       ,p_reference_char_2         => l_array_reference_char_2(Idx)
136268       ,p_reference_char_3         => l_array_reference_char_3(Idx)
136269       ,p_reference_char_4         => l_array_reference_char_4(Idx)
136270       ,p_reference_date_1         => l_array_reference_date_1(Idx)
136271       ,p_reference_date_2         => l_array_reference_date_2(Idx)
136272       ,p_reference_date_3         => l_array_reference_date_3(Idx)
136273       ,p_reference_date_4         => l_array_reference_date_4(Idx)
136274       ,p_event_created_by         => l_array_event_created_by(Idx)
136275       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
136276        --
136277 END IF;
136278 
136279 
136280 
136281 --
136282 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
136283 
136284 l_acct_reversal_source := SUBSTR(NULL, 1,30);
136285 
136286 IF l_continue_with_lines THEN
136287    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
136288       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
136289 
136290       xla_accounting_err_pkg.build_message
136291          (p_appli_s_name            => 'XLA'
136292          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
136293          ,p_token_1                 => 'LINE_NUMBER'
136294          ,p_value_1                 => l_array_extract_line_num(Idx)
136298          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
136295          ,p_token_2                 => 'PRODUCT_NAME'
136296          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
136297          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
136299          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
136300 
136301    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
136302       --
136303       -- following sets the accounting attributes needed to reverse
136304       -- accounting for a distributeion
136305       --
136306 
136307       --
136308       -- 5217187
136309       --
136310       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
136311       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
136312                                        g_array_event(l_event_id).array_value_num('header_index'));
136313       --
136314       --
136315 
136316       -- No reversal code generated
136317 
136318       xla_ae_lines_pkg.SetAcctReversalAttrs
136319          (p_event_id             => l_event_id
136320          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
136321          ,p_calculate_acctd_flag => l_calculate_acctd_flag
136322          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
136323    END IF;
136324 
136325    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
136326        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
136327 
136328 --
136329 AcctLineType_112 (
136330  p_application_id  => p_application_id
136331  ,p_event_id     => l_event_id
136332  ,p_calculate_acctd_flag => l_calculate_acctd_flag
136333  ,p_calculate_g_l_flag => l_calculate_g_l_flag
136334  ,p_actual_flag => l_actual_flag
136335  ,p_balance_type_code => l_balance_type_code
136336  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
136337  
136338  , p_source_1 => l_array_source_1(Idx)
136339  , p_source_2 => l_array_source_2(Idx)
136340  , p_source_3 => l_array_source_3(Idx)
136341  , p_source_5 => l_array_source_5(Idx)
136342  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
136343  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
136344  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
136345  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
136346  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
136347  , p_source_11 => l_array_source_11(Idx)
136348  );
136349 If(l_balance_type_code = 'A') THEN
136350   l_actual_gain_loss_ref := l_gain_or_loss_ref;
136351 END IF;
136352 
136353 --
136354 
136355 
136356 --
136357 AcctLineType_142 (
136358  p_application_id  => p_application_id
136359  ,p_event_id     => l_event_id
136360  ,p_calculate_acctd_flag => l_calculate_acctd_flag
136361  ,p_calculate_g_l_flag => l_calculate_g_l_flag
136362  ,p_actual_flag => l_actual_flag
136363  ,p_balance_type_code => l_balance_type_code
136364  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
136365  
136366  , p_source_1 => l_array_source_1(Idx)
136367  , p_source_2 => l_array_source_2(Idx)
136368  , p_source_3 => l_array_source_3(Idx)
136369  , p_source_5 => l_array_source_5(Idx)
136370  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
136371  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
136372  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
136373  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
136374  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
136375  , p_source_11 => l_array_source_11(Idx)
136376  );
136377 If(l_balance_type_code = 'A') THEN
136378   l_actual_gain_loss_ref := l_gain_or_loss_ref;
136379 END IF;
136380 
136381 --
136382 
136383 
136384 --
136385 AcctLineType_182 (
136386  p_application_id  => p_application_id
136387  ,p_event_id     => l_event_id
136388  ,p_calculate_acctd_flag => l_calculate_acctd_flag
136389  ,p_calculate_g_l_flag => l_calculate_g_l_flag
136390  ,p_actual_flag => l_actual_flag
136391  ,p_balance_type_code => l_balance_type_code
136392  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
136393  
136394  , p_source_1 => l_array_source_1(Idx)
136395  , p_source_2 => l_array_source_2(Idx)
136396  , p_source_3 => l_array_source_3(Idx)
136397  , p_source_5 => l_array_source_5(Idx)
136398  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
136399  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
136400  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
136401  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
136402  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
136403  , p_source_11 => l_array_source_11(Idx)
136404  );
136405 If(l_balance_type_code = 'A') THEN
136406   l_actual_gain_loss_ref := l_gain_or_loss_ref;
136407 END IF;
136408 
136409 --
136410 
136411 
136412 --
136413 AcctLineType_185 (
136414  p_application_id  => p_application_id
136415  ,p_event_id     => l_event_id
136416  ,p_calculate_acctd_flag => l_calculate_acctd_flag
136417  ,p_calculate_g_l_flag => l_calculate_g_l_flag
136418  ,p_actual_flag => l_actual_flag
136419  ,p_balance_type_code => l_balance_type_code
136420  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
136421  
136422  , p_source_1 => l_array_source_1(Idx)
136423  , p_source_2 => l_array_source_2(Idx)
136427  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
136424  , p_source_3 => l_array_source_3(Idx)
136425  , p_source_5 => l_array_source_5(Idx)
136426  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
136428  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
136429  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
136430  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
136431  , p_source_11 => l_array_source_11(Idx)
136432  );
136433 If(l_balance_type_code = 'A') THEN
136434   l_actual_gain_loss_ref := l_gain_or_loss_ref;
136435 END IF;
136436 
136437 --
136438 
136439       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
136440       -- or secondary ledger that has different currency with primary
136441       -- or alc that is calculated by sla
136442       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
136443             (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'))
136444 
136445 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
136446 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
136447           AND (l_actual_flag = 'A')) THEN
136448         XLA_AE_LINES_PKG.CreateGainOrLossLines(
136449           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
136450          ,p_application_id   => p_application_id
136451          ,p_amb_context_code => 'DEFAULT'
136452          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
136453          ,p_event_class_code => C_EVENT_CLASS_CODE
136454          ,p_event_type_code  => C_EVENT_TYPE_CODE
136455          
136456          ,p_gain_ccid        => -1
136457          ,p_loss_ccid        => -1
136458 
136459          ,p_actual_flag      => l_actual_flag
136460          ,p_enc_flag         => null
136461          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
136462          ,p_enc_g_l_ref      => null
136463          );
136464       END IF;
136465    END IF;
136466 END IF;
136467 
136468    ELSE
136469       --
136470       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
136471       --
136472       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
136473          trace
136474             (p_msg      => 'Trancaction revesal option is Y'
136475             ,p_level    => C_LEVEL_STATEMENT
136476             ,p_module   => l_log_module);
136477       END IF;
136478    END IF;
136479 
136480 END LOOP;
136481 l_result := XLA_AE_LINES_PKG.InsertLines ;
136482 end loop;
136483 close line_cur;
136484 
136485 
136486 --
136487 -- insert headers into xla_ae_headers_gt table
136488 --
136489 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
136490 
136491 -- insert into errors table here.
136492 
136493 END LOOP;
136494 
136495 --
136496 -- 4865292
136497 --
136498 -- Compare g_hdr_extract_count with event count in
136499 -- CreateHeadersAndLines.
136500 --
136501 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
136502 
136503 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
136504    trace (p_msg     => '# rows extracted from header extract objects '
136505                     || ' (running total): '
136506                     || g_hdr_extract_count
136507          ,p_level   => C_LEVEL_STATEMENT
136508          ,p_module  => l_log_module);
136509 END IF;
136510 
136511 CLOSE header_cur;
136512 --
136513 
136514 --
136515 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136516    trace
136517       (p_msg      => 'END of EventType_261'
136518       ,p_level    => C_LEVEL_PROCEDURE
136519       ,p_module   => l_log_module);
136520 END IF;
136521 --
136522 RETURN l_result;
136523 EXCEPTION
136524 WHEN xla_exceptions_pkg.application_exception THEN
136525    
136526 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
136527 
136528    
136529 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
136530 
136531    RAISE;
136532 
136533 WHEN NO_DATA_FOUND THEN
136534 
136535 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
136536 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
136537 
136538 FOR header_record IN header_cur
136539 LOOP
136540     l_array_header_events(header_record.event_id) := header_record.event_id;
136541 END LOOP;
136542 
136543 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
136544 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
136545 
136546 fnd_file.put_line(fnd_file.LOG, '                    ');
136547 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
136548 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
136549 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
136550 
136551 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
136552 LOOP
136553 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
136554 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
136555         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
136556 	END IF;
136557 END LOOP;
136558 
136559 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
136563 xla_exceptions_pkg.raise_message
136560 fnd_file.put_line(fnd_file.LOG, '                    ');
136561 
136562 
136564       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_261');
136565 
136566 
136567 WHEN OTHERS THEN
136568    xla_exceptions_pkg.raise_message
136569       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_261');
136570 END EventType_261;
136571 --
136572 
136573 ---------------------------------------
136574 --
136575 -- PRIVATE PROCEDURE
136576 --         insert_sources_262
136577 --
136578 ----------------------------------------
136579 --
136580 PROCEDURE insert_sources_262(
136581                                 p_target_ledger_id       IN NUMBER
136582                               , p_language               IN VARCHAR2
136583                               , p_sla_ledger_id          IN NUMBER
136584                               , p_pad_start_date         IN DATE
136585                               , p_pad_end_date           IN DATE
136586                          )
136587 IS
136588 
136589 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'EXP_REQ_RCPT';
136590 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
136591 p_apps_owner                   VARCHAR2(30);
136592 l_log_module                   VARCHAR2(240);
136593 BEGIN
136594 IF g_log_enabled THEN
136595       l_log_module := C_DEFAULT_MODULE||'.insert_sources_262';
136596 END IF;
136597 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136598 
136599       trace
136600          (p_msg      => 'BEGIN of insert_sources_262'
136601          ,p_level    => C_LEVEL_PROCEDURE
136602          ,p_module   => l_log_module);
136603 
136604 END IF;
136605 
136606 -- select APPS owner
136607 SELECT oracle_username
136608   INTO p_apps_owner
136609   FROM fnd_oracle_userid
136610  WHERE read_only_flag = 'U'
136611 ;
136612 
136613 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
136614       trace
136615          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
136616                         ' - p_language = '||p_language||
136617                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
136618                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
136619                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
136620                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
136621          ,p_level    => C_LEVEL_STATEMENT
136622          ,p_module   => l_log_module);
136623 END IF;
136624 
136625 
136626 --
136627 INSERT INTO xla_diag_sources --hdr1
136628 (
136629         event_id
136630       , ledger_id
136631       , sla_ledger_id
136632       , description_language
136633       , object_name
136634       , object_type_code
136635       , line_number
136636       , source_application_id
136637       , source_type_code
136638       , source_code
136639       , source_value
136640       , source_meaning
136641       , created_by
136642       , creation_date
136643       , last_update_date
136644       , last_updated_by
136645       , last_update_login
136646       , program_update_date
136647       , program_application_id
136648       , program_id
136649       , request_id
136650 )
136651 SELECT
136652         event_id
136653       , p_target_ledger_id
136654       , p_sla_ledger_id
136655       , p_language
136656       , object_name
136657       , object_type_code
136658       , line_number
136659       , source_application_id
136660       , source_type_code
136661       , source_code
136662       , SUBSTR(source_value ,1,1996)
136663       , SUBSTR(source_meaning,1,200)
136664       , xla_environment_pkg.g_Usr_Id
136665       , TRUNC(SYSDATE)
136666       , TRUNC(SYSDATE)
136667       , xla_environment_pkg.g_Usr_Id
136668       , xla_environment_pkg.g_Login_Id
136669       , TRUNC(SYSDATE)
136670       , xla_environment_pkg.g_Prog_Appl_Id
136671       , xla_environment_pkg.g_Prog_Id
136672       , xla_environment_pkg.g_Req_Id
136673   FROM (
136674        SELECT xet.event_id                  event_id
136675             , 0                             line_number
136676             , CASE r
136677                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
136678                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
136679                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
136680                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
136681                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
136682                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
136683                 
136684                ELSE null
136685               END                           object_name
136686             , CASE r
136687                 WHEN 1 THEN 'HEADER' 
136688                 WHEN 2 THEN 'HEADER' 
136689                 WHEN 3 THEN 'HEADER' 
136690                 WHEN 4 THEN 'HEADER' 
136691                 WHEN 5 THEN 'HEADER' 
136692                 WHEN 6 THEN 'HEADER' 
136693                 
136694                 ELSE null
136695               END                           object_type_code
136696             , CASE r
136697                 WHEN 1 THEN '555' 
136698                 WHEN 2 THEN '555' 
136699                 WHEN 3 THEN '555' 
136700                 WHEN 4 THEN '555' 
136701                 WHEN 5 THEN '555' 
136702                 WHEN 6 THEN '555' 
136703                 
136704                 ELSE null
136705               END                           source_application_id
136709                 WHEN 2 THEN 'CURRENCY_CODE' 
136706             , 'S'             source_type_code
136707             , CASE r
136708                 WHEN 1 THEN 'ENTITY_CODE' 
136710                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
136711                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
136712                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
136713                 WHEN 6 THEN 'TRANSACTION_DATE' 
136714                 
136715                 ELSE null
136716               END                           source_code
136717             , CASE r
136718                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
136719                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
136720                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
136721                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
136722                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
136723                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
136724                 
136725                 ELSE null
136726               END                           source_value
136727             , CASE r
136728                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
136729                           1010186
136730                          ,TO_CHAR(h1.CURRENCY_CODE)
136731                          ,'CURRENCY_CODE'
136732                          ,'S'
136733                          ,555)
136734                 
136735                 ELSE null
136736               END               source_meaning
136737         FROM xla_events_gt     xet  
136738       , GMF_XLA_EXTRACT_HEADERS  h1
136739             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
136740        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
136741          AND xet.event_type_code = C_EVENT_TYPE_CODE
136742             AND h1.event_id = xet.event_id
136743 
136744 )
136745 ;
136746 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
136747 
136748       trace
136749          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
136750          ,p_level    => C_LEVEL_STATEMENT
136751          ,p_module   => l_log_module);
136752 
136753 END IF;
136754 --
136755 
136756 
136757 
136758 --
136759 INSERT INTO xla_diag_sources --line1
136760 (
136761         event_id
136762       , ledger_id
136763       , sla_ledger_id
136764       , description_language
136765       , object_name
136766       , object_type_code
136767       , line_number
136768       , source_application_id
136769       , source_type_code
136770       , source_code
136771       , source_value
136772       , source_meaning
136773       , created_by
136774       , creation_date
136775       , last_update_date
136776       , last_updated_by
136777       , last_update_login
136778       , program_update_date
136779       , program_application_id
136780       , program_id
136781       , request_id
136782 )
136783 SELECT  event_id
136784       , p_target_ledger_id
136785       , p_sla_ledger_id
136786       , p_language
136787       , object_name
136788       , object_type_code
136789       , line_number
136790       , source_application_id
136791       , source_type_code
136792       , source_code
136793       , SUBSTR(source_value,1,1996)
136794       , SUBSTR(source_meaning,1,200)
136795       , xla_environment_pkg.g_Usr_Id
136796       , TRUNC(SYSDATE)
136797       , TRUNC(SYSDATE)
136798       , xla_environment_pkg.g_Usr_Id
136799       , xla_environment_pkg.g_Login_Id
136800       , TRUNC(SYSDATE)
136801       , xla_environment_pkg.g_Prog_Appl_Id
136802       , xla_environment_pkg.g_Prog_Id
136803       , xla_environment_pkg.g_Req_Id
136804   FROM (
136805        SELECT xet.event_id                  event_id
136806             , l2.line_number                 line_number
136807             , CASE r
136808                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
136809                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
136810                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
136811                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
136812                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
136813                 
136814                ELSE null
136815               END                           object_name
136816             , CASE r
136817                 WHEN 1 THEN 'LINE' 
136818                 WHEN 2 THEN 'LINE' 
136819                 WHEN 3 THEN 'LINE' 
136820                 WHEN 4 THEN 'LINE' 
136821                 WHEN 5 THEN 'LINE' 
136822                 
136823                 ELSE null
136824               END                           object_type_code
136825             , CASE r
136826                 WHEN 1 THEN '555' 
136827                 WHEN 2 THEN '555' 
136828                 WHEN 3 THEN '555' 
136829                 WHEN 4 THEN '555' 
136830                 WHEN 5 THEN '555' 
136831                 
136832                 ELSE null
136833               END                           source_application_id
136834             , 'S'             source_type_code
136835             , CASE r
136836                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
136837                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
136838                 WHEN 3 THEN 'ENTERED_AMOUNT' 
136839                 WHEN 4 THEN 'LINE_ID' 
136840                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
136841                 
136842                 ELSE null
136843               END                           source_code
136847                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
136844             , CASE r
136845                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
136846                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
136848                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
136849                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
136850                 
136851                 ELSE null
136852               END                           source_value
136853             , null              source_meaning
136854          FROM  xla_events_gt     xet  
136855         , GMF_XLA_EXTRACT_LINES  l2
136856             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
136857         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
136858           AND xet.event_type_code = C_EVENT_TYPE_CODE
136859             AND l2.event_id          = xet.event_id
136860 
136861 )
136862 ;
136863 --
136864 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
136865 
136866       trace
136867          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
136868          ,p_level    => C_LEVEL_STATEMENT
136869          ,p_module   => l_log_module);
136870 
136871 END IF;
136872 
136873 
136874 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136875       trace
136876          (p_msg      => 'END of insert_sources_262'
136877          ,p_level    => C_LEVEL_PROCEDURE
136878          ,p_module   => l_log_module);
136879 END IF;
136880 EXCEPTION
136881   WHEN xla_exceptions_pkg.application_exception THEN
136882       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
136883             trace
136884                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
136885                ,p_level    => C_LEVEL_EXCEPTION
136886                ,p_module   => l_log_module);
136887       END IF;
136888       RAISE;
136889   WHEN OTHERS THEN
136890       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
136891             trace
136892                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
136893                ,p_level    => C_LEVEL_EXCEPTION
136894                ,p_module   => l_log_module);
136895        END IF;
136896        xla_exceptions_pkg.raise_message
136897            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_262');
136898 END insert_sources_262;
136899 --
136900 
136901 ---------------------------------------
136902 --
136903 -- PRIVATE FUNCTION
136904 --         EventType_262
136905 --
136906 ----------------------------------------
136907 --
136908 FUNCTION EventType_262
136909        (p_application_id         IN NUMBER
136910        ,p_base_ledger_id         IN NUMBER
136911        ,p_target_ledger_id       IN NUMBER
136912        ,p_language               IN VARCHAR2
136913        ,p_currency_code          IN VARCHAR2
136914        ,p_sla_ledger_id          IN NUMBER
136915        ,p_pad_start_date         IN DATE
136916        ,p_pad_end_date           IN DATE
136917        ,p_primary_ledger_id      IN NUMBER)
136918 RETURN BOOLEAN IS
136919 --
136920 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'EXP_REQ_RCPT';
136921 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
136922 
136923 l_calculate_acctd_flag   VARCHAR2(1) :='N';
136924 l_calculate_g_l_flag     VARCHAR2(1) :='N';
136925 --
136926 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
136927 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
136928 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
136929 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
136930 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
136931 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
136932 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
136933 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
136934 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
136935 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
136936 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
136937 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
136938 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
136939 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
136940 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
136941 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
136942 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
136943 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
136944 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
136945 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
136946 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
136947 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
136948 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
136949 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
136950 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
136951 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
136952 
136953 l_event_id                             NUMBER;
136954 l_previous_event_id                    NUMBER;
136958 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
136955 l_first_event_id                       NUMBER;
136956 l_last_event_id                        NUMBER;
136957 
136959 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
136960 --
136961 --
136962 l_result                    BOOLEAN := TRUE;
136963 l_rows                      NUMBER  := 1000;
136964 l_event_type_name           VARCHAR2(80) := 'Internal Order Receipt to Expense';
136965 l_event_class_name          VARCHAR2(80) := 'Internal Order to Expense';
136966 l_description               VARCHAR2(4000);
136967 l_transaction_reversal      NUMBER;
136968 l_ae_header_id              NUMBER;
136969 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
136970 l_log_module                VARCHAR2(240);
136971 --
136972 l_acct_reversal_source      VARCHAR2(30);
136973 l_trx_reversal_source       VARCHAR2(30);
136974 
136975 l_continue_with_lines       BOOLEAN := TRUE;
136976 --
136977 l_acc_rev_gl_date_source    DATE;                      -- 4262811
136978 --
136979 type t_array_event_id is table of number index by binary_integer;
136980 
136981 l_rec_array_event                    t_rec_array_event;
136982 l_null_rec_array_event               t_rec_array_event;
136983 l_array_ae_header_id                 xla_number_array_type;
136984 l_actual_flag                        VARCHAR2(1) := NULL;
136985 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
136986 l_balance_type_code                  VARCHAR2(1) :=NULL;
136987 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
136988 
136989 --
136990 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
136991 --
136992 
136993 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
136994 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
136995 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
136996 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
136997 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
136998 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
136999 
137000 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
137001 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
137002 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
137003 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
137004 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
137005 
137006 l_array_source_6              t_array_source_6;
137007 l_array_source_7              t_array_source_7;
137008 l_array_source_8              t_array_source_8;
137009 l_array_source_9              t_array_source_9;
137010 l_array_source_10              t_array_source_10;
137011 l_array_source_12              t_array_source_12;
137012 
137013 l_array_source_1      t_array_source_1;
137014 l_array_source_2      t_array_source_2;
137015 l_array_source_3      t_array_source_3;
137016 l_array_source_5      t_array_source_5;
137017 l_array_source_11      t_array_source_11;
137018 
137019 --
137020 CURSOR header_cur
137021 IS
137022 SELECT /*+ leading(xet) cardinality(xet,1) */
137023 -- Event Type Code: EXP_REQ_RCPT
137024 -- Event Class Code: INT_ORDER_TO_EXP
137025     xet.entity_id
137026   , xet.legal_entity_id
137027   , xet.entity_code
137028   , xet.transaction_number
137029   , xet.event_id
137030   , xet.event_class_code
137031   , xet.event_type_code
137032   , xet.event_number
137033   , xet.event_date
137034   , xet.transaction_date
137035   , xet.reference_num_1
137036   , xet.reference_num_2
137037   , xet.reference_num_3
137038   , xet.reference_num_4
137039   , xet.reference_char_1
137040   , xet.reference_char_2
137041   , xet.reference_char_3
137042   , xet.reference_char_4
137043   , xet.reference_date_1
137044   , xet.reference_date_2
137045   , xet.reference_date_3
137046   , xet.reference_date_4
137047   , xet.event_created_by
137048   , xet.budgetary_control_flag 
137049   , h1.ENTITY_CODE    source_6
137050   , h1.CURRENCY_CODE    source_7
137051   , h1.CURRENCY_CONVERSION_DATE    source_8
137052   , h1.CURRENCY_CONVERSION_RATE    source_9
137053   , h1.CURRENCY_CONVERSION_TYPE    source_10
137054   , h1.TRANSACTION_DATE    source_12
137055   FROM xla_events_gt     xet 
137056   , GMF_XLA_EXTRACT_HEADERS  h1
137057  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
137058    and xet.event_type_code = C_EVENT_TYPE_CODE
137059    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
137060 
137061  ORDER BY event_id
137062 ;
137063 
137064 
137065 --
137066 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
137067 IS
137068 SELECT /*+ leading(xet) cardinality(xet,1) */
137069 -- Event Type Code: EXP_REQ_RCPT
137070 -- Event Class Code: INT_ORDER_TO_EXP
137071     xet.entity_id
137072    ,xet.legal_entity_id
137073    ,xet.entity_code
137074    ,xet.transaction_number
137075    ,xet.event_id
137076    ,xet.event_class_code
137077    ,xet.event_type_code
137078    ,xet.event_number
137079    ,xet.event_date
137080    ,xet.transaction_date
137081    ,xet.reference_num_1
137085    ,xet.reference_char_1
137082    ,xet.reference_num_2
137083    ,xet.reference_num_3
137084    ,xet.reference_num_4
137086    ,xet.reference_char_2
137087    ,xet.reference_char_3
137088    ,xet.reference_char_4
137089    ,xet.reference_date_1
137090    ,xet.reference_date_2
137091    ,xet.reference_date_3
137092    ,xet.reference_date_4
137093    ,xet.event_created_by
137094    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
137095   , l2.TRANSACTION_ACCOUNT_ID    source_1
137096   , l2.JOURNAL_LINE_TYPE    source_2
137097   , l2.ENTERED_AMOUNT    source_3
137098   , l2.LINE_ID    source_5
137099   , l2.ACCOUNTED_AMOUNT    source_11
137100   FROM xla_events_gt     xet 
137101   , GMF_XLA_EXTRACT_LINES  l2
137102  WHERE xet.event_id between x_first_event_id and x_last_event_id
137103    and xet.event_date between p_pad_start_date and p_pad_end_date
137104    and xet.event_type_code = C_EVENT_TYPE_CODE
137105    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
137106 ;
137107 
137108 --
137109 BEGIN
137110 IF g_log_enabled THEN
137111    l_log_module := C_DEFAULT_MODULE||'.EventType_262';
137112 END IF;
137113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137114    trace
137115       (p_msg      => 'BEGIN of EventType_262'
137116       ,p_level    => C_LEVEL_PROCEDURE
137117       ,p_module   => l_log_module);
137118 END IF;
137119 
137120 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
137121    trace
137122       (p_msg      => 'p_application_id = '||p_application_id||
137123                      ' - p_base_ledger_id = '||p_base_ledger_id||
137124                      ' - p_target_ledger_id  = '||p_target_ledger_id||
137125                      ' - p_language = '||p_language||
137126                      ' - p_currency_code = '||p_currency_code||
137127                      ' - p_sla_ledger_id = '||p_sla_ledger_id
137128       ,p_level    => C_LEVEL_STATEMENT
137129       ,p_module   => l_log_module);
137130 END IF;
137131 --
137132 -- initialze arrays
137133 --
137134 g_array_event.DELETE;
137135 l_rec_array_event := l_null_rec_array_event;
137136 --
137137 --------------------------------------
137138 -- 4262811 Initialze MPA Line Number
137139 --------------------------------------
137140 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
137141 
137142 --
137143 
137144 --
137145 OPEN header_cur;
137146 --
137147 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
137148    trace
137149    (p_msg      => 'SQL - FETCH header_cur'
137150    ,p_level    => C_LEVEL_STATEMENT
137151    ,p_module   => l_log_module);
137152 END IF;
137153 --
137154 LOOP
137155 FETCH header_cur BULK COLLECT INTO
137156         l_array_entity_id
137157       , l_array_legal_entity_id
137158       , l_array_entity_code
137159       , l_array_transaction_num
137160       , l_array_event_id
137161       , l_array_class_code
137162       , l_array_event_type
137163       , l_array_event_number
137164       , l_array_event_date
137165       , l_array_transaction_date
137166       , l_array_reference_num_1
137167       , l_array_reference_num_2
137168       , l_array_reference_num_3
137169       , l_array_reference_num_4
137170       , l_array_reference_char_1
137171       , l_array_reference_char_2
137172       , l_array_reference_char_3
137173       , l_array_reference_char_4
137174       , l_array_reference_date_1
137175       , l_array_reference_date_2
137176       , l_array_reference_date_3
137177       , l_array_reference_date_4
137178       , l_array_event_created_by
137179       , l_array_budgetary_control_flag 
137180       , l_array_source_6
137181       , l_array_source_7
137182       , l_array_source_8
137183       , l_array_source_9
137184       , l_array_source_10
137185       , l_array_source_12
137186       LIMIT l_rows;
137187 --
137188 IF (C_LEVEL_EVENT >= g_log_level) THEN
137189    trace
137190    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
137191    ,p_level    => C_LEVEL_EVENT
137192    ,p_module   => l_log_module);
137193 END IF;
137194 --
137195 EXIT WHEN l_array_entity_id.COUNT = 0;
137196 
137197 -- initialize arrays
137198 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
137199 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
137200 
137201 --
137202 -- Bug 4458708
137203 --
137204 XLA_AE_LINES_PKG.g_LineNumber := 0;
137205 
137206 
137207 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
137208 g_last_hdr_idx := l_array_event_id.LAST;
137209 --
137210 -- loop for the headers. Each iteration is for each header extract row
137211 -- fetched in header cursor
137212 --
137213 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
137214 
137215 --
137216 -- set event info as cache for other routines to refer event attributes
137217 --
137218 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
137219    (p_application_id           => p_application_id
137220    ,p_primary_ledger_id        => p_primary_ledger_id
137221    ,p_base_ledger_id           => p_base_ledger_id
137222    ,p_target_ledger_id         => p_target_ledger_id
137223    ,p_entity_id                => l_array_entity_id(hdr_idx)
137224    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
137225    ,p_entity_code              => l_array_entity_code(hdr_idx)
137226    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
137227    ,p_event_id                 => l_array_event_id(hdr_idx)
137231    ,p_event_date               => l_array_event_date(hdr_idx)
137228    ,p_event_class_code         => l_array_class_code(hdr_idx)
137229    ,p_event_type_code          => l_array_event_type(hdr_idx)
137230    ,p_event_number             => l_array_event_number(hdr_idx)
137232    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
137233    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
137234    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
137235    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
137236    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
137237    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
137238    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
137239    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
137240    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
137241    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
137242    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
137243    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
137244    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
137245    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
137246    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
137247 
137248 --
137249 -- set the status of entry to C_VALID (0)
137250 --
137251 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
137252 
137253 --
137254 -- initialize a row for ae header
137255 --
137256 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
137257 
137258 l_event_id := l_array_event_id(hdr_idx);
137259 
137260 --
137261 -- storing the hdr_idx for event. May be used by line cursor.
137262 --
137263 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
137264 
137265 --
137266 -- store sources from header extract. This can be improved to
137267 -- store only those sources from header extract that may be used in lines
137268 --
137269 
137270 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
137271 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
137272 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
137273 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
137274 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
137275 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
137276 
137277 --
137278 -- initilaize the status of ae headers for diffrent balance types
137279 -- the status is initialised to C_NOT_CREATED (2)
137280 --
137281 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
137282 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
137283 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
137284 
137285 --
137286 -- call api to validate and store accounting attributes for header
137287 --
137288 
137289 ------------------------------------------------------------
137290 -- Accrual Reversal : to get date for Standard Source (NONE)
137291 ------------------------------------------------------------
137292 l_acc_rev_gl_date_source := NULL;
137293 
137294      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
137295       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
137296 
137297 
137298 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
137299 
137300 XLA_AE_HEADER_PKG.SetJeCategoryName;
137301 
137302 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
137303 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
137304 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
137305 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
137306 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
137307 
137308 
137309 -- No header level analytical criteria
137310 
137311 --
137312 --accounting attribute enhancement, bug 3612931
137313 --
137314 l_trx_reversal_source := SUBSTR(NULL, 1,30);
137315 
137316 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
137317    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
137318 
137319    xla_accounting_err_pkg.build_message
137320       (p_appli_s_name            => 'XLA'
137321       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
137322       ,p_token_1                 => 'ACCT_ATTR_NAME'
137323       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
137324       ,p_token_2                 => 'PRODUCT_NAME'
137325       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
137326       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
137327       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
137328       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
137329 
137330 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
137331    --
137332    -- following sets the accounting attributes needed to reverse
137333    -- accounting for a distributeion
137334    --
137335    xla_ae_lines_pkg.SetTrxReversalAttrs
137336       (p_event_id              => l_event_id
137340 END IF;
137337       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
137338       ,p_trx_reversal_source   => l_trx_reversal_source);
137339 
137341 
137342 
137343 ----------------------------------------------------------------
137344 -- 4262811 -  update the header statuses to invalid in need be
137345 ----------------------------------------------------------------
137346 --
137347 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
137348 
137349 
137350   -----------------------------------------------
137351   -- No accrual reversal for the event class/type
137352   -----------------------------------------------
137353 ----------------------------------------------------------------
137354 
137355 --
137356 -- this ends the header loop iteration for one bulk fetch
137357 --
137358 END LOOP;
137359 
137360 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
137361 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
137362 
137363 --
137364 -- insert dummy rows into lines gt table that were created due to
137365 -- transaction reversals
137366 --
137367 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
137368    l_result := XLA_AE_LINES_PKG.InsertLines;
137369 END IF;
137370 
137371 --
137372 -- reset the temp_line_num for each set of events fetched from header
137373 -- cursor rather than doing it for each new event in line cursor
137374 -- Bug 3939231
137375 --
137376 xla_ae_lines_pkg.g_temp_line_num := 0;
137377 
137378 
137379 
137380 --
137381 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
137382 --
137383 --
137384 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
137385 
137386       trace
137387          (p_msg      => 'SQL - FETCH line_cur'
137388          ,p_level    => C_LEVEL_STATEMENT
137389          ,p_module   => l_log_module);
137390 
137391 END IF;
137392 --
137393 --
137394 LOOP
137395   --
137396   FETCH line_cur BULK COLLECT INTO
137397         l_array_entity_id
137398       , l_array_legal_entity_id
137399       , l_array_entity_code
137400       , l_array_transaction_num
137401       , l_array_event_id
137402       , l_array_class_code
137403       , l_array_event_type
137404       , l_array_event_number
137405       , l_array_event_date
137406       , l_array_transaction_date
137407       , l_array_reference_num_1
137408       , l_array_reference_num_2
137409       , l_array_reference_num_3
137410       , l_array_reference_num_4
137411       , l_array_reference_char_1
137412       , l_array_reference_char_2
137413       , l_array_reference_char_3
137414       , l_array_reference_char_4
137415       , l_array_reference_date_1
137416       , l_array_reference_date_2
137417       , l_array_reference_date_3
137418       , l_array_reference_date_4
137419       , l_array_event_created_by
137420       , l_array_budgetary_control_flag
137421       , l_array_extract_line_num 
137422       , l_array_source_1
137423       , l_array_source_2
137424       , l_array_source_3
137425       , l_array_source_5
137426       , l_array_source_11
137427       LIMIT l_rows;
137428 
137429   --
137430   IF (C_LEVEL_EVENT >= g_log_level) THEN
137431             trace
137432                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
137433                ,p_level    => C_LEVEL_EVENT
137434                ,p_module   => l_log_module);
137435   END IF;
137436   --
137437   EXIT WHEN l_array_entity_id.count = 0;
137438 
137439   XLA_AE_LINES_PKG.g_rec_lines := null;
137440 
137441 --
137442 -- Bug 4458708
137443 --
137444 XLA_AE_LINES_PKG.g_LineNumber := 0;
137445 --
137446 --
137447 
137448 FOR Idx IN 1..l_array_event_id.count LOOP
137449    --
137450    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
137451    --
137452    l_event_id := l_array_event_id(idx);  -- 5648433
137453 
137454    --
137455    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
137456    --
137457 
137458    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
137459              (g_array_event(l_event_id).array_value_num('header_index'))
137460          ,'N'
137461          ) <> 'Y'
137462    THEN
137463       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
137464          trace
137465             (p_msg      => 'Trancaction revesal option is not Y '
137466             ,p_level    => C_LEVEL_STATEMENT
137467             ,p_module   => l_log_module);
137468       END IF;
137469 
137470 --
137471 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
137472 --
137473 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
137474 --
137475 -- set event info as cache for other routines to refer event attributes
137476 --
137477 
137478 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
137479    l_previous_event_id := l_event_id;
137480 
137481    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
137482       (p_application_id           => p_application_id
137483       ,p_primary_ledger_id        => p_primary_ledger_id
137484       ,p_base_ledger_id           => p_base_ledger_id
137485       ,p_target_ledger_id         => p_target_ledger_id
137486       ,p_entity_id                => l_array_entity_id(Idx)
137490       ,p_event_id                 => l_array_event_id(Idx)
137487       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
137488       ,p_entity_code              => l_array_entity_code(Idx)
137489       ,p_transaction_num          => l_array_transaction_num(Idx)
137491       ,p_event_class_code         => l_array_class_code(Idx)
137492       ,p_event_type_code          => l_array_event_type(Idx)
137493       ,p_event_number             => l_array_event_number(Idx)
137494       ,p_event_date               => l_array_event_date(Idx)
137495       ,p_transaction_date         => l_array_transaction_date(Idx)
137496       ,p_reference_num_1          => l_array_reference_num_1(Idx)
137497       ,p_reference_num_2          => l_array_reference_num_2(Idx)
137498       ,p_reference_num_3          => l_array_reference_num_3(Idx)
137499       ,p_reference_num_4          => l_array_reference_num_4(Idx)
137500       ,p_reference_char_1         => l_array_reference_char_1(Idx)
137501       ,p_reference_char_2         => l_array_reference_char_2(Idx)
137502       ,p_reference_char_3         => l_array_reference_char_3(Idx)
137503       ,p_reference_char_4         => l_array_reference_char_4(Idx)
137504       ,p_reference_date_1         => l_array_reference_date_1(Idx)
137505       ,p_reference_date_2         => l_array_reference_date_2(Idx)
137506       ,p_reference_date_3         => l_array_reference_date_3(Idx)
137507       ,p_reference_date_4         => l_array_reference_date_4(Idx)
137508       ,p_event_created_by         => l_array_event_created_by(Idx)
137509       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
137510        --
137511 END IF;
137512 
137513 
137514 
137515 --
137516 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
137517 
137518 l_acct_reversal_source := SUBSTR(NULL, 1,30);
137519 
137520 IF l_continue_with_lines THEN
137521    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
137522       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
137523 
137524       xla_accounting_err_pkg.build_message
137525          (p_appli_s_name            => 'XLA'
137526          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
137527          ,p_token_1                 => 'LINE_NUMBER'
137528          ,p_value_1                 => l_array_extract_line_num(Idx)
137529          ,p_token_2                 => 'PRODUCT_NAME'
137530          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
137531          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
137532          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
137533          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
137534 
137535    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
137536       --
137537       -- following sets the accounting attributes needed to reverse
137538       -- accounting for a distributeion
137539       --
137540 
137541       --
137542       -- 5217187
137543       --
137544       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
137545       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
137546                                        g_array_event(l_event_id).array_value_num('header_index'));
137547       --
137548       --
137549 
137550       -- No reversal code generated
137551 
137552       xla_ae_lines_pkg.SetAcctReversalAttrs
137553          (p_event_id             => l_event_id
137554          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
137555          ,p_calculate_acctd_flag => l_calculate_acctd_flag
137556          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
137557    END IF;
137558 
137559    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
137560        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
137561 
137562 --
137563 AcctLineType_106 (
137564  p_application_id  => p_application_id
137565  ,p_event_id     => l_event_id
137566  ,p_calculate_acctd_flag => l_calculate_acctd_flag
137567  ,p_calculate_g_l_flag => l_calculate_g_l_flag
137568  ,p_actual_flag => l_actual_flag
137569  ,p_balance_type_code => l_balance_type_code
137570  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
137571  
137572  , p_source_1 => l_array_source_1(Idx)
137573  , p_source_2 => l_array_source_2(Idx)
137574  , p_source_3 => l_array_source_3(Idx)
137575  , p_source_5 => l_array_source_5(Idx)
137576  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
137577  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
137578  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
137579  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
137580  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
137581  , p_source_11 => l_array_source_11(Idx)
137582  );
137583 If(l_balance_type_code = 'A') THEN
137584   l_actual_gain_loss_ref := l_gain_or_loss_ref;
137585 END IF;
137586 
137587 --
137588 
137589 
137590 --
137591 AcctLineType_172 (
137592  p_application_id  => p_application_id
137593  ,p_event_id     => l_event_id
137594  ,p_calculate_acctd_flag => l_calculate_acctd_flag
137595  ,p_calculate_g_l_flag => l_calculate_g_l_flag
137596  ,p_actual_flag => l_actual_flag
137597  ,p_balance_type_code => l_balance_type_code
137598  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
137599  
137600  , p_source_1 => l_array_source_1(Idx)
137604  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
137601  , p_source_2 => l_array_source_2(Idx)
137602  , p_source_3 => l_array_source_3(Idx)
137603  , p_source_5 => l_array_source_5(Idx)
137605  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
137606  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
137607  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
137608  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
137609  , p_source_11 => l_array_source_11(Idx)
137610  );
137611 If(l_balance_type_code = 'A') THEN
137612   l_actual_gain_loss_ref := l_gain_or_loss_ref;
137613 END IF;
137614 
137615 --
137616 
137617       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
137618       -- or secondary ledger that has different currency with primary
137619       -- or alc that is calculated by sla
137620       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
137621             (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'))
137622 
137623 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
137624 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
137625           AND (l_actual_flag = 'A')) THEN
137626         XLA_AE_LINES_PKG.CreateGainOrLossLines(
137627           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
137628          ,p_application_id   => p_application_id
137629          ,p_amb_context_code => 'DEFAULT'
137630          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
137631          ,p_event_class_code => C_EVENT_CLASS_CODE
137632          ,p_event_type_code  => C_EVENT_TYPE_CODE
137633          
137634          ,p_gain_ccid        => -1
137635          ,p_loss_ccid        => -1
137636 
137637          ,p_actual_flag      => l_actual_flag
137638          ,p_enc_flag         => null
137639          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
137640          ,p_enc_g_l_ref      => null
137641          );
137642       END IF;
137643    END IF;
137644 END IF;
137645 
137646    ELSE
137647       --
137648       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
137649       --
137650       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
137651          trace
137652             (p_msg      => 'Trancaction revesal option is Y'
137653             ,p_level    => C_LEVEL_STATEMENT
137654             ,p_module   => l_log_module);
137655       END IF;
137656    END IF;
137657 
137658 END LOOP;
137659 l_result := XLA_AE_LINES_PKG.InsertLines ;
137660 end loop;
137661 close line_cur;
137662 
137663 
137664 --
137665 -- insert headers into xla_ae_headers_gt table
137666 --
137667 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
137668 
137669 -- insert into errors table here.
137670 
137671 END LOOP;
137672 
137673 --
137674 -- 4865292
137675 --
137676 -- Compare g_hdr_extract_count with event count in
137677 -- CreateHeadersAndLines.
137678 --
137679 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
137680 
137681 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
137682    trace (p_msg     => '# rows extracted from header extract objects '
137683                     || ' (running total): '
137684                     || g_hdr_extract_count
137685          ,p_level   => C_LEVEL_STATEMENT
137686          ,p_module  => l_log_module);
137687 END IF;
137688 
137689 CLOSE header_cur;
137690 --
137691 
137692 --
137693 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137694    trace
137695       (p_msg      => 'END of EventType_262'
137696       ,p_level    => C_LEVEL_PROCEDURE
137697       ,p_module   => l_log_module);
137698 END IF;
137699 --
137700 RETURN l_result;
137701 EXCEPTION
137702 WHEN xla_exceptions_pkg.application_exception THEN
137703    
137704 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
137705 
137706    
137707 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
137708 
137709    RAISE;
137710 
137711 WHEN NO_DATA_FOUND THEN
137712 
137713 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
137714 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
137715 
137716 FOR header_record IN header_cur
137717 LOOP
137718     l_array_header_events(header_record.event_id) := header_record.event_id;
137719 END LOOP;
137720 
137721 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
137722 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
137723 
137724 fnd_file.put_line(fnd_file.LOG, '                    ');
137725 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
137726 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
137727 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
137728 
137729 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
137730 LOOP
137731 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
137732 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
137733         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
137734 	END IF;
137735 END LOOP;
137736 
137740 
137737 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
137738 fnd_file.put_line(fnd_file.LOG, '                    ');
137739 
137741 xla_exceptions_pkg.raise_message
137742       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_262');
137743 
137744 
137745 WHEN OTHERS THEN
137746    xla_exceptions_pkg.raise_message
137747       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_262');
137748 END EventType_262;
137749 --
137750 
137751 ---------------------------------------
137752 --
137753 -- PRIVATE PROCEDURE
137754 --         insert_sources_263
137755 --
137756 ----------------------------------------
137757 --
137758 PROCEDURE insert_sources_263(
137759                                 p_target_ledger_id       IN NUMBER
137760                               , p_language               IN VARCHAR2
137761                               , p_sla_ledger_id          IN NUMBER
137762                               , p_pad_start_date         IN DATE
137763                               , p_pad_end_date           IN DATE
137764                          )
137765 IS
137766 
137767 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'EXP_REQ_RCPT_TP';
137768 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
137769 p_apps_owner                   VARCHAR2(30);
137770 l_log_module                   VARCHAR2(240);
137771 BEGIN
137772 IF g_log_enabled THEN
137773       l_log_module := C_DEFAULT_MODULE||'.insert_sources_263';
137774 END IF;
137775 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137776 
137777       trace
137778          (p_msg      => 'BEGIN of insert_sources_263'
137779          ,p_level    => C_LEVEL_PROCEDURE
137780          ,p_module   => l_log_module);
137781 
137782 END IF;
137783 
137784 -- select APPS owner
137785 SELECT oracle_username
137786   INTO p_apps_owner
137787   FROM fnd_oracle_userid
137788  WHERE read_only_flag = 'U'
137789 ;
137790 
137791 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
137792       trace
137793          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
137794                         ' - p_language = '||p_language||
137795                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
137796                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
137797                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
137798                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
137799          ,p_level    => C_LEVEL_STATEMENT
137800          ,p_module   => l_log_module);
137801 END IF;
137802 
137803 
137804 --
137805 INSERT INTO xla_diag_sources --hdr1
137806 (
137807         event_id
137808       , ledger_id
137809       , sla_ledger_id
137810       , description_language
137811       , object_name
137812       , object_type_code
137813       , line_number
137814       , source_application_id
137815       , source_type_code
137816       , source_code
137817       , source_value
137818       , source_meaning
137819       , created_by
137820       , creation_date
137821       , last_update_date
137822       , last_updated_by
137823       , last_update_login
137824       , program_update_date
137825       , program_application_id
137826       , program_id
137827       , request_id
137828 )
137829 SELECT
137830         event_id
137831       , p_target_ledger_id
137832       , p_sla_ledger_id
137833       , p_language
137834       , object_name
137835       , object_type_code
137836       , line_number
137837       , source_application_id
137838       , source_type_code
137839       , source_code
137840       , SUBSTR(source_value ,1,1996)
137841       , SUBSTR(source_meaning,1,200)
137842       , xla_environment_pkg.g_Usr_Id
137843       , TRUNC(SYSDATE)
137844       , TRUNC(SYSDATE)
137845       , xla_environment_pkg.g_Usr_Id
137846       , xla_environment_pkg.g_Login_Id
137847       , TRUNC(SYSDATE)
137848       , xla_environment_pkg.g_Prog_Appl_Id
137849       , xla_environment_pkg.g_Prog_Id
137850       , xla_environment_pkg.g_Req_Id
137851   FROM (
137852        SELECT xet.event_id                  event_id
137853             , 0                             line_number
137854             , CASE r
137855                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
137856                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
137857                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
137858                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
137859                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
137860                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
137861                 
137862                ELSE null
137863               END                           object_name
137864             , CASE r
137865                 WHEN 1 THEN 'HEADER' 
137866                 WHEN 2 THEN 'HEADER' 
137867                 WHEN 3 THEN 'HEADER' 
137868                 WHEN 4 THEN 'HEADER' 
137869                 WHEN 5 THEN 'HEADER' 
137870                 WHEN 6 THEN 'HEADER' 
137871                 
137872                 ELSE null
137873               END                           object_type_code
137874             , CASE r
137875                 WHEN 1 THEN '555' 
137876                 WHEN 2 THEN '555' 
137877                 WHEN 3 THEN '555' 
137878                 WHEN 4 THEN '555' 
137879                 WHEN 5 THEN '555' 
137880                 WHEN 6 THEN '555' 
137881                 
137882                 ELSE null
137886                 WHEN 1 THEN 'ENTITY_CODE' 
137883               END                           source_application_id
137884             , 'S'             source_type_code
137885             , CASE r
137887                 WHEN 2 THEN 'CURRENCY_CODE' 
137888                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
137889                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
137890                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
137891                 WHEN 6 THEN 'TRANSACTION_DATE' 
137892                 
137893                 ELSE null
137894               END                           source_code
137895             , CASE r
137896                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
137897                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
137898                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
137899                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
137900                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
137901                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
137902                 
137903                 ELSE null
137904               END                           source_value
137905             , CASE r
137906                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
137907                           1010186
137908                          ,TO_CHAR(h1.CURRENCY_CODE)
137909                          ,'CURRENCY_CODE'
137910                          ,'S'
137911                          ,555)
137912                 
137913                 ELSE null
137914               END               source_meaning
137915         FROM xla_events_gt     xet  
137916       , GMF_XLA_EXTRACT_HEADERS  h1
137917             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
137918        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
137919          AND xet.event_type_code = C_EVENT_TYPE_CODE
137920             AND h1.event_id = xet.event_id
137921 
137922 )
137923 ;
137924 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
137925 
137926       trace
137927          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
137928          ,p_level    => C_LEVEL_STATEMENT
137929          ,p_module   => l_log_module);
137930 
137931 END IF;
137932 --
137933 
137934 
137935 
137936 --
137937 INSERT INTO xla_diag_sources --line1
137938 (
137939         event_id
137940       , ledger_id
137941       , sla_ledger_id
137942       , description_language
137943       , object_name
137944       , object_type_code
137945       , line_number
137946       , source_application_id
137947       , source_type_code
137948       , source_code
137949       , source_value
137950       , source_meaning
137951       , created_by
137952       , creation_date
137953       , last_update_date
137954       , last_updated_by
137955       , last_update_login
137956       , program_update_date
137957       , program_application_id
137958       , program_id
137959       , request_id
137960 )
137961 SELECT  event_id
137962       , p_target_ledger_id
137963       , p_sla_ledger_id
137964       , p_language
137965       , object_name
137966       , object_type_code
137967       , line_number
137968       , source_application_id
137969       , source_type_code
137970       , source_code
137971       , SUBSTR(source_value,1,1996)
137972       , SUBSTR(source_meaning,1,200)
137973       , xla_environment_pkg.g_Usr_Id
137974       , TRUNC(SYSDATE)
137975       , TRUNC(SYSDATE)
137976       , xla_environment_pkg.g_Usr_Id
137977       , xla_environment_pkg.g_Login_Id
137978       , TRUNC(SYSDATE)
137979       , xla_environment_pkg.g_Prog_Appl_Id
137980       , xla_environment_pkg.g_Prog_Id
137981       , xla_environment_pkg.g_Req_Id
137982   FROM (
137983        SELECT xet.event_id                  event_id
137984             , l2.line_number                 line_number
137985             , CASE r
137986                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
137987                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
137988                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
137989                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
137990                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
137991                 
137992                ELSE null
137993               END                           object_name
137994             , CASE r
137995                 WHEN 1 THEN 'LINE' 
137996                 WHEN 2 THEN 'LINE' 
137997                 WHEN 3 THEN 'LINE' 
137998                 WHEN 4 THEN 'LINE' 
137999                 WHEN 5 THEN 'LINE' 
138000                 
138001                 ELSE null
138002               END                           object_type_code
138003             , CASE r
138004                 WHEN 1 THEN '555' 
138005                 WHEN 2 THEN '555' 
138006                 WHEN 3 THEN '555' 
138007                 WHEN 4 THEN '555' 
138008                 WHEN 5 THEN '555' 
138009                 
138010                 ELSE null
138011               END                           source_application_id
138012             , 'S'             source_type_code
138013             , CASE r
138014                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
138015                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
138016                 WHEN 3 THEN 'ENTERED_AMOUNT' 
138017                 WHEN 4 THEN 'LINE_ID' 
138018                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
138019                 
138020                 ELSE null
138024                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
138021               END                           source_code
138022             , CASE r
138023                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
138025                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
138026                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
138027                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
138028                 
138029                 ELSE null
138030               END                           source_value
138031             , null              source_meaning
138032          FROM  xla_events_gt     xet  
138033         , GMF_XLA_EXTRACT_LINES  l2
138034             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
138035         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
138036           AND xet.event_type_code = C_EVENT_TYPE_CODE
138037             AND l2.event_id          = xet.event_id
138038 
138039 )
138040 ;
138041 --
138042 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138043 
138044       trace
138045          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
138046          ,p_level    => C_LEVEL_STATEMENT
138047          ,p_module   => l_log_module);
138048 
138049 END IF;
138050 
138051 
138052 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138053       trace
138054          (p_msg      => 'END of insert_sources_263'
138055          ,p_level    => C_LEVEL_PROCEDURE
138056          ,p_module   => l_log_module);
138057 END IF;
138058 EXCEPTION
138059   WHEN xla_exceptions_pkg.application_exception THEN
138060       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
138061             trace
138062                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
138063                ,p_level    => C_LEVEL_EXCEPTION
138064                ,p_module   => l_log_module);
138065       END IF;
138066       RAISE;
138067   WHEN OTHERS THEN
138068       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
138069             trace
138070                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
138071                ,p_level    => C_LEVEL_EXCEPTION
138072                ,p_module   => l_log_module);
138073        END IF;
138074        xla_exceptions_pkg.raise_message
138075            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_263');
138076 END insert_sources_263;
138077 --
138078 
138079 ---------------------------------------
138080 --
138081 -- PRIVATE FUNCTION
138082 --         EventType_263
138083 --
138084 ----------------------------------------
138085 --
138086 FUNCTION EventType_263
138087        (p_application_id         IN NUMBER
138088        ,p_base_ledger_id         IN NUMBER
138089        ,p_target_ledger_id       IN NUMBER
138090        ,p_language               IN VARCHAR2
138091        ,p_currency_code          IN VARCHAR2
138092        ,p_sla_ledger_id          IN NUMBER
138093        ,p_pad_start_date         IN DATE
138094        ,p_pad_end_date           IN DATE
138095        ,p_primary_ledger_id      IN NUMBER)
138096 RETURN BOOLEAN IS
138097 --
138098 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'EXP_REQ_RCPT_TP';
138099 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
138100 
138101 l_calculate_acctd_flag   VARCHAR2(1) :='N';
138102 l_calculate_g_l_flag     VARCHAR2(1) :='N';
138103 --
138104 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138105 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138106 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
138107 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138108 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138109 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
138110 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
138111 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138112 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138113 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138114 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138115 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138116 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138117 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138118 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138119 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138120 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138121 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138122 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138123 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138124 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138125 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138126 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
138127 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
138128 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
138129 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
138130 
138131 l_event_id                             NUMBER;
138135 
138132 l_previous_event_id                    NUMBER;
138133 l_first_event_id                       NUMBER;
138134 l_last_event_id                        NUMBER;
138136 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
138137 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
138138 --
138139 --
138140 l_result                    BOOLEAN := TRUE;
138141 l_rows                      NUMBER  := 1000;
138142 l_event_type_name           VARCHAR2(80) := 'Internal Order Receipt into Expense, Transfer Pricing';
138143 l_event_class_name          VARCHAR2(80) := 'Internal Order to Expense';
138144 l_description               VARCHAR2(4000);
138145 l_transaction_reversal      NUMBER;
138146 l_ae_header_id              NUMBER;
138147 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
138148 l_log_module                VARCHAR2(240);
138149 --
138150 l_acct_reversal_source      VARCHAR2(30);
138151 l_trx_reversal_source       VARCHAR2(30);
138152 
138153 l_continue_with_lines       BOOLEAN := TRUE;
138154 --
138155 l_acc_rev_gl_date_source    DATE;                      -- 4262811
138156 --
138157 type t_array_event_id is table of number index by binary_integer;
138158 
138159 l_rec_array_event                    t_rec_array_event;
138160 l_null_rec_array_event               t_rec_array_event;
138161 l_array_ae_header_id                 xla_number_array_type;
138162 l_actual_flag                        VARCHAR2(1) := NULL;
138163 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
138164 l_balance_type_code                  VARCHAR2(1) :=NULL;
138165 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
138166 
138167 --
138168 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
138169 --
138170 
138171 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
138172 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
138173 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
138174 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
138175 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
138176 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
138177 
138178 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
138179 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
138180 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
138181 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
138182 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
138183 
138184 l_array_source_6              t_array_source_6;
138185 l_array_source_7              t_array_source_7;
138186 l_array_source_8              t_array_source_8;
138187 l_array_source_9              t_array_source_9;
138188 l_array_source_10              t_array_source_10;
138189 l_array_source_12              t_array_source_12;
138190 
138191 l_array_source_1      t_array_source_1;
138192 l_array_source_2      t_array_source_2;
138193 l_array_source_3      t_array_source_3;
138194 l_array_source_5      t_array_source_5;
138195 l_array_source_11      t_array_source_11;
138196 
138197 --
138198 CURSOR header_cur
138199 IS
138200 SELECT /*+ leading(xet) cardinality(xet,1) */
138201 -- Event Type Code: EXP_REQ_RCPT_TP
138202 -- Event Class Code: INT_ORDER_TO_EXP
138203     xet.entity_id
138204   , xet.legal_entity_id
138205   , xet.entity_code
138206   , xet.transaction_number
138207   , xet.event_id
138208   , xet.event_class_code
138209   , xet.event_type_code
138210   , xet.event_number
138211   , xet.event_date
138212   , xet.transaction_date
138213   , xet.reference_num_1
138214   , xet.reference_num_2
138215   , xet.reference_num_3
138216   , xet.reference_num_4
138217   , xet.reference_char_1
138218   , xet.reference_char_2
138219   , xet.reference_char_3
138220   , xet.reference_char_4
138221   , xet.reference_date_1
138222   , xet.reference_date_2
138223   , xet.reference_date_3
138224   , xet.reference_date_4
138225   , xet.event_created_by
138226   , xet.budgetary_control_flag 
138227   , h1.ENTITY_CODE    source_6
138228   , h1.CURRENCY_CODE    source_7
138229   , h1.CURRENCY_CONVERSION_DATE    source_8
138230   , h1.CURRENCY_CONVERSION_RATE    source_9
138231   , h1.CURRENCY_CONVERSION_TYPE    source_10
138232   , h1.TRANSACTION_DATE    source_12
138233   FROM xla_events_gt     xet 
138234   , GMF_XLA_EXTRACT_HEADERS  h1
138235  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
138236    and xet.event_type_code = C_EVENT_TYPE_CODE
138237    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
138238 
138239  ORDER BY event_id
138240 ;
138241 
138242 
138243 --
138244 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
138245 IS
138246 SELECT /*+ leading(xet) cardinality(xet,1) */
138247 -- Event Type Code: EXP_REQ_RCPT_TP
138248 -- Event Class Code: INT_ORDER_TO_EXP
138249     xet.entity_id
138250    ,xet.legal_entity_id
138251    ,xet.entity_code
138252    ,xet.transaction_number
138253    ,xet.event_id
138254    ,xet.event_class_code
138255    ,xet.event_type_code
138256    ,xet.event_number
138257    ,xet.event_date
138258    ,xet.transaction_date
138262    ,xet.reference_num_4
138259    ,xet.reference_num_1
138260    ,xet.reference_num_2
138261    ,xet.reference_num_3
138263    ,xet.reference_char_1
138264    ,xet.reference_char_2
138265    ,xet.reference_char_3
138266    ,xet.reference_char_4
138267    ,xet.reference_date_1
138268    ,xet.reference_date_2
138269    ,xet.reference_date_3
138270    ,xet.reference_date_4
138271    ,xet.event_created_by
138272    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
138273   , l2.TRANSACTION_ACCOUNT_ID    source_1
138274   , l2.JOURNAL_LINE_TYPE    source_2
138275   , l2.ENTERED_AMOUNT    source_3
138276   , l2.LINE_ID    source_5
138277   , l2.ACCOUNTED_AMOUNT    source_11
138278   FROM xla_events_gt     xet 
138279   , GMF_XLA_EXTRACT_LINES  l2
138280  WHERE xet.event_id between x_first_event_id and x_last_event_id
138281    and xet.event_date between p_pad_start_date and p_pad_end_date
138282    and xet.event_type_code = C_EVENT_TYPE_CODE
138283    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
138284 ;
138285 
138286 --
138287 BEGIN
138288 IF g_log_enabled THEN
138289    l_log_module := C_DEFAULT_MODULE||'.EventType_263';
138290 END IF;
138291 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138292    trace
138293       (p_msg      => 'BEGIN of EventType_263'
138294       ,p_level    => C_LEVEL_PROCEDURE
138295       ,p_module   => l_log_module);
138296 END IF;
138297 
138298 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138299    trace
138300       (p_msg      => 'p_application_id = '||p_application_id||
138301                      ' - p_base_ledger_id = '||p_base_ledger_id||
138302                      ' - p_target_ledger_id  = '||p_target_ledger_id||
138303                      ' - p_language = '||p_language||
138304                      ' - p_currency_code = '||p_currency_code||
138305                      ' - p_sla_ledger_id = '||p_sla_ledger_id
138306       ,p_level    => C_LEVEL_STATEMENT
138307       ,p_module   => l_log_module);
138308 END IF;
138309 --
138310 -- initialze arrays
138311 --
138312 g_array_event.DELETE;
138313 l_rec_array_event := l_null_rec_array_event;
138314 --
138315 --------------------------------------
138316 -- 4262811 Initialze MPA Line Number
138317 --------------------------------------
138318 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
138319 
138320 --
138321 
138322 --
138323 OPEN header_cur;
138324 --
138325 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138326    trace
138327    (p_msg      => 'SQL - FETCH header_cur'
138328    ,p_level    => C_LEVEL_STATEMENT
138329    ,p_module   => l_log_module);
138330 END IF;
138331 --
138332 LOOP
138333 FETCH header_cur BULK COLLECT INTO
138334         l_array_entity_id
138335       , l_array_legal_entity_id
138336       , l_array_entity_code
138337       , l_array_transaction_num
138338       , l_array_event_id
138339       , l_array_class_code
138340       , l_array_event_type
138341       , l_array_event_number
138342       , l_array_event_date
138343       , l_array_transaction_date
138344       , l_array_reference_num_1
138345       , l_array_reference_num_2
138346       , l_array_reference_num_3
138347       , l_array_reference_num_4
138348       , l_array_reference_char_1
138349       , l_array_reference_char_2
138350       , l_array_reference_char_3
138351       , l_array_reference_char_4
138352       , l_array_reference_date_1
138353       , l_array_reference_date_2
138354       , l_array_reference_date_3
138355       , l_array_reference_date_4
138356       , l_array_event_created_by
138357       , l_array_budgetary_control_flag 
138358       , l_array_source_6
138359       , l_array_source_7
138360       , l_array_source_8
138361       , l_array_source_9
138362       , l_array_source_10
138363       , l_array_source_12
138364       LIMIT l_rows;
138365 --
138366 IF (C_LEVEL_EVENT >= g_log_level) THEN
138367    trace
138368    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
138369    ,p_level    => C_LEVEL_EVENT
138370    ,p_module   => l_log_module);
138371 END IF;
138372 --
138373 EXIT WHEN l_array_entity_id.COUNT = 0;
138374 
138375 -- initialize arrays
138376 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
138377 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
138378 
138379 --
138380 -- Bug 4458708
138381 --
138382 XLA_AE_LINES_PKG.g_LineNumber := 0;
138383 
138384 
138385 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
138386 g_last_hdr_idx := l_array_event_id.LAST;
138387 --
138388 -- loop for the headers. Each iteration is for each header extract row
138389 -- fetched in header cursor
138390 --
138391 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
138392 
138393 --
138394 -- set event info as cache for other routines to refer event attributes
138395 --
138396 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
138397    (p_application_id           => p_application_id
138398    ,p_primary_ledger_id        => p_primary_ledger_id
138399    ,p_base_ledger_id           => p_base_ledger_id
138400    ,p_target_ledger_id         => p_target_ledger_id
138401    ,p_entity_id                => l_array_entity_id(hdr_idx)
138402    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
138403    ,p_entity_code              => l_array_entity_code(hdr_idx)
138404    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
138405    ,p_event_id                 => l_array_event_id(hdr_idx)
138409    ,p_event_date               => l_array_event_date(hdr_idx)
138406    ,p_event_class_code         => l_array_class_code(hdr_idx)
138407    ,p_event_type_code          => l_array_event_type(hdr_idx)
138408    ,p_event_number             => l_array_event_number(hdr_idx)
138410    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
138411    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
138412    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
138413    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
138414    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
138415    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
138416    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
138417    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
138418    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
138419    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
138420    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
138421    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
138422    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
138423    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
138424    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
138425 
138426 --
138427 -- set the status of entry to C_VALID (0)
138428 --
138429 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
138430 
138431 --
138432 -- initialize a row for ae header
138433 --
138434 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
138435 
138436 l_event_id := l_array_event_id(hdr_idx);
138437 
138438 --
138439 -- storing the hdr_idx for event. May be used by line cursor.
138440 --
138441 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
138442 
138443 --
138444 -- store sources from header extract. This can be improved to
138445 -- store only those sources from header extract that may be used in lines
138446 --
138447 
138448 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
138449 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
138450 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
138451 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
138452 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
138453 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
138454 
138455 --
138456 -- initilaize the status of ae headers for diffrent balance types
138457 -- the status is initialised to C_NOT_CREATED (2)
138458 --
138459 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
138460 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
138461 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
138462 
138463 --
138464 -- call api to validate and store accounting attributes for header
138465 --
138466 
138467 ------------------------------------------------------------
138468 -- Accrual Reversal : to get date for Standard Source (NONE)
138469 ------------------------------------------------------------
138470 l_acc_rev_gl_date_source := NULL;
138471 
138472      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
138473       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
138474 
138475 
138476 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
138477 
138478 XLA_AE_HEADER_PKG.SetJeCategoryName;
138479 
138480 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
138481 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
138482 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
138483 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
138484 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
138485 
138486 
138487 -- No header level analytical criteria
138488 
138489 --
138490 --accounting attribute enhancement, bug 3612931
138491 --
138492 l_trx_reversal_source := SUBSTR(NULL, 1,30);
138493 
138494 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
138495    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
138496 
138497    xla_accounting_err_pkg.build_message
138498       (p_appli_s_name            => 'XLA'
138499       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
138500       ,p_token_1                 => 'ACCT_ATTR_NAME'
138501       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
138502       ,p_token_2                 => 'PRODUCT_NAME'
138503       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
138504       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
138505       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
138506       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
138507 
138508 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
138509    --
138510    -- following sets the accounting attributes needed to reverse
138511    -- accounting for a distributeion
138512    --
138513    xla_ae_lines_pkg.SetTrxReversalAttrs
138517 
138514       (p_event_id              => l_event_id
138515       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
138516       ,p_trx_reversal_source   => l_trx_reversal_source);
138518 END IF;
138519 
138520 
138521 ----------------------------------------------------------------
138522 -- 4262811 -  update the header statuses to invalid in need be
138523 ----------------------------------------------------------------
138524 --
138525 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
138526 
138527 
138528   -----------------------------------------------
138529   -- No accrual reversal for the event class/type
138530   -----------------------------------------------
138531 ----------------------------------------------------------------
138532 
138533 --
138534 -- this ends the header loop iteration for one bulk fetch
138535 --
138536 END LOOP;
138537 
138538 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
138539 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
138540 
138541 --
138542 -- insert dummy rows into lines gt table that were created due to
138543 -- transaction reversals
138544 --
138545 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
138546    l_result := XLA_AE_LINES_PKG.InsertLines;
138547 END IF;
138548 
138549 --
138550 -- reset the temp_line_num for each set of events fetched from header
138551 -- cursor rather than doing it for each new event in line cursor
138552 -- Bug 3939231
138553 --
138554 xla_ae_lines_pkg.g_temp_line_num := 0;
138555 
138556 
138557 
138558 --
138559 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
138560 --
138561 --
138562 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138563 
138564       trace
138565          (p_msg      => 'SQL - FETCH line_cur'
138566          ,p_level    => C_LEVEL_STATEMENT
138567          ,p_module   => l_log_module);
138568 
138569 END IF;
138570 --
138571 --
138572 LOOP
138573   --
138574   FETCH line_cur BULK COLLECT INTO
138575         l_array_entity_id
138576       , l_array_legal_entity_id
138577       , l_array_entity_code
138578       , l_array_transaction_num
138579       , l_array_event_id
138580       , l_array_class_code
138581       , l_array_event_type
138582       , l_array_event_number
138583       , l_array_event_date
138584       , l_array_transaction_date
138585       , l_array_reference_num_1
138586       , l_array_reference_num_2
138587       , l_array_reference_num_3
138588       , l_array_reference_num_4
138589       , l_array_reference_char_1
138590       , l_array_reference_char_2
138591       , l_array_reference_char_3
138592       , l_array_reference_char_4
138593       , l_array_reference_date_1
138594       , l_array_reference_date_2
138595       , l_array_reference_date_3
138596       , l_array_reference_date_4
138597       , l_array_event_created_by
138598       , l_array_budgetary_control_flag
138599       , l_array_extract_line_num 
138600       , l_array_source_1
138601       , l_array_source_2
138602       , l_array_source_3
138603       , l_array_source_5
138604       , l_array_source_11
138605       LIMIT l_rows;
138606 
138607   --
138608   IF (C_LEVEL_EVENT >= g_log_level) THEN
138609             trace
138610                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
138611                ,p_level    => C_LEVEL_EVENT
138612                ,p_module   => l_log_module);
138613   END IF;
138614   --
138615   EXIT WHEN l_array_entity_id.count = 0;
138616 
138617   XLA_AE_LINES_PKG.g_rec_lines := null;
138618 
138619 --
138620 -- Bug 4458708
138621 --
138622 XLA_AE_LINES_PKG.g_LineNumber := 0;
138623 --
138624 --
138625 
138626 FOR Idx IN 1..l_array_event_id.count LOOP
138627    --
138628    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
138629    --
138630    l_event_id := l_array_event_id(idx);  -- 5648433
138631 
138632    --
138633    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
138634    --
138635 
138636    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
138637              (g_array_event(l_event_id).array_value_num('header_index'))
138638          ,'N'
138639          ) <> 'Y'
138640    THEN
138641       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138642          trace
138643             (p_msg      => 'Trancaction revesal option is not Y '
138644             ,p_level    => C_LEVEL_STATEMENT
138645             ,p_module   => l_log_module);
138646       END IF;
138647 
138648 --
138649 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
138650 --
138651 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
138652 --
138653 -- set event info as cache for other routines to refer event attributes
138654 --
138655 
138656 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
138657    l_previous_event_id := l_event_id;
138658 
138659    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
138660       (p_application_id           => p_application_id
138661       ,p_primary_ledger_id        => p_primary_ledger_id
138662       ,p_base_ledger_id           => p_base_ledger_id
138663       ,p_target_ledger_id         => p_target_ledger_id
138667       ,p_transaction_num          => l_array_transaction_num(Idx)
138664       ,p_entity_id                => l_array_entity_id(Idx)
138665       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
138666       ,p_entity_code              => l_array_entity_code(Idx)
138668       ,p_event_id                 => l_array_event_id(Idx)
138669       ,p_event_class_code         => l_array_class_code(Idx)
138670       ,p_event_type_code          => l_array_event_type(Idx)
138671       ,p_event_number             => l_array_event_number(Idx)
138672       ,p_event_date               => l_array_event_date(Idx)
138673       ,p_transaction_date         => l_array_transaction_date(Idx)
138674       ,p_reference_num_1          => l_array_reference_num_1(Idx)
138675       ,p_reference_num_2          => l_array_reference_num_2(Idx)
138676       ,p_reference_num_3          => l_array_reference_num_3(Idx)
138677       ,p_reference_num_4          => l_array_reference_num_4(Idx)
138678       ,p_reference_char_1         => l_array_reference_char_1(Idx)
138679       ,p_reference_char_2         => l_array_reference_char_2(Idx)
138680       ,p_reference_char_3         => l_array_reference_char_3(Idx)
138681       ,p_reference_char_4         => l_array_reference_char_4(Idx)
138682       ,p_reference_date_1         => l_array_reference_date_1(Idx)
138683       ,p_reference_date_2         => l_array_reference_date_2(Idx)
138684       ,p_reference_date_3         => l_array_reference_date_3(Idx)
138685       ,p_reference_date_4         => l_array_reference_date_4(Idx)
138686       ,p_event_created_by         => l_array_event_created_by(Idx)
138687       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
138688        --
138689 END IF;
138690 
138691 
138692 
138693 --
138694 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
138695 
138696 l_acct_reversal_source := SUBSTR(NULL, 1,30);
138697 
138698 IF l_continue_with_lines THEN
138699    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
138700       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
138701 
138702       xla_accounting_err_pkg.build_message
138703          (p_appli_s_name            => 'XLA'
138704          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
138705          ,p_token_1                 => 'LINE_NUMBER'
138706          ,p_value_1                 => l_array_extract_line_num(Idx)
138707          ,p_token_2                 => 'PRODUCT_NAME'
138708          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
138709          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
138710          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
138711          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
138712 
138713    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
138714       --
138715       -- following sets the accounting attributes needed to reverse
138716       -- accounting for a distributeion
138717       --
138718 
138719       --
138720       -- 5217187
138721       --
138722       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
138723       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
138724                                        g_array_event(l_event_id).array_value_num('header_index'));
138725       --
138726       --
138727 
138728       -- No reversal code generated
138729 
138730       xla_ae_lines_pkg.SetAcctReversalAttrs
138731          (p_event_id             => l_event_id
138732          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
138733          ,p_calculate_acctd_flag => l_calculate_acctd_flag
138734          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
138735    END IF;
138736 
138737    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
138738        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
138739 
138740 --
138741 AcctLineType_91 (
138742  p_application_id  => p_application_id
138743  ,p_event_id     => l_event_id
138744  ,p_calculate_acctd_flag => l_calculate_acctd_flag
138745  ,p_calculate_g_l_flag => l_calculate_g_l_flag
138746  ,p_actual_flag => l_actual_flag
138747  ,p_balance_type_code => l_balance_type_code
138748  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
138749  
138750  , p_source_1 => l_array_source_1(Idx)
138751  , p_source_2 => l_array_source_2(Idx)
138752  , p_source_3 => l_array_source_3(Idx)
138753  , p_source_5 => l_array_source_5(Idx)
138754  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
138755  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
138756  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
138757  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
138758  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
138759  , p_source_11 => l_array_source_11(Idx)
138760  );
138761 If(l_balance_type_code = 'A') THEN
138762   l_actual_gain_loss_ref := l_gain_or_loss_ref;
138763 END IF;
138764 
138765 --
138766 
138767 
138768 --
138769 AcctLineType_173 (
138770  p_application_id  => p_application_id
138771  ,p_event_id     => l_event_id
138772  ,p_calculate_acctd_flag => l_calculate_acctd_flag
138773  ,p_calculate_g_l_flag => l_calculate_g_l_flag
138774  ,p_actual_flag => l_actual_flag
138775  ,p_balance_type_code => l_balance_type_code
138776  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
138777  
138778  , p_source_1 => l_array_source_1(Idx)
138782  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
138779  , p_source_2 => l_array_source_2(Idx)
138780  , p_source_3 => l_array_source_3(Idx)
138781  , p_source_5 => l_array_source_5(Idx)
138783  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
138784  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
138785  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
138786  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
138787  , p_source_11 => l_array_source_11(Idx)
138788  );
138789 If(l_balance_type_code = 'A') THEN
138790   l_actual_gain_loss_ref := l_gain_or_loss_ref;
138791 END IF;
138792 
138793 --
138794 
138795       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
138796       -- or secondary ledger that has different currency with primary
138797       -- or alc that is calculated by sla
138798       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
138799             (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'))
138800 
138801 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
138802 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
138803           AND (l_actual_flag = 'A')) THEN
138804         XLA_AE_LINES_PKG.CreateGainOrLossLines(
138805           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
138806          ,p_application_id   => p_application_id
138807          ,p_amb_context_code => 'DEFAULT'
138808          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
138809          ,p_event_class_code => C_EVENT_CLASS_CODE
138810          ,p_event_type_code  => C_EVENT_TYPE_CODE
138811          
138812          ,p_gain_ccid        => -1
138813          ,p_loss_ccid        => -1
138814 
138815          ,p_actual_flag      => l_actual_flag
138816          ,p_enc_flag         => null
138817          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
138818          ,p_enc_g_l_ref      => null
138819          );
138820       END IF;
138821    END IF;
138822 END IF;
138823 
138824    ELSE
138825       --
138826       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
138827       --
138828       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138829          trace
138830             (p_msg      => 'Trancaction revesal option is Y'
138831             ,p_level    => C_LEVEL_STATEMENT
138832             ,p_module   => l_log_module);
138833       END IF;
138834    END IF;
138835 
138836 END LOOP;
138837 l_result := XLA_AE_LINES_PKG.InsertLines ;
138838 end loop;
138839 close line_cur;
138840 
138841 
138842 --
138843 -- insert headers into xla_ae_headers_gt table
138844 --
138845 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
138846 
138847 -- insert into errors table here.
138848 
138849 END LOOP;
138850 
138851 --
138852 -- 4865292
138853 --
138854 -- Compare g_hdr_extract_count with event count in
138855 -- CreateHeadersAndLines.
138856 --
138857 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
138858 
138859 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138860    trace (p_msg     => '# rows extracted from header extract objects '
138861                     || ' (running total): '
138862                     || g_hdr_extract_count
138863          ,p_level   => C_LEVEL_STATEMENT
138864          ,p_module  => l_log_module);
138865 END IF;
138866 
138867 CLOSE header_cur;
138868 --
138869 
138870 --
138871 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138872    trace
138873       (p_msg      => 'END of EventType_263'
138874       ,p_level    => C_LEVEL_PROCEDURE
138875       ,p_module   => l_log_module);
138876 END IF;
138877 --
138878 RETURN l_result;
138879 EXCEPTION
138880 WHEN xla_exceptions_pkg.application_exception THEN
138881    
138882 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
138883 
138884    
138885 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
138886 
138887    RAISE;
138888 
138889 WHEN NO_DATA_FOUND THEN
138890 
138891 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
138892 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
138893 
138894 FOR header_record IN header_cur
138895 LOOP
138896     l_array_header_events(header_record.event_id) := header_record.event_id;
138897 END LOOP;
138898 
138899 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
138900 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
138901 
138902 fnd_file.put_line(fnd_file.LOG, '                    ');
138903 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
138904 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
138905 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
138906 
138907 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
138908 LOOP
138909 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
138910 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
138911         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
138912 	END IF;
138913 END LOOP;
138914 
138918 
138915 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
138916 fnd_file.put_line(fnd_file.LOG, '                    ');
138917 
138919 xla_exceptions_pkg.raise_message
138920       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_263');
138921 
138922 
138923 WHEN OTHERS THEN
138924    xla_exceptions_pkg.raise_message
138925       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_263');
138926 END EventType_263;
138927 --
138928 
138929 ---------------------------------------
138930 --
138931 -- PRIVATE PROCEDURE
138932 --         insert_sources_264
138933 --
138934 ----------------------------------------
138935 --
138936 PROCEDURE insert_sources_264(
138937                                 p_target_ledger_id       IN NUMBER
138938                               , p_language               IN VARCHAR2
138939                               , p_sla_ledger_id          IN NUMBER
138940                               , p_pad_start_date         IN DATE
138941                               , p_pad_end_date           IN DATE
138942                          )
138943 IS
138944 
138945 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'EXP_RET_TO_RECEIVING';
138946 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RECEIVE';
138947 p_apps_owner                   VARCHAR2(30);
138948 l_log_module                   VARCHAR2(240);
138949 BEGIN
138950 IF g_log_enabled THEN
138951       l_log_module := C_DEFAULT_MODULE||'.insert_sources_264';
138952 END IF;
138953 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138954 
138955       trace
138956          (p_msg      => 'BEGIN of insert_sources_264'
138957          ,p_level    => C_LEVEL_PROCEDURE
138958          ,p_module   => l_log_module);
138959 
138960 END IF;
138961 
138962 -- select APPS owner
138963 SELECT oracle_username
138964   INTO p_apps_owner
138965   FROM fnd_oracle_userid
138966  WHERE read_only_flag = 'U'
138967 ;
138968 
138969 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138970       trace
138971          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
138972                         ' - p_language = '||p_language||
138973                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
138974                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
138975                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
138976                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
138977          ,p_level    => C_LEVEL_STATEMENT
138978          ,p_module   => l_log_module);
138979 END IF;
138980 
138981 
138982 --
138983 INSERT INTO xla_diag_sources --hdr1
138984 (
138985         event_id
138986       , ledger_id
138987       , sla_ledger_id
138988       , description_language
138989       , object_name
138990       , object_type_code
138991       , line_number
138992       , source_application_id
138993       , source_type_code
138994       , source_code
138995       , source_value
138996       , source_meaning
138997       , created_by
138998       , creation_date
138999       , last_update_date
139000       , last_updated_by
139001       , last_update_login
139002       , program_update_date
139003       , program_application_id
139004       , program_id
139005       , request_id
139006 )
139007 SELECT
139008         event_id
139009       , p_target_ledger_id
139010       , p_sla_ledger_id
139011       , p_language
139012       , object_name
139013       , object_type_code
139014       , line_number
139015       , source_application_id
139016       , source_type_code
139017       , source_code
139018       , SUBSTR(source_value ,1,1996)
139019       , SUBSTR(source_meaning,1,200)
139020       , xla_environment_pkg.g_Usr_Id
139021       , TRUNC(SYSDATE)
139022       , TRUNC(SYSDATE)
139023       , xla_environment_pkg.g_Usr_Id
139024       , xla_environment_pkg.g_Login_Id
139025       , TRUNC(SYSDATE)
139026       , xla_environment_pkg.g_Prog_Appl_Id
139027       , xla_environment_pkg.g_Prog_Id
139028       , xla_environment_pkg.g_Req_Id
139029   FROM (
139030        SELECT xet.event_id                  event_id
139031             , 0                             line_number
139032             , CASE r
139033                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
139034                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
139035                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
139036                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
139037                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
139038                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
139039                 
139040                ELSE null
139041               END                           object_name
139042             , CASE r
139043                 WHEN 1 THEN 'HEADER' 
139044                 WHEN 2 THEN 'HEADER' 
139045                 WHEN 3 THEN 'HEADER' 
139046                 WHEN 4 THEN 'HEADER' 
139047                 WHEN 5 THEN 'HEADER' 
139048                 WHEN 6 THEN 'HEADER' 
139049                 
139050                 ELSE null
139051               END                           object_type_code
139052             , CASE r
139053                 WHEN 1 THEN '555' 
139054                 WHEN 2 THEN '555' 
139055                 WHEN 3 THEN '555' 
139056                 WHEN 4 THEN '555' 
139057                 WHEN 5 THEN '555' 
139058                 WHEN 6 THEN '555' 
139059                 
139060                 ELSE null
139064                 WHEN 1 THEN 'ENTITY_CODE' 
139061               END                           source_application_id
139062             , 'S'             source_type_code
139063             , CASE r
139065                 WHEN 2 THEN 'CURRENCY_CODE' 
139066                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
139067                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
139068                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
139069                 WHEN 6 THEN 'TRANSACTION_DATE' 
139070                 
139071                 ELSE null
139072               END                           source_code
139073             , CASE r
139074                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
139075                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
139076                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
139077                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
139078                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
139079                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
139080                 
139081                 ELSE null
139082               END                           source_value
139083             , CASE r
139084                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
139085                           1010186
139086                          ,TO_CHAR(h1.CURRENCY_CODE)
139087                          ,'CURRENCY_CODE'
139088                          ,'S'
139089                          ,555)
139090                 
139091                 ELSE null
139092               END               source_meaning
139093         FROM xla_events_gt     xet  
139094       , GMF_XLA_EXTRACT_HEADERS  h1
139095             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
139096        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
139097          AND xet.event_type_code = C_EVENT_TYPE_CODE
139098             AND h1.event_id = xet.event_id
139099 
139100 )
139101 ;
139102 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139103 
139104       trace
139105          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
139106          ,p_level    => C_LEVEL_STATEMENT
139107          ,p_module   => l_log_module);
139108 
139109 END IF;
139110 --
139111 
139112 
139113 
139114 --
139115 INSERT INTO xla_diag_sources --line1
139116 (
139117         event_id
139118       , ledger_id
139119       , sla_ledger_id
139120       , description_language
139121       , object_name
139122       , object_type_code
139123       , line_number
139124       , source_application_id
139125       , source_type_code
139126       , source_code
139127       , source_value
139128       , source_meaning
139129       , created_by
139130       , creation_date
139131       , last_update_date
139132       , last_updated_by
139133       , last_update_login
139134       , program_update_date
139135       , program_application_id
139136       , program_id
139137       , request_id
139138 )
139139 SELECT  event_id
139140       , p_target_ledger_id
139141       , p_sla_ledger_id
139142       , p_language
139143       , object_name
139144       , object_type_code
139145       , line_number
139146       , source_application_id
139147       , source_type_code
139148       , source_code
139149       , SUBSTR(source_value,1,1996)
139150       , SUBSTR(source_meaning,1,200)
139151       , xla_environment_pkg.g_Usr_Id
139152       , TRUNC(SYSDATE)
139153       , TRUNC(SYSDATE)
139154       , xla_environment_pkg.g_Usr_Id
139155       , xla_environment_pkg.g_Login_Id
139156       , TRUNC(SYSDATE)
139157       , xla_environment_pkg.g_Prog_Appl_Id
139158       , xla_environment_pkg.g_Prog_Id
139159       , xla_environment_pkg.g_Req_Id
139160   FROM (
139161        SELECT xet.event_id                  event_id
139162             , l2.line_number                 line_number
139163             , CASE r
139164                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
139165                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
139166                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
139167                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
139168                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
139169                 
139170                ELSE null
139171               END                           object_name
139172             , CASE r
139173                 WHEN 1 THEN 'LINE' 
139174                 WHEN 2 THEN 'LINE' 
139175                 WHEN 3 THEN 'LINE' 
139176                 WHEN 4 THEN 'LINE' 
139177                 WHEN 5 THEN 'LINE' 
139178                 
139179                 ELSE null
139180               END                           object_type_code
139181             , CASE r
139182                 WHEN 1 THEN '555' 
139183                 WHEN 2 THEN '555' 
139184                 WHEN 3 THEN '555' 
139185                 WHEN 4 THEN '555' 
139186                 WHEN 5 THEN '555' 
139187                 
139188                 ELSE null
139189               END                           source_application_id
139190             , 'S'             source_type_code
139191             , CASE r
139192                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
139193                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
139194                 WHEN 3 THEN 'ENTERED_AMOUNT' 
139195                 WHEN 4 THEN 'LINE_ID' 
139196                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
139197                 
139198                 ELSE null
139202                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
139199               END                           source_code
139200             , CASE r
139201                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
139203                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
139204                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
139205                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
139206                 
139207                 ELSE null
139208               END                           source_value
139209             , null              source_meaning
139210          FROM  xla_events_gt     xet  
139211         , GMF_XLA_EXTRACT_LINES  l2
139212             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
139213         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
139214           AND xet.event_type_code = C_EVENT_TYPE_CODE
139215             AND l2.event_id          = xet.event_id
139216 
139217 )
139218 ;
139219 --
139220 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139221 
139222       trace
139223          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
139224          ,p_level    => C_LEVEL_STATEMENT
139225          ,p_module   => l_log_module);
139226 
139227 END IF;
139228 
139229 
139230 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139231       trace
139232          (p_msg      => 'END of insert_sources_264'
139233          ,p_level    => C_LEVEL_PROCEDURE
139234          ,p_module   => l_log_module);
139235 END IF;
139236 EXCEPTION
139237   WHEN xla_exceptions_pkg.application_exception THEN
139238       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
139239             trace
139240                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
139241                ,p_level    => C_LEVEL_EXCEPTION
139242                ,p_module   => l_log_module);
139243       END IF;
139244       RAISE;
139245   WHEN OTHERS THEN
139246       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
139247             trace
139248                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
139249                ,p_level    => C_LEVEL_EXCEPTION
139250                ,p_module   => l_log_module);
139251        END IF;
139252        xla_exceptions_pkg.raise_message
139253            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_264');
139254 END insert_sources_264;
139255 --
139256 
139257 ---------------------------------------
139258 --
139259 -- PRIVATE FUNCTION
139260 --         EventType_264
139261 --
139262 ----------------------------------------
139263 --
139264 FUNCTION EventType_264
139265        (p_application_id         IN NUMBER
139266        ,p_base_ledger_id         IN NUMBER
139267        ,p_target_ledger_id       IN NUMBER
139268        ,p_language               IN VARCHAR2
139269        ,p_currency_code          IN VARCHAR2
139270        ,p_sla_ledger_id          IN NUMBER
139271        ,p_pad_start_date         IN DATE
139272        ,p_pad_end_date           IN DATE
139273        ,p_primary_ledger_id      IN NUMBER)
139274 RETURN BOOLEAN IS
139275 --
139276 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'EXP_RET_TO_RECEIVING';
139277 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RECEIVE';
139278 
139279 l_calculate_acctd_flag   VARCHAR2(1) :='N';
139280 l_calculate_g_l_flag     VARCHAR2(1) :='N';
139281 --
139282 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139283 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139284 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
139285 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139286 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139287 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
139288 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
139289 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139290 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139291 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139292 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139293 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139294 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139295 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139296 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139297 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139298 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139299 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139300 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139301 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139302 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139303 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139304 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
139305 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
139306 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
139307 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
139308 
139309 l_event_id                             NUMBER;
139313 
139310 l_previous_event_id                    NUMBER;
139311 l_first_event_id                       NUMBER;
139312 l_last_event_id                        NUMBER;
139314 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
139315 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
139316 --
139317 --
139318 l_result                    BOOLEAN := TRUE;
139319 l_rows                      NUMBER  := 1000;
139320 l_event_type_name           VARCHAR2(80) := 'Expense Return to Receiving';
139321 l_event_class_name          VARCHAR2(80) := 'Receiving';
139322 l_description               VARCHAR2(4000);
139323 l_transaction_reversal      NUMBER;
139324 l_ae_header_id              NUMBER;
139325 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
139326 l_log_module                VARCHAR2(240);
139327 --
139328 l_acct_reversal_source      VARCHAR2(30);
139329 l_trx_reversal_source       VARCHAR2(30);
139330 
139331 l_continue_with_lines       BOOLEAN := TRUE;
139332 --
139333 l_acc_rev_gl_date_source    DATE;                      -- 4262811
139334 --
139335 type t_array_event_id is table of number index by binary_integer;
139336 
139337 l_rec_array_event                    t_rec_array_event;
139338 l_null_rec_array_event               t_rec_array_event;
139339 l_array_ae_header_id                 xla_number_array_type;
139340 l_actual_flag                        VARCHAR2(1) := NULL;
139341 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
139342 l_balance_type_code                  VARCHAR2(1) :=NULL;
139343 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
139344 
139345 --
139346 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
139347 --
139348 
139349 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
139350 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
139351 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
139352 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
139353 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
139354 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
139355 
139356 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
139357 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
139358 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
139359 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
139360 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
139361 
139362 l_array_source_6              t_array_source_6;
139363 l_array_source_7              t_array_source_7;
139364 l_array_source_8              t_array_source_8;
139365 l_array_source_9              t_array_source_9;
139366 l_array_source_10              t_array_source_10;
139367 l_array_source_12              t_array_source_12;
139368 
139369 l_array_source_1      t_array_source_1;
139370 l_array_source_2      t_array_source_2;
139371 l_array_source_3      t_array_source_3;
139372 l_array_source_5      t_array_source_5;
139373 l_array_source_11      t_array_source_11;
139374 
139375 --
139376 CURSOR header_cur
139377 IS
139378 SELECT /*+ leading(xet) cardinality(xet,1) */
139379 -- Event Type Code: EXP_RET_TO_RECEIVING
139380 -- Event Class Code: RECEIVE
139381     xet.entity_id
139382   , xet.legal_entity_id
139383   , xet.entity_code
139384   , xet.transaction_number
139385   , xet.event_id
139386   , xet.event_class_code
139387   , xet.event_type_code
139388   , xet.event_number
139389   , xet.event_date
139390   , xet.transaction_date
139391   , xet.reference_num_1
139392   , xet.reference_num_2
139393   , xet.reference_num_3
139394   , xet.reference_num_4
139395   , xet.reference_char_1
139396   , xet.reference_char_2
139397   , xet.reference_char_3
139398   , xet.reference_char_4
139399   , xet.reference_date_1
139400   , xet.reference_date_2
139401   , xet.reference_date_3
139402   , xet.reference_date_4
139403   , xet.event_created_by
139404   , xet.budgetary_control_flag 
139405   , h1.ENTITY_CODE    source_6
139406   , h1.CURRENCY_CODE    source_7
139407   , h1.CURRENCY_CONVERSION_DATE    source_8
139408   , h1.CURRENCY_CONVERSION_RATE    source_9
139409   , h1.CURRENCY_CONVERSION_TYPE    source_10
139410   , h1.TRANSACTION_DATE    source_12
139411   FROM xla_events_gt     xet 
139412   , GMF_XLA_EXTRACT_HEADERS  h1
139413  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
139414    and xet.event_type_code = C_EVENT_TYPE_CODE
139415    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
139416 
139417  ORDER BY event_id
139418 ;
139419 
139420 
139421 --
139422 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
139423 IS
139424 SELECT /*+ leading(xet) cardinality(xet,1) */
139425 -- Event Type Code: EXP_RET_TO_RECEIVING
139426 -- Event Class Code: RECEIVE
139427     xet.entity_id
139428    ,xet.legal_entity_id
139429    ,xet.entity_code
139430    ,xet.transaction_number
139431    ,xet.event_id
139432    ,xet.event_class_code
139433    ,xet.event_type_code
139434    ,xet.event_number
139435    ,xet.event_date
139436    ,xet.transaction_date
139437    ,xet.reference_num_1
139441    ,xet.reference_char_1
139438    ,xet.reference_num_2
139439    ,xet.reference_num_3
139440    ,xet.reference_num_4
139442    ,xet.reference_char_2
139443    ,xet.reference_char_3
139444    ,xet.reference_char_4
139445    ,xet.reference_date_1
139446    ,xet.reference_date_2
139447    ,xet.reference_date_3
139448    ,xet.reference_date_4
139449    ,xet.event_created_by
139450    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
139451   , l2.TRANSACTION_ACCOUNT_ID    source_1
139452   , l2.JOURNAL_LINE_TYPE    source_2
139453   , l2.ENTERED_AMOUNT    source_3
139454   , l2.LINE_ID    source_5
139455   , l2.ACCOUNTED_AMOUNT    source_11
139456   FROM xla_events_gt     xet 
139457   , GMF_XLA_EXTRACT_LINES  l2
139458  WHERE xet.event_id between x_first_event_id and x_last_event_id
139459    and xet.event_date between p_pad_start_date and p_pad_end_date
139460    and xet.event_type_code = C_EVENT_TYPE_CODE
139461    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
139462 ;
139463 
139464 --
139465 BEGIN
139466 IF g_log_enabled THEN
139467    l_log_module := C_DEFAULT_MODULE||'.EventType_264';
139468 END IF;
139469 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139470    trace
139471       (p_msg      => 'BEGIN of EventType_264'
139472       ,p_level    => C_LEVEL_PROCEDURE
139473       ,p_module   => l_log_module);
139474 END IF;
139475 
139476 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139477    trace
139478       (p_msg      => 'p_application_id = '||p_application_id||
139479                      ' - p_base_ledger_id = '||p_base_ledger_id||
139480                      ' - p_target_ledger_id  = '||p_target_ledger_id||
139481                      ' - p_language = '||p_language||
139482                      ' - p_currency_code = '||p_currency_code||
139483                      ' - p_sla_ledger_id = '||p_sla_ledger_id
139484       ,p_level    => C_LEVEL_STATEMENT
139485       ,p_module   => l_log_module);
139486 END IF;
139487 --
139488 -- initialze arrays
139489 --
139490 g_array_event.DELETE;
139491 l_rec_array_event := l_null_rec_array_event;
139492 --
139493 --------------------------------------
139494 -- 4262811 Initialze MPA Line Number
139495 --------------------------------------
139496 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
139497 
139498 --
139499 
139500 --
139501 OPEN header_cur;
139502 --
139503 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139504    trace
139505    (p_msg      => 'SQL - FETCH header_cur'
139506    ,p_level    => C_LEVEL_STATEMENT
139507    ,p_module   => l_log_module);
139508 END IF;
139509 --
139510 LOOP
139511 FETCH header_cur BULK COLLECT INTO
139512         l_array_entity_id
139513       , l_array_legal_entity_id
139514       , l_array_entity_code
139515       , l_array_transaction_num
139516       , l_array_event_id
139517       , l_array_class_code
139518       , l_array_event_type
139519       , l_array_event_number
139520       , l_array_event_date
139521       , l_array_transaction_date
139522       , l_array_reference_num_1
139523       , l_array_reference_num_2
139524       , l_array_reference_num_3
139525       , l_array_reference_num_4
139526       , l_array_reference_char_1
139527       , l_array_reference_char_2
139528       , l_array_reference_char_3
139529       , l_array_reference_char_4
139530       , l_array_reference_date_1
139531       , l_array_reference_date_2
139532       , l_array_reference_date_3
139533       , l_array_reference_date_4
139534       , l_array_event_created_by
139535       , l_array_budgetary_control_flag 
139536       , l_array_source_6
139537       , l_array_source_7
139538       , l_array_source_8
139539       , l_array_source_9
139540       , l_array_source_10
139541       , l_array_source_12
139542       LIMIT l_rows;
139543 --
139544 IF (C_LEVEL_EVENT >= g_log_level) THEN
139545    trace
139546    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
139547    ,p_level    => C_LEVEL_EVENT
139548    ,p_module   => l_log_module);
139549 END IF;
139550 --
139551 EXIT WHEN l_array_entity_id.COUNT = 0;
139552 
139553 -- initialize arrays
139554 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
139555 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
139556 
139557 --
139558 -- Bug 4458708
139559 --
139560 XLA_AE_LINES_PKG.g_LineNumber := 0;
139561 
139562 
139563 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
139564 g_last_hdr_idx := l_array_event_id.LAST;
139565 --
139566 -- loop for the headers. Each iteration is for each header extract row
139567 -- fetched in header cursor
139568 --
139569 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
139570 
139571 --
139572 -- set event info as cache for other routines to refer event attributes
139573 --
139574 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
139575    (p_application_id           => p_application_id
139576    ,p_primary_ledger_id        => p_primary_ledger_id
139577    ,p_base_ledger_id           => p_base_ledger_id
139578    ,p_target_ledger_id         => p_target_ledger_id
139579    ,p_entity_id                => l_array_entity_id(hdr_idx)
139580    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
139581    ,p_entity_code              => l_array_entity_code(hdr_idx)
139582    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
139583    ,p_event_id                 => l_array_event_id(hdr_idx)
139587    ,p_event_date               => l_array_event_date(hdr_idx)
139584    ,p_event_class_code         => l_array_class_code(hdr_idx)
139585    ,p_event_type_code          => l_array_event_type(hdr_idx)
139586    ,p_event_number             => l_array_event_number(hdr_idx)
139588    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
139589    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
139590    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
139591    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
139592    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
139593    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
139594    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
139595    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
139596    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
139597    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
139598    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
139599    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
139600    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
139601    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
139602    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
139603 
139604 --
139605 -- set the status of entry to C_VALID (0)
139606 --
139607 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
139608 
139609 --
139610 -- initialize a row for ae header
139611 --
139612 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
139613 
139614 l_event_id := l_array_event_id(hdr_idx);
139615 
139616 --
139617 -- storing the hdr_idx for event. May be used by line cursor.
139618 --
139619 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
139620 
139621 --
139622 -- store sources from header extract. This can be improved to
139623 -- store only those sources from header extract that may be used in lines
139624 --
139625 
139626 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
139627 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
139628 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
139629 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
139630 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
139631 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
139632 
139633 --
139634 -- initilaize the status of ae headers for diffrent balance types
139635 -- the status is initialised to C_NOT_CREATED (2)
139636 --
139637 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
139638 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
139639 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
139640 
139641 --
139642 -- call api to validate and store accounting attributes for header
139643 --
139644 
139645 ------------------------------------------------------------
139646 -- Accrual Reversal : to get date for Standard Source (NONE)
139647 ------------------------------------------------------------
139648 l_acc_rev_gl_date_source := NULL;
139649 
139650      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
139651       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
139652 
139653 
139654 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
139655 
139656 XLA_AE_HEADER_PKG.SetJeCategoryName;
139657 
139658 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
139659 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
139660 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
139661 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
139662 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
139663 
139664 
139665 -- No header level analytical criteria
139666 
139667 --
139668 --accounting attribute enhancement, bug 3612931
139669 --
139670 l_trx_reversal_source := SUBSTR(NULL, 1,30);
139671 
139672 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
139673    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
139674 
139675    xla_accounting_err_pkg.build_message
139676       (p_appli_s_name            => 'XLA'
139677       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
139678       ,p_token_1                 => 'ACCT_ATTR_NAME'
139679       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
139680       ,p_token_2                 => 'PRODUCT_NAME'
139681       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
139682       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
139683       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
139684       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
139685 
139686 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
139687    --
139688    -- following sets the accounting attributes needed to reverse
139689    -- accounting for a distributeion
139690    --
139691    xla_ae_lines_pkg.SetTrxReversalAttrs
139695 
139692       (p_event_id              => l_event_id
139693       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
139694       ,p_trx_reversal_source   => l_trx_reversal_source);
139696 END IF;
139697 
139698 
139699 ----------------------------------------------------------------
139700 -- 4262811 -  update the header statuses to invalid in need be
139701 ----------------------------------------------------------------
139702 --
139703 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
139704 
139705 
139706   -----------------------------------------------
139707   -- No accrual reversal for the event class/type
139708   -----------------------------------------------
139709 ----------------------------------------------------------------
139710 
139711 --
139712 -- this ends the header loop iteration for one bulk fetch
139713 --
139714 END LOOP;
139715 
139716 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
139717 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
139718 
139719 --
139720 -- insert dummy rows into lines gt table that were created due to
139721 -- transaction reversals
139722 --
139723 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
139724    l_result := XLA_AE_LINES_PKG.InsertLines;
139725 END IF;
139726 
139727 --
139728 -- reset the temp_line_num for each set of events fetched from header
139729 -- cursor rather than doing it for each new event in line cursor
139730 -- Bug 3939231
139731 --
139732 xla_ae_lines_pkg.g_temp_line_num := 0;
139733 
139734 
139735 
139736 --
139737 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
139738 --
139739 --
139740 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139741 
139742       trace
139743          (p_msg      => 'SQL - FETCH line_cur'
139744          ,p_level    => C_LEVEL_STATEMENT
139745          ,p_module   => l_log_module);
139746 
139747 END IF;
139748 --
139749 --
139750 LOOP
139751   --
139752   FETCH line_cur BULK COLLECT INTO
139753         l_array_entity_id
139754       , l_array_legal_entity_id
139755       , l_array_entity_code
139756       , l_array_transaction_num
139757       , l_array_event_id
139758       , l_array_class_code
139759       , l_array_event_type
139760       , l_array_event_number
139761       , l_array_event_date
139762       , l_array_transaction_date
139763       , l_array_reference_num_1
139764       , l_array_reference_num_2
139765       , l_array_reference_num_3
139766       , l_array_reference_num_4
139767       , l_array_reference_char_1
139768       , l_array_reference_char_2
139769       , l_array_reference_char_3
139770       , l_array_reference_char_4
139771       , l_array_reference_date_1
139772       , l_array_reference_date_2
139773       , l_array_reference_date_3
139774       , l_array_reference_date_4
139775       , l_array_event_created_by
139776       , l_array_budgetary_control_flag
139777       , l_array_extract_line_num 
139778       , l_array_source_1
139779       , l_array_source_2
139780       , l_array_source_3
139781       , l_array_source_5
139782       , l_array_source_11
139783       LIMIT l_rows;
139784 
139785   --
139786   IF (C_LEVEL_EVENT >= g_log_level) THEN
139787             trace
139788                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
139789                ,p_level    => C_LEVEL_EVENT
139790                ,p_module   => l_log_module);
139791   END IF;
139792   --
139793   EXIT WHEN l_array_entity_id.count = 0;
139794 
139795   XLA_AE_LINES_PKG.g_rec_lines := null;
139796 
139797 --
139798 -- Bug 4458708
139799 --
139800 XLA_AE_LINES_PKG.g_LineNumber := 0;
139801 --
139802 --
139803 
139804 FOR Idx IN 1..l_array_event_id.count LOOP
139805    --
139806    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
139807    --
139808    l_event_id := l_array_event_id(idx);  -- 5648433
139809 
139810    --
139811    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
139812    --
139813 
139814    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
139815              (g_array_event(l_event_id).array_value_num('header_index'))
139816          ,'N'
139817          ) <> 'Y'
139818    THEN
139819       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139820          trace
139821             (p_msg      => 'Trancaction revesal option is not Y '
139822             ,p_level    => C_LEVEL_STATEMENT
139823             ,p_module   => l_log_module);
139824       END IF;
139825 
139826 --
139827 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
139828 --
139829 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
139830 --
139831 -- set event info as cache for other routines to refer event attributes
139832 --
139833 
139834 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
139835    l_previous_event_id := l_event_id;
139836 
139837    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
139838       (p_application_id           => p_application_id
139839       ,p_primary_ledger_id        => p_primary_ledger_id
139840       ,p_base_ledger_id           => p_base_ledger_id
139841       ,p_target_ledger_id         => p_target_ledger_id
139845       ,p_transaction_num          => l_array_transaction_num(Idx)
139842       ,p_entity_id                => l_array_entity_id(Idx)
139843       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
139844       ,p_entity_code              => l_array_entity_code(Idx)
139846       ,p_event_id                 => l_array_event_id(Idx)
139847       ,p_event_class_code         => l_array_class_code(Idx)
139848       ,p_event_type_code          => l_array_event_type(Idx)
139849       ,p_event_number             => l_array_event_number(Idx)
139850       ,p_event_date               => l_array_event_date(Idx)
139851       ,p_transaction_date         => l_array_transaction_date(Idx)
139852       ,p_reference_num_1          => l_array_reference_num_1(Idx)
139853       ,p_reference_num_2          => l_array_reference_num_2(Idx)
139854       ,p_reference_num_3          => l_array_reference_num_3(Idx)
139855       ,p_reference_num_4          => l_array_reference_num_4(Idx)
139856       ,p_reference_char_1         => l_array_reference_char_1(Idx)
139857       ,p_reference_char_2         => l_array_reference_char_2(Idx)
139858       ,p_reference_char_3         => l_array_reference_char_3(Idx)
139859       ,p_reference_char_4         => l_array_reference_char_4(Idx)
139860       ,p_reference_date_1         => l_array_reference_date_1(Idx)
139861       ,p_reference_date_2         => l_array_reference_date_2(Idx)
139862       ,p_reference_date_3         => l_array_reference_date_3(Idx)
139863       ,p_reference_date_4         => l_array_reference_date_4(Idx)
139864       ,p_event_created_by         => l_array_event_created_by(Idx)
139865       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
139866        --
139867 END IF;
139868 
139869 
139870 
139871 --
139872 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
139873 
139874 l_acct_reversal_source := SUBSTR(NULL, 1,30);
139875 
139876 IF l_continue_with_lines THEN
139877    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
139878       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
139879 
139880       xla_accounting_err_pkg.build_message
139881          (p_appli_s_name            => 'XLA'
139882          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
139883          ,p_token_1                 => 'LINE_NUMBER'
139884          ,p_value_1                 => l_array_extract_line_num(Idx)
139885          ,p_token_2                 => 'PRODUCT_NAME'
139886          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
139887          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
139888          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
139889          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
139890 
139891    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
139892       --
139893       -- following sets the accounting attributes needed to reverse
139894       -- accounting for a distributeion
139895       --
139896 
139897       --
139898       -- 5217187
139899       --
139900       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
139901       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
139902                                        g_array_event(l_event_id).array_value_num('header_index'));
139903       --
139904       --
139905 
139906       -- No reversal code generated
139907 
139908       xla_ae_lines_pkg.SetAcctReversalAttrs
139909          (p_event_id             => l_event_id
139910          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
139911          ,p_calculate_acctd_flag => l_calculate_acctd_flag
139912          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
139913    END IF;
139914 
139915    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
139916        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
139917 
139918 --
139919 AcctLineType_83 (
139920  p_application_id  => p_application_id
139921  ,p_event_id     => l_event_id
139922  ,p_calculate_acctd_flag => l_calculate_acctd_flag
139923  ,p_calculate_g_l_flag => l_calculate_g_l_flag
139924  ,p_actual_flag => l_actual_flag
139925  ,p_balance_type_code => l_balance_type_code
139926  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
139927  
139928  , p_source_1 => l_array_source_1(Idx)
139929  , p_source_2 => l_array_source_2(Idx)
139930  , p_source_3 => l_array_source_3(Idx)
139931  , p_source_5 => l_array_source_5(Idx)
139932  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
139933  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
139934  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
139935  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
139936  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
139937  , p_source_11 => l_array_source_11(Idx)
139938  );
139939 If(l_balance_type_code = 'A') THEN
139940   l_actual_gain_loss_ref := l_gain_or_loss_ref;
139941 END IF;
139942 
139943 --
139944 
139945 
139946 --
139947 AcctLineType_197 (
139948  p_application_id  => p_application_id
139949  ,p_event_id     => l_event_id
139950  ,p_calculate_acctd_flag => l_calculate_acctd_flag
139951  ,p_calculate_g_l_flag => l_calculate_g_l_flag
139952  ,p_actual_flag => l_actual_flag
139953  ,p_balance_type_code => l_balance_type_code
139954  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
139955  
139956  , p_source_1 => l_array_source_1(Idx)
139957  , p_source_2 => l_array_source_2(Idx)
139961  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
139958  , p_source_3 => l_array_source_3(Idx)
139959  , p_source_5 => l_array_source_5(Idx)
139960  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
139962  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
139963  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
139964  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
139965  , p_source_11 => l_array_source_11(Idx)
139966  );
139967 If(l_balance_type_code = 'A') THEN
139968   l_actual_gain_loss_ref := l_gain_or_loss_ref;
139969 END IF;
139970 
139971 --
139972 
139973       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
139974       -- or secondary ledger that has different currency with primary
139975       -- or alc that is calculated by sla
139976       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
139977             (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'))
139978 
139979 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
139980 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
139981           AND (l_actual_flag = 'A')) THEN
139982         XLA_AE_LINES_PKG.CreateGainOrLossLines(
139983           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
139984          ,p_application_id   => p_application_id
139985          ,p_amb_context_code => 'DEFAULT'
139986          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
139987          ,p_event_class_code => C_EVENT_CLASS_CODE
139988          ,p_event_type_code  => C_EVENT_TYPE_CODE
139989          
139990          ,p_gain_ccid        => -1
139991          ,p_loss_ccid        => -1
139992 
139993          ,p_actual_flag      => l_actual_flag
139994          ,p_enc_flag         => null
139995          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
139996          ,p_enc_g_l_ref      => null
139997          );
139998       END IF;
139999    END IF;
140000 END IF;
140001 
140002    ELSE
140003       --
140004       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
140005       --
140006       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140007          trace
140008             (p_msg      => 'Trancaction revesal option is Y'
140009             ,p_level    => C_LEVEL_STATEMENT
140010             ,p_module   => l_log_module);
140011       END IF;
140012    END IF;
140013 
140014 END LOOP;
140015 l_result := XLA_AE_LINES_PKG.InsertLines ;
140016 end loop;
140017 close line_cur;
140018 
140019 
140020 --
140021 -- insert headers into xla_ae_headers_gt table
140022 --
140023 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
140024 
140025 -- insert into errors table here.
140026 
140027 END LOOP;
140028 
140029 --
140030 -- 4865292
140031 --
140032 -- Compare g_hdr_extract_count with event count in
140033 -- CreateHeadersAndLines.
140034 --
140035 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
140036 
140037 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140038    trace (p_msg     => '# rows extracted from header extract objects '
140039                     || ' (running total): '
140040                     || g_hdr_extract_count
140041          ,p_level   => C_LEVEL_STATEMENT
140042          ,p_module  => l_log_module);
140043 END IF;
140044 
140045 CLOSE header_cur;
140046 --
140047 
140048 --
140049 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140050    trace
140051       (p_msg      => 'END of EventType_264'
140052       ,p_level    => C_LEVEL_PROCEDURE
140053       ,p_module   => l_log_module);
140054 END IF;
140055 --
140056 RETURN l_result;
140057 EXCEPTION
140058 WHEN xla_exceptions_pkg.application_exception THEN
140059    
140060 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
140061 
140062    
140063 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
140064 
140065    RAISE;
140066 
140067 WHEN NO_DATA_FOUND THEN
140068 
140069 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
140070 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
140071 
140072 FOR header_record IN header_cur
140073 LOOP
140074     l_array_header_events(header_record.event_id) := header_record.event_id;
140075 END LOOP;
140076 
140077 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
140078 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
140079 
140080 fnd_file.put_line(fnd_file.LOG, '                    ');
140081 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
140082 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
140083 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
140084 
140085 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
140086 LOOP
140087 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
140088 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
140089         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
140090 	END IF;
140091 END LOOP;
140092 
140096 
140093 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
140094 fnd_file.put_line(fnd_file.LOG, '                    ');
140095 
140097 xla_exceptions_pkg.raise_message
140098       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_264');
140099 
140100 
140101 WHEN OTHERS THEN
140102    xla_exceptions_pkg.raise_message
140103       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_264');
140104 END EventType_264;
140105 --
140106 
140107 ---------------------------------------
140108 --
140109 -- PRIVATE PROCEDURE
140110 --         insert_sources_265
140111 --
140112 ----------------------------------------
140113 --
140114 PROCEDURE insert_sources_265(
140115                                 p_target_ledger_id       IN NUMBER
140116                               , p_language               IN VARCHAR2
140117                               , p_sla_ledger_id          IN NUMBER
140118                               , p_pad_start_date         IN DATE
140119                               , p_pad_end_date           IN DATE
140120                          )
140121 IS
140122 
140123 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
140124 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
140125 p_apps_owner                   VARCHAR2(30);
140126 l_log_module                   VARCHAR2(240);
140127 BEGIN
140128 IF g_log_enabled THEN
140129       l_log_module := C_DEFAULT_MODULE||'.insert_sources_265';
140130 END IF;
140131 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140132 
140133       trace
140134          (p_msg      => 'BEGIN of insert_sources_265'
140135          ,p_level    => C_LEVEL_PROCEDURE
140136          ,p_module   => l_log_module);
140137 
140138 END IF;
140139 
140140 -- select APPS owner
140141 SELECT oracle_username
140142   INTO p_apps_owner
140143   FROM fnd_oracle_userid
140144  WHERE read_only_flag = 'U'
140145 ;
140146 
140147 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140148       trace
140149          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
140150                         ' - p_language = '||p_language||
140151                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
140152                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
140153                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
140154                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
140155          ,p_level    => C_LEVEL_STATEMENT
140156          ,p_module   => l_log_module);
140157 END IF;
140158 
140159 
140160 --
140161 INSERT INTO xla_diag_sources --hdr1
140162 (
140163         event_id
140164       , ledger_id
140165       , sla_ledger_id
140166       , description_language
140167       , object_name
140168       , object_type_code
140169       , line_number
140170       , source_application_id
140171       , source_type_code
140172       , source_code
140173       , source_value
140174       , source_meaning
140175       , created_by
140176       , creation_date
140177       , last_update_date
140178       , last_updated_by
140179       , last_update_login
140180       , program_update_date
140181       , program_application_id
140182       , program_id
140183       , request_id
140184 )
140185 SELECT
140186         event_id
140187       , p_target_ledger_id
140188       , p_sla_ledger_id
140189       , p_language
140190       , object_name
140191       , object_type_code
140192       , line_number
140193       , source_application_id
140194       , source_type_code
140195       , source_code
140196       , SUBSTR(source_value ,1,1996)
140197       , SUBSTR(source_meaning,1,200)
140198       , xla_environment_pkg.g_Usr_Id
140199       , TRUNC(SYSDATE)
140200       , TRUNC(SYSDATE)
140201       , xla_environment_pkg.g_Usr_Id
140202       , xla_environment_pkg.g_Login_Id
140203       , TRUNC(SYSDATE)
140204       , xla_environment_pkg.g_Prog_Appl_Id
140205       , xla_environment_pkg.g_Prog_Id
140206       , xla_environment_pkg.g_Req_Id
140207   FROM (
140208        SELECT xet.event_id                  event_id
140209             , 0                             line_number
140210             , CASE r
140211                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
140212                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
140213                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
140214                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
140215                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
140216                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
140217                 
140218                ELSE null
140219               END                           object_name
140220             , CASE r
140221                 WHEN 1 THEN 'HEADER' 
140222                 WHEN 2 THEN 'HEADER' 
140223                 WHEN 3 THEN 'HEADER' 
140224                 WHEN 4 THEN 'HEADER' 
140225                 WHEN 5 THEN 'HEADER' 
140226                 WHEN 6 THEN 'HEADER' 
140227                 
140228                 ELSE null
140229               END                           object_type_code
140230             , CASE r
140231                 WHEN 1 THEN '555' 
140232                 WHEN 2 THEN '555' 
140233                 WHEN 3 THEN '555' 
140234                 WHEN 4 THEN '555' 
140235                 WHEN 5 THEN '555' 
140236                 WHEN 6 THEN '555' 
140237                 
140238                 ELSE null
140242                 WHEN 1 THEN 'ENTITY_CODE' 
140239               END                           source_application_id
140240             , 'S'             source_type_code
140241             , CASE r
140243                 WHEN 2 THEN 'CURRENCY_CODE' 
140244                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
140245                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
140246                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
140247                 WHEN 6 THEN 'TRANSACTION_DATE' 
140248                 
140249                 ELSE null
140250               END                           source_code
140251             , CASE r
140252                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
140253                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
140254                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
140255                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
140256                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
140257                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
140258                 
140259                 ELSE null
140260               END                           source_value
140261             , CASE r
140262                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
140263                           1010186
140264                          ,TO_CHAR(h1.CURRENCY_CODE)
140265                          ,'CURRENCY_CODE'
140266                          ,'S'
140267                          ,555)
140268                 
140269                 ELSE null
140270               END               source_meaning
140271         FROM xla_events_gt     xet  
140272       , GMF_XLA_EXTRACT_HEADERS  h1
140273             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
140274        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
140275          AND xet.event_type_code = C_EVENT_TYPE_CODE
140276             AND h1.event_id = xet.event_id
140277 
140278 )
140279 ;
140280 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140281 
140282       trace
140283          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
140284          ,p_level    => C_LEVEL_STATEMENT
140285          ,p_module   => l_log_module);
140286 
140287 END IF;
140288 --
140289 
140290 
140291 
140292 --
140293 INSERT INTO xla_diag_sources --line1
140294 (
140295         event_id
140296       , ledger_id
140297       , sla_ledger_id
140298       , description_language
140299       , object_name
140300       , object_type_code
140301       , line_number
140302       , source_application_id
140303       , source_type_code
140304       , source_code
140305       , source_value
140306       , source_meaning
140307       , created_by
140308       , creation_date
140309       , last_update_date
140310       , last_updated_by
140311       , last_update_login
140312       , program_update_date
140313       , program_application_id
140314       , program_id
140315       , request_id
140316 )
140317 SELECT  event_id
140318       , p_target_ledger_id
140319       , p_sla_ledger_id
140320       , p_language
140321       , object_name
140322       , object_type_code
140323       , line_number
140324       , source_application_id
140325       , source_type_code
140326       , source_code
140327       , SUBSTR(source_value,1,1996)
140328       , SUBSTR(source_meaning,1,200)
140329       , xla_environment_pkg.g_Usr_Id
140330       , TRUNC(SYSDATE)
140331       , TRUNC(SYSDATE)
140332       , xla_environment_pkg.g_Usr_Id
140333       , xla_environment_pkg.g_Login_Id
140334       , TRUNC(SYSDATE)
140335       , xla_environment_pkg.g_Prog_Appl_Id
140336       , xla_environment_pkg.g_Prog_Id
140337       , xla_environment_pkg.g_Req_Id
140338   FROM (
140339        SELECT xet.event_id                  event_id
140340             , l2.line_number                 line_number
140341             , CASE r
140342                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
140343                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
140344                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
140345                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
140346                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
140347                 
140348                ELSE null
140349               END                           object_name
140350             , CASE r
140351                 WHEN 1 THEN 'LINE' 
140352                 WHEN 2 THEN 'LINE' 
140353                 WHEN 3 THEN 'LINE' 
140354                 WHEN 4 THEN 'LINE' 
140355                 WHEN 5 THEN 'LINE' 
140356                 
140357                 ELSE null
140358               END                           object_type_code
140359             , CASE r
140360                 WHEN 1 THEN '555' 
140361                 WHEN 2 THEN '555' 
140362                 WHEN 3 THEN '555' 
140363                 WHEN 4 THEN '555' 
140364                 WHEN 5 THEN '555' 
140365                 
140366                 ELSE null
140367               END                           source_application_id
140368             , 'S'             source_type_code
140369             , CASE r
140370                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
140371                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
140372                 WHEN 3 THEN 'ENTERED_AMOUNT' 
140373                 WHEN 4 THEN 'LINE_ID' 
140374                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
140375                 
140376                 ELSE null
140380                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
140377               END                           source_code
140378             , CASE r
140379                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
140381                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
140382                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
140383                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
140384                 
140385                 ELSE null
140386               END                           source_value
140387             , null              source_meaning
140388          FROM  xla_events_gt     xet  
140389         , GMF_XLA_EXTRACT_LINES  l2
140390             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
140391         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
140392           AND xet.event_type_code = C_EVENT_TYPE_CODE
140393             AND l2.event_id          = xet.event_id
140394 
140395 )
140396 ;
140397 --
140398 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140399 
140400       trace
140401          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
140402          ,p_level    => C_LEVEL_STATEMENT
140403          ,p_module   => l_log_module);
140404 
140405 END IF;
140406 
140407 
140408 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140409       trace
140410          (p_msg      => 'END of insert_sources_265'
140411          ,p_level    => C_LEVEL_PROCEDURE
140412          ,p_module   => l_log_module);
140413 END IF;
140414 EXCEPTION
140415   WHEN xla_exceptions_pkg.application_exception THEN
140416       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
140417             trace
140418                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
140419                ,p_level    => C_LEVEL_EXCEPTION
140420                ,p_module   => l_log_module);
140421       END IF;
140422       RAISE;
140423   WHEN OTHERS THEN
140424       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
140425             trace
140426                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
140427                ,p_level    => C_LEVEL_EXCEPTION
140428                ,p_module   => l_log_module);
140429        END IF;
140430        xla_exceptions_pkg.raise_message
140431            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_265');
140432 END insert_sources_265;
140433 --
140434 
140435 ---------------------------------------
140436 --
140437 -- PRIVATE FUNCTION
140438 --         EventType_265
140439 --
140440 ----------------------------------------
140441 --
140442 FUNCTION EventType_265
140443        (p_application_id         IN NUMBER
140444        ,p_base_ledger_id         IN NUMBER
140445        ,p_target_ledger_id       IN NUMBER
140446        ,p_language               IN VARCHAR2
140447        ,p_currency_code          IN VARCHAR2
140448        ,p_sla_ledger_id          IN NUMBER
140449        ,p_pad_start_date         IN DATE
140450        ,p_pad_end_date           IN DATE
140451        ,p_primary_ledger_id      IN NUMBER)
140452 RETURN BOOLEAN IS
140453 --
140454 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
140455 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
140456 
140457 l_calculate_acctd_flag   VARCHAR2(1) :='N';
140458 l_calculate_g_l_flag     VARCHAR2(1) :='N';
140459 --
140460 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
140461 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
140462 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
140463 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
140464 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
140465 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
140466 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
140467 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
140468 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
140469 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
140470 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
140471 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
140472 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
140473 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
140474 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
140475 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
140476 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
140477 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
140478 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
140479 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
140480 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
140481 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
140482 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
140483 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
140484 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
140485 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
140486 
140487 l_event_id                             NUMBER;
140491 
140488 l_previous_event_id                    NUMBER;
140489 l_first_event_id                       NUMBER;
140490 l_last_event_id                        NUMBER;
140492 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
140493 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
140494 --
140495 --
140496 l_result                    BOOLEAN := TRUE;
140497 l_rows                      NUMBER  := 1000;
140498 l_event_type_name           VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt, no Transfer Pricing';
140499 l_event_class_name          VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt';
140500 l_description               VARCHAR2(4000);
140501 l_transaction_reversal      NUMBER;
140502 l_ae_header_id              NUMBER;
140503 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
140504 l_log_module                VARCHAR2(240);
140505 --
140506 l_acct_reversal_source      VARCHAR2(30);
140507 l_trx_reversal_source       VARCHAR2(30);
140508 
140509 l_continue_with_lines       BOOLEAN := TRUE;
140510 --
140511 l_acc_rev_gl_date_source    DATE;                      -- 4262811
140512 --
140513 type t_array_event_id is table of number index by binary_integer;
140514 
140515 l_rec_array_event                    t_rec_array_event;
140516 l_null_rec_array_event               t_rec_array_event;
140517 l_array_ae_header_id                 xla_number_array_type;
140518 l_actual_flag                        VARCHAR2(1) := NULL;
140519 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
140520 l_balance_type_code                  VARCHAR2(1) :=NULL;
140521 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
140522 
140523 --
140524 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
140525 --
140526 
140527 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
140528 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
140529 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
140530 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
140531 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
140532 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
140533 
140534 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
140535 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
140536 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
140537 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
140538 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
140539 
140540 l_array_source_6              t_array_source_6;
140541 l_array_source_7              t_array_source_7;
140542 l_array_source_8              t_array_source_8;
140543 l_array_source_9              t_array_source_9;
140544 l_array_source_10              t_array_source_10;
140545 l_array_source_12              t_array_source_12;
140546 
140547 l_array_source_1      t_array_source_1;
140548 l_array_source_2      t_array_source_2;
140549 l_array_source_3      t_array_source_3;
140550 l_array_source_5      t_array_source_5;
140551 l_array_source_11      t_array_source_11;
140552 
140553 --
140554 CURSOR header_cur
140555 IS
140556 SELECT /*+ leading(xet) cardinality(xet,1) */
140557 -- Event Type Code: FOB_RCPT_RECIPIENT_RCPT_NO_TP
140558 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
140559     xet.entity_id
140560   , xet.legal_entity_id
140561   , xet.entity_code
140562   , xet.transaction_number
140563   , xet.event_id
140564   , xet.event_class_code
140565   , xet.event_type_code
140566   , xet.event_number
140567   , xet.event_date
140568   , xet.transaction_date
140569   , xet.reference_num_1
140570   , xet.reference_num_2
140571   , xet.reference_num_3
140572   , xet.reference_num_4
140573   , xet.reference_char_1
140574   , xet.reference_char_2
140575   , xet.reference_char_3
140576   , xet.reference_char_4
140577   , xet.reference_date_1
140578   , xet.reference_date_2
140579   , xet.reference_date_3
140580   , xet.reference_date_4
140581   , xet.event_created_by
140582   , xet.budgetary_control_flag 
140583   , h1.ENTITY_CODE    source_6
140584   , h1.CURRENCY_CODE    source_7
140585   , h1.CURRENCY_CONVERSION_DATE    source_8
140586   , h1.CURRENCY_CONVERSION_RATE    source_9
140587   , h1.CURRENCY_CONVERSION_TYPE    source_10
140588   , h1.TRANSACTION_DATE    source_12
140589   FROM xla_events_gt     xet 
140590   , GMF_XLA_EXTRACT_HEADERS  h1
140591  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
140592    and xet.event_type_code = C_EVENT_TYPE_CODE
140593    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
140594 
140595  ORDER BY event_id
140596 ;
140597 
140598 
140599 --
140600 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
140601 IS
140602 SELECT /*+ leading(xet) cardinality(xet,1) */
140603 -- Event Type Code: FOB_RCPT_RECIPIENT_RCPT_NO_TP
140604 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
140605     xet.entity_id
140606    ,xet.legal_entity_id
140607    ,xet.entity_code
140608    ,xet.transaction_number
140609    ,xet.event_id
140610    ,xet.event_class_code
140611    ,xet.event_type_code
140615    ,xet.reference_num_1
140612    ,xet.event_number
140613    ,xet.event_date
140614    ,xet.transaction_date
140616    ,xet.reference_num_2
140617    ,xet.reference_num_3
140618    ,xet.reference_num_4
140619    ,xet.reference_char_1
140620    ,xet.reference_char_2
140621    ,xet.reference_char_3
140622    ,xet.reference_char_4
140623    ,xet.reference_date_1
140624    ,xet.reference_date_2
140625    ,xet.reference_date_3
140626    ,xet.reference_date_4
140627    ,xet.event_created_by
140628    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
140629   , l2.TRANSACTION_ACCOUNT_ID    source_1
140630   , l2.JOURNAL_LINE_TYPE    source_2
140631   , l2.ENTERED_AMOUNT    source_3
140632   , l2.LINE_ID    source_5
140633   , l2.ACCOUNTED_AMOUNT    source_11
140634   FROM xla_events_gt     xet 
140635   , GMF_XLA_EXTRACT_LINES  l2
140636  WHERE xet.event_id between x_first_event_id and x_last_event_id
140637    and xet.event_date between p_pad_start_date and p_pad_end_date
140638    and xet.event_type_code = C_EVENT_TYPE_CODE
140639    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
140640 ;
140641 
140642 --
140643 BEGIN
140644 IF g_log_enabled THEN
140645    l_log_module := C_DEFAULT_MODULE||'.EventType_265';
140646 END IF;
140647 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140648    trace
140649       (p_msg      => 'BEGIN of EventType_265'
140650       ,p_level    => C_LEVEL_PROCEDURE
140651       ,p_module   => l_log_module);
140652 END IF;
140653 
140654 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140655    trace
140656       (p_msg      => 'p_application_id = '||p_application_id||
140657                      ' - p_base_ledger_id = '||p_base_ledger_id||
140658                      ' - p_target_ledger_id  = '||p_target_ledger_id||
140659                      ' - p_language = '||p_language||
140660                      ' - p_currency_code = '||p_currency_code||
140661                      ' - p_sla_ledger_id = '||p_sla_ledger_id
140662       ,p_level    => C_LEVEL_STATEMENT
140663       ,p_module   => l_log_module);
140664 END IF;
140665 --
140666 -- initialze arrays
140667 --
140668 g_array_event.DELETE;
140669 l_rec_array_event := l_null_rec_array_event;
140670 --
140671 --------------------------------------
140672 -- 4262811 Initialze MPA Line Number
140673 --------------------------------------
140674 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
140675 
140676 --
140677 
140678 --
140679 OPEN header_cur;
140680 --
140681 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140682    trace
140683    (p_msg      => 'SQL - FETCH header_cur'
140684    ,p_level    => C_LEVEL_STATEMENT
140685    ,p_module   => l_log_module);
140686 END IF;
140687 --
140688 LOOP
140689 FETCH header_cur BULK COLLECT INTO
140690         l_array_entity_id
140691       , l_array_legal_entity_id
140692       , l_array_entity_code
140693       , l_array_transaction_num
140694       , l_array_event_id
140695       , l_array_class_code
140696       , l_array_event_type
140697       , l_array_event_number
140698       , l_array_event_date
140699       , l_array_transaction_date
140700       , l_array_reference_num_1
140701       , l_array_reference_num_2
140702       , l_array_reference_num_3
140703       , l_array_reference_num_4
140704       , l_array_reference_char_1
140705       , l_array_reference_char_2
140706       , l_array_reference_char_3
140707       , l_array_reference_char_4
140708       , l_array_reference_date_1
140709       , l_array_reference_date_2
140710       , l_array_reference_date_3
140711       , l_array_reference_date_4
140712       , l_array_event_created_by
140713       , l_array_budgetary_control_flag 
140714       , l_array_source_6
140715       , l_array_source_7
140716       , l_array_source_8
140717       , l_array_source_9
140718       , l_array_source_10
140719       , l_array_source_12
140720       LIMIT l_rows;
140721 --
140722 IF (C_LEVEL_EVENT >= g_log_level) THEN
140723    trace
140724    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
140725    ,p_level    => C_LEVEL_EVENT
140726    ,p_module   => l_log_module);
140727 END IF;
140728 --
140729 EXIT WHEN l_array_entity_id.COUNT = 0;
140730 
140731 -- initialize arrays
140732 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
140733 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
140734 
140735 --
140736 -- Bug 4458708
140737 --
140738 XLA_AE_LINES_PKG.g_LineNumber := 0;
140739 
140740 
140741 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
140742 g_last_hdr_idx := l_array_event_id.LAST;
140743 --
140744 -- loop for the headers. Each iteration is for each header extract row
140745 -- fetched in header cursor
140746 --
140747 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
140748 
140749 --
140750 -- set event info as cache for other routines to refer event attributes
140751 --
140752 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
140753    (p_application_id           => p_application_id
140754    ,p_primary_ledger_id        => p_primary_ledger_id
140755    ,p_base_ledger_id           => p_base_ledger_id
140756    ,p_target_ledger_id         => p_target_ledger_id
140757    ,p_entity_id                => l_array_entity_id(hdr_idx)
140758    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
140759    ,p_entity_code              => l_array_entity_code(hdr_idx)
140763    ,p_event_type_code          => l_array_event_type(hdr_idx)
140760    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
140761    ,p_event_id                 => l_array_event_id(hdr_idx)
140762    ,p_event_class_code         => l_array_class_code(hdr_idx)
140764    ,p_event_number             => l_array_event_number(hdr_idx)
140765    ,p_event_date               => l_array_event_date(hdr_idx)
140766    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
140767    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
140768    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
140769    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
140770    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
140771    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
140772    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
140773    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
140774    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
140775    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
140776    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
140777    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
140778    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
140779    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
140780    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
140781 
140782 --
140783 -- set the status of entry to C_VALID (0)
140784 --
140785 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
140786 
140787 --
140788 -- initialize a row for ae header
140789 --
140790 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
140791 
140792 l_event_id := l_array_event_id(hdr_idx);
140793 
140794 --
140795 -- storing the hdr_idx for event. May be used by line cursor.
140796 --
140797 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
140798 
140799 --
140800 -- store sources from header extract. This can be improved to
140801 -- store only those sources from header extract that may be used in lines
140802 --
140803 
140804 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
140805 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
140806 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
140807 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
140808 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
140809 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
140810 
140811 --
140812 -- initilaize the status of ae headers for diffrent balance types
140813 -- the status is initialised to C_NOT_CREATED (2)
140814 --
140815 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
140816 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
140817 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
140818 
140819 --
140820 -- call api to validate and store accounting attributes for header
140821 --
140822 
140823 ------------------------------------------------------------
140824 -- Accrual Reversal : to get date for Standard Source (NONE)
140825 ------------------------------------------------------------
140826 l_acc_rev_gl_date_source := NULL;
140827 
140828      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
140829       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
140830 
140831 
140832 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
140833 
140834 XLA_AE_HEADER_PKG.SetJeCategoryName;
140835 
140836 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
140837 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
140838 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
140839 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
140840 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
140841 
140842 
140843 -- No header level analytical criteria
140844 
140845 --
140846 --accounting attribute enhancement, bug 3612931
140847 --
140848 l_trx_reversal_source := SUBSTR(NULL, 1,30);
140849 
140850 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
140851    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
140852 
140853    xla_accounting_err_pkg.build_message
140854       (p_appli_s_name            => 'XLA'
140855       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
140856       ,p_token_1                 => 'ACCT_ATTR_NAME'
140857       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
140858       ,p_token_2                 => 'PRODUCT_NAME'
140859       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
140860       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
140861       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
140862       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
140863 
140864 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
140865    --
140869    xla_ae_lines_pkg.SetTrxReversalAttrs
140866    -- following sets the accounting attributes needed to reverse
140867    -- accounting for a distributeion
140868    --
140870       (p_event_id              => l_event_id
140871       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
140872       ,p_trx_reversal_source   => l_trx_reversal_source);
140873 
140874 END IF;
140875 
140876 
140877 ----------------------------------------------------------------
140878 -- 4262811 -  update the header statuses to invalid in need be
140879 ----------------------------------------------------------------
140880 --
140881 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
140882 
140883 
140884   -----------------------------------------------
140885   -- No accrual reversal for the event class/type
140886   -----------------------------------------------
140887 ----------------------------------------------------------------
140888 
140889 --
140890 -- this ends the header loop iteration for one bulk fetch
140891 --
140892 END LOOP;
140893 
140894 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
140895 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
140896 
140897 --
140898 -- insert dummy rows into lines gt table that were created due to
140899 -- transaction reversals
140900 --
140901 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
140902    l_result := XLA_AE_LINES_PKG.InsertLines;
140903 END IF;
140904 
140905 --
140906 -- reset the temp_line_num for each set of events fetched from header
140907 -- cursor rather than doing it for each new event in line cursor
140908 -- Bug 3939231
140909 --
140910 xla_ae_lines_pkg.g_temp_line_num := 0;
140911 
140912 
140913 
140914 --
140915 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
140916 --
140917 --
140918 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140919 
140920       trace
140921          (p_msg      => 'SQL - FETCH line_cur'
140922          ,p_level    => C_LEVEL_STATEMENT
140923          ,p_module   => l_log_module);
140924 
140925 END IF;
140926 --
140927 --
140928 LOOP
140929   --
140930   FETCH line_cur BULK COLLECT INTO
140931         l_array_entity_id
140932       , l_array_legal_entity_id
140933       , l_array_entity_code
140934       , l_array_transaction_num
140935       , l_array_event_id
140936       , l_array_class_code
140937       , l_array_event_type
140938       , l_array_event_number
140939       , l_array_event_date
140940       , l_array_transaction_date
140941       , l_array_reference_num_1
140942       , l_array_reference_num_2
140943       , l_array_reference_num_3
140944       , l_array_reference_num_4
140945       , l_array_reference_char_1
140946       , l_array_reference_char_2
140947       , l_array_reference_char_3
140948       , l_array_reference_char_4
140949       , l_array_reference_date_1
140950       , l_array_reference_date_2
140951       , l_array_reference_date_3
140952       , l_array_reference_date_4
140953       , l_array_event_created_by
140954       , l_array_budgetary_control_flag
140955       , l_array_extract_line_num 
140956       , l_array_source_1
140957       , l_array_source_2
140958       , l_array_source_3
140959       , l_array_source_5
140960       , l_array_source_11
140961       LIMIT l_rows;
140962 
140963   --
140964   IF (C_LEVEL_EVENT >= g_log_level) THEN
140965             trace
140966                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
140967                ,p_level    => C_LEVEL_EVENT
140968                ,p_module   => l_log_module);
140969   END IF;
140970   --
140971   EXIT WHEN l_array_entity_id.count = 0;
140972 
140973   XLA_AE_LINES_PKG.g_rec_lines := null;
140974 
140975 --
140976 -- Bug 4458708
140977 --
140978 XLA_AE_LINES_PKG.g_LineNumber := 0;
140979 --
140980 --
140981 
140982 FOR Idx IN 1..l_array_event_id.count LOOP
140983    --
140984    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
140985    --
140986    l_event_id := l_array_event_id(idx);  -- 5648433
140987 
140988    --
140989    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
140990    --
140991 
140992    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
140993              (g_array_event(l_event_id).array_value_num('header_index'))
140994          ,'N'
140995          ) <> 'Y'
140996    THEN
140997       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140998          trace
140999             (p_msg      => 'Trancaction revesal option is not Y '
141000             ,p_level    => C_LEVEL_STATEMENT
141001             ,p_module   => l_log_module);
141002       END IF;
141003 
141004 --
141005 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
141006 --
141007 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
141008 --
141009 -- set event info as cache for other routines to refer event attributes
141010 --
141011 
141012 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
141013    l_previous_event_id := l_event_id;
141014 
141015    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
141016       (p_application_id           => p_application_id
141020       ,p_entity_id                => l_array_entity_id(Idx)
141017       ,p_primary_ledger_id        => p_primary_ledger_id
141018       ,p_base_ledger_id           => p_base_ledger_id
141019       ,p_target_ledger_id         => p_target_ledger_id
141021       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
141022       ,p_entity_code              => l_array_entity_code(Idx)
141023       ,p_transaction_num          => l_array_transaction_num(Idx)
141024       ,p_event_id                 => l_array_event_id(Idx)
141025       ,p_event_class_code         => l_array_class_code(Idx)
141026       ,p_event_type_code          => l_array_event_type(Idx)
141027       ,p_event_number             => l_array_event_number(Idx)
141028       ,p_event_date               => l_array_event_date(Idx)
141029       ,p_transaction_date         => l_array_transaction_date(Idx)
141030       ,p_reference_num_1          => l_array_reference_num_1(Idx)
141031       ,p_reference_num_2          => l_array_reference_num_2(Idx)
141032       ,p_reference_num_3          => l_array_reference_num_3(Idx)
141033       ,p_reference_num_4          => l_array_reference_num_4(Idx)
141034       ,p_reference_char_1         => l_array_reference_char_1(Idx)
141035       ,p_reference_char_2         => l_array_reference_char_2(Idx)
141036       ,p_reference_char_3         => l_array_reference_char_3(Idx)
141037       ,p_reference_char_4         => l_array_reference_char_4(Idx)
141038       ,p_reference_date_1         => l_array_reference_date_1(Idx)
141039       ,p_reference_date_2         => l_array_reference_date_2(Idx)
141040       ,p_reference_date_3         => l_array_reference_date_3(Idx)
141041       ,p_reference_date_4         => l_array_reference_date_4(Idx)
141042       ,p_event_created_by         => l_array_event_created_by(Idx)
141043       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
141044        --
141045 END IF;
141046 
141047 
141048 
141049 --
141050 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
141051 
141052 l_acct_reversal_source := SUBSTR(NULL, 1,30);
141053 
141054 IF l_continue_with_lines THEN
141055    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
141056       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
141057 
141058       xla_accounting_err_pkg.build_message
141059          (p_appli_s_name            => 'XLA'
141060          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
141061          ,p_token_1                 => 'LINE_NUMBER'
141062          ,p_value_1                 => l_array_extract_line_num(Idx)
141063          ,p_token_2                 => 'PRODUCT_NAME'
141064          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
141065          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
141066          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
141067          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
141068 
141069    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
141070       --
141071       -- following sets the accounting attributes needed to reverse
141072       -- accounting for a distributeion
141073       --
141074 
141075       --
141076       -- 5217187
141077       --
141078       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
141079       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
141080                                        g_array_event(l_event_id).array_value_num('header_index'));
141081       --
141082       --
141083 
141084       -- No reversal code generated
141085 
141086       xla_ae_lines_pkg.SetAcctReversalAttrs
141087          (p_event_id             => l_event_id
141088          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
141089          ,p_calculate_acctd_flag => l_calculate_acctd_flag
141090          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
141091    END IF;
141092 
141093    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
141094        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
141095 
141096 --
141097 AcctLineType_87 (
141098  p_application_id  => p_application_id
141099  ,p_event_id     => l_event_id
141100  ,p_calculate_acctd_flag => l_calculate_acctd_flag
141101  ,p_calculate_g_l_flag => l_calculate_g_l_flag
141102  ,p_actual_flag => l_actual_flag
141103  ,p_balance_type_code => l_balance_type_code
141104  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141105  
141106  , p_source_1 => l_array_source_1(Idx)
141107  , p_source_2 => l_array_source_2(Idx)
141108  , p_source_3 => l_array_source_3(Idx)
141109  , p_source_5 => l_array_source_5(Idx)
141110  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
141111  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
141112  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
141113  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
141114  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
141115  , p_source_11 => l_array_source_11(Idx)
141116  );
141117 If(l_balance_type_code = 'A') THEN
141118   l_actual_gain_loss_ref := l_gain_or_loss_ref;
141119 END IF;
141120 
141121 --
141122 
141123 
141124 --
141125 AcctLineType_128 (
141126  p_application_id  => p_application_id
141127  ,p_event_id     => l_event_id
141128  ,p_calculate_acctd_flag => l_calculate_acctd_flag
141129  ,p_calculate_g_l_flag => l_calculate_g_l_flag
141130  ,p_actual_flag => l_actual_flag
141131  ,p_balance_type_code => l_balance_type_code
141135  , p_source_2 => l_array_source_2(Idx)
141132  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141133  
141134  , p_source_1 => l_array_source_1(Idx)
141136  , p_source_3 => l_array_source_3(Idx)
141137  , p_source_5 => l_array_source_5(Idx)
141138  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
141139  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
141140  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
141141  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
141142  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
141143  , p_source_11 => l_array_source_11(Idx)
141144  );
141145 If(l_balance_type_code = 'A') THEN
141146   l_actual_gain_loss_ref := l_gain_or_loss_ref;
141147 END IF;
141148 
141149 --
141150 
141151 
141152 --
141153 AcctLineType_147 (
141154  p_application_id  => p_application_id
141155  ,p_event_id     => l_event_id
141156  ,p_calculate_acctd_flag => l_calculate_acctd_flag
141157  ,p_calculate_g_l_flag => l_calculate_g_l_flag
141158  ,p_actual_flag => l_actual_flag
141159  ,p_balance_type_code => l_balance_type_code
141160  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141161  
141162  , p_source_1 => l_array_source_1(Idx)
141163  , p_source_2 => l_array_source_2(Idx)
141164  , p_source_3 => l_array_source_3(Idx)
141165  , p_source_5 => l_array_source_5(Idx)
141166  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
141167  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
141168  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
141169  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
141170  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
141171  , p_source_11 => l_array_source_11(Idx)
141172  );
141173 If(l_balance_type_code = 'A') THEN
141174   l_actual_gain_loss_ref := l_gain_or_loss_ref;
141175 END IF;
141176 
141177 --
141178 
141179 
141180 --
141181 AcctLineType_177 (
141182  p_application_id  => p_application_id
141183  ,p_event_id     => l_event_id
141184  ,p_calculate_acctd_flag => l_calculate_acctd_flag
141185  ,p_calculate_g_l_flag => l_calculate_g_l_flag
141186  ,p_actual_flag => l_actual_flag
141187  ,p_balance_type_code => l_balance_type_code
141188  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141189  
141190  , p_source_1 => l_array_source_1(Idx)
141191  , p_source_2 => l_array_source_2(Idx)
141192  , p_source_3 => l_array_source_3(Idx)
141193  , p_source_5 => l_array_source_5(Idx)
141194  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
141195  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
141196  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
141197  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
141198  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
141199  , p_source_11 => l_array_source_11(Idx)
141200  );
141201 If(l_balance_type_code = 'A') THEN
141202   l_actual_gain_loss_ref := l_gain_or_loss_ref;
141203 END IF;
141204 
141205 --
141206 
141207 
141208 --
141209 AcctLineType_216 (
141210  p_application_id  => p_application_id
141211  ,p_event_id     => l_event_id
141212  ,p_calculate_acctd_flag => l_calculate_acctd_flag
141213  ,p_calculate_g_l_flag => l_calculate_g_l_flag
141214  ,p_actual_flag => l_actual_flag
141215  ,p_balance_type_code => l_balance_type_code
141216  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141217  
141218  , p_source_1 => l_array_source_1(Idx)
141219  , p_source_2 => l_array_source_2(Idx)
141220  , p_source_3 => l_array_source_3(Idx)
141221  , p_source_5 => l_array_source_5(Idx)
141222  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
141223  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
141224  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
141225  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
141226  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
141227  , p_source_11 => l_array_source_11(Idx)
141228  );
141229 If(l_balance_type_code = 'A') THEN
141230   l_actual_gain_loss_ref := l_gain_or_loss_ref;
141231 END IF;
141232 
141233 --
141234 
141235 
141236 --
141237 AcctLineType_222 (
141238  p_application_id  => p_application_id
141239  ,p_event_id     => l_event_id
141240  ,p_calculate_acctd_flag => l_calculate_acctd_flag
141241  ,p_calculate_g_l_flag => l_calculate_g_l_flag
141242  ,p_actual_flag => l_actual_flag
141243  ,p_balance_type_code => l_balance_type_code
141244  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141245  
141246  , p_source_1 => l_array_source_1(Idx)
141247  , p_source_2 => l_array_source_2(Idx)
141248  , p_source_3 => l_array_source_3(Idx)
141249  , p_source_5 => l_array_source_5(Idx)
141250  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
141251  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
141252  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
141253  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
141254  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
141255  , p_source_11 => l_array_source_11(Idx)
141256  );
141257 If(l_balance_type_code = 'A') THEN
141258   l_actual_gain_loss_ref := l_gain_or_loss_ref;
141259 END IF;
141260 
141261 --
141262 
141263       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
141267             (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'))
141264       -- or secondary ledger that has different currency with primary
141265       -- or alc that is calculated by sla
141266       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
141268 
141269 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
141270 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
141271           AND (l_actual_flag = 'A')) THEN
141272         XLA_AE_LINES_PKG.CreateGainOrLossLines(
141273           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
141274          ,p_application_id   => p_application_id
141275          ,p_amb_context_code => 'DEFAULT'
141276          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
141277          ,p_event_class_code => C_EVENT_CLASS_CODE
141278          ,p_event_type_code  => C_EVENT_TYPE_CODE
141279          
141280          ,p_gain_ccid        => -1
141281          ,p_loss_ccid        => -1
141282 
141283          ,p_actual_flag      => l_actual_flag
141284          ,p_enc_flag         => null
141285          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
141286          ,p_enc_g_l_ref      => null
141287          );
141288       END IF;
141289    END IF;
141290 END IF;
141291 
141292    ELSE
141293       --
141294       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
141295       --
141296       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141297          trace
141298             (p_msg      => 'Trancaction revesal option is Y'
141299             ,p_level    => C_LEVEL_STATEMENT
141300             ,p_module   => l_log_module);
141301       END IF;
141302    END IF;
141303 
141304 END LOOP;
141305 l_result := XLA_AE_LINES_PKG.InsertLines ;
141306 end loop;
141307 close line_cur;
141308 
141309 
141310 --
141311 -- insert headers into xla_ae_headers_gt table
141312 --
141313 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
141314 
141315 -- insert into errors table here.
141316 
141317 END LOOP;
141318 
141319 --
141320 -- 4865292
141321 --
141322 -- Compare g_hdr_extract_count with event count in
141323 -- CreateHeadersAndLines.
141324 --
141325 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
141326 
141327 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141328    trace (p_msg     => '# rows extracted from header extract objects '
141329                     || ' (running total): '
141330                     || g_hdr_extract_count
141331          ,p_level   => C_LEVEL_STATEMENT
141332          ,p_module  => l_log_module);
141333 END IF;
141334 
141335 CLOSE header_cur;
141336 --
141337 
141338 --
141339 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141340    trace
141341       (p_msg      => 'END of EventType_265'
141342       ,p_level    => C_LEVEL_PROCEDURE
141343       ,p_module   => l_log_module);
141344 END IF;
141345 --
141346 RETURN l_result;
141347 EXCEPTION
141348 WHEN xla_exceptions_pkg.application_exception THEN
141349    
141350 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
141351 
141352    
141353 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
141354 
141355    RAISE;
141356 
141357 WHEN NO_DATA_FOUND THEN
141358 
141359 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
141360 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
141361 
141362 FOR header_record IN header_cur
141363 LOOP
141364     l_array_header_events(header_record.event_id) := header_record.event_id;
141365 END LOOP;
141366 
141367 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
141368 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
141369 
141370 fnd_file.put_line(fnd_file.LOG, '                    ');
141371 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
141372 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
141373 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
141374 
141375 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
141376 LOOP
141377 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
141378 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
141379         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
141380 	END IF;
141381 END LOOP;
141382 
141383 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
141384 fnd_file.put_line(fnd_file.LOG, '                    ');
141385 
141386 
141387 xla_exceptions_pkg.raise_message
141388       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_265');
141389 
141390 
141391 WHEN OTHERS THEN
141392    xla_exceptions_pkg.raise_message
141393       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_265');
141394 END EventType_265;
141395 --
141396 
141397 ---------------------------------------
141398 --
141399 -- PRIVATE PROCEDURE
141400 --         insert_sources_266
141401 --
141402 ----------------------------------------
141403 --
141404 PROCEDURE insert_sources_266(
141408                               , p_pad_start_date         IN DATE
141405                                 p_target_ledger_id       IN NUMBER
141406                               , p_language               IN VARCHAR2
141407                               , p_sla_ledger_id          IN NUMBER
141409                               , p_pad_end_date           IN DATE
141410                          )
141411 IS
141412 
141413 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_RECIPIENT_RCPT_TP';
141414 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
141415 p_apps_owner                   VARCHAR2(30);
141416 l_log_module                   VARCHAR2(240);
141417 BEGIN
141418 IF g_log_enabled THEN
141419       l_log_module := C_DEFAULT_MODULE||'.insert_sources_266';
141420 END IF;
141421 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141422 
141423       trace
141424          (p_msg      => 'BEGIN of insert_sources_266'
141425          ,p_level    => C_LEVEL_PROCEDURE
141426          ,p_module   => l_log_module);
141427 
141428 END IF;
141429 
141430 -- select APPS owner
141431 SELECT oracle_username
141432   INTO p_apps_owner
141433   FROM fnd_oracle_userid
141434  WHERE read_only_flag = 'U'
141435 ;
141436 
141437 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141438       trace
141439          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
141440                         ' - p_language = '||p_language||
141441                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
141442                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
141443                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
141444                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
141445          ,p_level    => C_LEVEL_STATEMENT
141446          ,p_module   => l_log_module);
141447 END IF;
141448 
141449 
141450 --
141451 INSERT INTO xla_diag_sources --hdr1
141452 (
141453         event_id
141454       , ledger_id
141455       , sla_ledger_id
141456       , description_language
141457       , object_name
141458       , object_type_code
141459       , line_number
141460       , source_application_id
141461       , source_type_code
141462       , source_code
141463       , source_value
141464       , source_meaning
141465       , created_by
141466       , creation_date
141467       , last_update_date
141468       , last_updated_by
141469       , last_update_login
141470       , program_update_date
141471       , program_application_id
141472       , program_id
141473       , request_id
141474 )
141475 SELECT
141476         event_id
141477       , p_target_ledger_id
141478       , p_sla_ledger_id
141479       , p_language
141480       , object_name
141481       , object_type_code
141482       , line_number
141483       , source_application_id
141484       , source_type_code
141485       , source_code
141486       , SUBSTR(source_value ,1,1996)
141487       , SUBSTR(source_meaning,1,200)
141488       , xla_environment_pkg.g_Usr_Id
141489       , TRUNC(SYSDATE)
141490       , TRUNC(SYSDATE)
141491       , xla_environment_pkg.g_Usr_Id
141492       , xla_environment_pkg.g_Login_Id
141493       , TRUNC(SYSDATE)
141494       , xla_environment_pkg.g_Prog_Appl_Id
141495       , xla_environment_pkg.g_Prog_Id
141496       , xla_environment_pkg.g_Req_Id
141497   FROM (
141498        SELECT xet.event_id                  event_id
141499             , 0                             line_number
141500             , CASE r
141501                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
141502                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
141503                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
141504                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
141505                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
141506                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
141507                 
141508                ELSE null
141509               END                           object_name
141510             , CASE r
141511                 WHEN 1 THEN 'HEADER' 
141512                 WHEN 2 THEN 'HEADER' 
141513                 WHEN 3 THEN 'HEADER' 
141514                 WHEN 4 THEN 'HEADER' 
141515                 WHEN 5 THEN 'HEADER' 
141516                 WHEN 6 THEN 'HEADER' 
141517                 
141518                 ELSE null
141519               END                           object_type_code
141520             , CASE r
141521                 WHEN 1 THEN '555' 
141522                 WHEN 2 THEN '555' 
141523                 WHEN 3 THEN '555' 
141524                 WHEN 4 THEN '555' 
141525                 WHEN 5 THEN '555' 
141526                 WHEN 6 THEN '555' 
141527                 
141528                 ELSE null
141529               END                           source_application_id
141530             , 'S'             source_type_code
141531             , CASE r
141532                 WHEN 1 THEN 'ENTITY_CODE' 
141533                 WHEN 2 THEN 'CURRENCY_CODE' 
141534                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
141535                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
141536                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
141537                 WHEN 6 THEN 'TRANSACTION_DATE' 
141538                 
141539                 ELSE null
141540               END                           source_code
141541             , CASE r
141542                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
141546                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
141543                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
141544                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
141545                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
141547                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
141548                 
141549                 ELSE null
141550               END                           source_value
141551             , CASE r
141552                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
141553                           1010186
141554                          ,TO_CHAR(h1.CURRENCY_CODE)
141555                          ,'CURRENCY_CODE'
141556                          ,'S'
141557                          ,555)
141558                 
141559                 ELSE null
141560               END               source_meaning
141561         FROM xla_events_gt     xet  
141562       , GMF_XLA_EXTRACT_HEADERS  h1
141563             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
141564        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
141565          AND xet.event_type_code = C_EVENT_TYPE_CODE
141566             AND h1.event_id = xet.event_id
141567 
141568 )
141569 ;
141570 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141571 
141572       trace
141573          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
141574          ,p_level    => C_LEVEL_STATEMENT
141575          ,p_module   => l_log_module);
141576 
141577 END IF;
141578 --
141579 
141580 
141581 
141582 --
141583 INSERT INTO xla_diag_sources --line1
141584 (
141585         event_id
141586       , ledger_id
141587       , sla_ledger_id
141588       , description_language
141589       , object_name
141590       , object_type_code
141591       , line_number
141592       , source_application_id
141593       , source_type_code
141594       , source_code
141595       , source_value
141596       , source_meaning
141597       , created_by
141598       , creation_date
141599       , last_update_date
141600       , last_updated_by
141601       , last_update_login
141602       , program_update_date
141603       , program_application_id
141604       , program_id
141605       , request_id
141606 )
141607 SELECT  event_id
141608       , p_target_ledger_id
141609       , p_sla_ledger_id
141610       , p_language
141611       , object_name
141612       , object_type_code
141613       , line_number
141614       , source_application_id
141615       , source_type_code
141616       , source_code
141617       , SUBSTR(source_value,1,1996)
141618       , SUBSTR(source_meaning,1,200)
141619       , xla_environment_pkg.g_Usr_Id
141620       , TRUNC(SYSDATE)
141621       , TRUNC(SYSDATE)
141622       , xla_environment_pkg.g_Usr_Id
141623       , xla_environment_pkg.g_Login_Id
141624       , TRUNC(SYSDATE)
141625       , xla_environment_pkg.g_Prog_Appl_Id
141626       , xla_environment_pkg.g_Prog_Id
141627       , xla_environment_pkg.g_Req_Id
141628   FROM (
141629        SELECT xet.event_id                  event_id
141630             , l2.line_number                 line_number
141631             , CASE r
141632                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
141633                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
141634                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
141635                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
141636                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
141637                 
141638                ELSE null
141639               END                           object_name
141640             , CASE r
141641                 WHEN 1 THEN 'LINE' 
141642                 WHEN 2 THEN 'LINE' 
141643                 WHEN 3 THEN 'LINE' 
141644                 WHEN 4 THEN 'LINE' 
141645                 WHEN 5 THEN 'LINE' 
141646                 
141647                 ELSE null
141648               END                           object_type_code
141649             , CASE r
141650                 WHEN 1 THEN '555' 
141651                 WHEN 2 THEN '555' 
141652                 WHEN 3 THEN '555' 
141653                 WHEN 4 THEN '555' 
141654                 WHEN 5 THEN '555' 
141655                 
141656                 ELSE null
141657               END                           source_application_id
141658             , 'S'             source_type_code
141659             , CASE r
141660                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
141661                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
141662                 WHEN 3 THEN 'ENTERED_AMOUNT' 
141663                 WHEN 4 THEN 'LINE_ID' 
141664                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
141665                 
141666                 ELSE null
141667               END                           source_code
141668             , CASE r
141669                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
141670                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
141671                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
141672                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
141673                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
141674                 
141675                 ELSE null
141676               END                           source_value
141677             , null              source_meaning
141678          FROM  xla_events_gt     xet  
141679         , GMF_XLA_EXTRACT_LINES  l2
141683             AND l2.event_id          = xet.event_id
141680             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
141681         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
141682           AND xet.event_type_code = C_EVENT_TYPE_CODE
141684 
141685 )
141686 ;
141687 --
141688 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141689 
141690       trace
141691          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
141692          ,p_level    => C_LEVEL_STATEMENT
141693          ,p_module   => l_log_module);
141694 
141695 END IF;
141696 
141697 
141698 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141699       trace
141700          (p_msg      => 'END of insert_sources_266'
141701          ,p_level    => C_LEVEL_PROCEDURE
141702          ,p_module   => l_log_module);
141703 END IF;
141704 EXCEPTION
141705   WHEN xla_exceptions_pkg.application_exception THEN
141706       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
141707             trace
141708                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
141709                ,p_level    => C_LEVEL_EXCEPTION
141710                ,p_module   => l_log_module);
141711       END IF;
141712       RAISE;
141713   WHEN OTHERS THEN
141714       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
141715             trace
141716                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
141717                ,p_level    => C_LEVEL_EXCEPTION
141718                ,p_module   => l_log_module);
141719        END IF;
141720        xla_exceptions_pkg.raise_message
141721            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_266');
141722 END insert_sources_266;
141723 --
141724 
141725 ---------------------------------------
141726 --
141727 -- PRIVATE FUNCTION
141728 --         EventType_266
141729 --
141730 ----------------------------------------
141731 --
141732 FUNCTION EventType_266
141733        (p_application_id         IN NUMBER
141734        ,p_base_ledger_id         IN NUMBER
141735        ,p_target_ledger_id       IN NUMBER
141736        ,p_language               IN VARCHAR2
141737        ,p_currency_code          IN VARCHAR2
141738        ,p_sla_ledger_id          IN NUMBER
141739        ,p_pad_start_date         IN DATE
141740        ,p_pad_end_date           IN DATE
141741        ,p_primary_ledger_id      IN NUMBER)
141742 RETURN BOOLEAN IS
141743 --
141744 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_RECIPIENT_RCPT_TP';
141745 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
141746 
141747 l_calculate_acctd_flag   VARCHAR2(1) :='N';
141748 l_calculate_g_l_flag     VARCHAR2(1) :='N';
141749 --
141750 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141751 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141752 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
141753 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141754 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141755 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
141756 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
141757 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141758 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141759 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141760 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141761 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141762 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141763 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141764 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141765 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141766 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141767 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141768 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141769 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141770 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141771 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141772 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
141773 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
141774 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
141775 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
141776 
141777 l_event_id                             NUMBER;
141778 l_previous_event_id                    NUMBER;
141779 l_first_event_id                       NUMBER;
141780 l_last_event_id                        NUMBER;
141781 
141782 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
141783 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
141784 --
141785 --
141786 l_result                    BOOLEAN := TRUE;
141787 l_rows                      NUMBER  := 1000;
141788 l_event_type_name           VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt, Transfer Pricing';
141789 l_event_class_name          VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt';
141790 l_description               VARCHAR2(4000);
141791 l_transaction_reversal      NUMBER;
141795 --
141792 l_ae_header_id              NUMBER;
141793 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
141794 l_log_module                VARCHAR2(240);
141796 l_acct_reversal_source      VARCHAR2(30);
141797 l_trx_reversal_source       VARCHAR2(30);
141798 
141799 l_continue_with_lines       BOOLEAN := TRUE;
141800 --
141801 l_acc_rev_gl_date_source    DATE;                      -- 4262811
141802 --
141803 type t_array_event_id is table of number index by binary_integer;
141804 
141805 l_rec_array_event                    t_rec_array_event;
141806 l_null_rec_array_event               t_rec_array_event;
141807 l_array_ae_header_id                 xla_number_array_type;
141808 l_actual_flag                        VARCHAR2(1) := NULL;
141809 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
141810 l_balance_type_code                  VARCHAR2(1) :=NULL;
141811 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
141812 
141813 --
141814 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
141815 --
141816 
141817 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
141818 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
141819 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
141820 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
141821 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
141822 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
141823 
141824 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
141825 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
141826 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
141827 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
141828 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
141829 
141830 l_array_source_6              t_array_source_6;
141831 l_array_source_7              t_array_source_7;
141832 l_array_source_8              t_array_source_8;
141833 l_array_source_9              t_array_source_9;
141834 l_array_source_10              t_array_source_10;
141835 l_array_source_12              t_array_source_12;
141836 
141837 l_array_source_1      t_array_source_1;
141838 l_array_source_2      t_array_source_2;
141839 l_array_source_3      t_array_source_3;
141840 l_array_source_5      t_array_source_5;
141841 l_array_source_11      t_array_source_11;
141842 
141843 --
141844 CURSOR header_cur
141845 IS
141846 SELECT /*+ leading(xet) cardinality(xet,1) */
141847 -- Event Type Code: FOB_RCPT_RECIPIENT_RCPT_TP
141848 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
141849     xet.entity_id
141850   , xet.legal_entity_id
141851   , xet.entity_code
141852   , xet.transaction_number
141853   , xet.event_id
141854   , xet.event_class_code
141855   , xet.event_type_code
141856   , xet.event_number
141857   , xet.event_date
141858   , xet.transaction_date
141859   , xet.reference_num_1
141860   , xet.reference_num_2
141861   , xet.reference_num_3
141862   , xet.reference_num_4
141863   , xet.reference_char_1
141864   , xet.reference_char_2
141865   , xet.reference_char_3
141866   , xet.reference_char_4
141867   , xet.reference_date_1
141868   , xet.reference_date_2
141869   , xet.reference_date_3
141870   , xet.reference_date_4
141871   , xet.event_created_by
141872   , xet.budgetary_control_flag 
141873   , h1.ENTITY_CODE    source_6
141874   , h1.CURRENCY_CODE    source_7
141875   , h1.CURRENCY_CONVERSION_DATE    source_8
141876   , h1.CURRENCY_CONVERSION_RATE    source_9
141877   , h1.CURRENCY_CONVERSION_TYPE    source_10
141878   , h1.TRANSACTION_DATE    source_12
141879   FROM xla_events_gt     xet 
141880   , GMF_XLA_EXTRACT_HEADERS  h1
141881  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
141882    and xet.event_type_code = C_EVENT_TYPE_CODE
141883    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
141884 
141885  ORDER BY event_id
141886 ;
141887 
141888 
141889 --
141890 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
141891 IS
141892 SELECT /*+ leading(xet) cardinality(xet,1) */
141893 -- Event Type Code: FOB_RCPT_RECIPIENT_RCPT_TP
141894 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
141895     xet.entity_id
141896    ,xet.legal_entity_id
141897    ,xet.entity_code
141898    ,xet.transaction_number
141899    ,xet.event_id
141900    ,xet.event_class_code
141901    ,xet.event_type_code
141902    ,xet.event_number
141903    ,xet.event_date
141904    ,xet.transaction_date
141905    ,xet.reference_num_1
141906    ,xet.reference_num_2
141907    ,xet.reference_num_3
141908    ,xet.reference_num_4
141909    ,xet.reference_char_1
141910    ,xet.reference_char_2
141911    ,xet.reference_char_3
141912    ,xet.reference_char_4
141913    ,xet.reference_date_1
141914    ,xet.reference_date_2
141915    ,xet.reference_date_3
141916    ,xet.reference_date_4
141917    ,xet.event_created_by
141918    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
141919   , l2.TRANSACTION_ACCOUNT_ID    source_1
141920   , l2.JOURNAL_LINE_TYPE    source_2
141921   , l2.ENTERED_AMOUNT    source_3
141925   , GMF_XLA_EXTRACT_LINES  l2
141922   , l2.LINE_ID    source_5
141923   , l2.ACCOUNTED_AMOUNT    source_11
141924   FROM xla_events_gt     xet 
141926  WHERE xet.event_id between x_first_event_id and x_last_event_id
141927    and xet.event_date between p_pad_start_date and p_pad_end_date
141928    and xet.event_type_code = C_EVENT_TYPE_CODE
141929    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
141930 ;
141931 
141932 --
141933 BEGIN
141934 IF g_log_enabled THEN
141935    l_log_module := C_DEFAULT_MODULE||'.EventType_266';
141936 END IF;
141937 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141938    trace
141939       (p_msg      => 'BEGIN of EventType_266'
141940       ,p_level    => C_LEVEL_PROCEDURE
141941       ,p_module   => l_log_module);
141942 END IF;
141943 
141944 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141945    trace
141946       (p_msg      => 'p_application_id = '||p_application_id||
141947                      ' - p_base_ledger_id = '||p_base_ledger_id||
141948                      ' - p_target_ledger_id  = '||p_target_ledger_id||
141949                      ' - p_language = '||p_language||
141950                      ' - p_currency_code = '||p_currency_code||
141951                      ' - p_sla_ledger_id = '||p_sla_ledger_id
141952       ,p_level    => C_LEVEL_STATEMENT
141953       ,p_module   => l_log_module);
141954 END IF;
141955 --
141956 -- initialze arrays
141957 --
141958 g_array_event.DELETE;
141959 l_rec_array_event := l_null_rec_array_event;
141960 --
141961 --------------------------------------
141962 -- 4262811 Initialze MPA Line Number
141963 --------------------------------------
141964 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
141965 
141966 --
141967 
141968 --
141969 OPEN header_cur;
141970 --
141971 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141972    trace
141973    (p_msg      => 'SQL - FETCH header_cur'
141974    ,p_level    => C_LEVEL_STATEMENT
141975    ,p_module   => l_log_module);
141976 END IF;
141977 --
141978 LOOP
141979 FETCH header_cur BULK COLLECT INTO
141980         l_array_entity_id
141981       , l_array_legal_entity_id
141982       , l_array_entity_code
141983       , l_array_transaction_num
141984       , l_array_event_id
141985       , l_array_class_code
141986       , l_array_event_type
141987       , l_array_event_number
141988       , l_array_event_date
141989       , l_array_transaction_date
141990       , l_array_reference_num_1
141991       , l_array_reference_num_2
141992       , l_array_reference_num_3
141993       , l_array_reference_num_4
141994       , l_array_reference_char_1
141995       , l_array_reference_char_2
141996       , l_array_reference_char_3
141997       , l_array_reference_char_4
141998       , l_array_reference_date_1
141999       , l_array_reference_date_2
142000       , l_array_reference_date_3
142001       , l_array_reference_date_4
142002       , l_array_event_created_by
142003       , l_array_budgetary_control_flag 
142004       , l_array_source_6
142005       , l_array_source_7
142006       , l_array_source_8
142007       , l_array_source_9
142008       , l_array_source_10
142009       , l_array_source_12
142010       LIMIT l_rows;
142011 --
142012 IF (C_LEVEL_EVENT >= g_log_level) THEN
142013    trace
142014    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
142015    ,p_level    => C_LEVEL_EVENT
142016    ,p_module   => l_log_module);
142017 END IF;
142018 --
142019 EXIT WHEN l_array_entity_id.COUNT = 0;
142020 
142021 -- initialize arrays
142022 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
142023 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
142024 
142025 --
142026 -- Bug 4458708
142027 --
142028 XLA_AE_LINES_PKG.g_LineNumber := 0;
142029 
142030 
142031 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
142032 g_last_hdr_idx := l_array_event_id.LAST;
142033 --
142034 -- loop for the headers. Each iteration is for each header extract row
142035 -- fetched in header cursor
142036 --
142037 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
142038 
142039 --
142040 -- set event info as cache for other routines to refer event attributes
142041 --
142042 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
142043    (p_application_id           => p_application_id
142044    ,p_primary_ledger_id        => p_primary_ledger_id
142045    ,p_base_ledger_id           => p_base_ledger_id
142046    ,p_target_ledger_id         => p_target_ledger_id
142047    ,p_entity_id                => l_array_entity_id(hdr_idx)
142048    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
142049    ,p_entity_code              => l_array_entity_code(hdr_idx)
142050    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
142051    ,p_event_id                 => l_array_event_id(hdr_idx)
142052    ,p_event_class_code         => l_array_class_code(hdr_idx)
142053    ,p_event_type_code          => l_array_event_type(hdr_idx)
142054    ,p_event_number             => l_array_event_number(hdr_idx)
142055    ,p_event_date               => l_array_event_date(hdr_idx)
142056    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
142057    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
142058    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
142059    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
142063    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
142060    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
142061    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
142062    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
142064    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
142065    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
142066    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
142067    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
142068    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
142069    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
142070    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
142071 
142072 --
142073 -- set the status of entry to C_VALID (0)
142074 --
142075 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
142076 
142077 --
142078 -- initialize a row for ae header
142079 --
142080 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
142081 
142082 l_event_id := l_array_event_id(hdr_idx);
142083 
142084 --
142085 -- storing the hdr_idx for event. May be used by line cursor.
142086 --
142087 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
142088 
142089 --
142090 -- store sources from header extract. This can be improved to
142091 -- store only those sources from header extract that may be used in lines
142092 --
142093 
142094 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
142095 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
142096 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
142097 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
142098 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
142099 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
142100 
142101 --
142102 -- initilaize the status of ae headers for diffrent balance types
142103 -- the status is initialised to C_NOT_CREATED (2)
142104 --
142105 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
142106 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
142107 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
142108 
142109 --
142110 -- call api to validate and store accounting attributes for header
142111 --
142112 
142113 ------------------------------------------------------------
142114 -- Accrual Reversal : to get date for Standard Source (NONE)
142115 ------------------------------------------------------------
142116 l_acc_rev_gl_date_source := NULL;
142117 
142118      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
142119       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
142120 
142121 
142122 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
142123 
142124 XLA_AE_HEADER_PKG.SetJeCategoryName;
142125 
142126 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
142127 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
142128 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
142129 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
142130 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
142131 
142132 
142133 -- No header level analytical criteria
142134 
142135 --
142136 --accounting attribute enhancement, bug 3612931
142137 --
142138 l_trx_reversal_source := SUBSTR(NULL, 1,30);
142139 
142140 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
142141    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
142142 
142143    xla_accounting_err_pkg.build_message
142144       (p_appli_s_name            => 'XLA'
142145       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
142146       ,p_token_1                 => 'ACCT_ATTR_NAME'
142147       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
142148       ,p_token_2                 => 'PRODUCT_NAME'
142149       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
142150       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
142151       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
142152       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
142153 
142154 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
142155    --
142156    -- following sets the accounting attributes needed to reverse
142157    -- accounting for a distributeion
142158    --
142159    xla_ae_lines_pkg.SetTrxReversalAttrs
142160       (p_event_id              => l_event_id
142161       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
142162       ,p_trx_reversal_source   => l_trx_reversal_source);
142163 
142164 END IF;
142165 
142166 
142167 ----------------------------------------------------------------
142168 -- 4262811 -  update the header statuses to invalid in need be
142169 ----------------------------------------------------------------
142173 
142170 --
142171 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
142172 
142174   -----------------------------------------------
142175   -- No accrual reversal for the event class/type
142176   -----------------------------------------------
142177 ----------------------------------------------------------------
142178 
142179 --
142180 -- this ends the header loop iteration for one bulk fetch
142181 --
142182 END LOOP;
142183 
142184 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
142185 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
142186 
142187 --
142188 -- insert dummy rows into lines gt table that were created due to
142189 -- transaction reversals
142190 --
142191 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
142192    l_result := XLA_AE_LINES_PKG.InsertLines;
142193 END IF;
142194 
142195 --
142196 -- reset the temp_line_num for each set of events fetched from header
142197 -- cursor rather than doing it for each new event in line cursor
142198 -- Bug 3939231
142199 --
142200 xla_ae_lines_pkg.g_temp_line_num := 0;
142201 
142202 
142203 
142204 --
142205 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
142206 --
142207 --
142208 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142209 
142210       trace
142211          (p_msg      => 'SQL - FETCH line_cur'
142212          ,p_level    => C_LEVEL_STATEMENT
142213          ,p_module   => l_log_module);
142214 
142215 END IF;
142216 --
142217 --
142218 LOOP
142219   --
142220   FETCH line_cur BULK COLLECT INTO
142221         l_array_entity_id
142222       , l_array_legal_entity_id
142223       , l_array_entity_code
142224       , l_array_transaction_num
142225       , l_array_event_id
142226       , l_array_class_code
142227       , l_array_event_type
142228       , l_array_event_number
142229       , l_array_event_date
142230       , l_array_transaction_date
142231       , l_array_reference_num_1
142232       , l_array_reference_num_2
142233       , l_array_reference_num_3
142234       , l_array_reference_num_4
142235       , l_array_reference_char_1
142236       , l_array_reference_char_2
142237       , l_array_reference_char_3
142238       , l_array_reference_char_4
142239       , l_array_reference_date_1
142240       , l_array_reference_date_2
142241       , l_array_reference_date_3
142242       , l_array_reference_date_4
142243       , l_array_event_created_by
142244       , l_array_budgetary_control_flag
142245       , l_array_extract_line_num 
142246       , l_array_source_1
142247       , l_array_source_2
142248       , l_array_source_3
142249       , l_array_source_5
142250       , l_array_source_11
142251       LIMIT l_rows;
142252 
142253   --
142254   IF (C_LEVEL_EVENT >= g_log_level) THEN
142255             trace
142256                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
142257                ,p_level    => C_LEVEL_EVENT
142258                ,p_module   => l_log_module);
142259   END IF;
142260   --
142261   EXIT WHEN l_array_entity_id.count = 0;
142262 
142263   XLA_AE_LINES_PKG.g_rec_lines := null;
142264 
142265 --
142266 -- Bug 4458708
142267 --
142268 XLA_AE_LINES_PKG.g_LineNumber := 0;
142269 --
142270 --
142271 
142272 FOR Idx IN 1..l_array_event_id.count LOOP
142273    --
142274    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
142275    --
142276    l_event_id := l_array_event_id(idx);  -- 5648433
142277 
142278    --
142279    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
142280    --
142281 
142282    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
142283              (g_array_event(l_event_id).array_value_num('header_index'))
142284          ,'N'
142285          ) <> 'Y'
142286    THEN
142287       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142288          trace
142289             (p_msg      => 'Trancaction revesal option is not Y '
142290             ,p_level    => C_LEVEL_STATEMENT
142291             ,p_module   => l_log_module);
142292       END IF;
142293 
142294 --
142295 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
142296 --
142297 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
142298 --
142299 -- set event info as cache for other routines to refer event attributes
142300 --
142301 
142302 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
142303    l_previous_event_id := l_event_id;
142304 
142305    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
142306       (p_application_id           => p_application_id
142307       ,p_primary_ledger_id        => p_primary_ledger_id
142308       ,p_base_ledger_id           => p_base_ledger_id
142309       ,p_target_ledger_id         => p_target_ledger_id
142310       ,p_entity_id                => l_array_entity_id(Idx)
142311       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
142312       ,p_entity_code              => l_array_entity_code(Idx)
142313       ,p_transaction_num          => l_array_transaction_num(Idx)
142314       ,p_event_id                 => l_array_event_id(Idx)
142315       ,p_event_class_code         => l_array_class_code(Idx)
142316       ,p_event_type_code          => l_array_event_type(Idx)
142317       ,p_event_number             => l_array_event_number(Idx)
142318       ,p_event_date               => l_array_event_date(Idx)
142322       ,p_reference_num_3          => l_array_reference_num_3(Idx)
142319       ,p_transaction_date         => l_array_transaction_date(Idx)
142320       ,p_reference_num_1          => l_array_reference_num_1(Idx)
142321       ,p_reference_num_2          => l_array_reference_num_2(Idx)
142323       ,p_reference_num_4          => l_array_reference_num_4(Idx)
142324       ,p_reference_char_1         => l_array_reference_char_1(Idx)
142325       ,p_reference_char_2         => l_array_reference_char_2(Idx)
142326       ,p_reference_char_3         => l_array_reference_char_3(Idx)
142327       ,p_reference_char_4         => l_array_reference_char_4(Idx)
142328       ,p_reference_date_1         => l_array_reference_date_1(Idx)
142329       ,p_reference_date_2         => l_array_reference_date_2(Idx)
142330       ,p_reference_date_3         => l_array_reference_date_3(Idx)
142331       ,p_reference_date_4         => l_array_reference_date_4(Idx)
142332       ,p_event_created_by         => l_array_event_created_by(Idx)
142333       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
142334        --
142335 END IF;
142336 
142337 
142338 
142339 --
142340 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
142341 
142342 l_acct_reversal_source := SUBSTR(NULL, 1,30);
142343 
142344 IF l_continue_with_lines THEN
142345    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
142346       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
142347 
142348       xla_accounting_err_pkg.build_message
142349          (p_appli_s_name            => 'XLA'
142350          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
142351          ,p_token_1                 => 'LINE_NUMBER'
142352          ,p_value_1                 => l_array_extract_line_num(Idx)
142353          ,p_token_2                 => 'PRODUCT_NAME'
142354          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
142355          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
142356          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
142357          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
142358 
142359    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
142360       --
142361       -- following sets the accounting attributes needed to reverse
142362       -- accounting for a distributeion
142363       --
142364 
142365       --
142366       -- 5217187
142367       --
142368       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
142369       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
142370                                        g_array_event(l_event_id).array_value_num('header_index'));
142371       --
142372       --
142373 
142374       -- No reversal code generated
142375 
142376       xla_ae_lines_pkg.SetAcctReversalAttrs
142377          (p_event_id             => l_event_id
142378          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
142379          ,p_calculate_acctd_flag => l_calculate_acctd_flag
142380          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
142381    END IF;
142382 
142383    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
142384        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
142385 
142386 --
142387 AcctLineType_88 (
142388  p_application_id  => p_application_id
142389  ,p_event_id     => l_event_id
142390  ,p_calculate_acctd_flag => l_calculate_acctd_flag
142391  ,p_calculate_g_l_flag => l_calculate_g_l_flag
142392  ,p_actual_flag => l_actual_flag
142393  ,p_balance_type_code => l_balance_type_code
142394  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
142395  
142396  , p_source_1 => l_array_source_1(Idx)
142397  , p_source_2 => l_array_source_2(Idx)
142398  , p_source_3 => l_array_source_3(Idx)
142399  , p_source_5 => l_array_source_5(Idx)
142400  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
142401  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
142402  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
142403  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
142404  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
142405  , p_source_11 => l_array_source_11(Idx)
142406  );
142407 If(l_balance_type_code = 'A') THEN
142408   l_actual_gain_loss_ref := l_gain_or_loss_ref;
142409 END IF;
142410 
142411 --
142412 
142413 
142414 --
142415 AcctLineType_127 (
142416  p_application_id  => p_application_id
142417  ,p_event_id     => l_event_id
142418  ,p_calculate_acctd_flag => l_calculate_acctd_flag
142419  ,p_calculate_g_l_flag => l_calculate_g_l_flag
142420  ,p_actual_flag => l_actual_flag
142421  ,p_balance_type_code => l_balance_type_code
142422  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
142423  
142424  , p_source_1 => l_array_source_1(Idx)
142425  , p_source_2 => l_array_source_2(Idx)
142426  , p_source_3 => l_array_source_3(Idx)
142427  , p_source_5 => l_array_source_5(Idx)
142428  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
142429  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
142430  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
142431  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
142432  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
142433  , p_source_11 => l_array_source_11(Idx)
142434  );
142435 If(l_balance_type_code = 'A') THEN
142436   l_actual_gain_loss_ref := l_gain_or_loss_ref;
142440 
142437 END IF;
142438 
142439 --
142441 
142442 --
142443 AcctLineType_143 (
142444  p_application_id  => p_application_id
142445  ,p_event_id     => l_event_id
142446  ,p_calculate_acctd_flag => l_calculate_acctd_flag
142447  ,p_calculate_g_l_flag => l_calculate_g_l_flag
142448  ,p_actual_flag => l_actual_flag
142449  ,p_balance_type_code => l_balance_type_code
142450  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
142451  
142452  , p_source_1 => l_array_source_1(Idx)
142453  , p_source_2 => l_array_source_2(Idx)
142454  , p_source_3 => l_array_source_3(Idx)
142455  , p_source_5 => l_array_source_5(Idx)
142456  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
142457  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
142458  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
142459  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
142460  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
142461  , p_source_11 => l_array_source_11(Idx)
142462  );
142463 If(l_balance_type_code = 'A') THEN
142464   l_actual_gain_loss_ref := l_gain_or_loss_ref;
142465 END IF;
142466 
142467 --
142468 
142469 
142470 --
142471 AcctLineType_176 (
142472  p_application_id  => p_application_id
142473  ,p_event_id     => l_event_id
142474  ,p_calculate_acctd_flag => l_calculate_acctd_flag
142475  ,p_calculate_g_l_flag => l_calculate_g_l_flag
142476  ,p_actual_flag => l_actual_flag
142477  ,p_balance_type_code => l_balance_type_code
142478  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
142479  
142480  , p_source_1 => l_array_source_1(Idx)
142481  , p_source_2 => l_array_source_2(Idx)
142482  , p_source_3 => l_array_source_3(Idx)
142483  , p_source_5 => l_array_source_5(Idx)
142484  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
142485  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
142486  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
142487  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
142488  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
142489  , p_source_11 => l_array_source_11(Idx)
142490  );
142491 If(l_balance_type_code = 'A') THEN
142492   l_actual_gain_loss_ref := l_gain_or_loss_ref;
142493 END IF;
142494 
142495 --
142496 
142497 
142498 --
142499 AcctLineType_220 (
142500  p_application_id  => p_application_id
142501  ,p_event_id     => l_event_id
142502  ,p_calculate_acctd_flag => l_calculate_acctd_flag
142503  ,p_calculate_g_l_flag => l_calculate_g_l_flag
142504  ,p_actual_flag => l_actual_flag
142505  ,p_balance_type_code => l_balance_type_code
142506  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
142507  
142508  , p_source_1 => l_array_source_1(Idx)
142509  , p_source_2 => l_array_source_2(Idx)
142510  , p_source_3 => l_array_source_3(Idx)
142511  , p_source_5 => l_array_source_5(Idx)
142512  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
142513  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
142514  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
142515  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
142516  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
142517  , p_source_11 => l_array_source_11(Idx)
142518  );
142519 If(l_balance_type_code = 'A') THEN
142520   l_actual_gain_loss_ref := l_gain_or_loss_ref;
142521 END IF;
142522 
142523 --
142524 
142525       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
142526       -- or secondary ledger that has different currency with primary
142527       -- or alc that is calculated by sla
142528       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
142529             (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'))
142530 
142531 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
142532 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
142533           AND (l_actual_flag = 'A')) THEN
142534         XLA_AE_LINES_PKG.CreateGainOrLossLines(
142535           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
142536          ,p_application_id   => p_application_id
142537          ,p_amb_context_code => 'DEFAULT'
142538          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
142539          ,p_event_class_code => C_EVENT_CLASS_CODE
142540          ,p_event_type_code  => C_EVENT_TYPE_CODE
142541          
142542          ,p_gain_ccid        => -1
142543          ,p_loss_ccid        => -1
142544 
142545          ,p_actual_flag      => l_actual_flag
142546          ,p_enc_flag         => null
142547          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
142548          ,p_enc_g_l_ref      => null
142549          );
142550       END IF;
142551    END IF;
142552 END IF;
142553 
142554    ELSE
142555       --
142556       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
142557       --
142558       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142559          trace
142560             (p_msg      => 'Trancaction revesal option is Y'
142561             ,p_level    => C_LEVEL_STATEMENT
142562             ,p_module   => l_log_module);
142563       END IF;
142564    END IF;
142565 
142566 END LOOP;
142570 
142567 l_result := XLA_AE_LINES_PKG.InsertLines ;
142568 end loop;
142569 close line_cur;
142571 
142572 --
142573 -- insert headers into xla_ae_headers_gt table
142574 --
142575 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
142576 
142577 -- insert into errors table here.
142578 
142579 END LOOP;
142580 
142581 --
142582 -- 4865292
142583 --
142584 -- Compare g_hdr_extract_count with event count in
142585 -- CreateHeadersAndLines.
142586 --
142587 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
142588 
142589 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142590    trace (p_msg     => '# rows extracted from header extract objects '
142591                     || ' (running total): '
142592                     || g_hdr_extract_count
142593          ,p_level   => C_LEVEL_STATEMENT
142594          ,p_module  => l_log_module);
142595 END IF;
142596 
142597 CLOSE header_cur;
142598 --
142599 
142600 --
142601 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142602    trace
142603       (p_msg      => 'END of EventType_266'
142604       ,p_level    => C_LEVEL_PROCEDURE
142605       ,p_module   => l_log_module);
142606 END IF;
142607 --
142608 RETURN l_result;
142609 EXCEPTION
142610 WHEN xla_exceptions_pkg.application_exception THEN
142611    
142612 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
142613 
142614    
142615 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
142616 
142617    RAISE;
142618 
142619 WHEN NO_DATA_FOUND THEN
142620 
142621 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
142622 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
142623 
142624 FOR header_record IN header_cur
142625 LOOP
142626     l_array_header_events(header_record.event_id) := header_record.event_id;
142627 END LOOP;
142628 
142629 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
142630 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
142631 
142632 fnd_file.put_line(fnd_file.LOG, '                    ');
142633 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
142634 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
142635 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
142636 
142637 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
142638 LOOP
142639 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
142640 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
142641         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
142642 	END IF;
142643 END LOOP;
142644 
142645 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
142646 fnd_file.put_line(fnd_file.LOG, '                    ');
142647 
142648 
142649 xla_exceptions_pkg.raise_message
142650       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_266');
142651 
142652 
142653 WHEN OTHERS THEN
142654    xla_exceptions_pkg.raise_message
142655       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_266');
142656 END EventType_266;
142657 --
142658 
142659 ---------------------------------------
142660 --
142661 -- PRIVATE PROCEDURE
142662 --         insert_sources_267
142663 --
142664 ----------------------------------------
142665 --
142666 PROCEDURE insert_sources_267(
142667                                 p_target_ledger_id       IN NUMBER
142668                               , p_language               IN VARCHAR2
142669                               , p_sla_ledger_id          IN NUMBER
142670                               , p_pad_start_date         IN DATE
142671                               , p_pad_end_date           IN DATE
142672                          )
142673 IS
142674 
142675 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_RCPT_NO_TP';
142676 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
142677 p_apps_owner                   VARCHAR2(30);
142678 l_log_module                   VARCHAR2(240);
142679 BEGIN
142680 IF g_log_enabled THEN
142681       l_log_module := C_DEFAULT_MODULE||'.insert_sources_267';
142682 END IF;
142683 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142684 
142685       trace
142686          (p_msg      => 'BEGIN of insert_sources_267'
142687          ,p_level    => C_LEVEL_PROCEDURE
142688          ,p_module   => l_log_module);
142689 
142690 END IF;
142691 
142692 -- select APPS owner
142693 SELECT oracle_username
142694   INTO p_apps_owner
142695   FROM fnd_oracle_userid
142696  WHERE read_only_flag = 'U'
142697 ;
142698 
142699 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142700       trace
142701          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
142702                         ' - p_language = '||p_language||
142703                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
142704                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
142705                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
142706                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
142707          ,p_level    => C_LEVEL_STATEMENT
142708          ,p_module   => l_log_module);
142709 END IF;
142710 
142711 
142712 --
142716       , ledger_id
142713 INSERT INTO xla_diag_sources --hdr1
142714 (
142715         event_id
142717       , sla_ledger_id
142718       , description_language
142719       , object_name
142720       , object_type_code
142721       , line_number
142722       , source_application_id
142723       , source_type_code
142724       , source_code
142725       , source_value
142726       , source_meaning
142727       , created_by
142728       , creation_date
142729       , last_update_date
142730       , last_updated_by
142731       , last_update_login
142732       , program_update_date
142733       , program_application_id
142734       , program_id
142735       , request_id
142736 )
142737 SELECT
142738         event_id
142739       , p_target_ledger_id
142740       , p_sla_ledger_id
142741       , p_language
142742       , object_name
142743       , object_type_code
142744       , line_number
142745       , source_application_id
142746       , source_type_code
142747       , source_code
142748       , SUBSTR(source_value ,1,1996)
142749       , SUBSTR(source_meaning,1,200)
142750       , xla_environment_pkg.g_Usr_Id
142751       , TRUNC(SYSDATE)
142752       , TRUNC(SYSDATE)
142753       , xla_environment_pkg.g_Usr_Id
142754       , xla_environment_pkg.g_Login_Id
142755       , TRUNC(SYSDATE)
142756       , xla_environment_pkg.g_Prog_Appl_Id
142757       , xla_environment_pkg.g_Prog_Id
142758       , xla_environment_pkg.g_Req_Id
142759   FROM (
142760        SELECT xet.event_id                  event_id
142761             , 0                             line_number
142762             , CASE r
142763                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
142764                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
142765                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
142766                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
142767                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
142768                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
142769                 
142770                ELSE null
142771               END                           object_name
142772             , CASE r
142773                 WHEN 1 THEN 'HEADER' 
142774                 WHEN 2 THEN 'HEADER' 
142775                 WHEN 3 THEN 'HEADER' 
142776                 WHEN 4 THEN 'HEADER' 
142777                 WHEN 5 THEN 'HEADER' 
142778                 WHEN 6 THEN 'HEADER' 
142779                 
142780                 ELSE null
142781               END                           object_type_code
142782             , CASE r
142783                 WHEN 1 THEN '555' 
142784                 WHEN 2 THEN '555' 
142785                 WHEN 3 THEN '555' 
142786                 WHEN 4 THEN '555' 
142787                 WHEN 5 THEN '555' 
142788                 WHEN 6 THEN '555' 
142789                 
142790                 ELSE null
142791               END                           source_application_id
142792             , 'S'             source_type_code
142793             , CASE r
142794                 WHEN 1 THEN 'ENTITY_CODE' 
142795                 WHEN 2 THEN 'CURRENCY_CODE' 
142796                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
142797                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
142798                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
142799                 WHEN 6 THEN 'TRANSACTION_DATE' 
142800                 
142801                 ELSE null
142802               END                           source_code
142803             , CASE r
142804                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
142805                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
142806                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
142807                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
142808                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
142809                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
142810                 
142811                 ELSE null
142812               END                           source_value
142813             , CASE r
142814                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
142815                           1010186
142816                          ,TO_CHAR(h1.CURRENCY_CODE)
142817                          ,'CURRENCY_CODE'
142818                          ,'S'
142819                          ,555)
142820                 
142821                 ELSE null
142822               END               source_meaning
142823         FROM xla_events_gt     xet  
142824       , GMF_XLA_EXTRACT_HEADERS  h1
142825             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
142826        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
142827          AND xet.event_type_code = C_EVENT_TYPE_CODE
142828             AND h1.event_id = xet.event_id
142829 
142830 )
142831 ;
142832 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142833 
142834       trace
142835          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
142836          ,p_level    => C_LEVEL_STATEMENT
142837          ,p_module   => l_log_module);
142838 
142839 END IF;
142840 --
142841 
142842 
142843 
142844 --
142845 INSERT INTO xla_diag_sources --line1
142846 (
142847         event_id
142848       , ledger_id
142849       , sla_ledger_id
142850       , description_language
142851       , object_name
142852       , object_type_code
142853       , line_number
142854       , source_application_id
142855       , source_type_code
142859       , created_by
142856       , source_code
142857       , source_value
142858       , source_meaning
142860       , creation_date
142861       , last_update_date
142862       , last_updated_by
142863       , last_update_login
142864       , program_update_date
142865       , program_application_id
142866       , program_id
142867       , request_id
142868 )
142869 SELECT  event_id
142870       , p_target_ledger_id
142871       , p_sla_ledger_id
142872       , p_language
142873       , object_name
142874       , object_type_code
142875       , line_number
142876       , source_application_id
142877       , source_type_code
142878       , source_code
142879       , SUBSTR(source_value,1,1996)
142880       , SUBSTR(source_meaning,1,200)
142881       , xla_environment_pkg.g_Usr_Id
142882       , TRUNC(SYSDATE)
142883       , TRUNC(SYSDATE)
142884       , xla_environment_pkg.g_Usr_Id
142885       , xla_environment_pkg.g_Login_Id
142886       , TRUNC(SYSDATE)
142887       , xla_environment_pkg.g_Prog_Appl_Id
142888       , xla_environment_pkg.g_Prog_Id
142889       , xla_environment_pkg.g_Req_Id
142890   FROM (
142891        SELECT xet.event_id                  event_id
142892             , l2.line_number                 line_number
142893             , CASE r
142894                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
142895                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
142896                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
142897                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
142898                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
142899                 
142900                ELSE null
142901               END                           object_name
142902             , CASE r
142903                 WHEN 1 THEN 'LINE' 
142904                 WHEN 2 THEN 'LINE' 
142905                 WHEN 3 THEN 'LINE' 
142906                 WHEN 4 THEN 'LINE' 
142907                 WHEN 5 THEN 'LINE' 
142908                 
142909                 ELSE null
142910               END                           object_type_code
142911             , CASE r
142912                 WHEN 1 THEN '555' 
142913                 WHEN 2 THEN '555' 
142914                 WHEN 3 THEN '555' 
142915                 WHEN 4 THEN '555' 
142916                 WHEN 5 THEN '555' 
142917                 
142918                 ELSE null
142919               END                           source_application_id
142920             , 'S'             source_type_code
142921             , CASE r
142922                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
142923                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
142924                 WHEN 3 THEN 'ENTERED_AMOUNT' 
142925                 WHEN 4 THEN 'LINE_ID' 
142926                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
142927                 
142928                 ELSE null
142929               END                           source_code
142930             , CASE r
142931                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
142932                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
142933                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
142934                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
142935                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
142936                 
142937                 ELSE null
142938               END                           source_value
142939             , null              source_meaning
142940          FROM  xla_events_gt     xet  
142941         , GMF_XLA_EXTRACT_LINES  l2
142942             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
142943         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
142944           AND xet.event_type_code = C_EVENT_TYPE_CODE
142945             AND l2.event_id          = xet.event_id
142946 
142947 )
142948 ;
142949 --
142950 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142951 
142952       trace
142953          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
142954          ,p_level    => C_LEVEL_STATEMENT
142955          ,p_module   => l_log_module);
142956 
142957 END IF;
142958 
142959 
142960 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142961       trace
142962          (p_msg      => 'END of insert_sources_267'
142963          ,p_level    => C_LEVEL_PROCEDURE
142964          ,p_module   => l_log_module);
142965 END IF;
142966 EXCEPTION
142967   WHEN xla_exceptions_pkg.application_exception THEN
142968       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
142969             trace
142970                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
142971                ,p_level    => C_LEVEL_EXCEPTION
142972                ,p_module   => l_log_module);
142973       END IF;
142974       RAISE;
142975   WHEN OTHERS THEN
142976       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
142977             trace
142978                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
142979                ,p_level    => C_LEVEL_EXCEPTION
142980                ,p_module   => l_log_module);
142981        END IF;
142982        xla_exceptions_pkg.raise_message
142983            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_267');
142984 END insert_sources_267;
142985 --
142986 
142987 ---------------------------------------
142988 --
142989 -- PRIVATE FUNCTION
142990 --         EventType_267
142991 --
142992 ----------------------------------------
142993 --
142994 FUNCTION EventType_267
142995        (p_application_id         IN NUMBER
142996        ,p_base_ledger_id         IN NUMBER
143000        ,p_sla_ledger_id          IN NUMBER
142997        ,p_target_ledger_id       IN NUMBER
142998        ,p_language               IN VARCHAR2
142999        ,p_currency_code          IN VARCHAR2
143001        ,p_pad_start_date         IN DATE
143002        ,p_pad_end_date           IN DATE
143003        ,p_primary_ledger_id      IN NUMBER)
143004 RETURN BOOLEAN IS
143005 --
143006 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_RCPT_NO_TP';
143007 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
143008 
143009 l_calculate_acctd_flag   VARCHAR2(1) :='N';
143010 l_calculate_g_l_flag     VARCHAR2(1) :='N';
143011 --
143012 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143013 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143014 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143015 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143016 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143017 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143018 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143019 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143020 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143021 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143022 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143023 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143024 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143025 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143026 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143027 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143028 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143029 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143030 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143031 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143032 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143033 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143034 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
143035 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143036 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
143037 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
143038 
143039 l_event_id                             NUMBER;
143040 l_previous_event_id                    NUMBER;
143041 l_first_event_id                       NUMBER;
143042 l_last_event_id                        NUMBER;
143043 
143044 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
143045 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
143046 --
143047 --
143048 l_result                    BOOLEAN := TRUE;
143049 l_rows                      NUMBER  := 1000;
143050 l_event_type_name           VARCHAR2(80) := 'Sender-side Intransit Interorg Receipt for FOB Receipt, no transfer Pricing';
143051 l_event_class_name          VARCHAR2(80) := 'Sender-side Intransit Interorg Receipt for FOB Receipt';
143052 l_description               VARCHAR2(4000);
143053 l_transaction_reversal      NUMBER;
143054 l_ae_header_id              NUMBER;
143055 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
143056 l_log_module                VARCHAR2(240);
143057 --
143058 l_acct_reversal_source      VARCHAR2(30);
143059 l_trx_reversal_source       VARCHAR2(30);
143060 
143061 l_continue_with_lines       BOOLEAN := TRUE;
143062 --
143063 l_acc_rev_gl_date_source    DATE;                      -- 4262811
143064 --
143065 type t_array_event_id is table of number index by binary_integer;
143066 
143067 l_rec_array_event                    t_rec_array_event;
143068 l_null_rec_array_event               t_rec_array_event;
143069 l_array_ae_header_id                 xla_number_array_type;
143070 l_actual_flag                        VARCHAR2(1) := NULL;
143071 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
143072 l_balance_type_code                  VARCHAR2(1) :=NULL;
143073 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
143074 
143075 --
143076 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
143077 --
143078 
143079 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
143080 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
143081 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
143082 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
143083 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
143084 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
143085 
143086 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
143087 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
143088 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
143092 l_array_source_6              t_array_source_6;
143089 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
143090 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
143091 
143093 l_array_source_7              t_array_source_7;
143094 l_array_source_8              t_array_source_8;
143095 l_array_source_9              t_array_source_9;
143096 l_array_source_10              t_array_source_10;
143097 l_array_source_12              t_array_source_12;
143098 
143099 l_array_source_1      t_array_source_1;
143100 l_array_source_2      t_array_source_2;
143101 l_array_source_3      t_array_source_3;
143102 l_array_source_5      t_array_source_5;
143103 l_array_source_11      t_array_source_11;
143104 
143105 --
143106 CURSOR header_cur
143107 IS
143108 SELECT /*+ leading(xet) cardinality(xet,1) */
143109 -- Event Type Code: FOB_RCPT_SENDER_RCPT_NO_TP
143110 -- Event Class Code: FOB_RCPT_SENDER_RCPT
143111     xet.entity_id
143112   , xet.legal_entity_id
143113   , xet.entity_code
143114   , xet.transaction_number
143115   , xet.event_id
143116   , xet.event_class_code
143117   , xet.event_type_code
143118   , xet.event_number
143119   , xet.event_date
143120   , xet.transaction_date
143121   , xet.reference_num_1
143122   , xet.reference_num_2
143123   , xet.reference_num_3
143124   , xet.reference_num_4
143125   , xet.reference_char_1
143126   , xet.reference_char_2
143127   , xet.reference_char_3
143128   , xet.reference_char_4
143129   , xet.reference_date_1
143130   , xet.reference_date_2
143131   , xet.reference_date_3
143132   , xet.reference_date_4
143133   , xet.event_created_by
143134   , xet.budgetary_control_flag 
143135   , h1.ENTITY_CODE    source_6
143136   , h1.CURRENCY_CODE    source_7
143137   , h1.CURRENCY_CONVERSION_DATE    source_8
143138   , h1.CURRENCY_CONVERSION_RATE    source_9
143139   , h1.CURRENCY_CONVERSION_TYPE    source_10
143140   , h1.TRANSACTION_DATE    source_12
143141   FROM xla_events_gt     xet 
143142   , GMF_XLA_EXTRACT_HEADERS  h1
143143  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
143144    and xet.event_type_code = C_EVENT_TYPE_CODE
143145    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
143146 
143147  ORDER BY event_id
143148 ;
143149 
143150 
143151 --
143152 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
143153 IS
143154 SELECT /*+ leading(xet) cardinality(xet,1) */
143155 -- Event Type Code: FOB_RCPT_SENDER_RCPT_NO_TP
143156 -- Event Class Code: FOB_RCPT_SENDER_RCPT
143157     xet.entity_id
143158    ,xet.legal_entity_id
143159    ,xet.entity_code
143160    ,xet.transaction_number
143161    ,xet.event_id
143162    ,xet.event_class_code
143163    ,xet.event_type_code
143164    ,xet.event_number
143165    ,xet.event_date
143166    ,xet.transaction_date
143167    ,xet.reference_num_1
143168    ,xet.reference_num_2
143169    ,xet.reference_num_3
143170    ,xet.reference_num_4
143171    ,xet.reference_char_1
143172    ,xet.reference_char_2
143173    ,xet.reference_char_3
143174    ,xet.reference_char_4
143175    ,xet.reference_date_1
143176    ,xet.reference_date_2
143177    ,xet.reference_date_3
143178    ,xet.reference_date_4
143179    ,xet.event_created_by
143180    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
143181   , l2.TRANSACTION_ACCOUNT_ID    source_1
143182   , l2.JOURNAL_LINE_TYPE    source_2
143183   , l2.ENTERED_AMOUNT    source_3
143184   , l2.LINE_ID    source_5
143185   , l2.ACCOUNTED_AMOUNT    source_11
143186   FROM xla_events_gt     xet 
143187   , GMF_XLA_EXTRACT_LINES  l2
143188  WHERE xet.event_id between x_first_event_id and x_last_event_id
143189    and xet.event_date between p_pad_start_date and p_pad_end_date
143190    and xet.event_type_code = C_EVENT_TYPE_CODE
143191    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
143192 ;
143193 
143194 --
143195 BEGIN
143196 IF g_log_enabled THEN
143197    l_log_module := C_DEFAULT_MODULE||'.EventType_267';
143198 END IF;
143199 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143200    trace
143201       (p_msg      => 'BEGIN of EventType_267'
143202       ,p_level    => C_LEVEL_PROCEDURE
143203       ,p_module   => l_log_module);
143204 END IF;
143205 
143206 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143207    trace
143208       (p_msg      => 'p_application_id = '||p_application_id||
143209                      ' - p_base_ledger_id = '||p_base_ledger_id||
143210                      ' - p_target_ledger_id  = '||p_target_ledger_id||
143211                      ' - p_language = '||p_language||
143212                      ' - p_currency_code = '||p_currency_code||
143213                      ' - p_sla_ledger_id = '||p_sla_ledger_id
143214       ,p_level    => C_LEVEL_STATEMENT
143215       ,p_module   => l_log_module);
143216 END IF;
143217 --
143218 -- initialze arrays
143219 --
143220 g_array_event.DELETE;
143221 l_rec_array_event := l_null_rec_array_event;
143222 --
143223 --------------------------------------
143224 -- 4262811 Initialze MPA Line Number
143225 --------------------------------------
143226 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
143227 
143228 --
143229 
143230 --
143231 OPEN header_cur;
143232 --
143233 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143234    trace
143235    (p_msg      => 'SQL - FETCH header_cur'
143239 --
143236    ,p_level    => C_LEVEL_STATEMENT
143237    ,p_module   => l_log_module);
143238 END IF;
143240 LOOP
143241 FETCH header_cur BULK COLLECT INTO
143242         l_array_entity_id
143243       , l_array_legal_entity_id
143244       , l_array_entity_code
143245       , l_array_transaction_num
143246       , l_array_event_id
143247       , l_array_class_code
143248       , l_array_event_type
143249       , l_array_event_number
143250       , l_array_event_date
143251       , l_array_transaction_date
143252       , l_array_reference_num_1
143253       , l_array_reference_num_2
143254       , l_array_reference_num_3
143255       , l_array_reference_num_4
143256       , l_array_reference_char_1
143257       , l_array_reference_char_2
143258       , l_array_reference_char_3
143259       , l_array_reference_char_4
143260       , l_array_reference_date_1
143261       , l_array_reference_date_2
143262       , l_array_reference_date_3
143263       , l_array_reference_date_4
143264       , l_array_event_created_by
143265       , l_array_budgetary_control_flag 
143266       , l_array_source_6
143267       , l_array_source_7
143268       , l_array_source_8
143269       , l_array_source_9
143270       , l_array_source_10
143271       , l_array_source_12
143272       LIMIT l_rows;
143273 --
143274 IF (C_LEVEL_EVENT >= g_log_level) THEN
143275    trace
143276    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
143277    ,p_level    => C_LEVEL_EVENT
143278    ,p_module   => l_log_module);
143279 END IF;
143280 --
143281 EXIT WHEN l_array_entity_id.COUNT = 0;
143282 
143283 -- initialize arrays
143284 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
143285 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
143286 
143287 --
143288 -- Bug 4458708
143289 --
143290 XLA_AE_LINES_PKG.g_LineNumber := 0;
143291 
143292 
143293 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
143294 g_last_hdr_idx := l_array_event_id.LAST;
143295 --
143296 -- loop for the headers. Each iteration is for each header extract row
143297 -- fetched in header cursor
143298 --
143299 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
143300 
143301 --
143302 -- set event info as cache for other routines to refer event attributes
143303 --
143304 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
143305    (p_application_id           => p_application_id
143306    ,p_primary_ledger_id        => p_primary_ledger_id
143307    ,p_base_ledger_id           => p_base_ledger_id
143308    ,p_target_ledger_id         => p_target_ledger_id
143309    ,p_entity_id                => l_array_entity_id(hdr_idx)
143310    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
143311    ,p_entity_code              => l_array_entity_code(hdr_idx)
143312    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
143313    ,p_event_id                 => l_array_event_id(hdr_idx)
143314    ,p_event_class_code         => l_array_class_code(hdr_idx)
143315    ,p_event_type_code          => l_array_event_type(hdr_idx)
143316    ,p_event_number             => l_array_event_number(hdr_idx)
143317    ,p_event_date               => l_array_event_date(hdr_idx)
143318    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
143319    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
143320    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
143321    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
143322    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
143323    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
143324    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
143325    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
143326    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
143327    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
143328    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
143329    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
143330    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
143331    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
143332    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
143333 
143334 --
143335 -- set the status of entry to C_VALID (0)
143336 --
143337 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
143338 
143339 --
143340 -- initialize a row for ae header
143341 --
143342 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
143343 
143344 l_event_id := l_array_event_id(hdr_idx);
143345 
143346 --
143347 -- storing the hdr_idx for event. May be used by line cursor.
143348 --
143349 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
143350 
143351 --
143352 -- store sources from header extract. This can be improved to
143353 -- store only those sources from header extract that may be used in lines
143354 --
143355 
143356 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
143357 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
143358 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
143359 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
143360 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
143364 -- initilaize the status of ae headers for diffrent balance types
143361 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
143362 
143363 --
143365 -- the status is initialised to C_NOT_CREATED (2)
143366 --
143367 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
143368 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
143369 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
143370 
143371 --
143372 -- call api to validate and store accounting attributes for header
143373 --
143374 
143375 ------------------------------------------------------------
143376 -- Accrual Reversal : to get date for Standard Source (NONE)
143377 ------------------------------------------------------------
143378 l_acc_rev_gl_date_source := NULL;
143379 
143380      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
143381       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
143382 
143383 
143384 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
143385 
143386 XLA_AE_HEADER_PKG.SetJeCategoryName;
143387 
143388 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
143389 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
143390 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
143391 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
143392 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
143393 
143394 
143395 -- No header level analytical criteria
143396 
143397 --
143398 --accounting attribute enhancement, bug 3612931
143399 --
143400 l_trx_reversal_source := SUBSTR(NULL, 1,30);
143401 
143402 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
143403    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
143404 
143405    xla_accounting_err_pkg.build_message
143406       (p_appli_s_name            => 'XLA'
143407       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
143408       ,p_token_1                 => 'ACCT_ATTR_NAME'
143409       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
143410       ,p_token_2                 => 'PRODUCT_NAME'
143411       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
143412       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
143413       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
143414       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
143415 
143416 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
143417    --
143418    -- following sets the accounting attributes needed to reverse
143419    -- accounting for a distributeion
143420    --
143421    xla_ae_lines_pkg.SetTrxReversalAttrs
143422       (p_event_id              => l_event_id
143423       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
143424       ,p_trx_reversal_source   => l_trx_reversal_source);
143425 
143426 END IF;
143427 
143428 
143429 ----------------------------------------------------------------
143430 -- 4262811 -  update the header statuses to invalid in need be
143431 ----------------------------------------------------------------
143432 --
143433 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
143434 
143435 
143436   -----------------------------------------------
143437   -- No accrual reversal for the event class/type
143438   -----------------------------------------------
143439 ----------------------------------------------------------------
143440 
143441 --
143442 -- this ends the header loop iteration for one bulk fetch
143443 --
143444 END LOOP;
143445 
143446 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
143447 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
143448 
143449 --
143450 -- insert dummy rows into lines gt table that were created due to
143451 -- transaction reversals
143452 --
143453 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
143454    l_result := XLA_AE_LINES_PKG.InsertLines;
143455 END IF;
143456 
143457 --
143458 -- reset the temp_line_num for each set of events fetched from header
143459 -- cursor rather than doing it for each new event in line cursor
143460 -- Bug 3939231
143461 --
143462 xla_ae_lines_pkg.g_temp_line_num := 0;
143463 
143464 
143465 
143466 --
143467 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
143468 --
143469 --
143470 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143471 
143472       trace
143473          (p_msg      => 'SQL - FETCH line_cur'
143474          ,p_level    => C_LEVEL_STATEMENT
143475          ,p_module   => l_log_module);
143476 
143477 END IF;
143478 --
143479 --
143480 LOOP
143481   --
143482   FETCH line_cur BULK COLLECT INTO
143483         l_array_entity_id
143484       , l_array_legal_entity_id
143485       , l_array_entity_code
143486       , l_array_transaction_num
143487       , l_array_event_id
143488       , l_array_class_code
143489       , l_array_event_type
143490       , l_array_event_number
143491       , l_array_event_date
143492       , l_array_transaction_date
143493       , l_array_reference_num_1
143497       , l_array_reference_char_1
143494       , l_array_reference_num_2
143495       , l_array_reference_num_3
143496       , l_array_reference_num_4
143498       , l_array_reference_char_2
143499       , l_array_reference_char_3
143500       , l_array_reference_char_4
143501       , l_array_reference_date_1
143502       , l_array_reference_date_2
143503       , l_array_reference_date_3
143504       , l_array_reference_date_4
143505       , l_array_event_created_by
143506       , l_array_budgetary_control_flag
143507       , l_array_extract_line_num 
143508       , l_array_source_1
143509       , l_array_source_2
143510       , l_array_source_3
143511       , l_array_source_5
143512       , l_array_source_11
143513       LIMIT l_rows;
143514 
143515   --
143516   IF (C_LEVEL_EVENT >= g_log_level) THEN
143517             trace
143518                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
143519                ,p_level    => C_LEVEL_EVENT
143520                ,p_module   => l_log_module);
143521   END IF;
143522   --
143523   EXIT WHEN l_array_entity_id.count = 0;
143524 
143525   XLA_AE_LINES_PKG.g_rec_lines := null;
143526 
143527 --
143528 -- Bug 4458708
143529 --
143530 XLA_AE_LINES_PKG.g_LineNumber := 0;
143531 --
143532 --
143533 
143534 FOR Idx IN 1..l_array_event_id.count LOOP
143535    --
143536    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
143537    --
143538    l_event_id := l_array_event_id(idx);  -- 5648433
143539 
143540    --
143541    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
143542    --
143543 
143544    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
143545              (g_array_event(l_event_id).array_value_num('header_index'))
143546          ,'N'
143547          ) <> 'Y'
143548    THEN
143549       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143550          trace
143551             (p_msg      => 'Trancaction revesal option is not Y '
143552             ,p_level    => C_LEVEL_STATEMENT
143553             ,p_module   => l_log_module);
143554       END IF;
143555 
143556 --
143557 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
143558 --
143559 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
143560 --
143561 -- set event info as cache for other routines to refer event attributes
143562 --
143563 
143564 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
143565    l_previous_event_id := l_event_id;
143566 
143567    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
143568       (p_application_id           => p_application_id
143569       ,p_primary_ledger_id        => p_primary_ledger_id
143570       ,p_base_ledger_id           => p_base_ledger_id
143571       ,p_target_ledger_id         => p_target_ledger_id
143572       ,p_entity_id                => l_array_entity_id(Idx)
143573       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
143574       ,p_entity_code              => l_array_entity_code(Idx)
143575       ,p_transaction_num          => l_array_transaction_num(Idx)
143576       ,p_event_id                 => l_array_event_id(Idx)
143577       ,p_event_class_code         => l_array_class_code(Idx)
143578       ,p_event_type_code          => l_array_event_type(Idx)
143579       ,p_event_number             => l_array_event_number(Idx)
143580       ,p_event_date               => l_array_event_date(Idx)
143581       ,p_transaction_date         => l_array_transaction_date(Idx)
143582       ,p_reference_num_1          => l_array_reference_num_1(Idx)
143583       ,p_reference_num_2          => l_array_reference_num_2(Idx)
143584       ,p_reference_num_3          => l_array_reference_num_3(Idx)
143585       ,p_reference_num_4          => l_array_reference_num_4(Idx)
143586       ,p_reference_char_1         => l_array_reference_char_1(Idx)
143587       ,p_reference_char_2         => l_array_reference_char_2(Idx)
143588       ,p_reference_char_3         => l_array_reference_char_3(Idx)
143589       ,p_reference_char_4         => l_array_reference_char_4(Idx)
143590       ,p_reference_date_1         => l_array_reference_date_1(Idx)
143591       ,p_reference_date_2         => l_array_reference_date_2(Idx)
143592       ,p_reference_date_3         => l_array_reference_date_3(Idx)
143593       ,p_reference_date_4         => l_array_reference_date_4(Idx)
143594       ,p_event_created_by         => l_array_event_created_by(Idx)
143595       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
143596        --
143597 END IF;
143598 
143599 
143600 
143601 --
143602 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
143603 
143604 l_acct_reversal_source := SUBSTR(NULL, 1,30);
143605 
143606 IF l_continue_with_lines THEN
143607    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
143608       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
143609 
143610       xla_accounting_err_pkg.build_message
143611          (p_appli_s_name            => 'XLA'
143612          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
143613          ,p_token_1                 => 'LINE_NUMBER'
143614          ,p_value_1                 => l_array_extract_line_num(Idx)
143615          ,p_token_2                 => 'PRODUCT_NAME'
143616          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
143617          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
143621    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
143618          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
143619          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
143620 
143622       --
143623       -- following sets the accounting attributes needed to reverse
143624       -- accounting for a distributeion
143625       --
143626 
143627       --
143628       -- 5217187
143629       --
143630       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
143631       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
143632                                        g_array_event(l_event_id).array_value_num('header_index'));
143633       --
143634       --
143635 
143636       -- No reversal code generated
143637 
143638       xla_ae_lines_pkg.SetAcctReversalAttrs
143639          (p_event_id             => l_event_id
143640          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
143641          ,p_calculate_acctd_flag => l_calculate_acctd_flag
143642          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
143643    END IF;
143644 
143645    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
143646        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
143647 
143648 --
143649 AcctLineType_75 (
143650  p_application_id  => p_application_id
143651  ,p_event_id     => l_event_id
143652  ,p_calculate_acctd_flag => l_calculate_acctd_flag
143653  ,p_calculate_g_l_flag => l_calculate_g_l_flag
143654  ,p_actual_flag => l_actual_flag
143655  ,p_balance_type_code => l_balance_type_code
143656  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
143657  
143658  , p_source_1 => l_array_source_1(Idx)
143659  , p_source_2 => l_array_source_2(Idx)
143660  , p_source_3 => l_array_source_3(Idx)
143661  , p_source_5 => l_array_source_5(Idx)
143662  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
143663  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
143664  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
143665  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
143666  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
143667  , p_source_11 => l_array_source_11(Idx)
143668  );
143669 If(l_balance_type_code = 'A') THEN
143670   l_actual_gain_loss_ref := l_gain_or_loss_ref;
143671 END IF;
143672 
143673 --
143674 
143675 
143676 --
143677 AcctLineType_113 (
143678  p_application_id  => p_application_id
143679  ,p_event_id     => l_event_id
143680  ,p_calculate_acctd_flag => l_calculate_acctd_flag
143681  ,p_calculate_g_l_flag => l_calculate_g_l_flag
143682  ,p_actual_flag => l_actual_flag
143683  ,p_balance_type_code => l_balance_type_code
143684  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
143685  
143686  , p_source_1 => l_array_source_1(Idx)
143687  , p_source_2 => l_array_source_2(Idx)
143688  , p_source_3 => l_array_source_3(Idx)
143689  , p_source_5 => l_array_source_5(Idx)
143690  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
143691  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
143692  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
143693  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
143694  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
143695  , p_source_11 => l_array_source_11(Idx)
143696  );
143697 If(l_balance_type_code = 'A') THEN
143698   l_actual_gain_loss_ref := l_gain_or_loss_ref;
143699 END IF;
143700 
143701 --
143702 
143703 
143704 --
143705 AcctLineType_189 (
143706  p_application_id  => p_application_id
143707  ,p_event_id     => l_event_id
143708  ,p_calculate_acctd_flag => l_calculate_acctd_flag
143709  ,p_calculate_g_l_flag => l_calculate_g_l_flag
143710  ,p_actual_flag => l_actual_flag
143711  ,p_balance_type_code => l_balance_type_code
143712  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
143713  
143714  , p_source_1 => l_array_source_1(Idx)
143715  , p_source_2 => l_array_source_2(Idx)
143716  , p_source_3 => l_array_source_3(Idx)
143717  , p_source_5 => l_array_source_5(Idx)
143718  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
143719  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
143720  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
143721  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
143722  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
143723  , p_source_11 => l_array_source_11(Idx)
143724  );
143725 If(l_balance_type_code = 'A') THEN
143726   l_actual_gain_loss_ref := l_gain_or_loss_ref;
143727 END IF;
143728 
143729 --
143730 
143731 
143732 --
143733 AcctLineType_212 (
143734  p_application_id  => p_application_id
143735  ,p_event_id     => l_event_id
143736  ,p_calculate_acctd_flag => l_calculate_acctd_flag
143737  ,p_calculate_g_l_flag => l_calculate_g_l_flag
143738  ,p_actual_flag => l_actual_flag
143739  ,p_balance_type_code => l_balance_type_code
143740  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
143741  
143742  , p_source_1 => l_array_source_1(Idx)
143743  , p_source_2 => l_array_source_2(Idx)
143744  , p_source_3 => l_array_source_3(Idx)
143745  , p_source_5 => l_array_source_5(Idx)
143746  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
143747  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
143751  , p_source_11 => l_array_source_11(Idx)
143748  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
143749  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
143750  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
143752  );
143753 If(l_balance_type_code = 'A') THEN
143754   l_actual_gain_loss_ref := l_gain_or_loss_ref;
143755 END IF;
143756 
143757 --
143758 
143759 
143760 --
143761 AcctLineType_243 (
143762  p_application_id  => p_application_id
143763  ,p_event_id     => l_event_id
143764  ,p_calculate_acctd_flag => l_calculate_acctd_flag
143765  ,p_calculate_g_l_flag => l_calculate_g_l_flag
143766  ,p_actual_flag => l_actual_flag
143767  ,p_balance_type_code => l_balance_type_code
143768  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
143769  
143770  , p_source_1 => l_array_source_1(Idx)
143771  , p_source_2 => l_array_source_2(Idx)
143772  , p_source_3 => l_array_source_3(Idx)
143773  , p_source_5 => l_array_source_5(Idx)
143774  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
143775  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
143776  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
143777  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
143778  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
143779  , p_source_11 => l_array_source_11(Idx)
143780  );
143781 If(l_balance_type_code = 'A') THEN
143782   l_actual_gain_loss_ref := l_gain_or_loss_ref;
143783 END IF;
143784 
143785 --
143786 
143787       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
143788       -- or secondary ledger that has different currency with primary
143789       -- or alc that is calculated by sla
143790       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
143791             (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'))
143792 
143793 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
143794 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
143795           AND (l_actual_flag = 'A')) THEN
143796         XLA_AE_LINES_PKG.CreateGainOrLossLines(
143797           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
143798          ,p_application_id   => p_application_id
143799          ,p_amb_context_code => 'DEFAULT'
143800          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
143801          ,p_event_class_code => C_EVENT_CLASS_CODE
143802          ,p_event_type_code  => C_EVENT_TYPE_CODE
143803          
143804          ,p_gain_ccid        => -1
143805          ,p_loss_ccid        => -1
143806 
143807          ,p_actual_flag      => l_actual_flag
143808          ,p_enc_flag         => null
143809          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
143810          ,p_enc_g_l_ref      => null
143811          );
143812       END IF;
143813    END IF;
143814 END IF;
143815 
143816    ELSE
143817       --
143818       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
143819       --
143820       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143821          trace
143822             (p_msg      => 'Trancaction revesal option is Y'
143823             ,p_level    => C_LEVEL_STATEMENT
143824             ,p_module   => l_log_module);
143825       END IF;
143826    END IF;
143827 
143828 END LOOP;
143829 l_result := XLA_AE_LINES_PKG.InsertLines ;
143830 end loop;
143831 close line_cur;
143832 
143833 
143834 --
143835 -- insert headers into xla_ae_headers_gt table
143836 --
143837 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
143838 
143839 -- insert into errors table here.
143840 
143841 END LOOP;
143842 
143843 --
143844 -- 4865292
143845 --
143846 -- Compare g_hdr_extract_count with event count in
143847 -- CreateHeadersAndLines.
143848 --
143849 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
143850 
143851 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143852    trace (p_msg     => '# rows extracted from header extract objects '
143853                     || ' (running total): '
143854                     || g_hdr_extract_count
143855          ,p_level   => C_LEVEL_STATEMENT
143856          ,p_module  => l_log_module);
143857 END IF;
143858 
143859 CLOSE header_cur;
143860 --
143861 
143862 --
143863 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143864    trace
143865       (p_msg      => 'END of EventType_267'
143866       ,p_level    => C_LEVEL_PROCEDURE
143867       ,p_module   => l_log_module);
143868 END IF;
143869 --
143870 RETURN l_result;
143871 EXCEPTION
143872 WHEN xla_exceptions_pkg.application_exception THEN
143873    
143874 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
143875 
143876    
143877 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
143878 
143879    RAISE;
143880 
143881 WHEN NO_DATA_FOUND THEN
143882 
143883 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
143884 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
143885 
143886 FOR header_record IN header_cur
143887 LOOP
143888     l_array_header_events(header_record.event_id) := header_record.event_id;
143889 END LOOP;
143890 
143894 fnd_file.put_line(fnd_file.LOG, '                    ');
143891 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
143892 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
143893 
143895 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
143896 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
143897 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
143898 
143899 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
143900 LOOP
143901 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
143902 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
143903         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
143904 	END IF;
143905 END LOOP;
143906 
143907 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
143908 fnd_file.put_line(fnd_file.LOG, '                    ');
143909 
143910 
143911 xla_exceptions_pkg.raise_message
143912       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_267');
143913 
143914 
143915 WHEN OTHERS THEN
143916    xla_exceptions_pkg.raise_message
143917       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_267');
143918 END EventType_267;
143919 --
143920 
143921 ---------------------------------------
143922 --
143923 -- PRIVATE PROCEDURE
143924 --         insert_sources_268
143925 --
143926 ----------------------------------------
143927 --
143928 PROCEDURE insert_sources_268(
143929                                 p_target_ledger_id       IN NUMBER
143930                               , p_language               IN VARCHAR2
143931                               , p_sla_ledger_id          IN NUMBER
143932                               , p_pad_start_date         IN DATE
143933                               , p_pad_end_date           IN DATE
143934                          )
143935 IS
143936 
143937 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_RCPT_TP';
143938 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
143939 p_apps_owner                   VARCHAR2(30);
143940 l_log_module                   VARCHAR2(240);
143941 BEGIN
143942 IF g_log_enabled THEN
143943       l_log_module := C_DEFAULT_MODULE||'.insert_sources_268';
143944 END IF;
143945 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143946 
143947       trace
143948          (p_msg      => 'BEGIN of insert_sources_268'
143949          ,p_level    => C_LEVEL_PROCEDURE
143950          ,p_module   => l_log_module);
143951 
143952 END IF;
143953 
143954 -- select APPS owner
143955 SELECT oracle_username
143956   INTO p_apps_owner
143957   FROM fnd_oracle_userid
143958  WHERE read_only_flag = 'U'
143959 ;
143960 
143961 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143962       trace
143963          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
143964                         ' - p_language = '||p_language||
143965                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
143966                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
143967                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
143968                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
143969          ,p_level    => C_LEVEL_STATEMENT
143970          ,p_module   => l_log_module);
143971 END IF;
143972 
143973 
143974 --
143975 INSERT INTO xla_diag_sources --hdr1
143976 (
143977         event_id
143978       , ledger_id
143979       , sla_ledger_id
143980       , description_language
143981       , object_name
143982       , object_type_code
143983       , line_number
143984       , source_application_id
143985       , source_type_code
143986       , source_code
143987       , source_value
143988       , source_meaning
143989       , created_by
143990       , creation_date
143991       , last_update_date
143992       , last_updated_by
143993       , last_update_login
143994       , program_update_date
143995       , program_application_id
143996       , program_id
143997       , request_id
143998 )
143999 SELECT
144000         event_id
144001       , p_target_ledger_id
144002       , p_sla_ledger_id
144003       , p_language
144004       , object_name
144005       , object_type_code
144006       , line_number
144007       , source_application_id
144008       , source_type_code
144009       , source_code
144010       , SUBSTR(source_value ,1,1996)
144011       , SUBSTR(source_meaning,1,200)
144012       , xla_environment_pkg.g_Usr_Id
144013       , TRUNC(SYSDATE)
144014       , TRUNC(SYSDATE)
144015       , xla_environment_pkg.g_Usr_Id
144016       , xla_environment_pkg.g_Login_Id
144017       , TRUNC(SYSDATE)
144018       , xla_environment_pkg.g_Prog_Appl_Id
144019       , xla_environment_pkg.g_Prog_Id
144020       , xla_environment_pkg.g_Req_Id
144021   FROM (
144022        SELECT xet.event_id                  event_id
144023             , 0                             line_number
144024             , CASE r
144025                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
144026                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
144027                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
144028                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
144029                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
144033               END                           object_name
144030                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
144031                 
144032                ELSE null
144034             , CASE r
144035                 WHEN 1 THEN 'HEADER' 
144036                 WHEN 2 THEN 'HEADER' 
144037                 WHEN 3 THEN 'HEADER' 
144038                 WHEN 4 THEN 'HEADER' 
144039                 WHEN 5 THEN 'HEADER' 
144040                 WHEN 6 THEN 'HEADER' 
144041                 
144042                 ELSE null
144043               END                           object_type_code
144044             , CASE r
144045                 WHEN 1 THEN '555' 
144046                 WHEN 2 THEN '555' 
144047                 WHEN 3 THEN '555' 
144048                 WHEN 4 THEN '555' 
144049                 WHEN 5 THEN '555' 
144050                 WHEN 6 THEN '555' 
144051                 
144052                 ELSE null
144053               END                           source_application_id
144054             , 'S'             source_type_code
144055             , CASE r
144056                 WHEN 1 THEN 'ENTITY_CODE' 
144057                 WHEN 2 THEN 'CURRENCY_CODE' 
144058                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
144059                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
144060                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
144061                 WHEN 6 THEN 'TRANSACTION_DATE' 
144062                 
144063                 ELSE null
144064               END                           source_code
144065             , CASE r
144066                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
144067                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
144068                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
144069                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
144070                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
144071                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
144072                 
144073                 ELSE null
144074               END                           source_value
144075             , CASE r
144076                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
144077                           1010186
144078                          ,TO_CHAR(h1.CURRENCY_CODE)
144079                          ,'CURRENCY_CODE'
144080                          ,'S'
144081                          ,555)
144082                 
144083                 ELSE null
144084               END               source_meaning
144085         FROM xla_events_gt     xet  
144086       , GMF_XLA_EXTRACT_HEADERS  h1
144087             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
144088        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
144089          AND xet.event_type_code = C_EVENT_TYPE_CODE
144090             AND h1.event_id = xet.event_id
144091 
144092 )
144093 ;
144094 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144095 
144096       trace
144097          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
144098          ,p_level    => C_LEVEL_STATEMENT
144099          ,p_module   => l_log_module);
144100 
144101 END IF;
144102 --
144103 
144104 
144105 
144106 --
144107 INSERT INTO xla_diag_sources --line1
144108 (
144109         event_id
144110       , ledger_id
144111       , sla_ledger_id
144112       , description_language
144113       , object_name
144114       , object_type_code
144115       , line_number
144116       , source_application_id
144117       , source_type_code
144118       , source_code
144119       , source_value
144120       , source_meaning
144121       , created_by
144122       , creation_date
144123       , last_update_date
144124       , last_updated_by
144125       , last_update_login
144126       , program_update_date
144127       , program_application_id
144128       , program_id
144129       , request_id
144130 )
144131 SELECT  event_id
144132       , p_target_ledger_id
144133       , p_sla_ledger_id
144134       , p_language
144135       , object_name
144136       , object_type_code
144137       , line_number
144138       , source_application_id
144139       , source_type_code
144140       , source_code
144141       , SUBSTR(source_value,1,1996)
144142       , SUBSTR(source_meaning,1,200)
144143       , xla_environment_pkg.g_Usr_Id
144144       , TRUNC(SYSDATE)
144145       , TRUNC(SYSDATE)
144146       , xla_environment_pkg.g_Usr_Id
144147       , xla_environment_pkg.g_Login_Id
144148       , TRUNC(SYSDATE)
144149       , xla_environment_pkg.g_Prog_Appl_Id
144150       , xla_environment_pkg.g_Prog_Id
144151       , xla_environment_pkg.g_Req_Id
144152   FROM (
144153        SELECT xet.event_id                  event_id
144154             , l2.line_number                 line_number
144155             , CASE r
144156                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
144157                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
144158                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
144159                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
144160                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
144161                 
144162                ELSE null
144163               END                           object_name
144164             , CASE r
144165                 WHEN 1 THEN 'LINE' 
144166                 WHEN 2 THEN 'LINE' 
144167                 WHEN 3 THEN 'LINE' 
144168                 WHEN 4 THEN 'LINE' 
144169                 WHEN 5 THEN 'LINE' 
144170                 
144174                 WHEN 1 THEN '555' 
144171                 ELSE null
144172               END                           object_type_code
144173             , CASE r
144175                 WHEN 2 THEN '555' 
144176                 WHEN 3 THEN '555' 
144177                 WHEN 4 THEN '555' 
144178                 WHEN 5 THEN '555' 
144179                 
144180                 ELSE null
144181               END                           source_application_id
144182             , 'S'             source_type_code
144183             , CASE r
144184                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
144185                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
144186                 WHEN 3 THEN 'ENTERED_AMOUNT' 
144187                 WHEN 4 THEN 'LINE_ID' 
144188                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
144189                 
144190                 ELSE null
144191               END                           source_code
144192             , CASE r
144193                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
144194                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
144195                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
144196                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
144197                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
144198                 
144199                 ELSE null
144200               END                           source_value
144201             , null              source_meaning
144202          FROM  xla_events_gt     xet  
144203         , GMF_XLA_EXTRACT_LINES  l2
144204             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
144205         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
144206           AND xet.event_type_code = C_EVENT_TYPE_CODE
144207             AND l2.event_id          = xet.event_id
144208 
144209 )
144210 ;
144211 --
144212 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144213 
144214       trace
144215          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
144216          ,p_level    => C_LEVEL_STATEMENT
144217          ,p_module   => l_log_module);
144218 
144219 END IF;
144220 
144221 
144222 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144223       trace
144224          (p_msg      => 'END of insert_sources_268'
144225          ,p_level    => C_LEVEL_PROCEDURE
144226          ,p_module   => l_log_module);
144227 END IF;
144228 EXCEPTION
144229   WHEN xla_exceptions_pkg.application_exception THEN
144230       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
144231             trace
144232                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
144233                ,p_level    => C_LEVEL_EXCEPTION
144234                ,p_module   => l_log_module);
144235       END IF;
144236       RAISE;
144237   WHEN OTHERS THEN
144238       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
144239             trace
144240                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
144241                ,p_level    => C_LEVEL_EXCEPTION
144242                ,p_module   => l_log_module);
144243        END IF;
144244        xla_exceptions_pkg.raise_message
144245            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_268');
144246 END insert_sources_268;
144247 --
144248 
144249 ---------------------------------------
144250 --
144251 -- PRIVATE FUNCTION
144252 --         EventType_268
144253 --
144254 ----------------------------------------
144255 --
144256 FUNCTION EventType_268
144257        (p_application_id         IN NUMBER
144258        ,p_base_ledger_id         IN NUMBER
144259        ,p_target_ledger_id       IN NUMBER
144260        ,p_language               IN VARCHAR2
144261        ,p_currency_code          IN VARCHAR2
144262        ,p_sla_ledger_id          IN NUMBER
144263        ,p_pad_start_date         IN DATE
144264        ,p_pad_end_date           IN DATE
144265        ,p_primary_ledger_id      IN NUMBER)
144266 RETURN BOOLEAN IS
144267 --
144268 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_RCPT_TP';
144269 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
144270 
144271 l_calculate_acctd_flag   VARCHAR2(1) :='N';
144272 l_calculate_g_l_flag     VARCHAR2(1) :='N';
144273 --
144274 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144275 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144276 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
144277 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144278 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144279 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
144280 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
144281 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144282 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144283 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144284 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144285 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144286 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144287 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144288 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144289 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144290 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144294 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144291 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144292 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144293 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144295 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144296 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
144297 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
144298 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
144299 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
144300 
144301 l_event_id                             NUMBER;
144302 l_previous_event_id                    NUMBER;
144303 l_first_event_id                       NUMBER;
144304 l_last_event_id                        NUMBER;
144305 
144306 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
144307 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
144308 --
144309 --
144310 l_result                    BOOLEAN := TRUE;
144311 l_rows                      NUMBER  := 1000;
144312 l_event_type_name           VARCHAR2(80) := 'Sender-side Intransit Interorg Receipt for FOB Receipt, Transfer Pricing';
144313 l_event_class_name          VARCHAR2(80) := 'Sender-side Intransit Interorg Receipt for FOB Receipt';
144314 l_description               VARCHAR2(4000);
144315 l_transaction_reversal      NUMBER;
144316 l_ae_header_id              NUMBER;
144317 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
144318 l_log_module                VARCHAR2(240);
144319 --
144320 l_acct_reversal_source      VARCHAR2(30);
144321 l_trx_reversal_source       VARCHAR2(30);
144322 
144323 l_continue_with_lines       BOOLEAN := TRUE;
144324 --
144325 l_acc_rev_gl_date_source    DATE;                      -- 4262811
144326 --
144327 type t_array_event_id is table of number index by binary_integer;
144328 
144329 l_rec_array_event                    t_rec_array_event;
144330 l_null_rec_array_event               t_rec_array_event;
144331 l_array_ae_header_id                 xla_number_array_type;
144332 l_actual_flag                        VARCHAR2(1) := NULL;
144333 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
144334 l_balance_type_code                  VARCHAR2(1) :=NULL;
144335 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
144336 
144337 --
144338 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
144339 --
144340 
144341 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
144342 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
144343 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
144344 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
144345 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
144346 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
144347 
144348 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
144349 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
144350 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
144351 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
144352 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
144353 
144354 l_array_source_6              t_array_source_6;
144355 l_array_source_7              t_array_source_7;
144356 l_array_source_8              t_array_source_8;
144357 l_array_source_9              t_array_source_9;
144358 l_array_source_10              t_array_source_10;
144359 l_array_source_12              t_array_source_12;
144360 
144361 l_array_source_1      t_array_source_1;
144362 l_array_source_2      t_array_source_2;
144363 l_array_source_3      t_array_source_3;
144364 l_array_source_5      t_array_source_5;
144365 l_array_source_11      t_array_source_11;
144366 
144367 --
144368 CURSOR header_cur
144369 IS
144370 SELECT /*+ leading(xet) cardinality(xet,1) */
144371 -- Event Type Code: FOB_RCPT_SENDER_RCPT_TP
144372 -- Event Class Code: FOB_RCPT_SENDER_RCPT
144373     xet.entity_id
144374   , xet.legal_entity_id
144375   , xet.entity_code
144376   , xet.transaction_number
144377   , xet.event_id
144378   , xet.event_class_code
144379   , xet.event_type_code
144380   , xet.event_number
144381   , xet.event_date
144382   , xet.transaction_date
144383   , xet.reference_num_1
144384   , xet.reference_num_2
144385   , xet.reference_num_3
144386   , xet.reference_num_4
144387   , xet.reference_char_1
144388   , xet.reference_char_2
144389   , xet.reference_char_3
144390   , xet.reference_char_4
144391   , xet.reference_date_1
144392   , xet.reference_date_2
144393   , xet.reference_date_3
144394   , xet.reference_date_4
144395   , xet.event_created_by
144396   , xet.budgetary_control_flag 
144397   , h1.ENTITY_CODE    source_6
144398   , h1.CURRENCY_CODE    source_7
144399   , h1.CURRENCY_CONVERSION_DATE    source_8
144403   FROM xla_events_gt     xet 
144400   , h1.CURRENCY_CONVERSION_RATE    source_9
144401   , h1.CURRENCY_CONVERSION_TYPE    source_10
144402   , h1.TRANSACTION_DATE    source_12
144404   , GMF_XLA_EXTRACT_HEADERS  h1
144405  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
144406    and xet.event_type_code = C_EVENT_TYPE_CODE
144407    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
144408 
144409  ORDER BY event_id
144410 ;
144411 
144412 
144413 --
144414 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
144415 IS
144416 SELECT /*+ leading(xet) cardinality(xet,1) */
144417 -- Event Type Code: FOB_RCPT_SENDER_RCPT_TP
144418 -- Event Class Code: FOB_RCPT_SENDER_RCPT
144419     xet.entity_id
144420    ,xet.legal_entity_id
144421    ,xet.entity_code
144422    ,xet.transaction_number
144423    ,xet.event_id
144424    ,xet.event_class_code
144425    ,xet.event_type_code
144426    ,xet.event_number
144427    ,xet.event_date
144428    ,xet.transaction_date
144429    ,xet.reference_num_1
144430    ,xet.reference_num_2
144431    ,xet.reference_num_3
144432    ,xet.reference_num_4
144433    ,xet.reference_char_1
144434    ,xet.reference_char_2
144435    ,xet.reference_char_3
144436    ,xet.reference_char_4
144437    ,xet.reference_date_1
144438    ,xet.reference_date_2
144439    ,xet.reference_date_3
144440    ,xet.reference_date_4
144441    ,xet.event_created_by
144442    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
144443   , l2.TRANSACTION_ACCOUNT_ID    source_1
144444   , l2.JOURNAL_LINE_TYPE    source_2
144445   , l2.ENTERED_AMOUNT    source_3
144446   , l2.LINE_ID    source_5
144447   , l2.ACCOUNTED_AMOUNT    source_11
144448   FROM xla_events_gt     xet 
144449   , GMF_XLA_EXTRACT_LINES  l2
144450  WHERE xet.event_id between x_first_event_id and x_last_event_id
144451    and xet.event_date between p_pad_start_date and p_pad_end_date
144452    and xet.event_type_code = C_EVENT_TYPE_CODE
144453    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
144454 ;
144455 
144456 --
144457 BEGIN
144458 IF g_log_enabled THEN
144459    l_log_module := C_DEFAULT_MODULE||'.EventType_268';
144460 END IF;
144461 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144462    trace
144463       (p_msg      => 'BEGIN of EventType_268'
144464       ,p_level    => C_LEVEL_PROCEDURE
144465       ,p_module   => l_log_module);
144466 END IF;
144467 
144468 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144469    trace
144470       (p_msg      => 'p_application_id = '||p_application_id||
144471                      ' - p_base_ledger_id = '||p_base_ledger_id||
144472                      ' - p_target_ledger_id  = '||p_target_ledger_id||
144473                      ' - p_language = '||p_language||
144474                      ' - p_currency_code = '||p_currency_code||
144475                      ' - p_sla_ledger_id = '||p_sla_ledger_id
144476       ,p_level    => C_LEVEL_STATEMENT
144477       ,p_module   => l_log_module);
144478 END IF;
144479 --
144480 -- initialze arrays
144481 --
144482 g_array_event.DELETE;
144483 l_rec_array_event := l_null_rec_array_event;
144484 --
144485 --------------------------------------
144486 -- 4262811 Initialze MPA Line Number
144487 --------------------------------------
144488 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
144489 
144490 --
144491 
144492 --
144493 OPEN header_cur;
144494 --
144495 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144496    trace
144497    (p_msg      => 'SQL - FETCH header_cur'
144498    ,p_level    => C_LEVEL_STATEMENT
144499    ,p_module   => l_log_module);
144500 END IF;
144501 --
144502 LOOP
144503 FETCH header_cur BULK COLLECT INTO
144504         l_array_entity_id
144505       , l_array_legal_entity_id
144506       , l_array_entity_code
144507       , l_array_transaction_num
144508       , l_array_event_id
144509       , l_array_class_code
144510       , l_array_event_type
144511       , l_array_event_number
144512       , l_array_event_date
144513       , l_array_transaction_date
144514       , l_array_reference_num_1
144515       , l_array_reference_num_2
144516       , l_array_reference_num_3
144517       , l_array_reference_num_4
144518       , l_array_reference_char_1
144519       , l_array_reference_char_2
144520       , l_array_reference_char_3
144521       , l_array_reference_char_4
144522       , l_array_reference_date_1
144523       , l_array_reference_date_2
144524       , l_array_reference_date_3
144525       , l_array_reference_date_4
144526       , l_array_event_created_by
144527       , l_array_budgetary_control_flag 
144528       , l_array_source_6
144529       , l_array_source_7
144530       , l_array_source_8
144531       , l_array_source_9
144532       , l_array_source_10
144533       , l_array_source_12
144534       LIMIT l_rows;
144535 --
144536 IF (C_LEVEL_EVENT >= g_log_level) THEN
144537    trace
144538    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
144539    ,p_level    => C_LEVEL_EVENT
144540    ,p_module   => l_log_module);
144541 END IF;
144542 --
144543 EXIT WHEN l_array_entity_id.COUNT = 0;
144544 
144545 -- initialize arrays
144546 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
144547 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
144548 
144549 --
144550 -- Bug 4458708
144551 --
144552 XLA_AE_LINES_PKG.g_LineNumber := 0;
144556 g_last_hdr_idx := l_array_event_id.LAST;
144553 
144554 
144555 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
144557 --
144558 -- loop for the headers. Each iteration is for each header extract row
144559 -- fetched in header cursor
144560 --
144561 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
144562 
144563 --
144564 -- set event info as cache for other routines to refer event attributes
144565 --
144566 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
144567    (p_application_id           => p_application_id
144568    ,p_primary_ledger_id        => p_primary_ledger_id
144569    ,p_base_ledger_id           => p_base_ledger_id
144570    ,p_target_ledger_id         => p_target_ledger_id
144571    ,p_entity_id                => l_array_entity_id(hdr_idx)
144572    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
144573    ,p_entity_code              => l_array_entity_code(hdr_idx)
144574    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
144575    ,p_event_id                 => l_array_event_id(hdr_idx)
144576    ,p_event_class_code         => l_array_class_code(hdr_idx)
144577    ,p_event_type_code          => l_array_event_type(hdr_idx)
144578    ,p_event_number             => l_array_event_number(hdr_idx)
144579    ,p_event_date               => l_array_event_date(hdr_idx)
144580    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
144581    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
144582    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
144583    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
144584    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
144585    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
144586    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
144587    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
144588    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
144589    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
144590    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
144591    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
144592    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
144593    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
144594    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
144595 
144596 --
144597 -- set the status of entry to C_VALID (0)
144598 --
144599 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
144600 
144601 --
144602 -- initialize a row for ae header
144603 --
144604 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
144605 
144606 l_event_id := l_array_event_id(hdr_idx);
144607 
144608 --
144609 -- storing the hdr_idx for event. May be used by line cursor.
144610 --
144611 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
144612 
144613 --
144614 -- store sources from header extract. This can be improved to
144615 -- store only those sources from header extract that may be used in lines
144616 --
144617 
144618 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
144619 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
144620 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
144621 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
144622 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
144623 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
144624 
144625 --
144626 -- initilaize the status of ae headers for diffrent balance types
144627 -- the status is initialised to C_NOT_CREATED (2)
144628 --
144629 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
144630 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
144631 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
144632 
144633 --
144634 -- call api to validate and store accounting attributes for header
144635 --
144636 
144637 ------------------------------------------------------------
144638 -- Accrual Reversal : to get date for Standard Source (NONE)
144639 ------------------------------------------------------------
144640 l_acc_rev_gl_date_source := NULL;
144641 
144642      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
144643       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
144644 
144645 
144646 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
144647 
144648 XLA_AE_HEADER_PKG.SetJeCategoryName;
144649 
144650 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
144651 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
144652 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
144653 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
144654 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
144655 
144656 
144657 -- No header level analytical criteria
144658 
144659 --
144660 --accounting attribute enhancement, bug 3612931
144661 --
144662 l_trx_reversal_source := SUBSTR(NULL, 1,30);
144663 
144664 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
144665    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
144666 
144670       ,p_token_1                 => 'ACCT_ATTR_NAME'
144667    xla_accounting_err_pkg.build_message
144668       (p_appli_s_name            => 'XLA'
144669       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
144671       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
144672       ,p_token_2                 => 'PRODUCT_NAME'
144673       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
144674       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
144675       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
144676       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
144677 
144678 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
144679    --
144680    -- following sets the accounting attributes needed to reverse
144681    -- accounting for a distributeion
144682    --
144683    xla_ae_lines_pkg.SetTrxReversalAttrs
144684       (p_event_id              => l_event_id
144685       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
144686       ,p_trx_reversal_source   => l_trx_reversal_source);
144687 
144688 END IF;
144689 
144690 
144691 ----------------------------------------------------------------
144692 -- 4262811 -  update the header statuses to invalid in need be
144693 ----------------------------------------------------------------
144694 --
144695 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
144696 
144697 
144698   -----------------------------------------------
144699   -- No accrual reversal for the event class/type
144700   -----------------------------------------------
144701 ----------------------------------------------------------------
144702 
144703 --
144704 -- this ends the header loop iteration for one bulk fetch
144705 --
144706 END LOOP;
144707 
144708 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
144709 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
144710 
144711 --
144712 -- insert dummy rows into lines gt table that were created due to
144713 -- transaction reversals
144714 --
144715 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
144716    l_result := XLA_AE_LINES_PKG.InsertLines;
144717 END IF;
144718 
144719 --
144720 -- reset the temp_line_num for each set of events fetched from header
144721 -- cursor rather than doing it for each new event in line cursor
144722 -- Bug 3939231
144723 --
144724 xla_ae_lines_pkg.g_temp_line_num := 0;
144725 
144726 
144727 
144728 --
144729 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
144730 --
144731 --
144732 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144733 
144734       trace
144735          (p_msg      => 'SQL - FETCH line_cur'
144736          ,p_level    => C_LEVEL_STATEMENT
144737          ,p_module   => l_log_module);
144738 
144739 END IF;
144740 --
144741 --
144742 LOOP
144743   --
144744   FETCH line_cur BULK COLLECT INTO
144745         l_array_entity_id
144746       , l_array_legal_entity_id
144747       , l_array_entity_code
144748       , l_array_transaction_num
144749       , l_array_event_id
144750       , l_array_class_code
144751       , l_array_event_type
144752       , l_array_event_number
144753       , l_array_event_date
144754       , l_array_transaction_date
144755       , l_array_reference_num_1
144756       , l_array_reference_num_2
144757       , l_array_reference_num_3
144758       , l_array_reference_num_4
144759       , l_array_reference_char_1
144760       , l_array_reference_char_2
144761       , l_array_reference_char_3
144762       , l_array_reference_char_4
144763       , l_array_reference_date_1
144764       , l_array_reference_date_2
144765       , l_array_reference_date_3
144766       , l_array_reference_date_4
144767       , l_array_event_created_by
144768       , l_array_budgetary_control_flag
144769       , l_array_extract_line_num 
144770       , l_array_source_1
144771       , l_array_source_2
144772       , l_array_source_3
144773       , l_array_source_5
144774       , l_array_source_11
144775       LIMIT l_rows;
144776 
144777   --
144778   IF (C_LEVEL_EVENT >= g_log_level) THEN
144779             trace
144780                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
144781                ,p_level    => C_LEVEL_EVENT
144782                ,p_module   => l_log_module);
144783   END IF;
144784   --
144785   EXIT WHEN l_array_entity_id.count = 0;
144786 
144787   XLA_AE_LINES_PKG.g_rec_lines := null;
144788 
144789 --
144790 -- Bug 4458708
144791 --
144792 XLA_AE_LINES_PKG.g_LineNumber := 0;
144793 --
144794 --
144795 
144796 FOR Idx IN 1..l_array_event_id.count LOOP
144797    --
144798    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
144799    --
144800    l_event_id := l_array_event_id(idx);  -- 5648433
144801 
144802    --
144803    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
144804    --
144805 
144806    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
144807              (g_array_event(l_event_id).array_value_num('header_index'))
144808          ,'N'
144809          ) <> 'Y'
144810    THEN
144811       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144815             ,p_module   => l_log_module);
144812          trace
144813             (p_msg      => 'Trancaction revesal option is not Y '
144814             ,p_level    => C_LEVEL_STATEMENT
144816       END IF;
144817 
144818 --
144819 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
144820 --
144821 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
144822 --
144823 -- set event info as cache for other routines to refer event attributes
144824 --
144825 
144826 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
144827    l_previous_event_id := l_event_id;
144828 
144829    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
144830       (p_application_id           => p_application_id
144831       ,p_primary_ledger_id        => p_primary_ledger_id
144832       ,p_base_ledger_id           => p_base_ledger_id
144833       ,p_target_ledger_id         => p_target_ledger_id
144834       ,p_entity_id                => l_array_entity_id(Idx)
144835       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
144836       ,p_entity_code              => l_array_entity_code(Idx)
144837       ,p_transaction_num          => l_array_transaction_num(Idx)
144838       ,p_event_id                 => l_array_event_id(Idx)
144839       ,p_event_class_code         => l_array_class_code(Idx)
144840       ,p_event_type_code          => l_array_event_type(Idx)
144841       ,p_event_number             => l_array_event_number(Idx)
144842       ,p_event_date               => l_array_event_date(Idx)
144843       ,p_transaction_date         => l_array_transaction_date(Idx)
144844       ,p_reference_num_1          => l_array_reference_num_1(Idx)
144845       ,p_reference_num_2          => l_array_reference_num_2(Idx)
144846       ,p_reference_num_3          => l_array_reference_num_3(Idx)
144847       ,p_reference_num_4          => l_array_reference_num_4(Idx)
144848       ,p_reference_char_1         => l_array_reference_char_1(Idx)
144849       ,p_reference_char_2         => l_array_reference_char_2(Idx)
144850       ,p_reference_char_3         => l_array_reference_char_3(Idx)
144851       ,p_reference_char_4         => l_array_reference_char_4(Idx)
144852       ,p_reference_date_1         => l_array_reference_date_1(Idx)
144853       ,p_reference_date_2         => l_array_reference_date_2(Idx)
144854       ,p_reference_date_3         => l_array_reference_date_3(Idx)
144855       ,p_reference_date_4         => l_array_reference_date_4(Idx)
144856       ,p_event_created_by         => l_array_event_created_by(Idx)
144857       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
144858        --
144859 END IF;
144860 
144861 
144862 
144863 --
144864 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
144865 
144866 l_acct_reversal_source := SUBSTR(NULL, 1,30);
144867 
144868 IF l_continue_with_lines THEN
144869    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
144870       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
144871 
144872       xla_accounting_err_pkg.build_message
144873          (p_appli_s_name            => 'XLA'
144874          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
144875          ,p_token_1                 => 'LINE_NUMBER'
144876          ,p_value_1                 => l_array_extract_line_num(Idx)
144877          ,p_token_2                 => 'PRODUCT_NAME'
144878          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
144879          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
144880          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
144881          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
144882 
144883    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
144884       --
144885       -- following sets the accounting attributes needed to reverse
144886       -- accounting for a distributeion
144887       --
144888 
144889       --
144890       -- 5217187
144891       --
144892       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
144893       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
144894                                        g_array_event(l_event_id).array_value_num('header_index'));
144895       --
144896       --
144897 
144898       -- No reversal code generated
144899 
144900       xla_ae_lines_pkg.SetAcctReversalAttrs
144901          (p_event_id             => l_event_id
144902          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
144903          ,p_calculate_acctd_flag => l_calculate_acctd_flag
144904          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
144905    END IF;
144906 
144907    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
144908        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
144909 
144910 --
144911 AcctLineType_70 (
144912  p_application_id  => p_application_id
144913  ,p_event_id     => l_event_id
144914  ,p_calculate_acctd_flag => l_calculate_acctd_flag
144915  ,p_calculate_g_l_flag => l_calculate_g_l_flag
144916  ,p_actual_flag => l_actual_flag
144917  ,p_balance_type_code => l_balance_type_code
144918  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144919  
144920  , p_source_1 => l_array_source_1(Idx)
144921  , p_source_2 => l_array_source_2(Idx)
144922  , p_source_3 => l_array_source_3(Idx)
144923  , p_source_5 => l_array_source_5(Idx)
144924  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
144928  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
144925  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144926  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
144927  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
144929  , p_source_11 => l_array_source_11(Idx)
144930  );
144931 If(l_balance_type_code = 'A') THEN
144932   l_actual_gain_loss_ref := l_gain_or_loss_ref;
144933 END IF;
144934 
144935 --
144936 
144937 
144938 --
144939 AcctLineType_117 (
144940  p_application_id  => p_application_id
144941  ,p_event_id     => l_event_id
144942  ,p_calculate_acctd_flag => l_calculate_acctd_flag
144943  ,p_calculate_g_l_flag => l_calculate_g_l_flag
144944  ,p_actual_flag => l_actual_flag
144945  ,p_balance_type_code => l_balance_type_code
144946  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144947  
144948  , p_source_1 => l_array_source_1(Idx)
144949  , p_source_2 => l_array_source_2(Idx)
144950  , p_source_3 => l_array_source_3(Idx)
144951  , p_source_5 => l_array_source_5(Idx)
144952  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
144953  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144954  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
144955  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
144956  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
144957  , p_source_11 => l_array_source_11(Idx)
144958  );
144959 If(l_balance_type_code = 'A') THEN
144960   l_actual_gain_loss_ref := l_gain_or_loss_ref;
144961 END IF;
144962 
144963 --
144964 
144965 
144966 --
144967 AcctLineType_180 (
144968  p_application_id  => p_application_id
144969  ,p_event_id     => l_event_id
144970  ,p_calculate_acctd_flag => l_calculate_acctd_flag
144971  ,p_calculate_g_l_flag => l_calculate_g_l_flag
144972  ,p_actual_flag => l_actual_flag
144973  ,p_balance_type_code => l_balance_type_code
144974  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144975  
144976  , p_source_1 => l_array_source_1(Idx)
144977  , p_source_2 => l_array_source_2(Idx)
144978  , p_source_3 => l_array_source_3(Idx)
144979  , p_source_5 => l_array_source_5(Idx)
144980  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
144981  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144982  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
144983  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
144984  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
144985  , p_source_11 => l_array_source_11(Idx)
144986  );
144987 If(l_balance_type_code = 'A') THEN
144988   l_actual_gain_loss_ref := l_gain_or_loss_ref;
144989 END IF;
144990 
144991 --
144992 
144993 
144994 --
144995 AcctLineType_186 (
144996  p_application_id  => p_application_id
144997  ,p_event_id     => l_event_id
144998  ,p_calculate_acctd_flag => l_calculate_acctd_flag
144999  ,p_calculate_g_l_flag => l_calculate_g_l_flag
145000  ,p_actual_flag => l_actual_flag
145001  ,p_balance_type_code => l_balance_type_code
145002  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
145003  
145004  , p_source_1 => l_array_source_1(Idx)
145005  , p_source_2 => l_array_source_2(Idx)
145006  , p_source_3 => l_array_source_3(Idx)
145007  , p_source_5 => l_array_source_5(Idx)
145008  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
145009  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
145010  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
145011  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
145012  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
145013  , p_source_11 => l_array_source_11(Idx)
145014  );
145015 If(l_balance_type_code = 'A') THEN
145016   l_actual_gain_loss_ref := l_gain_or_loss_ref;
145017 END IF;
145018 
145019 --
145020 
145021 
145022 --
145023 AcctLineType_209 (
145024  p_application_id  => p_application_id
145025  ,p_event_id     => l_event_id
145026  ,p_calculate_acctd_flag => l_calculate_acctd_flag
145027  ,p_calculate_g_l_flag => l_calculate_g_l_flag
145028  ,p_actual_flag => l_actual_flag
145029  ,p_balance_type_code => l_balance_type_code
145030  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
145031  
145032  , p_source_1 => l_array_source_1(Idx)
145033  , p_source_2 => l_array_source_2(Idx)
145034  , p_source_3 => l_array_source_3(Idx)
145035  , p_source_5 => l_array_source_5(Idx)
145036  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
145037  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
145038  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
145039  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
145040  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
145041  , p_source_11 => l_array_source_11(Idx)
145042  );
145043 If(l_balance_type_code = 'A') THEN
145044   l_actual_gain_loss_ref := l_gain_or_loss_ref;
145045 END IF;
145046 
145047 --
145048 
145049       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
145050       -- or secondary ledger that has different currency with primary
145051       -- or alc that is calculated by sla
145052       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
145056 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
145053             (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'))
145054 
145055 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
145057           AND (l_actual_flag = 'A')) THEN
145058         XLA_AE_LINES_PKG.CreateGainOrLossLines(
145059           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
145060          ,p_application_id   => p_application_id
145061          ,p_amb_context_code => 'DEFAULT'
145062          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
145063          ,p_event_class_code => C_EVENT_CLASS_CODE
145064          ,p_event_type_code  => C_EVENT_TYPE_CODE
145065          
145066          ,p_gain_ccid        => -1
145067          ,p_loss_ccid        => -1
145068 
145069          ,p_actual_flag      => l_actual_flag
145070          ,p_enc_flag         => null
145071          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
145072          ,p_enc_g_l_ref      => null
145073          );
145074       END IF;
145075    END IF;
145076 END IF;
145077 
145078    ELSE
145079       --
145080       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
145081       --
145082       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145083          trace
145084             (p_msg      => 'Trancaction revesal option is Y'
145085             ,p_level    => C_LEVEL_STATEMENT
145086             ,p_module   => l_log_module);
145087       END IF;
145088    END IF;
145089 
145090 END LOOP;
145091 l_result := XLA_AE_LINES_PKG.InsertLines ;
145092 end loop;
145093 close line_cur;
145094 
145095 
145096 --
145097 -- insert headers into xla_ae_headers_gt table
145098 --
145099 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
145100 
145101 -- insert into errors table here.
145102 
145103 END LOOP;
145104 
145105 --
145106 -- 4865292
145107 --
145108 -- Compare g_hdr_extract_count with event count in
145109 -- CreateHeadersAndLines.
145110 --
145111 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
145112 
145113 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145114    trace (p_msg     => '# rows extracted from header extract objects '
145115                     || ' (running total): '
145116                     || g_hdr_extract_count
145117          ,p_level   => C_LEVEL_STATEMENT
145118          ,p_module  => l_log_module);
145119 END IF;
145120 
145121 CLOSE header_cur;
145122 --
145123 
145124 --
145125 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145126    trace
145127       (p_msg      => 'END of EventType_268'
145128       ,p_level    => C_LEVEL_PROCEDURE
145129       ,p_module   => l_log_module);
145130 END IF;
145131 --
145132 RETURN l_result;
145133 EXCEPTION
145134 WHEN xla_exceptions_pkg.application_exception THEN
145135    
145136 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
145137 
145138    
145139 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
145140 
145141    RAISE;
145142 
145143 WHEN NO_DATA_FOUND THEN
145144 
145145 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
145146 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
145147 
145148 FOR header_record IN header_cur
145149 LOOP
145150     l_array_header_events(header_record.event_id) := header_record.event_id;
145151 END LOOP;
145152 
145153 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
145154 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
145155 
145156 fnd_file.put_line(fnd_file.LOG, '                    ');
145157 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
145158 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
145159 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
145160 
145161 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
145162 LOOP
145163 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
145164 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
145165         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
145166 	END IF;
145167 END LOOP;
145168 
145169 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
145170 fnd_file.put_line(fnd_file.LOG, '                    ');
145171 
145172 
145173 xla_exceptions_pkg.raise_message
145174       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_268');
145175 
145176 
145177 WHEN OTHERS THEN
145178    xla_exceptions_pkg.raise_message
145179       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_268');
145180 END EventType_268;
145181 --
145182 
145183 ---------------------------------------
145184 --
145185 -- PRIVATE PROCEDURE
145186 --         insert_sources_269
145187 --
145188 ----------------------------------------
145189 --
145190 PROCEDURE insert_sources_269(
145191                                 p_target_ledger_id       IN NUMBER
145192                               , p_language               IN VARCHAR2
145193                               , p_sla_ledger_id          IN NUMBER
145194                               , p_pad_start_date         IN DATE
145198 
145195                               , p_pad_end_date           IN DATE
145196                          )
145197 IS
145199 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_SHIP';
145200 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP';
145201 p_apps_owner                   VARCHAR2(30);
145202 l_log_module                   VARCHAR2(240);
145203 BEGIN
145204 IF g_log_enabled THEN
145205       l_log_module := C_DEFAULT_MODULE||'.insert_sources_269';
145206 END IF;
145207 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145208 
145209       trace
145210          (p_msg      => 'BEGIN of insert_sources_269'
145211          ,p_level    => C_LEVEL_PROCEDURE
145212          ,p_module   => l_log_module);
145213 
145214 END IF;
145215 
145216 -- select APPS owner
145217 SELECT oracle_username
145218   INTO p_apps_owner
145219   FROM fnd_oracle_userid
145220  WHERE read_only_flag = 'U'
145221 ;
145222 
145223 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145224       trace
145225          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
145226                         ' - p_language = '||p_language||
145227                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
145228                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
145229                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
145230                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
145231          ,p_level    => C_LEVEL_STATEMENT
145232          ,p_module   => l_log_module);
145233 END IF;
145234 
145235 
145236 --
145237 INSERT INTO xla_diag_sources --hdr1
145238 (
145239         event_id
145240       , ledger_id
145241       , sla_ledger_id
145242       , description_language
145243       , object_name
145244       , object_type_code
145245       , line_number
145246       , source_application_id
145247       , source_type_code
145248       , source_code
145249       , source_value
145250       , source_meaning
145251       , created_by
145252       , creation_date
145253       , last_update_date
145254       , last_updated_by
145255       , last_update_login
145256       , program_update_date
145257       , program_application_id
145258       , program_id
145259       , request_id
145260 )
145261 SELECT
145262         event_id
145263       , p_target_ledger_id
145264       , p_sla_ledger_id
145265       , p_language
145266       , object_name
145267       , object_type_code
145268       , line_number
145269       , source_application_id
145270       , source_type_code
145271       , source_code
145272       , SUBSTR(source_value ,1,1996)
145273       , SUBSTR(source_meaning,1,200)
145274       , xla_environment_pkg.g_Usr_Id
145275       , TRUNC(SYSDATE)
145276       , TRUNC(SYSDATE)
145277       , xla_environment_pkg.g_Usr_Id
145278       , xla_environment_pkg.g_Login_Id
145279       , TRUNC(SYSDATE)
145280       , xla_environment_pkg.g_Prog_Appl_Id
145281       , xla_environment_pkg.g_Prog_Id
145282       , xla_environment_pkg.g_Req_Id
145283   FROM (
145284        SELECT xet.event_id                  event_id
145285             , 0                             line_number
145286             , CASE r
145287                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
145288                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
145289                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
145290                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
145291                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
145292                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
145293                 
145294                ELSE null
145295               END                           object_name
145296             , CASE r
145297                 WHEN 1 THEN 'HEADER' 
145298                 WHEN 2 THEN 'HEADER' 
145299                 WHEN 3 THEN 'HEADER' 
145300                 WHEN 4 THEN 'HEADER' 
145301                 WHEN 5 THEN 'HEADER' 
145302                 WHEN 6 THEN 'HEADER' 
145303                 
145304                 ELSE null
145305               END                           object_type_code
145306             , CASE r
145307                 WHEN 1 THEN '555' 
145308                 WHEN 2 THEN '555' 
145309                 WHEN 3 THEN '555' 
145310                 WHEN 4 THEN '555' 
145311                 WHEN 5 THEN '555' 
145312                 WHEN 6 THEN '555' 
145313                 
145314                 ELSE null
145315               END                           source_application_id
145316             , 'S'             source_type_code
145317             , CASE r
145318                 WHEN 1 THEN 'ENTITY_CODE' 
145319                 WHEN 2 THEN 'CURRENCY_CODE' 
145320                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
145321                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
145322                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
145323                 WHEN 6 THEN 'TRANSACTION_DATE' 
145324                 
145325                 ELSE null
145326               END                           source_code
145327             , CASE r
145328                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
145329                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
145330                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
145331                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
145332                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
145333                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
145334                 
145335                 ELSE null
145339                           1010186
145336               END                           source_value
145337             , CASE r
145338                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
145340                          ,TO_CHAR(h1.CURRENCY_CODE)
145341                          ,'CURRENCY_CODE'
145342                          ,'S'
145343                          ,555)
145344                 
145345                 ELSE null
145346               END               source_meaning
145347         FROM xla_events_gt     xet  
145348       , GMF_XLA_EXTRACT_HEADERS  h1
145349             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
145350        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
145351          AND xet.event_type_code = C_EVENT_TYPE_CODE
145352             AND h1.event_id = xet.event_id
145353 
145354 )
145355 ;
145356 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145357 
145358       trace
145359          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
145360          ,p_level    => C_LEVEL_STATEMENT
145361          ,p_module   => l_log_module);
145362 
145363 END IF;
145364 --
145365 
145366 
145367 
145368 --
145369 INSERT INTO xla_diag_sources --line1
145370 (
145371         event_id
145372       , ledger_id
145373       , sla_ledger_id
145374       , description_language
145375       , object_name
145376       , object_type_code
145377       , line_number
145378       , source_application_id
145379       , source_type_code
145380       , source_code
145381       , source_value
145382       , source_meaning
145383       , created_by
145384       , creation_date
145385       , last_update_date
145386       , last_updated_by
145387       , last_update_login
145388       , program_update_date
145389       , program_application_id
145390       , program_id
145391       , request_id
145392 )
145393 SELECT  event_id
145394       , p_target_ledger_id
145395       , p_sla_ledger_id
145396       , p_language
145397       , object_name
145398       , object_type_code
145399       , line_number
145400       , source_application_id
145401       , source_type_code
145402       , source_code
145403       , SUBSTR(source_value,1,1996)
145404       , SUBSTR(source_meaning,1,200)
145405       , xla_environment_pkg.g_Usr_Id
145406       , TRUNC(SYSDATE)
145407       , TRUNC(SYSDATE)
145408       , xla_environment_pkg.g_Usr_Id
145409       , xla_environment_pkg.g_Login_Id
145410       , TRUNC(SYSDATE)
145411       , xla_environment_pkg.g_Prog_Appl_Id
145412       , xla_environment_pkg.g_Prog_Id
145413       , xla_environment_pkg.g_Req_Id
145414   FROM (
145415        SELECT xet.event_id                  event_id
145416             , l2.line_number                 line_number
145417             , CASE r
145418                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
145419                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
145420                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
145421                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
145422                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
145423                 
145424                ELSE null
145425               END                           object_name
145426             , CASE r
145427                 WHEN 1 THEN 'LINE' 
145428                 WHEN 2 THEN 'LINE' 
145429                 WHEN 3 THEN 'LINE' 
145430                 WHEN 4 THEN 'LINE' 
145431                 WHEN 5 THEN 'LINE' 
145432                 
145433                 ELSE null
145434               END                           object_type_code
145435             , CASE r
145436                 WHEN 1 THEN '555' 
145437                 WHEN 2 THEN '555' 
145438                 WHEN 3 THEN '555' 
145439                 WHEN 4 THEN '555' 
145440                 WHEN 5 THEN '555' 
145441                 
145442                 ELSE null
145443               END                           source_application_id
145444             , 'S'             source_type_code
145445             , CASE r
145446                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
145447                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
145448                 WHEN 3 THEN 'ENTERED_AMOUNT' 
145449                 WHEN 4 THEN 'LINE_ID' 
145450                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
145451                 
145452                 ELSE null
145453               END                           source_code
145454             , CASE r
145455                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
145456                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
145457                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
145458                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
145459                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
145460                 
145461                 ELSE null
145462               END                           source_value
145463             , null              source_meaning
145464          FROM  xla_events_gt     xet  
145465         , GMF_XLA_EXTRACT_LINES  l2
145466             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
145467         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
145468           AND xet.event_type_code = C_EVENT_TYPE_CODE
145469             AND l2.event_id          = xet.event_id
145470 
145471 )
145472 ;
145473 --
145474 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145475 
145476       trace
145480 
145477          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
145478          ,p_level    => C_LEVEL_STATEMENT
145479          ,p_module   => l_log_module);
145481 END IF;
145482 
145483 
145484 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145485       trace
145486          (p_msg      => 'END of insert_sources_269'
145487          ,p_level    => C_LEVEL_PROCEDURE
145488          ,p_module   => l_log_module);
145489 END IF;
145490 EXCEPTION
145491   WHEN xla_exceptions_pkg.application_exception THEN
145492       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
145493             trace
145494                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
145495                ,p_level    => C_LEVEL_EXCEPTION
145496                ,p_module   => l_log_module);
145497       END IF;
145498       RAISE;
145499   WHEN OTHERS THEN
145500       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
145501             trace
145502                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
145503                ,p_level    => C_LEVEL_EXCEPTION
145504                ,p_module   => l_log_module);
145505        END IF;
145506        xla_exceptions_pkg.raise_message
145507            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_269');
145508 END insert_sources_269;
145509 --
145510 
145511 ---------------------------------------
145512 --
145513 -- PRIVATE FUNCTION
145514 --         EventType_269
145515 --
145516 ----------------------------------------
145517 --
145518 FUNCTION EventType_269
145519        (p_application_id         IN NUMBER
145520        ,p_base_ledger_id         IN NUMBER
145521        ,p_target_ledger_id       IN NUMBER
145522        ,p_language               IN VARCHAR2
145523        ,p_currency_code          IN VARCHAR2
145524        ,p_sla_ledger_id          IN NUMBER
145525        ,p_pad_start_date         IN DATE
145526        ,p_pad_end_date           IN DATE
145527        ,p_primary_ledger_id      IN NUMBER)
145528 RETURN BOOLEAN IS
145529 --
145530 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_SHIP';
145531 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP';
145532 
145533 l_calculate_acctd_flag   VARCHAR2(1) :='N';
145534 l_calculate_g_l_flag     VARCHAR2(1) :='N';
145535 --
145536 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145537 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145538 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
145539 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145540 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145541 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
145542 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
145543 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145544 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145545 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145546 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145547 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145548 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145549 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145550 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145551 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145552 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145553 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145554 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145555 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145556 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145557 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145558 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
145559 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
145560 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
145561 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
145562 
145563 l_event_id                             NUMBER;
145564 l_previous_event_id                    NUMBER;
145565 l_first_event_id                       NUMBER;
145566 l_last_event_id                        NUMBER;
145567 
145568 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
145569 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
145570 --
145571 --
145572 l_result                    BOOLEAN := TRUE;
145573 l_rows                      NUMBER  := 1000;
145574 l_event_type_name           VARCHAR2(80) := 'Intransit Interorg Shipment for FOB Receipt';
145575 l_event_class_name          VARCHAR2(80) := 'Intransit Interorg Shipment for FOB Receipt';
145576 l_description               VARCHAR2(4000);
145577 l_transaction_reversal      NUMBER;
145578 l_ae_header_id              NUMBER;
145579 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
145580 l_log_module                VARCHAR2(240);
145581 --
145582 l_acct_reversal_source      VARCHAR2(30);
145583 l_trx_reversal_source       VARCHAR2(30);
145584 
145585 l_continue_with_lines       BOOLEAN := TRUE;
145586 --
145590 
145587 l_acc_rev_gl_date_source    DATE;                      -- 4262811
145588 --
145589 type t_array_event_id is table of number index by binary_integer;
145591 l_rec_array_event                    t_rec_array_event;
145592 l_null_rec_array_event               t_rec_array_event;
145593 l_array_ae_header_id                 xla_number_array_type;
145594 l_actual_flag                        VARCHAR2(1) := NULL;
145595 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
145596 l_balance_type_code                  VARCHAR2(1) :=NULL;
145597 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
145598 
145599 --
145600 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
145601 --
145602 
145603 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
145604 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
145605 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
145606 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
145607 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
145608 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
145609 
145610 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
145611 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
145612 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
145613 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
145614 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
145615 
145616 l_array_source_6              t_array_source_6;
145617 l_array_source_7              t_array_source_7;
145618 l_array_source_8              t_array_source_8;
145619 l_array_source_9              t_array_source_9;
145620 l_array_source_10              t_array_source_10;
145621 l_array_source_12              t_array_source_12;
145622 
145623 l_array_source_1      t_array_source_1;
145624 l_array_source_2      t_array_source_2;
145625 l_array_source_3      t_array_source_3;
145626 l_array_source_5      t_array_source_5;
145627 l_array_source_11      t_array_source_11;
145628 
145629 --
145630 CURSOR header_cur
145631 IS
145632 SELECT /*+ leading(xet) cardinality(xet,1) */
145633 -- Event Type Code: FOB_RCPT_SENDER_SHIP
145634 -- Event Class Code: FOB_RCPT_SENDER_SHIP
145635     xet.entity_id
145636   , xet.legal_entity_id
145637   , xet.entity_code
145638   , xet.transaction_number
145639   , xet.event_id
145640   , xet.event_class_code
145641   , xet.event_type_code
145642   , xet.event_number
145643   , xet.event_date
145644   , xet.transaction_date
145645   , xet.reference_num_1
145646   , xet.reference_num_2
145647   , xet.reference_num_3
145648   , xet.reference_num_4
145649   , xet.reference_char_1
145650   , xet.reference_char_2
145651   , xet.reference_char_3
145652   , xet.reference_char_4
145653   , xet.reference_date_1
145654   , xet.reference_date_2
145655   , xet.reference_date_3
145656   , xet.reference_date_4
145657   , xet.event_created_by
145658   , xet.budgetary_control_flag 
145659   , h1.ENTITY_CODE    source_6
145660   , h1.CURRENCY_CODE    source_7
145661   , h1.CURRENCY_CONVERSION_DATE    source_8
145662   , h1.CURRENCY_CONVERSION_RATE    source_9
145663   , h1.CURRENCY_CONVERSION_TYPE    source_10
145664   , h1.TRANSACTION_DATE    source_12
145665   FROM xla_events_gt     xet 
145666   , GMF_XLA_EXTRACT_HEADERS  h1
145667  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
145668    and xet.event_type_code = C_EVENT_TYPE_CODE
145669    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
145670 
145671  ORDER BY event_id
145672 ;
145673 
145674 
145675 --
145676 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
145677 IS
145678 SELECT /*+ leading(xet) cardinality(xet,1) */
145679 -- Event Type Code: FOB_RCPT_SENDER_SHIP
145680 -- Event Class Code: FOB_RCPT_SENDER_SHIP
145681     xet.entity_id
145682    ,xet.legal_entity_id
145683    ,xet.entity_code
145684    ,xet.transaction_number
145685    ,xet.event_id
145686    ,xet.event_class_code
145687    ,xet.event_type_code
145688    ,xet.event_number
145689    ,xet.event_date
145690    ,xet.transaction_date
145691    ,xet.reference_num_1
145692    ,xet.reference_num_2
145693    ,xet.reference_num_3
145694    ,xet.reference_num_4
145695    ,xet.reference_char_1
145696    ,xet.reference_char_2
145697    ,xet.reference_char_3
145698    ,xet.reference_char_4
145699    ,xet.reference_date_1
145700    ,xet.reference_date_2
145701    ,xet.reference_date_3
145702    ,xet.reference_date_4
145703    ,xet.event_created_by
145704    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
145705   , l2.TRANSACTION_ACCOUNT_ID    source_1
145706   , l2.JOURNAL_LINE_TYPE    source_2
145707   , l2.ENTERED_AMOUNT    source_3
145708   , l2.LINE_ID    source_5
145709   , l2.ACCOUNTED_AMOUNT    source_11
145710   FROM xla_events_gt     xet 
145711   , GMF_XLA_EXTRACT_LINES  l2
145712  WHERE xet.event_id between x_first_event_id and x_last_event_id
145713    and xet.event_date between p_pad_start_date and p_pad_end_date
145717 
145714    and xet.event_type_code = C_EVENT_TYPE_CODE
145715    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
145716 ;
145718 --
145719 BEGIN
145720 IF g_log_enabled THEN
145721    l_log_module := C_DEFAULT_MODULE||'.EventType_269';
145722 END IF;
145723 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145724    trace
145725       (p_msg      => 'BEGIN of EventType_269'
145726       ,p_level    => C_LEVEL_PROCEDURE
145727       ,p_module   => l_log_module);
145728 END IF;
145729 
145730 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145731    trace
145732       (p_msg      => 'p_application_id = '||p_application_id||
145733                      ' - p_base_ledger_id = '||p_base_ledger_id||
145734                      ' - p_target_ledger_id  = '||p_target_ledger_id||
145735                      ' - p_language = '||p_language||
145736                      ' - p_currency_code = '||p_currency_code||
145737                      ' - p_sla_ledger_id = '||p_sla_ledger_id
145738       ,p_level    => C_LEVEL_STATEMENT
145739       ,p_module   => l_log_module);
145740 END IF;
145741 --
145742 -- initialze arrays
145743 --
145744 g_array_event.DELETE;
145745 l_rec_array_event := l_null_rec_array_event;
145746 --
145747 --------------------------------------
145748 -- 4262811 Initialze MPA Line Number
145749 --------------------------------------
145750 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
145751 
145752 --
145753 
145754 --
145755 OPEN header_cur;
145756 --
145757 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145758    trace
145759    (p_msg      => 'SQL - FETCH header_cur'
145760    ,p_level    => C_LEVEL_STATEMENT
145761    ,p_module   => l_log_module);
145762 END IF;
145763 --
145764 LOOP
145765 FETCH header_cur BULK COLLECT INTO
145766         l_array_entity_id
145767       , l_array_legal_entity_id
145768       , l_array_entity_code
145769       , l_array_transaction_num
145770       , l_array_event_id
145771       , l_array_class_code
145772       , l_array_event_type
145773       , l_array_event_number
145774       , l_array_event_date
145775       , l_array_transaction_date
145776       , l_array_reference_num_1
145777       , l_array_reference_num_2
145778       , l_array_reference_num_3
145779       , l_array_reference_num_4
145780       , l_array_reference_char_1
145781       , l_array_reference_char_2
145782       , l_array_reference_char_3
145783       , l_array_reference_char_4
145784       , l_array_reference_date_1
145785       , l_array_reference_date_2
145786       , l_array_reference_date_3
145787       , l_array_reference_date_4
145788       , l_array_event_created_by
145789       , l_array_budgetary_control_flag 
145790       , l_array_source_6
145791       , l_array_source_7
145792       , l_array_source_8
145793       , l_array_source_9
145794       , l_array_source_10
145795       , l_array_source_12
145796       LIMIT l_rows;
145797 --
145798 IF (C_LEVEL_EVENT >= g_log_level) THEN
145799    trace
145800    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
145801    ,p_level    => C_LEVEL_EVENT
145802    ,p_module   => l_log_module);
145803 END IF;
145804 --
145805 EXIT WHEN l_array_entity_id.COUNT = 0;
145806 
145807 -- initialize arrays
145808 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
145809 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
145810 
145811 --
145812 -- Bug 4458708
145813 --
145814 XLA_AE_LINES_PKG.g_LineNumber := 0;
145815 
145816 
145817 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
145818 g_last_hdr_idx := l_array_event_id.LAST;
145819 --
145820 -- loop for the headers. Each iteration is for each header extract row
145821 -- fetched in header cursor
145822 --
145823 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
145824 
145825 --
145826 -- set event info as cache for other routines to refer event attributes
145827 --
145828 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
145829    (p_application_id           => p_application_id
145830    ,p_primary_ledger_id        => p_primary_ledger_id
145831    ,p_base_ledger_id           => p_base_ledger_id
145832    ,p_target_ledger_id         => p_target_ledger_id
145833    ,p_entity_id                => l_array_entity_id(hdr_idx)
145834    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
145835    ,p_entity_code              => l_array_entity_code(hdr_idx)
145836    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
145837    ,p_event_id                 => l_array_event_id(hdr_idx)
145838    ,p_event_class_code         => l_array_class_code(hdr_idx)
145839    ,p_event_type_code          => l_array_event_type(hdr_idx)
145840    ,p_event_number             => l_array_event_number(hdr_idx)
145841    ,p_event_date               => l_array_event_date(hdr_idx)
145842    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
145843    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
145844    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
145845    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
145846    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
145847    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
145848    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
145849    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
145850    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
145851    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
145855    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
145852    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
145853    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
145854    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
145856    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
145857 
145858 --
145859 -- set the status of entry to C_VALID (0)
145860 --
145861 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
145862 
145863 --
145864 -- initialize a row for ae header
145865 --
145866 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
145867 
145868 l_event_id := l_array_event_id(hdr_idx);
145869 
145870 --
145871 -- storing the hdr_idx for event. May be used by line cursor.
145872 --
145873 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
145874 
145875 --
145876 -- store sources from header extract. This can be improved to
145877 -- store only those sources from header extract that may be used in lines
145878 --
145879 
145880 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
145881 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
145882 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
145883 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
145884 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
145885 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
145886 
145887 --
145888 -- initilaize the status of ae headers for diffrent balance types
145889 -- the status is initialised to C_NOT_CREATED (2)
145890 --
145891 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
145892 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
145893 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
145894 
145895 --
145896 -- call api to validate and store accounting attributes for header
145897 --
145898 
145899 ------------------------------------------------------------
145900 -- Accrual Reversal : to get date for Standard Source (NONE)
145901 ------------------------------------------------------------
145902 l_acc_rev_gl_date_source := NULL;
145903 
145904      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
145905       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
145906 
145907 
145908 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
145909 
145910 XLA_AE_HEADER_PKG.SetJeCategoryName;
145911 
145912 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
145913 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
145914 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
145915 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
145916 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
145917 
145918 
145919 -- No header level analytical criteria
145920 
145921 --
145922 --accounting attribute enhancement, bug 3612931
145923 --
145924 l_trx_reversal_source := SUBSTR(NULL, 1,30);
145925 
145926 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
145927    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
145928 
145929    xla_accounting_err_pkg.build_message
145930       (p_appli_s_name            => 'XLA'
145931       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
145932       ,p_token_1                 => 'ACCT_ATTR_NAME'
145933       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
145934       ,p_token_2                 => 'PRODUCT_NAME'
145935       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
145936       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
145937       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
145938       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
145939 
145940 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
145941    --
145942    -- following sets the accounting attributes needed to reverse
145943    -- accounting for a distributeion
145944    --
145945    xla_ae_lines_pkg.SetTrxReversalAttrs
145946       (p_event_id              => l_event_id
145947       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
145948       ,p_trx_reversal_source   => l_trx_reversal_source);
145949 
145950 END IF;
145951 
145952 
145953 ----------------------------------------------------------------
145954 -- 4262811 -  update the header statuses to invalid in need be
145955 ----------------------------------------------------------------
145956 --
145957 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
145958 
145959 
145960   -----------------------------------------------
145961   -- No accrual reversal for the event class/type
145962   -----------------------------------------------
145963 ----------------------------------------------------------------
145964 
145965 --
145966 -- this ends the header loop iteration for one bulk fetch
145967 --
145968 END LOOP;
145969 
145973 --
145970 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
145971 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
145972 
145974 -- insert dummy rows into lines gt table that were created due to
145975 -- transaction reversals
145976 --
145977 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
145978    l_result := XLA_AE_LINES_PKG.InsertLines;
145979 END IF;
145980 
145981 --
145982 -- reset the temp_line_num for each set of events fetched from header
145983 -- cursor rather than doing it for each new event in line cursor
145984 -- Bug 3939231
145985 --
145986 xla_ae_lines_pkg.g_temp_line_num := 0;
145987 
145988 
145989 
145990 --
145991 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
145992 --
145993 --
145994 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145995 
145996       trace
145997          (p_msg      => 'SQL - FETCH line_cur'
145998          ,p_level    => C_LEVEL_STATEMENT
145999          ,p_module   => l_log_module);
146000 
146001 END IF;
146002 --
146003 --
146004 LOOP
146005   --
146006   FETCH line_cur BULK COLLECT INTO
146007         l_array_entity_id
146008       , l_array_legal_entity_id
146009       , l_array_entity_code
146010       , l_array_transaction_num
146011       , l_array_event_id
146012       , l_array_class_code
146013       , l_array_event_type
146014       , l_array_event_number
146015       , l_array_event_date
146016       , l_array_transaction_date
146017       , l_array_reference_num_1
146018       , l_array_reference_num_2
146019       , l_array_reference_num_3
146020       , l_array_reference_num_4
146021       , l_array_reference_char_1
146022       , l_array_reference_char_2
146023       , l_array_reference_char_3
146024       , l_array_reference_char_4
146025       , l_array_reference_date_1
146026       , l_array_reference_date_2
146027       , l_array_reference_date_3
146028       , l_array_reference_date_4
146029       , l_array_event_created_by
146030       , l_array_budgetary_control_flag
146031       , l_array_extract_line_num 
146032       , l_array_source_1
146033       , l_array_source_2
146034       , l_array_source_3
146035       , l_array_source_5
146036       , l_array_source_11
146037       LIMIT l_rows;
146038 
146039   --
146040   IF (C_LEVEL_EVENT >= g_log_level) THEN
146041             trace
146042                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
146043                ,p_level    => C_LEVEL_EVENT
146044                ,p_module   => l_log_module);
146045   END IF;
146046   --
146047   EXIT WHEN l_array_entity_id.count = 0;
146048 
146049   XLA_AE_LINES_PKG.g_rec_lines := null;
146050 
146051 --
146052 -- Bug 4458708
146053 --
146054 XLA_AE_LINES_PKG.g_LineNumber := 0;
146055 --
146056 --
146057 
146058 FOR Idx IN 1..l_array_event_id.count LOOP
146059    --
146060    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
146061    --
146062    l_event_id := l_array_event_id(idx);  -- 5648433
146063 
146064    --
146065    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
146066    --
146067 
146068    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
146069              (g_array_event(l_event_id).array_value_num('header_index'))
146070          ,'N'
146071          ) <> 'Y'
146072    THEN
146073       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146074          trace
146075             (p_msg      => 'Trancaction revesal option is not Y '
146076             ,p_level    => C_LEVEL_STATEMENT
146077             ,p_module   => l_log_module);
146078       END IF;
146079 
146080 --
146081 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
146082 --
146083 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
146084 --
146085 -- set event info as cache for other routines to refer event attributes
146086 --
146087 
146088 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
146089    l_previous_event_id := l_event_id;
146090 
146091    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
146092       (p_application_id           => p_application_id
146093       ,p_primary_ledger_id        => p_primary_ledger_id
146094       ,p_base_ledger_id           => p_base_ledger_id
146095       ,p_target_ledger_id         => p_target_ledger_id
146096       ,p_entity_id                => l_array_entity_id(Idx)
146097       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
146098       ,p_entity_code              => l_array_entity_code(Idx)
146099       ,p_transaction_num          => l_array_transaction_num(Idx)
146100       ,p_event_id                 => l_array_event_id(Idx)
146101       ,p_event_class_code         => l_array_class_code(Idx)
146102       ,p_event_type_code          => l_array_event_type(Idx)
146103       ,p_event_number             => l_array_event_number(Idx)
146104       ,p_event_date               => l_array_event_date(Idx)
146105       ,p_transaction_date         => l_array_transaction_date(Idx)
146106       ,p_reference_num_1          => l_array_reference_num_1(Idx)
146107       ,p_reference_num_2          => l_array_reference_num_2(Idx)
146108       ,p_reference_num_3          => l_array_reference_num_3(Idx)
146109       ,p_reference_num_4          => l_array_reference_num_4(Idx)
146110       ,p_reference_char_1         => l_array_reference_char_1(Idx)
146114       ,p_reference_date_1         => l_array_reference_date_1(Idx)
146111       ,p_reference_char_2         => l_array_reference_char_2(Idx)
146112       ,p_reference_char_3         => l_array_reference_char_3(Idx)
146113       ,p_reference_char_4         => l_array_reference_char_4(Idx)
146115       ,p_reference_date_2         => l_array_reference_date_2(Idx)
146116       ,p_reference_date_3         => l_array_reference_date_3(Idx)
146117       ,p_reference_date_4         => l_array_reference_date_4(Idx)
146118       ,p_event_created_by         => l_array_event_created_by(Idx)
146119       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
146120        --
146121 END IF;
146122 
146123 
146124 
146125 --
146126 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
146127 
146128 l_acct_reversal_source := SUBSTR(NULL, 1,30);
146129 
146130 IF l_continue_with_lines THEN
146131    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
146132       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
146133 
146134       xla_accounting_err_pkg.build_message
146135          (p_appli_s_name            => 'XLA'
146136          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
146137          ,p_token_1                 => 'LINE_NUMBER'
146138          ,p_value_1                 => l_array_extract_line_num(Idx)
146139          ,p_token_2                 => 'PRODUCT_NAME'
146140          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
146141          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
146142          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
146143          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
146144 
146145    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
146146       --
146147       -- following sets the accounting attributes needed to reverse
146148       -- accounting for a distributeion
146149       --
146150 
146151       --
146152       -- 5217187
146153       --
146154       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
146155       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
146156                                        g_array_event(l_event_id).array_value_num('header_index'));
146157       --
146158       --
146159 
146160       -- No reversal code generated
146161 
146162       xla_ae_lines_pkg.SetAcctReversalAttrs
146163          (p_event_id             => l_event_id
146164          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
146165          ,p_calculate_acctd_flag => l_calculate_acctd_flag
146166          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
146167    END IF;
146168 
146169    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
146170        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
146171 
146172 --
146173 AcctLineType_99 (
146174  p_application_id  => p_application_id
146175  ,p_event_id     => l_event_id
146176  ,p_calculate_acctd_flag => l_calculate_acctd_flag
146177  ,p_calculate_g_l_flag => l_calculate_g_l_flag
146178  ,p_actual_flag => l_actual_flag
146179  ,p_balance_type_code => l_balance_type_code
146180  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146181  
146182  , p_source_1 => l_array_source_1(Idx)
146183  , p_source_2 => l_array_source_2(Idx)
146184  , p_source_3 => l_array_source_3(Idx)
146185  , p_source_5 => l_array_source_5(Idx)
146186  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
146187  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
146188  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
146189  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
146190  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
146191  , p_source_11 => l_array_source_11(Idx)
146192  );
146193 If(l_balance_type_code = 'A') THEN
146194   l_actual_gain_loss_ref := l_gain_or_loss_ref;
146195 END IF;
146196 
146197 --
146198 
146199 
146200 --
146201 AcctLineType_150 (
146202  p_application_id  => p_application_id
146203  ,p_event_id     => l_event_id
146204  ,p_calculate_acctd_flag => l_calculate_acctd_flag
146205  ,p_calculate_g_l_flag => l_calculate_g_l_flag
146206  ,p_actual_flag => l_actual_flag
146207  ,p_balance_type_code => l_balance_type_code
146208  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146209  
146210  , p_source_1 => l_array_source_1(Idx)
146211  , p_source_2 => l_array_source_2(Idx)
146212  , p_source_3 => l_array_source_3(Idx)
146213  , p_source_5 => l_array_source_5(Idx)
146214  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
146215  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
146216  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
146217  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
146218  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
146219  , p_source_11 => l_array_source_11(Idx)
146220  );
146221 If(l_balance_type_code = 'A') THEN
146222   l_actual_gain_loss_ref := l_gain_or_loss_ref;
146223 END IF;
146224 
146225 --
146226 
146227 
146228 --
146229 AcctLineType_210 (
146230  p_application_id  => p_application_id
146231  ,p_event_id     => l_event_id
146232  ,p_calculate_acctd_flag => l_calculate_acctd_flag
146233  ,p_calculate_g_l_flag => l_calculate_g_l_flag
146237  
146234  ,p_actual_flag => l_actual_flag
146235  ,p_balance_type_code => l_balance_type_code
146236  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146238  , p_source_1 => l_array_source_1(Idx)
146239  , p_source_2 => l_array_source_2(Idx)
146240  , p_source_3 => l_array_source_3(Idx)
146241  , p_source_5 => l_array_source_5(Idx)
146242  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
146243  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
146244  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
146245  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
146246  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
146247  , p_source_11 => l_array_source_11(Idx)
146248  );
146249 If(l_balance_type_code = 'A') THEN
146250   l_actual_gain_loss_ref := l_gain_or_loss_ref;
146251 END IF;
146252 
146253 --
146254 
146255       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
146256       -- or secondary ledger that has different currency with primary
146257       -- or alc that is calculated by sla
146258       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
146259             (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'))
146260 
146261 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
146262 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
146263           AND (l_actual_flag = 'A')) THEN
146264         XLA_AE_LINES_PKG.CreateGainOrLossLines(
146265           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
146266          ,p_application_id   => p_application_id
146267          ,p_amb_context_code => 'DEFAULT'
146268          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
146269          ,p_event_class_code => C_EVENT_CLASS_CODE
146270          ,p_event_type_code  => C_EVENT_TYPE_CODE
146271          
146272          ,p_gain_ccid        => -1
146273          ,p_loss_ccid        => -1
146274 
146275          ,p_actual_flag      => l_actual_flag
146276          ,p_enc_flag         => null
146277          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
146278          ,p_enc_g_l_ref      => null
146279          );
146280       END IF;
146281    END IF;
146282 END IF;
146283 
146284    ELSE
146285       --
146286       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
146287       --
146288       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146289          trace
146290             (p_msg      => 'Trancaction revesal option is Y'
146291             ,p_level    => C_LEVEL_STATEMENT
146292             ,p_module   => l_log_module);
146293       END IF;
146294    END IF;
146295 
146296 END LOOP;
146297 l_result := XLA_AE_LINES_PKG.InsertLines ;
146298 end loop;
146299 close line_cur;
146300 
146301 
146302 --
146303 -- insert headers into xla_ae_headers_gt table
146304 --
146305 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
146306 
146307 -- insert into errors table here.
146308 
146309 END LOOP;
146310 
146311 --
146312 -- 4865292
146313 --
146314 -- Compare g_hdr_extract_count with event count in
146315 -- CreateHeadersAndLines.
146316 --
146317 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
146318 
146319 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146320    trace (p_msg     => '# rows extracted from header extract objects '
146321                     || ' (running total): '
146322                     || g_hdr_extract_count
146323          ,p_level   => C_LEVEL_STATEMENT
146324          ,p_module  => l_log_module);
146325 END IF;
146326 
146327 CLOSE header_cur;
146328 --
146329 
146330 --
146331 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146332    trace
146333       (p_msg      => 'END of EventType_269'
146334       ,p_level    => C_LEVEL_PROCEDURE
146335       ,p_module   => l_log_module);
146336 END IF;
146337 --
146338 RETURN l_result;
146339 EXCEPTION
146340 WHEN xla_exceptions_pkg.application_exception THEN
146341    
146342 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
146343 
146344    
146345 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
146346 
146347    RAISE;
146348 
146349 WHEN NO_DATA_FOUND THEN
146350 
146351 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
146352 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
146353 
146354 FOR header_record IN header_cur
146355 LOOP
146356     l_array_header_events(header_record.event_id) := header_record.event_id;
146357 END LOOP;
146358 
146359 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
146360 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
146361 
146362 fnd_file.put_line(fnd_file.LOG, '                    ');
146363 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
146364 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
146365 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
146366 
146367 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
146368 LOOP
146369 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
146370 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
146374 
146371         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
146372 	END IF;
146373 END LOOP;
146375 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
146376 fnd_file.put_line(fnd_file.LOG, '                    ');
146377 
146378 
146379 xla_exceptions_pkg.raise_message
146380       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_269');
146381 
146382 
146383 WHEN OTHERS THEN
146384    xla_exceptions_pkg.raise_message
146385       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_269');
146386 END EventType_269;
146387 --
146388 
146389 ---------------------------------------
146390 --
146391 -- PRIVATE PROCEDURE
146392 --         insert_sources_270
146393 --
146394 ----------------------------------------
146395 --
146396 PROCEDURE insert_sources_270(
146397                                 p_target_ledger_id       IN NUMBER
146398                               , p_language               IN VARCHAR2
146399                               , p_sla_ledger_id          IN NUMBER
146400                               , p_pad_start_date         IN DATE
146401                               , p_pad_end_date           IN DATE
146402                          )
146403 IS
146404 
146405 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_RCPT';
146406 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT';
146407 p_apps_owner                   VARCHAR2(30);
146408 l_log_module                   VARCHAR2(240);
146409 BEGIN
146410 IF g_log_enabled THEN
146411       l_log_module := C_DEFAULT_MODULE||'.insert_sources_270';
146412 END IF;
146413 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146414 
146415       trace
146416          (p_msg      => 'BEGIN of insert_sources_270'
146417          ,p_level    => C_LEVEL_PROCEDURE
146418          ,p_module   => l_log_module);
146419 
146420 END IF;
146421 
146422 -- select APPS owner
146423 SELECT oracle_username
146424   INTO p_apps_owner
146425   FROM fnd_oracle_userid
146426  WHERE read_only_flag = 'U'
146427 ;
146428 
146429 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146430       trace
146431          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
146432                         ' - p_language = '||p_language||
146433                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
146434                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
146435                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
146436                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
146437          ,p_level    => C_LEVEL_STATEMENT
146438          ,p_module   => l_log_module);
146439 END IF;
146440 
146441 
146442 --
146443 INSERT INTO xla_diag_sources --hdr1
146444 (
146445         event_id
146446       , ledger_id
146447       , sla_ledger_id
146448       , description_language
146449       , object_name
146450       , object_type_code
146451       , line_number
146452       , source_application_id
146453       , source_type_code
146454       , source_code
146455       , source_value
146456       , source_meaning
146457       , created_by
146458       , creation_date
146459       , last_update_date
146460       , last_updated_by
146461       , last_update_login
146462       , program_update_date
146463       , program_application_id
146464       , program_id
146465       , request_id
146466 )
146467 SELECT
146468         event_id
146469       , p_target_ledger_id
146470       , p_sla_ledger_id
146471       , p_language
146472       , object_name
146473       , object_type_code
146474       , line_number
146475       , source_application_id
146476       , source_type_code
146477       , source_code
146478       , SUBSTR(source_value ,1,1996)
146479       , SUBSTR(source_meaning,1,200)
146480       , xla_environment_pkg.g_Usr_Id
146481       , TRUNC(SYSDATE)
146482       , TRUNC(SYSDATE)
146483       , xla_environment_pkg.g_Usr_Id
146484       , xla_environment_pkg.g_Login_Id
146485       , TRUNC(SYSDATE)
146486       , xla_environment_pkg.g_Prog_Appl_Id
146487       , xla_environment_pkg.g_Prog_Id
146488       , xla_environment_pkg.g_Req_Id
146489   FROM (
146490        SELECT xet.event_id                  event_id
146491             , 0                             line_number
146492             , CASE r
146493                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
146494                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
146495                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
146496                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
146497                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
146498                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
146499                 
146500                ELSE null
146501               END                           object_name
146502             , CASE r
146503                 WHEN 1 THEN 'HEADER' 
146504                 WHEN 2 THEN 'HEADER' 
146505                 WHEN 3 THEN 'HEADER' 
146506                 WHEN 4 THEN 'HEADER' 
146507                 WHEN 5 THEN 'HEADER' 
146508                 WHEN 6 THEN 'HEADER' 
146509                 
146510                 ELSE null
146511               END                           object_type_code
146512             , CASE r
146513                 WHEN 1 THEN '555' 
146514                 WHEN 2 THEN '555' 
146515                 WHEN 3 THEN '555' 
146516                 WHEN 4 THEN '555' 
146520                 ELSE null
146517                 WHEN 5 THEN '555' 
146518                 WHEN 6 THEN '555' 
146519                 
146521               END                           source_application_id
146522             , 'S'             source_type_code
146523             , CASE r
146524                 WHEN 1 THEN 'ENTITY_CODE' 
146525                 WHEN 2 THEN 'CURRENCY_CODE' 
146526                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
146527                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
146528                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
146529                 WHEN 6 THEN 'TRANSACTION_DATE' 
146530                 
146531                 ELSE null
146532               END                           source_code
146533             , CASE r
146534                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
146535                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
146536                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
146537                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
146538                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
146539                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
146540                 
146541                 ELSE null
146542               END                           source_value
146543             , CASE r
146544                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
146545                           1010186
146546                          ,TO_CHAR(h1.CURRENCY_CODE)
146547                          ,'CURRENCY_CODE'
146548                          ,'S'
146549                          ,555)
146550                 
146551                 ELSE null
146552               END               source_meaning
146553         FROM xla_events_gt     xet  
146554       , GMF_XLA_EXTRACT_HEADERS  h1
146555             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
146556        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
146557          AND xet.event_type_code = C_EVENT_TYPE_CODE
146558             AND h1.event_id = xet.event_id
146559 
146560 )
146561 ;
146562 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146563 
146564       trace
146565          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
146566          ,p_level    => C_LEVEL_STATEMENT
146567          ,p_module   => l_log_module);
146568 
146569 END IF;
146570 --
146571 
146572 
146573 
146574 --
146575 INSERT INTO xla_diag_sources --line1
146576 (
146577         event_id
146578       , ledger_id
146579       , sla_ledger_id
146580       , description_language
146581       , object_name
146582       , object_type_code
146583       , line_number
146584       , source_application_id
146585       , source_type_code
146586       , source_code
146587       , source_value
146588       , source_meaning
146589       , created_by
146590       , creation_date
146591       , last_update_date
146592       , last_updated_by
146593       , last_update_login
146594       , program_update_date
146595       , program_application_id
146596       , program_id
146597       , request_id
146598 )
146599 SELECT  event_id
146600       , p_target_ledger_id
146601       , p_sla_ledger_id
146602       , p_language
146603       , object_name
146604       , object_type_code
146605       , line_number
146606       , source_application_id
146607       , source_type_code
146608       , source_code
146609       , SUBSTR(source_value,1,1996)
146610       , SUBSTR(source_meaning,1,200)
146611       , xla_environment_pkg.g_Usr_Id
146612       , TRUNC(SYSDATE)
146613       , TRUNC(SYSDATE)
146614       , xla_environment_pkg.g_Usr_Id
146615       , xla_environment_pkg.g_Login_Id
146616       , TRUNC(SYSDATE)
146617       , xla_environment_pkg.g_Prog_Appl_Id
146618       , xla_environment_pkg.g_Prog_Id
146619       , xla_environment_pkg.g_Req_Id
146620   FROM (
146621        SELECT xet.event_id                  event_id
146622             , l2.line_number                 line_number
146623             , CASE r
146624                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
146625                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
146626                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
146627                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
146628                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
146629                 
146630                ELSE null
146631               END                           object_name
146632             , CASE r
146633                 WHEN 1 THEN 'LINE' 
146634                 WHEN 2 THEN 'LINE' 
146635                 WHEN 3 THEN 'LINE' 
146636                 WHEN 4 THEN 'LINE' 
146637                 WHEN 5 THEN 'LINE' 
146638                 
146639                 ELSE null
146640               END                           object_type_code
146641             , CASE r
146642                 WHEN 1 THEN '555' 
146643                 WHEN 2 THEN '555' 
146644                 WHEN 3 THEN '555' 
146645                 WHEN 4 THEN '555' 
146646                 WHEN 5 THEN '555' 
146647                 
146648                 ELSE null
146649               END                           source_application_id
146650             , 'S'             source_type_code
146651             , CASE r
146652                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
146653                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
146654                 WHEN 3 THEN 'ENTERED_AMOUNT' 
146658                 ELSE null
146655                 WHEN 4 THEN 'LINE_ID' 
146656                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
146657                 
146659               END                           source_code
146660             , CASE r
146661                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
146662                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
146663                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
146664                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
146665                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
146666                 
146667                 ELSE null
146668               END                           source_value
146669             , null              source_meaning
146670          FROM  xla_events_gt     xet  
146671         , GMF_XLA_EXTRACT_LINES  l2
146672             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
146673         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
146674           AND xet.event_type_code = C_EVENT_TYPE_CODE
146675             AND l2.event_id          = xet.event_id
146676 
146677 )
146678 ;
146679 --
146680 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146681 
146682       trace
146683          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
146684          ,p_level    => C_LEVEL_STATEMENT
146685          ,p_module   => l_log_module);
146686 
146687 END IF;
146688 
146689 
146690 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146691       trace
146692          (p_msg      => 'END of insert_sources_270'
146693          ,p_level    => C_LEVEL_PROCEDURE
146694          ,p_module   => l_log_module);
146695 END IF;
146696 EXCEPTION
146697   WHEN xla_exceptions_pkg.application_exception THEN
146698       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
146699             trace
146700                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
146701                ,p_level    => C_LEVEL_EXCEPTION
146702                ,p_module   => l_log_module);
146703       END IF;
146704       RAISE;
146705   WHEN OTHERS THEN
146706       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
146707             trace
146708                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
146709                ,p_level    => C_LEVEL_EXCEPTION
146710                ,p_module   => l_log_module);
146711        END IF;
146712        xla_exceptions_pkg.raise_message
146713            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_270');
146714 END insert_sources_270;
146715 --
146716 
146717 ---------------------------------------
146718 --
146719 -- PRIVATE FUNCTION
146720 --         EventType_270
146721 --
146722 ----------------------------------------
146723 --
146724 FUNCTION EventType_270
146725        (p_application_id         IN NUMBER
146726        ,p_base_ledger_id         IN NUMBER
146727        ,p_target_ledger_id       IN NUMBER
146728        ,p_language               IN VARCHAR2
146729        ,p_currency_code          IN VARCHAR2
146730        ,p_sla_ledger_id          IN NUMBER
146731        ,p_pad_start_date         IN DATE
146732        ,p_pad_end_date           IN DATE
146733        ,p_primary_ledger_id      IN NUMBER)
146734 RETURN BOOLEAN IS
146735 --
146736 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_RCPT';
146737 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT';
146738 
146739 l_calculate_acctd_flag   VARCHAR2(1) :='N';
146740 l_calculate_g_l_flag     VARCHAR2(1) :='N';
146741 --
146742 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146743 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146744 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146745 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146746 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146747 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146748 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146749 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146750 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146751 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146752 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146753 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146754 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146755 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146756 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146757 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146758 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146759 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146760 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146761 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146762 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146763 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146764 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
146765 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146769 l_event_id                             NUMBER;
146766 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
146767 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
146768 
146770 l_previous_event_id                    NUMBER;
146771 l_first_event_id                       NUMBER;
146772 l_last_event_id                        NUMBER;
146773 
146774 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
146775 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
146776 --
146777 --
146778 l_result                    BOOLEAN := TRUE;
146779 l_rows                      NUMBER  := 1000;
146780 l_event_type_name           VARCHAR2(80) := 'Intransit Interorg Receipt for FOB Shipment';
146781 l_event_class_name          VARCHAR2(80) := 'Intransit Interorg Receipt for FOB Shipment';
146782 l_description               VARCHAR2(4000);
146783 l_transaction_reversal      NUMBER;
146784 l_ae_header_id              NUMBER;
146785 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
146786 l_log_module                VARCHAR2(240);
146787 --
146788 l_acct_reversal_source      VARCHAR2(30);
146789 l_trx_reversal_source       VARCHAR2(30);
146790 
146791 l_continue_with_lines       BOOLEAN := TRUE;
146792 --
146793 l_acc_rev_gl_date_source    DATE;                      -- 4262811
146794 --
146795 type t_array_event_id is table of number index by binary_integer;
146796 
146797 l_rec_array_event                    t_rec_array_event;
146798 l_null_rec_array_event               t_rec_array_event;
146799 l_array_ae_header_id                 xla_number_array_type;
146800 l_actual_flag                        VARCHAR2(1) := NULL;
146801 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
146802 l_balance_type_code                  VARCHAR2(1) :=NULL;
146803 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
146804 
146805 --
146806 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
146807 --
146808 
146809 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
146810 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
146811 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
146812 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
146813 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
146814 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
146815 
146816 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
146817 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
146818 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
146819 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
146820 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
146821 
146822 l_array_source_6              t_array_source_6;
146823 l_array_source_7              t_array_source_7;
146824 l_array_source_8              t_array_source_8;
146825 l_array_source_9              t_array_source_9;
146826 l_array_source_10              t_array_source_10;
146827 l_array_source_12              t_array_source_12;
146828 
146829 l_array_source_1      t_array_source_1;
146830 l_array_source_2      t_array_source_2;
146831 l_array_source_3      t_array_source_3;
146832 l_array_source_5      t_array_source_5;
146833 l_array_source_11      t_array_source_11;
146834 
146835 --
146836 CURSOR header_cur
146837 IS
146838 SELECT /*+ leading(xet) cardinality(xet,1) */
146839 -- Event Type Code: FOB_SHIP_RECIPIENT_RCPT
146840 -- Event Class Code: FOB_SHIP_RECIPIENT_RCPT
146841     xet.entity_id
146842   , xet.legal_entity_id
146843   , xet.entity_code
146844   , xet.transaction_number
146845   , xet.event_id
146846   , xet.event_class_code
146847   , xet.event_type_code
146848   , xet.event_number
146849   , xet.event_date
146850   , xet.transaction_date
146851   , xet.reference_num_1
146852   , xet.reference_num_2
146853   , xet.reference_num_3
146854   , xet.reference_num_4
146855   , xet.reference_char_1
146856   , xet.reference_char_2
146857   , xet.reference_char_3
146858   , xet.reference_char_4
146859   , xet.reference_date_1
146860   , xet.reference_date_2
146861   , xet.reference_date_3
146862   , xet.reference_date_4
146863   , xet.event_created_by
146864   , xet.budgetary_control_flag 
146865   , h1.ENTITY_CODE    source_6
146866   , h1.CURRENCY_CODE    source_7
146867   , h1.CURRENCY_CONVERSION_DATE    source_8
146868   , h1.CURRENCY_CONVERSION_RATE    source_9
146869   , h1.CURRENCY_CONVERSION_TYPE    source_10
146870   , h1.TRANSACTION_DATE    source_12
146871   FROM xla_events_gt     xet 
146872   , GMF_XLA_EXTRACT_HEADERS  h1
146873  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
146874    and xet.event_type_code = C_EVENT_TYPE_CODE
146875    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
146876 
146877  ORDER BY event_id
146878 ;
146879 
146880 
146881 --
146882 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
146883 IS
146884 SELECT /*+ leading(xet) cardinality(xet,1) */
146885 -- Event Type Code: FOB_SHIP_RECIPIENT_RCPT
146889    ,xet.entity_code
146886 -- Event Class Code: FOB_SHIP_RECIPIENT_RCPT
146887     xet.entity_id
146888    ,xet.legal_entity_id
146890    ,xet.transaction_number
146891    ,xet.event_id
146892    ,xet.event_class_code
146893    ,xet.event_type_code
146894    ,xet.event_number
146895    ,xet.event_date
146896    ,xet.transaction_date
146897    ,xet.reference_num_1
146898    ,xet.reference_num_2
146899    ,xet.reference_num_3
146900    ,xet.reference_num_4
146901    ,xet.reference_char_1
146902    ,xet.reference_char_2
146903    ,xet.reference_char_3
146904    ,xet.reference_char_4
146905    ,xet.reference_date_1
146906    ,xet.reference_date_2
146907    ,xet.reference_date_3
146908    ,xet.reference_date_4
146909    ,xet.event_created_by
146910    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
146911   , l2.TRANSACTION_ACCOUNT_ID    source_1
146912   , l2.JOURNAL_LINE_TYPE    source_2
146913   , l2.ENTERED_AMOUNT    source_3
146914   , l2.LINE_ID    source_5
146915   , l2.ACCOUNTED_AMOUNT    source_11
146916   FROM xla_events_gt     xet 
146917   , GMF_XLA_EXTRACT_LINES  l2
146918  WHERE xet.event_id between x_first_event_id and x_last_event_id
146919    and xet.event_date between p_pad_start_date and p_pad_end_date
146920    and xet.event_type_code = C_EVENT_TYPE_CODE
146921    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
146922 ;
146923 
146924 --
146925 BEGIN
146926 IF g_log_enabled THEN
146927    l_log_module := C_DEFAULT_MODULE||'.EventType_270';
146928 END IF;
146929 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146930    trace
146931       (p_msg      => 'BEGIN of EventType_270'
146932       ,p_level    => C_LEVEL_PROCEDURE
146933       ,p_module   => l_log_module);
146934 END IF;
146935 
146936 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146937    trace
146938       (p_msg      => 'p_application_id = '||p_application_id||
146939                      ' - p_base_ledger_id = '||p_base_ledger_id||
146940                      ' - p_target_ledger_id  = '||p_target_ledger_id||
146941                      ' - p_language = '||p_language||
146942                      ' - p_currency_code = '||p_currency_code||
146943                      ' - p_sla_ledger_id = '||p_sla_ledger_id
146944       ,p_level    => C_LEVEL_STATEMENT
146945       ,p_module   => l_log_module);
146946 END IF;
146947 --
146948 -- initialze arrays
146949 --
146950 g_array_event.DELETE;
146951 l_rec_array_event := l_null_rec_array_event;
146952 --
146953 --------------------------------------
146954 -- 4262811 Initialze MPA Line Number
146955 --------------------------------------
146956 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
146957 
146958 --
146959 
146960 --
146961 OPEN header_cur;
146962 --
146963 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146964    trace
146965    (p_msg      => 'SQL - FETCH header_cur'
146966    ,p_level    => C_LEVEL_STATEMENT
146967    ,p_module   => l_log_module);
146968 END IF;
146969 --
146970 LOOP
146971 FETCH header_cur BULK COLLECT INTO
146972         l_array_entity_id
146973       , l_array_legal_entity_id
146974       , l_array_entity_code
146975       , l_array_transaction_num
146976       , l_array_event_id
146977       , l_array_class_code
146978       , l_array_event_type
146979       , l_array_event_number
146980       , l_array_event_date
146981       , l_array_transaction_date
146982       , l_array_reference_num_1
146983       , l_array_reference_num_2
146984       , l_array_reference_num_3
146985       , l_array_reference_num_4
146986       , l_array_reference_char_1
146987       , l_array_reference_char_2
146988       , l_array_reference_char_3
146989       , l_array_reference_char_4
146990       , l_array_reference_date_1
146991       , l_array_reference_date_2
146992       , l_array_reference_date_3
146993       , l_array_reference_date_4
146994       , l_array_event_created_by
146995       , l_array_budgetary_control_flag 
146996       , l_array_source_6
146997       , l_array_source_7
146998       , l_array_source_8
146999       , l_array_source_9
147000       , l_array_source_10
147001       , l_array_source_12
147002       LIMIT l_rows;
147003 --
147004 IF (C_LEVEL_EVENT >= g_log_level) THEN
147005    trace
147006    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
147007    ,p_level    => C_LEVEL_EVENT
147008    ,p_module   => l_log_module);
147009 END IF;
147010 --
147011 EXIT WHEN l_array_entity_id.COUNT = 0;
147012 
147013 -- initialize arrays
147014 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
147015 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
147016 
147017 --
147018 -- Bug 4458708
147019 --
147020 XLA_AE_LINES_PKG.g_LineNumber := 0;
147021 
147022 
147023 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
147024 g_last_hdr_idx := l_array_event_id.LAST;
147025 --
147026 -- loop for the headers. Each iteration is for each header extract row
147027 -- fetched in header cursor
147028 --
147029 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
147030 
147031 --
147032 -- set event info as cache for other routines to refer event attributes
147033 --
147034 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
147035    (p_application_id           => p_application_id
147036    ,p_primary_ledger_id        => p_primary_ledger_id
147037    ,p_base_ledger_id           => p_base_ledger_id
147038    ,p_target_ledger_id         => p_target_ledger_id
147042    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
147039    ,p_entity_id                => l_array_entity_id(hdr_idx)
147040    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
147041    ,p_entity_code              => l_array_entity_code(hdr_idx)
147043    ,p_event_id                 => l_array_event_id(hdr_idx)
147044    ,p_event_class_code         => l_array_class_code(hdr_idx)
147045    ,p_event_type_code          => l_array_event_type(hdr_idx)
147046    ,p_event_number             => l_array_event_number(hdr_idx)
147047    ,p_event_date               => l_array_event_date(hdr_idx)
147048    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
147049    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
147050    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
147051    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
147052    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
147053    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
147054    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
147055    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
147056    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
147057    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
147058    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
147059    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
147060    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
147061    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
147062    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
147063 
147064 --
147065 -- set the status of entry to C_VALID (0)
147066 --
147067 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
147068 
147069 --
147070 -- initialize a row for ae header
147071 --
147072 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
147073 
147074 l_event_id := l_array_event_id(hdr_idx);
147075 
147076 --
147077 -- storing the hdr_idx for event. May be used by line cursor.
147078 --
147079 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
147080 
147081 --
147082 -- store sources from header extract. This can be improved to
147083 -- store only those sources from header extract that may be used in lines
147084 --
147085 
147086 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
147087 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
147088 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
147089 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
147090 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
147091 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
147092 
147093 --
147094 -- initilaize the status of ae headers for diffrent balance types
147095 -- the status is initialised to C_NOT_CREATED (2)
147096 --
147097 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
147098 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
147099 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
147100 
147101 --
147102 -- call api to validate and store accounting attributes for header
147103 --
147104 
147105 ------------------------------------------------------------
147106 -- Accrual Reversal : to get date for Standard Source (NONE)
147107 ------------------------------------------------------------
147108 l_acc_rev_gl_date_source := NULL;
147109 
147110      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
147111       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
147112 
147113 
147114 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
147115 
147116 XLA_AE_HEADER_PKG.SetJeCategoryName;
147117 
147118 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
147119 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
147120 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
147121 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
147122 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
147123 
147124 
147125 -- No header level analytical criteria
147126 
147127 --
147128 --accounting attribute enhancement, bug 3612931
147129 --
147130 l_trx_reversal_source := SUBSTR(NULL, 1,30);
147131 
147132 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
147133    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
147134 
147135    xla_accounting_err_pkg.build_message
147136       (p_appli_s_name            => 'XLA'
147137       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
147138       ,p_token_1                 => 'ACCT_ATTR_NAME'
147139       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
147140       ,p_token_2                 => 'PRODUCT_NAME'
147141       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
147142       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
147143       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
147147    --
147144       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
147145 
147146 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
147148    -- following sets the accounting attributes needed to reverse
147149    -- accounting for a distributeion
147150    --
147151    xla_ae_lines_pkg.SetTrxReversalAttrs
147152       (p_event_id              => l_event_id
147153       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
147154       ,p_trx_reversal_source   => l_trx_reversal_source);
147155 
147156 END IF;
147157 
147158 
147159 ----------------------------------------------------------------
147160 -- 4262811 -  update the header statuses to invalid in need be
147161 ----------------------------------------------------------------
147162 --
147163 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
147164 
147165 
147166   -----------------------------------------------
147167   -- No accrual reversal for the event class/type
147168   -----------------------------------------------
147169 ----------------------------------------------------------------
147170 
147171 --
147172 -- this ends the header loop iteration for one bulk fetch
147173 --
147174 END LOOP;
147175 
147176 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
147177 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
147178 
147179 --
147180 -- insert dummy rows into lines gt table that were created due to
147181 -- transaction reversals
147182 --
147183 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
147184    l_result := XLA_AE_LINES_PKG.InsertLines;
147185 END IF;
147186 
147187 --
147188 -- reset the temp_line_num for each set of events fetched from header
147189 -- cursor rather than doing it for each new event in line cursor
147190 -- Bug 3939231
147191 --
147192 xla_ae_lines_pkg.g_temp_line_num := 0;
147193 
147194 
147195 
147196 --
147197 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
147198 --
147199 --
147200 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147201 
147202       trace
147203          (p_msg      => 'SQL - FETCH line_cur'
147204          ,p_level    => C_LEVEL_STATEMENT
147205          ,p_module   => l_log_module);
147206 
147207 END IF;
147208 --
147209 --
147210 LOOP
147211   --
147212   FETCH line_cur BULK COLLECT INTO
147213         l_array_entity_id
147214       , l_array_legal_entity_id
147215       , l_array_entity_code
147216       , l_array_transaction_num
147217       , l_array_event_id
147218       , l_array_class_code
147219       , l_array_event_type
147220       , l_array_event_number
147221       , l_array_event_date
147222       , l_array_transaction_date
147223       , l_array_reference_num_1
147224       , l_array_reference_num_2
147225       , l_array_reference_num_3
147226       , l_array_reference_num_4
147227       , l_array_reference_char_1
147228       , l_array_reference_char_2
147229       , l_array_reference_char_3
147230       , l_array_reference_char_4
147231       , l_array_reference_date_1
147232       , l_array_reference_date_2
147233       , l_array_reference_date_3
147234       , l_array_reference_date_4
147235       , l_array_event_created_by
147236       , l_array_budgetary_control_flag
147237       , l_array_extract_line_num 
147238       , l_array_source_1
147239       , l_array_source_2
147240       , l_array_source_3
147241       , l_array_source_5
147242       , l_array_source_11
147243       LIMIT l_rows;
147244 
147245   --
147246   IF (C_LEVEL_EVENT >= g_log_level) THEN
147247             trace
147248                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
147249                ,p_level    => C_LEVEL_EVENT
147250                ,p_module   => l_log_module);
147251   END IF;
147252   --
147253   EXIT WHEN l_array_entity_id.count = 0;
147254 
147255   XLA_AE_LINES_PKG.g_rec_lines := null;
147256 
147257 --
147258 -- Bug 4458708
147259 --
147260 XLA_AE_LINES_PKG.g_LineNumber := 0;
147261 --
147262 --
147263 
147264 FOR Idx IN 1..l_array_event_id.count LOOP
147265    --
147266    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
147267    --
147268    l_event_id := l_array_event_id(idx);  -- 5648433
147269 
147270    --
147271    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
147272    --
147273 
147274    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
147275              (g_array_event(l_event_id).array_value_num('header_index'))
147276          ,'N'
147277          ) <> 'Y'
147278    THEN
147279       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147280          trace
147281             (p_msg      => 'Trancaction revesal option is not Y '
147282             ,p_level    => C_LEVEL_STATEMENT
147283             ,p_module   => l_log_module);
147284       END IF;
147285 
147286 --
147287 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
147288 --
147289 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
147290 --
147291 -- set event info as cache for other routines to refer event attributes
147292 --
147293 
147294 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
147298       (p_application_id           => p_application_id
147295    l_previous_event_id := l_event_id;
147296 
147297    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
147299       ,p_primary_ledger_id        => p_primary_ledger_id
147300       ,p_base_ledger_id           => p_base_ledger_id
147301       ,p_target_ledger_id         => p_target_ledger_id
147302       ,p_entity_id                => l_array_entity_id(Idx)
147303       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
147304       ,p_entity_code              => l_array_entity_code(Idx)
147305       ,p_transaction_num          => l_array_transaction_num(Idx)
147306       ,p_event_id                 => l_array_event_id(Idx)
147307       ,p_event_class_code         => l_array_class_code(Idx)
147308       ,p_event_type_code          => l_array_event_type(Idx)
147309       ,p_event_number             => l_array_event_number(Idx)
147310       ,p_event_date               => l_array_event_date(Idx)
147311       ,p_transaction_date         => l_array_transaction_date(Idx)
147312       ,p_reference_num_1          => l_array_reference_num_1(Idx)
147313       ,p_reference_num_2          => l_array_reference_num_2(Idx)
147314       ,p_reference_num_3          => l_array_reference_num_3(Idx)
147315       ,p_reference_num_4          => l_array_reference_num_4(Idx)
147316       ,p_reference_char_1         => l_array_reference_char_1(Idx)
147317       ,p_reference_char_2         => l_array_reference_char_2(Idx)
147318       ,p_reference_char_3         => l_array_reference_char_3(Idx)
147319       ,p_reference_char_4         => l_array_reference_char_4(Idx)
147320       ,p_reference_date_1         => l_array_reference_date_1(Idx)
147321       ,p_reference_date_2         => l_array_reference_date_2(Idx)
147322       ,p_reference_date_3         => l_array_reference_date_3(Idx)
147323       ,p_reference_date_4         => l_array_reference_date_4(Idx)
147324       ,p_event_created_by         => l_array_event_created_by(Idx)
147325       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
147326        --
147327 END IF;
147328 
147329 
147330 
147331 --
147332 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
147333 
147334 l_acct_reversal_source := SUBSTR(NULL, 1,30);
147335 
147336 IF l_continue_with_lines THEN
147337    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
147338       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
147339 
147340       xla_accounting_err_pkg.build_message
147341          (p_appli_s_name            => 'XLA'
147342          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
147343          ,p_token_1                 => 'LINE_NUMBER'
147344          ,p_value_1                 => l_array_extract_line_num(Idx)
147345          ,p_token_2                 => 'PRODUCT_NAME'
147346          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
147347          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
147348          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
147349          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
147350 
147351    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
147352       --
147353       -- following sets the accounting attributes needed to reverse
147354       -- accounting for a distributeion
147355       --
147356 
147357       --
147358       -- 5217187
147359       --
147360       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
147361       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
147362                                        g_array_event(l_event_id).array_value_num('header_index'));
147363       --
147364       --
147365 
147366       -- No reversal code generated
147367 
147368       xla_ae_lines_pkg.SetAcctReversalAttrs
147369          (p_event_id             => l_event_id
147370          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
147371          ,p_calculate_acctd_flag => l_calculate_acctd_flag
147372          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
147373    END IF;
147374 
147375    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
147376        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
147377 
147378 --
147379 AcctLineType_90 (
147380  p_application_id  => p_application_id
147381  ,p_event_id     => l_event_id
147382  ,p_calculate_acctd_flag => l_calculate_acctd_flag
147383  ,p_calculate_g_l_flag => l_calculate_g_l_flag
147384  ,p_actual_flag => l_actual_flag
147385  ,p_balance_type_code => l_balance_type_code
147386  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147387  
147388  , p_source_1 => l_array_source_1(Idx)
147389  , p_source_2 => l_array_source_2(Idx)
147390  , p_source_3 => l_array_source_3(Idx)
147391  , p_source_5 => l_array_source_5(Idx)
147392  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
147393  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147394  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
147395  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
147396  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
147397  , p_source_11 => l_array_source_11(Idx)
147398  );
147399 If(l_balance_type_code = 'A') THEN
147400   l_actual_gain_loss_ref := l_gain_or_loss_ref;
147401 END IF;
147402 
147403 --
147404 
147405 
147406 --
147407 AcctLineType_144 (
147408  p_application_id  => p_application_id
147412  ,p_actual_flag => l_actual_flag
147409  ,p_event_id     => l_event_id
147410  ,p_calculate_acctd_flag => l_calculate_acctd_flag
147411  ,p_calculate_g_l_flag => l_calculate_g_l_flag
147413  ,p_balance_type_code => l_balance_type_code
147414  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147415  
147416  , p_source_1 => l_array_source_1(Idx)
147417  , p_source_2 => l_array_source_2(Idx)
147418  , p_source_3 => l_array_source_3(Idx)
147419  , p_source_5 => l_array_source_5(Idx)
147420  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
147421  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147422  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
147423  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
147424  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
147425  , p_source_11 => l_array_source_11(Idx)
147426  );
147427 If(l_balance_type_code = 'A') THEN
147428   l_actual_gain_loss_ref := l_gain_or_loss_ref;
147429 END IF;
147430 
147431 --
147432 
147433 
147434 --
147435 AcctLineType_207 (
147436  p_application_id  => p_application_id
147437  ,p_event_id     => l_event_id
147438  ,p_calculate_acctd_flag => l_calculate_acctd_flag
147439  ,p_calculate_g_l_flag => l_calculate_g_l_flag
147440  ,p_actual_flag => l_actual_flag
147441  ,p_balance_type_code => l_balance_type_code
147442  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147443  
147444  , p_source_1 => l_array_source_1(Idx)
147445  , p_source_2 => l_array_source_2(Idx)
147446  , p_source_3 => l_array_source_3(Idx)
147447  , p_source_5 => l_array_source_5(Idx)
147448  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
147449  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147450  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
147451  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
147452  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
147453  , p_source_11 => l_array_source_11(Idx)
147454  );
147455 If(l_balance_type_code = 'A') THEN
147456   l_actual_gain_loss_ref := l_gain_or_loss_ref;
147457 END IF;
147458 
147459 --
147460 
147461       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
147462       -- or secondary ledger that has different currency with primary
147463       -- or alc that is calculated by sla
147464       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
147465             (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'))
147466 
147467 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
147468 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
147469           AND (l_actual_flag = 'A')) THEN
147470         XLA_AE_LINES_PKG.CreateGainOrLossLines(
147471           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
147472          ,p_application_id   => p_application_id
147473          ,p_amb_context_code => 'DEFAULT'
147474          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
147475          ,p_event_class_code => C_EVENT_CLASS_CODE
147476          ,p_event_type_code  => C_EVENT_TYPE_CODE
147477          
147478          ,p_gain_ccid        => -1
147479          ,p_loss_ccid        => -1
147480 
147481          ,p_actual_flag      => l_actual_flag
147482          ,p_enc_flag         => null
147483          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
147484          ,p_enc_g_l_ref      => null
147485          );
147486       END IF;
147487    END IF;
147488 END IF;
147489 
147490    ELSE
147491       --
147492       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
147493       --
147494       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147495          trace
147496             (p_msg      => 'Trancaction revesal option is Y'
147497             ,p_level    => C_LEVEL_STATEMENT
147498             ,p_module   => l_log_module);
147499       END IF;
147500    END IF;
147501 
147502 END LOOP;
147503 l_result := XLA_AE_LINES_PKG.InsertLines ;
147504 end loop;
147505 close line_cur;
147506 
147507 
147508 --
147509 -- insert headers into xla_ae_headers_gt table
147510 --
147511 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
147512 
147513 -- insert into errors table here.
147514 
147515 END LOOP;
147516 
147517 --
147518 -- 4865292
147519 --
147520 -- Compare g_hdr_extract_count with event count in
147521 -- CreateHeadersAndLines.
147522 --
147523 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
147524 
147525 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147526    trace (p_msg     => '# rows extracted from header extract objects '
147527                     || ' (running total): '
147528                     || g_hdr_extract_count
147529          ,p_level   => C_LEVEL_STATEMENT
147530          ,p_module  => l_log_module);
147531 END IF;
147532 
147533 CLOSE header_cur;
147534 --
147535 
147536 --
147537 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
147538    trace
147539       (p_msg      => 'END of EventType_270'
147540       ,p_level    => C_LEVEL_PROCEDURE
147541       ,p_module   => l_log_module);
147542 END IF;
147543 --
147544 RETURN l_result;
147545 EXCEPTION
147546 WHEN xla_exceptions_pkg.application_exception THEN
147547    
147548 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
147552 
147549 
147550    
147551 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
147553    RAISE;
147554 
147555 WHEN NO_DATA_FOUND THEN
147556 
147557 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
147558 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
147559 
147560 FOR header_record IN header_cur
147561 LOOP
147562     l_array_header_events(header_record.event_id) := header_record.event_id;
147563 END LOOP;
147564 
147565 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
147566 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
147567 
147568 fnd_file.put_line(fnd_file.LOG, '                    ');
147569 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
147570 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
147571 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
147572 
147573 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
147574 LOOP
147575 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
147576 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
147577         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
147578 	END IF;
147579 END LOOP;
147580 
147581 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
147582 fnd_file.put_line(fnd_file.LOG, '                    ');
147583 
147584 
147585 xla_exceptions_pkg.raise_message
147586       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_270');
147587 
147588 
147589 WHEN OTHERS THEN
147590    xla_exceptions_pkg.raise_message
147591       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_270');
147592 END EventType_270;
147593 --
147594 
147595 ---------------------------------------
147596 --
147597 -- PRIVATE PROCEDURE
147598 --         insert_sources_271
147599 --
147600 ----------------------------------------
147601 --
147602 PROCEDURE insert_sources_271(
147603                                 p_target_ledger_id       IN NUMBER
147604                               , p_language               IN VARCHAR2
147605                               , p_sla_ledger_id          IN NUMBER
147606                               , p_pad_start_date         IN DATE
147607                               , p_pad_end_date           IN DATE
147608                          )
147609 IS
147610 
147611 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
147612 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
147613 p_apps_owner                   VARCHAR2(30);
147614 l_log_module                   VARCHAR2(240);
147615 BEGIN
147616 IF g_log_enabled THEN
147617       l_log_module := C_DEFAULT_MODULE||'.insert_sources_271';
147618 END IF;
147619 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
147620 
147621       trace
147622          (p_msg      => 'BEGIN of insert_sources_271'
147623          ,p_level    => C_LEVEL_PROCEDURE
147624          ,p_module   => l_log_module);
147625 
147626 END IF;
147627 
147628 -- select APPS owner
147629 SELECT oracle_username
147630   INTO p_apps_owner
147631   FROM fnd_oracle_userid
147632  WHERE read_only_flag = 'U'
147633 ;
147634 
147635 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147636       trace
147637          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
147638                         ' - p_language = '||p_language||
147639                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
147640                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
147641                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
147642                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
147643          ,p_level    => C_LEVEL_STATEMENT
147644          ,p_module   => l_log_module);
147645 END IF;
147646 
147647 
147648 --
147649 INSERT INTO xla_diag_sources --hdr1
147650 (
147651         event_id
147652       , ledger_id
147653       , sla_ledger_id
147654       , description_language
147655       , object_name
147656       , object_type_code
147657       , line_number
147658       , source_application_id
147659       , source_type_code
147660       , source_code
147661       , source_value
147662       , source_meaning
147663       , created_by
147664       , creation_date
147665       , last_update_date
147666       , last_updated_by
147667       , last_update_login
147668       , program_update_date
147669       , program_application_id
147670       , program_id
147671       , request_id
147672 )
147673 SELECT
147674         event_id
147675       , p_target_ledger_id
147676       , p_sla_ledger_id
147677       , p_language
147678       , object_name
147679       , object_type_code
147680       , line_number
147681       , source_application_id
147682       , source_type_code
147683       , source_code
147684       , SUBSTR(source_value ,1,1996)
147685       , SUBSTR(source_meaning,1,200)
147686       , xla_environment_pkg.g_Usr_Id
147687       , TRUNC(SYSDATE)
147688       , TRUNC(SYSDATE)
147689       , xla_environment_pkg.g_Usr_Id
147690       , xla_environment_pkg.g_Login_Id
147691       , TRUNC(SYSDATE)
147692       , xla_environment_pkg.g_Prog_Appl_Id
147693       , xla_environment_pkg.g_Prog_Id
147697             , 0                             line_number
147694       , xla_environment_pkg.g_Req_Id
147695   FROM (
147696        SELECT xet.event_id                  event_id
147698             , CASE r
147699                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
147700                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
147701                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
147702                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
147703                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
147704                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
147705                 
147706                ELSE null
147707               END                           object_name
147708             , CASE r
147709                 WHEN 1 THEN 'HEADER' 
147710                 WHEN 2 THEN 'HEADER' 
147711                 WHEN 3 THEN 'HEADER' 
147712                 WHEN 4 THEN 'HEADER' 
147713                 WHEN 5 THEN 'HEADER' 
147714                 WHEN 6 THEN 'HEADER' 
147715                 
147716                 ELSE null
147717               END                           object_type_code
147718             , CASE r
147719                 WHEN 1 THEN '555' 
147720                 WHEN 2 THEN '555' 
147721                 WHEN 3 THEN '555' 
147722                 WHEN 4 THEN '555' 
147723                 WHEN 5 THEN '555' 
147724                 WHEN 6 THEN '555' 
147725                 
147726                 ELSE null
147727               END                           source_application_id
147728             , 'S'             source_type_code
147729             , CASE r
147730                 WHEN 1 THEN 'ENTITY_CODE' 
147731                 WHEN 2 THEN 'CURRENCY_CODE' 
147732                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
147733                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
147734                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
147735                 WHEN 6 THEN 'TRANSACTION_DATE' 
147736                 
147737                 ELSE null
147738               END                           source_code
147739             , CASE r
147740                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
147741                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
147742                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
147743                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
147744                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
147745                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
147746                 
147747                 ELSE null
147748               END                           source_value
147749             , CASE r
147750                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
147751                           1010186
147752                          ,TO_CHAR(h1.CURRENCY_CODE)
147753                          ,'CURRENCY_CODE'
147754                          ,'S'
147755                          ,555)
147756                 
147757                 ELSE null
147758               END               source_meaning
147759         FROM xla_events_gt     xet  
147760       , GMF_XLA_EXTRACT_HEADERS  h1
147761             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
147762        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
147763          AND xet.event_type_code = C_EVENT_TYPE_CODE
147764             AND h1.event_id = xet.event_id
147765 
147766 )
147767 ;
147768 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147769 
147770       trace
147771          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
147772          ,p_level    => C_LEVEL_STATEMENT
147773          ,p_module   => l_log_module);
147774 
147775 END IF;
147776 --
147777 
147778 
147779 
147780 --
147781 INSERT INTO xla_diag_sources --line1
147782 (
147783         event_id
147784       , ledger_id
147785       , sla_ledger_id
147786       , description_language
147787       , object_name
147788       , object_type_code
147789       , line_number
147790       , source_application_id
147791       , source_type_code
147792       , source_code
147793       , source_value
147794       , source_meaning
147795       , created_by
147796       , creation_date
147797       , last_update_date
147798       , last_updated_by
147799       , last_update_login
147800       , program_update_date
147801       , program_application_id
147802       , program_id
147803       , request_id
147804 )
147805 SELECT  event_id
147806       , p_target_ledger_id
147807       , p_sla_ledger_id
147808       , p_language
147809       , object_name
147810       , object_type_code
147811       , line_number
147812       , source_application_id
147813       , source_type_code
147814       , source_code
147815       , SUBSTR(source_value,1,1996)
147816       , SUBSTR(source_meaning,1,200)
147817       , xla_environment_pkg.g_Usr_Id
147818       , TRUNC(SYSDATE)
147819       , TRUNC(SYSDATE)
147820       , xla_environment_pkg.g_Usr_Id
147821       , xla_environment_pkg.g_Login_Id
147822       , TRUNC(SYSDATE)
147823       , xla_environment_pkg.g_Prog_Appl_Id
147824       , xla_environment_pkg.g_Prog_Id
147825       , xla_environment_pkg.g_Req_Id
147826   FROM (
147827        SELECT xet.event_id                  event_id
147828             , l2.line_number                 line_number
147829             , CASE r
147830                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
147831                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
147835                 
147832                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
147833                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
147834                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
147836                ELSE null
147837               END                           object_name
147838             , CASE r
147839                 WHEN 1 THEN 'LINE' 
147840                 WHEN 2 THEN 'LINE' 
147841                 WHEN 3 THEN 'LINE' 
147842                 WHEN 4 THEN 'LINE' 
147843                 WHEN 5 THEN 'LINE' 
147844                 
147845                 ELSE null
147846               END                           object_type_code
147847             , CASE r
147848                 WHEN 1 THEN '555' 
147849                 WHEN 2 THEN '555' 
147850                 WHEN 3 THEN '555' 
147851                 WHEN 4 THEN '555' 
147852                 WHEN 5 THEN '555' 
147853                 
147854                 ELSE null
147855               END                           source_application_id
147856             , 'S'             source_type_code
147857             , CASE r
147858                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
147859                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
147860                 WHEN 3 THEN 'ENTERED_AMOUNT' 
147861                 WHEN 4 THEN 'LINE_ID' 
147862                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
147863                 
147864                 ELSE null
147865               END                           source_code
147866             , CASE r
147867                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
147868                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
147869                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
147870                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
147871                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
147872                 
147873                 ELSE null
147874               END                           source_value
147875             , null              source_meaning
147876          FROM  xla_events_gt     xet  
147877         , GMF_XLA_EXTRACT_LINES  l2
147878             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
147879         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
147880           AND xet.event_type_code = C_EVENT_TYPE_CODE
147881             AND l2.event_id          = xet.event_id
147882 
147883 )
147884 ;
147885 --
147886 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147887 
147888       trace
147889          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
147890          ,p_level    => C_LEVEL_STATEMENT
147891          ,p_module   => l_log_module);
147892 
147893 END IF;
147894 
147895 
147896 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
147897       trace
147898          (p_msg      => 'END of insert_sources_271'
147899          ,p_level    => C_LEVEL_PROCEDURE
147900          ,p_module   => l_log_module);
147901 END IF;
147902 EXCEPTION
147903   WHEN xla_exceptions_pkg.application_exception THEN
147904       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
147905             trace
147906                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
147907                ,p_level    => C_LEVEL_EXCEPTION
147908                ,p_module   => l_log_module);
147909       END IF;
147910       RAISE;
147911   WHEN OTHERS THEN
147912       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
147913             trace
147914                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
147915                ,p_level    => C_LEVEL_EXCEPTION
147916                ,p_module   => l_log_module);
147917        END IF;
147918        xla_exceptions_pkg.raise_message
147919            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_271');
147920 END insert_sources_271;
147921 --
147922 
147923 ---------------------------------------
147924 --
147925 -- PRIVATE FUNCTION
147926 --         EventType_271
147927 --
147928 ----------------------------------------
147929 --
147930 FUNCTION EventType_271
147931        (p_application_id         IN NUMBER
147932        ,p_base_ledger_id         IN NUMBER
147933        ,p_target_ledger_id       IN NUMBER
147934        ,p_language               IN VARCHAR2
147935        ,p_currency_code          IN VARCHAR2
147936        ,p_sla_ledger_id          IN NUMBER
147937        ,p_pad_start_date         IN DATE
147938        ,p_pad_end_date           IN DATE
147939        ,p_primary_ledger_id      IN NUMBER)
147940 RETURN BOOLEAN IS
147941 --
147942 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
147943 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
147944 
147945 l_calculate_acctd_flag   VARCHAR2(1) :='N';
147946 l_calculate_g_l_flag     VARCHAR2(1) :='N';
147947 --
147948 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147949 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147950 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
147951 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147952 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147953 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
147954 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
147955 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147959 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147956 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147957 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147958 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147960 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147961 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147962 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147963 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147964 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147965 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147966 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147967 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147968 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147969 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147970 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
147971 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
147972 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
147973 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
147974 
147975 l_event_id                             NUMBER;
147976 l_previous_event_id                    NUMBER;
147977 l_first_event_id                       NUMBER;
147978 l_last_event_id                        NUMBER;
147979 
147980 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
147981 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
147982 --
147983 --
147984 l_result                    BOOLEAN := TRUE;
147985 l_rows                      NUMBER  := 1000;
147986 l_event_type_name           VARCHAR2(80) := 'Recipient-side Intransit Interorg Shipment for FOB Shipment, no Transfer Pricing';
147987 l_event_class_name          VARCHAR2(80) := 'Recipient-side Intransit Interorg Shipment for FOB Shipment';
147988 l_description               VARCHAR2(4000);
147989 l_transaction_reversal      NUMBER;
147990 l_ae_header_id              NUMBER;
147991 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
147992 l_log_module                VARCHAR2(240);
147993 --
147994 l_acct_reversal_source      VARCHAR2(30);
147995 l_trx_reversal_source       VARCHAR2(30);
147996 
147997 l_continue_with_lines       BOOLEAN := TRUE;
147998 --
147999 l_acc_rev_gl_date_source    DATE;                      -- 4262811
148000 --
148001 type t_array_event_id is table of number index by binary_integer;
148002 
148003 l_rec_array_event                    t_rec_array_event;
148004 l_null_rec_array_event               t_rec_array_event;
148005 l_array_ae_header_id                 xla_number_array_type;
148006 l_actual_flag                        VARCHAR2(1) := NULL;
148007 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
148008 l_balance_type_code                  VARCHAR2(1) :=NULL;
148009 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
148010 
148011 --
148012 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
148013 --
148014 
148015 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
148016 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
148017 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
148018 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
148019 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
148020 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
148021 
148022 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
148023 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
148024 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
148025 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
148026 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
148027 
148028 l_array_source_6              t_array_source_6;
148029 l_array_source_7              t_array_source_7;
148030 l_array_source_8              t_array_source_8;
148031 l_array_source_9              t_array_source_9;
148032 l_array_source_10              t_array_source_10;
148033 l_array_source_12              t_array_source_12;
148034 
148035 l_array_source_1      t_array_source_1;
148036 l_array_source_2      t_array_source_2;
148037 l_array_source_3      t_array_source_3;
148038 l_array_source_5      t_array_source_5;
148039 l_array_source_11      t_array_source_11;
148040 
148041 --
148042 CURSOR header_cur
148043 IS
148044 SELECT /*+ leading(xet) cardinality(xet,1) */
148045 -- Event Type Code: FOB_SHIP_RECIPIENT_SHIP_NO_TP
148046 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
148047     xet.entity_id
148048   , xet.legal_entity_id
148049   , xet.entity_code
148050   , xet.transaction_number
148051   , xet.event_id
148052   , xet.event_class_code
148053   , xet.event_type_code
148054   , xet.event_number
148055   , xet.event_date
148056   , xet.transaction_date
148057   , xet.reference_num_1
148058   , xet.reference_num_2
148062   , xet.reference_char_2
148059   , xet.reference_num_3
148060   , xet.reference_num_4
148061   , xet.reference_char_1
148063   , xet.reference_char_3
148064   , xet.reference_char_4
148065   , xet.reference_date_1
148066   , xet.reference_date_2
148067   , xet.reference_date_3
148068   , xet.reference_date_4
148069   , xet.event_created_by
148070   , xet.budgetary_control_flag 
148071   , h1.ENTITY_CODE    source_6
148072   , h1.CURRENCY_CODE    source_7
148073   , h1.CURRENCY_CONVERSION_DATE    source_8
148074   , h1.CURRENCY_CONVERSION_RATE    source_9
148075   , h1.CURRENCY_CONVERSION_TYPE    source_10
148076   , h1.TRANSACTION_DATE    source_12
148077   FROM xla_events_gt     xet 
148078   , GMF_XLA_EXTRACT_HEADERS  h1
148079  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
148080    and xet.event_type_code = C_EVENT_TYPE_CODE
148081    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
148082 
148083  ORDER BY event_id
148084 ;
148085 
148086 
148087 --
148088 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
148089 IS
148090 SELECT /*+ leading(xet) cardinality(xet,1) */
148091 -- Event Type Code: FOB_SHIP_RECIPIENT_SHIP_NO_TP
148092 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
148093     xet.entity_id
148094    ,xet.legal_entity_id
148095    ,xet.entity_code
148096    ,xet.transaction_number
148097    ,xet.event_id
148098    ,xet.event_class_code
148099    ,xet.event_type_code
148100    ,xet.event_number
148101    ,xet.event_date
148102    ,xet.transaction_date
148103    ,xet.reference_num_1
148104    ,xet.reference_num_2
148105    ,xet.reference_num_3
148106    ,xet.reference_num_4
148107    ,xet.reference_char_1
148108    ,xet.reference_char_2
148109    ,xet.reference_char_3
148110    ,xet.reference_char_4
148111    ,xet.reference_date_1
148112    ,xet.reference_date_2
148113    ,xet.reference_date_3
148114    ,xet.reference_date_4
148115    ,xet.event_created_by
148116    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
148117   , l2.TRANSACTION_ACCOUNT_ID    source_1
148118   , l2.JOURNAL_LINE_TYPE    source_2
148119   , l2.ENTERED_AMOUNT    source_3
148120   , l2.LINE_ID    source_5
148121   , l2.ACCOUNTED_AMOUNT    source_11
148122   FROM xla_events_gt     xet 
148123   , GMF_XLA_EXTRACT_LINES  l2
148124  WHERE xet.event_id between x_first_event_id and x_last_event_id
148125    and xet.event_date between p_pad_start_date and p_pad_end_date
148126    and xet.event_type_code = C_EVENT_TYPE_CODE
148127    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
148128 ;
148129 
148130 --
148131 BEGIN
148132 IF g_log_enabled THEN
148133    l_log_module := C_DEFAULT_MODULE||'.EventType_271';
148134 END IF;
148135 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148136    trace
148137       (p_msg      => 'BEGIN of EventType_271'
148138       ,p_level    => C_LEVEL_PROCEDURE
148139       ,p_module   => l_log_module);
148140 END IF;
148141 
148142 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148143    trace
148144       (p_msg      => 'p_application_id = '||p_application_id||
148145                      ' - p_base_ledger_id = '||p_base_ledger_id||
148146                      ' - p_target_ledger_id  = '||p_target_ledger_id||
148147                      ' - p_language = '||p_language||
148148                      ' - p_currency_code = '||p_currency_code||
148149                      ' - p_sla_ledger_id = '||p_sla_ledger_id
148150       ,p_level    => C_LEVEL_STATEMENT
148151       ,p_module   => l_log_module);
148152 END IF;
148153 --
148154 -- initialze arrays
148155 --
148156 g_array_event.DELETE;
148157 l_rec_array_event := l_null_rec_array_event;
148158 --
148159 --------------------------------------
148160 -- 4262811 Initialze MPA Line Number
148161 --------------------------------------
148162 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
148163 
148164 --
148165 
148166 --
148167 OPEN header_cur;
148168 --
148169 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148170    trace
148171    (p_msg      => 'SQL - FETCH header_cur'
148172    ,p_level    => C_LEVEL_STATEMENT
148173    ,p_module   => l_log_module);
148174 END IF;
148175 --
148176 LOOP
148177 FETCH header_cur BULK COLLECT INTO
148178         l_array_entity_id
148179       , l_array_legal_entity_id
148180       , l_array_entity_code
148181       , l_array_transaction_num
148182       , l_array_event_id
148183       , l_array_class_code
148184       , l_array_event_type
148185       , l_array_event_number
148186       , l_array_event_date
148187       , l_array_transaction_date
148188       , l_array_reference_num_1
148189       , l_array_reference_num_2
148190       , l_array_reference_num_3
148191       , l_array_reference_num_4
148192       , l_array_reference_char_1
148193       , l_array_reference_char_2
148194       , l_array_reference_char_3
148195       , l_array_reference_char_4
148196       , l_array_reference_date_1
148197       , l_array_reference_date_2
148198       , l_array_reference_date_3
148199       , l_array_reference_date_4
148200       , l_array_event_created_by
148201       , l_array_budgetary_control_flag 
148202       , l_array_source_6
148203       , l_array_source_7
148204       , l_array_source_8
148205       , l_array_source_9
148206       , l_array_source_10
148207       , l_array_source_12
148208       LIMIT l_rows;
148209 --
148210 IF (C_LEVEL_EVENT >= g_log_level) THEN
148211    trace
148215 END IF;
148212    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
148213    ,p_level    => C_LEVEL_EVENT
148214    ,p_module   => l_log_module);
148216 --
148217 EXIT WHEN l_array_entity_id.COUNT = 0;
148218 
148219 -- initialize arrays
148220 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
148221 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
148222 
148223 --
148224 -- Bug 4458708
148225 --
148226 XLA_AE_LINES_PKG.g_LineNumber := 0;
148227 
148228 
148229 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
148230 g_last_hdr_idx := l_array_event_id.LAST;
148231 --
148232 -- loop for the headers. Each iteration is for each header extract row
148233 -- fetched in header cursor
148234 --
148235 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
148236 
148237 --
148238 -- set event info as cache for other routines to refer event attributes
148239 --
148240 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
148241    (p_application_id           => p_application_id
148242    ,p_primary_ledger_id        => p_primary_ledger_id
148243    ,p_base_ledger_id           => p_base_ledger_id
148244    ,p_target_ledger_id         => p_target_ledger_id
148245    ,p_entity_id                => l_array_entity_id(hdr_idx)
148246    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
148247    ,p_entity_code              => l_array_entity_code(hdr_idx)
148248    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
148249    ,p_event_id                 => l_array_event_id(hdr_idx)
148250    ,p_event_class_code         => l_array_class_code(hdr_idx)
148251    ,p_event_type_code          => l_array_event_type(hdr_idx)
148252    ,p_event_number             => l_array_event_number(hdr_idx)
148253    ,p_event_date               => l_array_event_date(hdr_idx)
148254    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
148255    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
148256    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
148257    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
148258    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
148259    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
148260    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
148261    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
148262    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
148263    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
148264    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
148265    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
148266    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
148267    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
148268    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
148269 
148270 --
148271 -- set the status of entry to C_VALID (0)
148272 --
148273 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
148274 
148275 --
148276 -- initialize a row for ae header
148277 --
148278 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
148279 
148280 l_event_id := l_array_event_id(hdr_idx);
148281 
148282 --
148283 -- storing the hdr_idx for event. May be used by line cursor.
148284 --
148285 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
148286 
148287 --
148288 -- store sources from header extract. This can be improved to
148289 -- store only those sources from header extract that may be used in lines
148290 --
148291 
148292 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
148293 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
148294 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
148295 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
148296 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
148297 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
148298 
148299 --
148300 -- initilaize the status of ae headers for diffrent balance types
148301 -- the status is initialised to C_NOT_CREATED (2)
148302 --
148303 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
148304 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
148305 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
148306 
148307 --
148308 -- call api to validate and store accounting attributes for header
148309 --
148310 
148311 ------------------------------------------------------------
148312 -- Accrual Reversal : to get date for Standard Source (NONE)
148313 ------------------------------------------------------------
148314 l_acc_rev_gl_date_source := NULL;
148315 
148316      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
148317       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
148318 
148319 
148320 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
148321 
148322 XLA_AE_HEADER_PKG.SetJeCategoryName;
148323 
148324 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
148325 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
148326 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
148330 
148327 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
148328 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
148329 
148331 -- No header level analytical criteria
148332 
148333 --
148334 --accounting attribute enhancement, bug 3612931
148335 --
148336 l_trx_reversal_source := SUBSTR(NULL, 1,30);
148337 
148338 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
148339    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
148340 
148341    xla_accounting_err_pkg.build_message
148342       (p_appli_s_name            => 'XLA'
148343       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
148344       ,p_token_1                 => 'ACCT_ATTR_NAME'
148345       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
148346       ,p_token_2                 => 'PRODUCT_NAME'
148347       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
148348       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
148349       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
148350       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
148351 
148352 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
148353    --
148354    -- following sets the accounting attributes needed to reverse
148355    -- accounting for a distributeion
148356    --
148357    xla_ae_lines_pkg.SetTrxReversalAttrs
148358       (p_event_id              => l_event_id
148359       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
148360       ,p_trx_reversal_source   => l_trx_reversal_source);
148361 
148362 END IF;
148363 
148364 
148365 ----------------------------------------------------------------
148366 -- 4262811 -  update the header statuses to invalid in need be
148367 ----------------------------------------------------------------
148368 --
148369 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
148370 
148371 
148372   -----------------------------------------------
148373   -- No accrual reversal for the event class/type
148374   -----------------------------------------------
148375 ----------------------------------------------------------------
148376 
148377 --
148378 -- this ends the header loop iteration for one bulk fetch
148379 --
148380 END LOOP;
148381 
148382 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
148383 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
148384 
148385 --
148386 -- insert dummy rows into lines gt table that were created due to
148387 -- transaction reversals
148388 --
148389 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
148390    l_result := XLA_AE_LINES_PKG.InsertLines;
148391 END IF;
148392 
148393 --
148394 -- reset the temp_line_num for each set of events fetched from header
148395 -- cursor rather than doing it for each new event in line cursor
148396 -- Bug 3939231
148397 --
148398 xla_ae_lines_pkg.g_temp_line_num := 0;
148399 
148400 
148401 
148402 --
148403 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
148404 --
148405 --
148406 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148407 
148408       trace
148409          (p_msg      => 'SQL - FETCH line_cur'
148410          ,p_level    => C_LEVEL_STATEMENT
148411          ,p_module   => l_log_module);
148412 
148413 END IF;
148414 --
148415 --
148416 LOOP
148417   --
148418   FETCH line_cur BULK COLLECT INTO
148419         l_array_entity_id
148420       , l_array_legal_entity_id
148421       , l_array_entity_code
148422       , l_array_transaction_num
148423       , l_array_event_id
148424       , l_array_class_code
148425       , l_array_event_type
148426       , l_array_event_number
148427       , l_array_event_date
148428       , l_array_transaction_date
148429       , l_array_reference_num_1
148430       , l_array_reference_num_2
148431       , l_array_reference_num_3
148432       , l_array_reference_num_4
148433       , l_array_reference_char_1
148434       , l_array_reference_char_2
148435       , l_array_reference_char_3
148436       , l_array_reference_char_4
148437       , l_array_reference_date_1
148438       , l_array_reference_date_2
148439       , l_array_reference_date_3
148440       , l_array_reference_date_4
148441       , l_array_event_created_by
148442       , l_array_budgetary_control_flag
148443       , l_array_extract_line_num 
148444       , l_array_source_1
148445       , l_array_source_2
148446       , l_array_source_3
148447       , l_array_source_5
148448       , l_array_source_11
148449       LIMIT l_rows;
148450 
148451   --
148452   IF (C_LEVEL_EVENT >= g_log_level) THEN
148453             trace
148454                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
148455                ,p_level    => C_LEVEL_EVENT
148456                ,p_module   => l_log_module);
148457   END IF;
148458   --
148459   EXIT WHEN l_array_entity_id.count = 0;
148460 
148461   XLA_AE_LINES_PKG.g_rec_lines := null;
148462 
148463 --
148464 -- Bug 4458708
148465 --
148466 XLA_AE_LINES_PKG.g_LineNumber := 0;
148467 --
148468 --
148469 
148470 FOR Idx IN 1..l_array_event_id.count LOOP
148474    l_event_id := l_array_event_id(idx);  -- 5648433
148471    --
148472    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
148473    --
148475 
148476    --
148477    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
148478    --
148479 
148480    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
148481              (g_array_event(l_event_id).array_value_num('header_index'))
148482          ,'N'
148483          ) <> 'Y'
148484    THEN
148485       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148486          trace
148487             (p_msg      => 'Trancaction revesal option is not Y '
148488             ,p_level    => C_LEVEL_STATEMENT
148489             ,p_module   => l_log_module);
148490       END IF;
148491 
148492 --
148493 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
148494 --
148495 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
148496 --
148497 -- set event info as cache for other routines to refer event attributes
148498 --
148499 
148500 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
148501    l_previous_event_id := l_event_id;
148502 
148503    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
148504       (p_application_id           => p_application_id
148505       ,p_primary_ledger_id        => p_primary_ledger_id
148506       ,p_base_ledger_id           => p_base_ledger_id
148507       ,p_target_ledger_id         => p_target_ledger_id
148508       ,p_entity_id                => l_array_entity_id(Idx)
148509       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
148510       ,p_entity_code              => l_array_entity_code(Idx)
148511       ,p_transaction_num          => l_array_transaction_num(Idx)
148512       ,p_event_id                 => l_array_event_id(Idx)
148513       ,p_event_class_code         => l_array_class_code(Idx)
148514       ,p_event_type_code          => l_array_event_type(Idx)
148515       ,p_event_number             => l_array_event_number(Idx)
148516       ,p_event_date               => l_array_event_date(Idx)
148517       ,p_transaction_date         => l_array_transaction_date(Idx)
148518       ,p_reference_num_1          => l_array_reference_num_1(Idx)
148519       ,p_reference_num_2          => l_array_reference_num_2(Idx)
148520       ,p_reference_num_3          => l_array_reference_num_3(Idx)
148521       ,p_reference_num_4          => l_array_reference_num_4(Idx)
148522       ,p_reference_char_1         => l_array_reference_char_1(Idx)
148523       ,p_reference_char_2         => l_array_reference_char_2(Idx)
148524       ,p_reference_char_3         => l_array_reference_char_3(Idx)
148525       ,p_reference_char_4         => l_array_reference_char_4(Idx)
148526       ,p_reference_date_1         => l_array_reference_date_1(Idx)
148527       ,p_reference_date_2         => l_array_reference_date_2(Idx)
148528       ,p_reference_date_3         => l_array_reference_date_3(Idx)
148529       ,p_reference_date_4         => l_array_reference_date_4(Idx)
148530       ,p_event_created_by         => l_array_event_created_by(Idx)
148531       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
148532        --
148533 END IF;
148534 
148535 
148536 
148537 --
148538 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
148539 
148540 l_acct_reversal_source := SUBSTR(NULL, 1,30);
148541 
148542 IF l_continue_with_lines THEN
148543    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
148544       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
148545 
148546       xla_accounting_err_pkg.build_message
148547          (p_appli_s_name            => 'XLA'
148548          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
148549          ,p_token_1                 => 'LINE_NUMBER'
148550          ,p_value_1                 => l_array_extract_line_num(Idx)
148551          ,p_token_2                 => 'PRODUCT_NAME'
148552          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
148553          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
148554          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
148555          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
148556 
148557    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
148558       --
148559       -- following sets the accounting attributes needed to reverse
148560       -- accounting for a distributeion
148561       --
148562 
148563       --
148564       -- 5217187
148565       --
148566       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
148567       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
148568                                        g_array_event(l_event_id).array_value_num('header_index'));
148569       --
148570       --
148571 
148572       -- No reversal code generated
148573 
148574       xla_ae_lines_pkg.SetAcctReversalAttrs
148575          (p_event_id             => l_event_id
148576          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
148577          ,p_calculate_acctd_flag => l_calculate_acctd_flag
148578          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
148579    END IF;
148580 
148581    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
148582        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
148583 
148584 --
148585 AcctLineType_114 (
148586  p_application_id  => p_application_id
148587  ,p_event_id     => l_event_id
148591  ,p_balance_type_code => l_balance_type_code
148588  ,p_calculate_acctd_flag => l_calculate_acctd_flag
148589  ,p_calculate_g_l_flag => l_calculate_g_l_flag
148590  ,p_actual_flag => l_actual_flag
148592  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148593  
148594  , p_source_1 => l_array_source_1(Idx)
148595  , p_source_2 => l_array_source_2(Idx)
148596  , p_source_3 => l_array_source_3(Idx)
148597  , p_source_5 => l_array_source_5(Idx)
148598  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
148599  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
148600  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
148601  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
148602  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
148603  , p_source_11 => l_array_source_11(Idx)
148604  );
148605 If(l_balance_type_code = 'A') THEN
148606   l_actual_gain_loss_ref := l_gain_or_loss_ref;
148607 END IF;
148608 
148609 --
148610 
148611 
148612 --
148613 AcctLineType_129 (
148614  p_application_id  => p_application_id
148615  ,p_event_id     => l_event_id
148616  ,p_calculate_acctd_flag => l_calculate_acctd_flag
148617  ,p_calculate_g_l_flag => l_calculate_g_l_flag
148618  ,p_actual_flag => l_actual_flag
148619  ,p_balance_type_code => l_balance_type_code
148620  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148621  
148622  , p_source_1 => l_array_source_1(Idx)
148623  , p_source_2 => l_array_source_2(Idx)
148624  , p_source_3 => l_array_source_3(Idx)
148625  , p_source_5 => l_array_source_5(Idx)
148626  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
148627  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
148628  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
148629  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
148630  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
148631  , p_source_11 => l_array_source_11(Idx)
148632  );
148633 If(l_balance_type_code = 'A') THEN
148634   l_actual_gain_loss_ref := l_gain_or_loss_ref;
148635 END IF;
148636 
148637 --
148638 
148639 
148640 --
148641 AcctLineType_174 (
148642  p_application_id  => p_application_id
148643  ,p_event_id     => l_event_id
148644  ,p_calculate_acctd_flag => l_calculate_acctd_flag
148645  ,p_calculate_g_l_flag => l_calculate_g_l_flag
148646  ,p_actual_flag => l_actual_flag
148647  ,p_balance_type_code => l_balance_type_code
148648  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148649  
148650  , p_source_1 => l_array_source_1(Idx)
148651  , p_source_2 => l_array_source_2(Idx)
148652  , p_source_3 => l_array_source_3(Idx)
148653  , p_source_5 => l_array_source_5(Idx)
148654  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
148655  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
148656  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
148657  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
148658  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
148659  , p_source_11 => l_array_source_11(Idx)
148660  );
148661 If(l_balance_type_code = 'A') THEN
148662   l_actual_gain_loss_ref := l_gain_or_loss_ref;
148663 END IF;
148664 
148665 --
148666 
148667 
148668 --
148669 AcctLineType_211 (
148670  p_application_id  => p_application_id
148671  ,p_event_id     => l_event_id
148672  ,p_calculate_acctd_flag => l_calculate_acctd_flag
148673  ,p_calculate_g_l_flag => l_calculate_g_l_flag
148674  ,p_actual_flag => l_actual_flag
148675  ,p_balance_type_code => l_balance_type_code
148676  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148677  
148678  , p_source_1 => l_array_source_1(Idx)
148679  , p_source_2 => l_array_source_2(Idx)
148680  , p_source_3 => l_array_source_3(Idx)
148681  , p_source_5 => l_array_source_5(Idx)
148682  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
148683  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
148684  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
148685  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
148686  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
148687  , p_source_11 => l_array_source_11(Idx)
148688  );
148689 If(l_balance_type_code = 'A') THEN
148690   l_actual_gain_loss_ref := l_gain_or_loss_ref;
148691 END IF;
148692 
148693 --
148694 
148695 
148696 --
148697 AcctLineType_217 (
148698  p_application_id  => p_application_id
148699  ,p_event_id     => l_event_id
148700  ,p_calculate_acctd_flag => l_calculate_acctd_flag
148701  ,p_calculate_g_l_flag => l_calculate_g_l_flag
148702  ,p_actual_flag => l_actual_flag
148703  ,p_balance_type_code => l_balance_type_code
148704  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148705  
148706  , p_source_1 => l_array_source_1(Idx)
148707  , p_source_2 => l_array_source_2(Idx)
148708  , p_source_3 => l_array_source_3(Idx)
148709  , p_source_5 => l_array_source_5(Idx)
148710  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
148711  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
148712  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
148713  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
148714  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
148715  , p_source_11 => l_array_source_11(Idx)
148716  );
148717 If(l_balance_type_code = 'A') THEN
148718   l_actual_gain_loss_ref := l_gain_or_loss_ref;
148719 END IF;
148720 
148724 --
148721 --
148722 
148723 
148725 AcctLineType_226 (
148726  p_application_id  => p_application_id
148727  ,p_event_id     => l_event_id
148728  ,p_calculate_acctd_flag => l_calculate_acctd_flag
148729  ,p_calculate_g_l_flag => l_calculate_g_l_flag
148730  ,p_actual_flag => l_actual_flag
148731  ,p_balance_type_code => l_balance_type_code
148732  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148733  
148734  , p_source_1 => l_array_source_1(Idx)
148735  , p_source_2 => l_array_source_2(Idx)
148736  , p_source_3 => l_array_source_3(Idx)
148737  , p_source_5 => l_array_source_5(Idx)
148738  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
148739  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
148740  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
148741  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
148742  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
148743  , p_source_11 => l_array_source_11(Idx)
148744  );
148745 If(l_balance_type_code = 'A') THEN
148746   l_actual_gain_loss_ref := l_gain_or_loss_ref;
148747 END IF;
148748 
148749 --
148750 
148751 
148752 --
148753 AcctLineType_245 (
148754  p_application_id  => p_application_id
148755  ,p_event_id     => l_event_id
148756  ,p_calculate_acctd_flag => l_calculate_acctd_flag
148757  ,p_calculate_g_l_flag => l_calculate_g_l_flag
148758  ,p_actual_flag => l_actual_flag
148759  ,p_balance_type_code => l_balance_type_code
148760  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148761  
148762  , p_source_1 => l_array_source_1(Idx)
148763  , p_source_2 => l_array_source_2(Idx)
148764  , p_source_3 => l_array_source_3(Idx)
148765  , p_source_5 => l_array_source_5(Idx)
148766  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
148767  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
148768  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
148769  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
148770  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
148771  , p_source_11 => l_array_source_11(Idx)
148772  );
148773 If(l_balance_type_code = 'A') THEN
148774   l_actual_gain_loss_ref := l_gain_or_loss_ref;
148775 END IF;
148776 
148777 --
148778 
148779       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
148780       -- or secondary ledger that has different currency with primary
148781       -- or alc that is calculated by sla
148782       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
148783             (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'))
148784 
148785 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
148786 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
148787           AND (l_actual_flag = 'A')) THEN
148788         XLA_AE_LINES_PKG.CreateGainOrLossLines(
148789           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
148790          ,p_application_id   => p_application_id
148791          ,p_amb_context_code => 'DEFAULT'
148792          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
148793          ,p_event_class_code => C_EVENT_CLASS_CODE
148794          ,p_event_type_code  => C_EVENT_TYPE_CODE
148795          
148796          ,p_gain_ccid        => -1
148797          ,p_loss_ccid        => -1
148798 
148799          ,p_actual_flag      => l_actual_flag
148800          ,p_enc_flag         => null
148801          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
148802          ,p_enc_g_l_ref      => null
148803          );
148804       END IF;
148805    END IF;
148806 END IF;
148807 
148808    ELSE
148809       --
148810       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
148811       --
148812       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148813          trace
148814             (p_msg      => 'Trancaction revesal option is Y'
148815             ,p_level    => C_LEVEL_STATEMENT
148816             ,p_module   => l_log_module);
148817       END IF;
148818    END IF;
148819 
148820 END LOOP;
148821 l_result := XLA_AE_LINES_PKG.InsertLines ;
148822 end loop;
148823 close line_cur;
148824 
148825 
148826 --
148827 -- insert headers into xla_ae_headers_gt table
148828 --
148829 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
148830 
148831 -- insert into errors table here.
148832 
148833 END LOOP;
148834 
148835 --
148836 -- 4865292
148837 --
148838 -- Compare g_hdr_extract_count with event count in
148839 -- CreateHeadersAndLines.
148840 --
148841 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
148842 
148843 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148844    trace (p_msg     => '# rows extracted from header extract objects '
148845                     || ' (running total): '
148846                     || g_hdr_extract_count
148847          ,p_level   => C_LEVEL_STATEMENT
148848          ,p_module  => l_log_module);
148849 END IF;
148850 
148851 CLOSE header_cur;
148852 --
148853 
148854 --
148855 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148856    trace
148857       (p_msg      => 'END of EventType_271'
148858       ,p_level    => C_LEVEL_PROCEDURE
148862 RETURN l_result;
148859       ,p_module   => l_log_module);
148860 END IF;
148861 --
148863 EXCEPTION
148864 WHEN xla_exceptions_pkg.application_exception THEN
148865    
148866 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
148867 
148868    
148869 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
148870 
148871    RAISE;
148872 
148873 WHEN NO_DATA_FOUND THEN
148874 
148875 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
148876 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
148877 
148878 FOR header_record IN header_cur
148879 LOOP
148880     l_array_header_events(header_record.event_id) := header_record.event_id;
148881 END LOOP;
148882 
148883 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
148884 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
148885 
148886 fnd_file.put_line(fnd_file.LOG, '                    ');
148887 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
148888 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
148889 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
148890 
148891 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
148892 LOOP
148893 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
148894 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
148895         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
148896 	END IF;
148897 END LOOP;
148898 
148899 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
148900 fnd_file.put_line(fnd_file.LOG, '                    ');
148901 
148902 
148903 xla_exceptions_pkg.raise_message
148904       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_271');
148905 
148906 
148907 WHEN OTHERS THEN
148908    xla_exceptions_pkg.raise_message
148909       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_271');
148910 END EventType_271;
148911 --
148912 
148913 ---------------------------------------
148914 --
148915 -- PRIVATE PROCEDURE
148916 --         insert_sources_272
148917 --
148918 ----------------------------------------
148919 --
148920 PROCEDURE insert_sources_272(
148921                                 p_target_ledger_id       IN NUMBER
148922                               , p_language               IN VARCHAR2
148923                               , p_sla_ledger_id          IN NUMBER
148924                               , p_pad_start_date         IN DATE
148925                               , p_pad_end_date           IN DATE
148926                          )
148927 IS
148928 
148929 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_SHIP_TP';
148930 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
148931 p_apps_owner                   VARCHAR2(30);
148932 l_log_module                   VARCHAR2(240);
148933 BEGIN
148934 IF g_log_enabled THEN
148935       l_log_module := C_DEFAULT_MODULE||'.insert_sources_272';
148936 END IF;
148937 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148938 
148939       trace
148940          (p_msg      => 'BEGIN of insert_sources_272'
148941          ,p_level    => C_LEVEL_PROCEDURE
148942          ,p_module   => l_log_module);
148943 
148944 END IF;
148945 
148946 -- select APPS owner
148947 SELECT oracle_username
148948   INTO p_apps_owner
148949   FROM fnd_oracle_userid
148950  WHERE read_only_flag = 'U'
148951 ;
148952 
148953 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148954       trace
148955          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
148956                         ' - p_language = '||p_language||
148957                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
148958                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
148959                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
148960                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
148961          ,p_level    => C_LEVEL_STATEMENT
148962          ,p_module   => l_log_module);
148963 END IF;
148964 
148965 
148966 --
148967 INSERT INTO xla_diag_sources --hdr1
148968 (
148969         event_id
148970       , ledger_id
148971       , sla_ledger_id
148972       , description_language
148973       , object_name
148974       , object_type_code
148975       , line_number
148976       , source_application_id
148977       , source_type_code
148978       , source_code
148979       , source_value
148980       , source_meaning
148981       , created_by
148982       , creation_date
148983       , last_update_date
148984       , last_updated_by
148985       , last_update_login
148986       , program_update_date
148987       , program_application_id
148988       , program_id
148989       , request_id
148990 )
148991 SELECT
148992         event_id
148993       , p_target_ledger_id
148994       , p_sla_ledger_id
148995       , p_language
148996       , object_name
148997       , object_type_code
148998       , line_number
148999       , source_application_id
149000       , source_type_code
149001       , source_code
149002       , SUBSTR(source_value ,1,1996)
149003       , SUBSTR(source_meaning,1,200)
149007       , xla_environment_pkg.g_Usr_Id
149004       , xla_environment_pkg.g_Usr_Id
149005       , TRUNC(SYSDATE)
149006       , TRUNC(SYSDATE)
149008       , xla_environment_pkg.g_Login_Id
149009       , TRUNC(SYSDATE)
149010       , xla_environment_pkg.g_Prog_Appl_Id
149011       , xla_environment_pkg.g_Prog_Id
149012       , xla_environment_pkg.g_Req_Id
149013   FROM (
149014        SELECT xet.event_id                  event_id
149015             , 0                             line_number
149016             , CASE r
149017                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
149018                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
149019                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
149020                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
149021                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
149022                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
149023                 
149024                ELSE null
149025               END                           object_name
149026             , CASE r
149027                 WHEN 1 THEN 'HEADER' 
149028                 WHEN 2 THEN 'HEADER' 
149029                 WHEN 3 THEN 'HEADER' 
149030                 WHEN 4 THEN 'HEADER' 
149031                 WHEN 5 THEN 'HEADER' 
149032                 WHEN 6 THEN 'HEADER' 
149033                 
149034                 ELSE null
149035               END                           object_type_code
149036             , CASE r
149037                 WHEN 1 THEN '555' 
149038                 WHEN 2 THEN '555' 
149039                 WHEN 3 THEN '555' 
149040                 WHEN 4 THEN '555' 
149041                 WHEN 5 THEN '555' 
149042                 WHEN 6 THEN '555' 
149043                 
149044                 ELSE null
149045               END                           source_application_id
149046             , 'S'             source_type_code
149047             , CASE r
149048                 WHEN 1 THEN 'ENTITY_CODE' 
149049                 WHEN 2 THEN 'CURRENCY_CODE' 
149050                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
149051                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
149052                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
149053                 WHEN 6 THEN 'TRANSACTION_DATE' 
149054                 
149055                 ELSE null
149056               END                           source_code
149057             , CASE r
149058                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
149059                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
149060                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
149061                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
149062                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
149063                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
149064                 
149065                 ELSE null
149066               END                           source_value
149067             , CASE r
149068                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
149069                           1010186
149070                          ,TO_CHAR(h1.CURRENCY_CODE)
149071                          ,'CURRENCY_CODE'
149072                          ,'S'
149073                          ,555)
149074                 
149075                 ELSE null
149076               END               source_meaning
149077         FROM xla_events_gt     xet  
149078       , GMF_XLA_EXTRACT_HEADERS  h1
149079             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
149080        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
149081          AND xet.event_type_code = C_EVENT_TYPE_CODE
149082             AND h1.event_id = xet.event_id
149083 
149084 )
149085 ;
149086 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149087 
149088       trace
149089          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
149090          ,p_level    => C_LEVEL_STATEMENT
149091          ,p_module   => l_log_module);
149092 
149093 END IF;
149094 --
149095 
149096 
149097 
149098 --
149099 INSERT INTO xla_diag_sources --line1
149100 (
149101         event_id
149102       , ledger_id
149103       , sla_ledger_id
149104       , description_language
149105       , object_name
149106       , object_type_code
149107       , line_number
149108       , source_application_id
149109       , source_type_code
149110       , source_code
149111       , source_value
149112       , source_meaning
149113       , created_by
149114       , creation_date
149115       , last_update_date
149116       , last_updated_by
149117       , last_update_login
149118       , program_update_date
149119       , program_application_id
149120       , program_id
149121       , request_id
149122 )
149123 SELECT  event_id
149124       , p_target_ledger_id
149125       , p_sla_ledger_id
149126       , p_language
149127       , object_name
149128       , object_type_code
149129       , line_number
149130       , source_application_id
149131       , source_type_code
149132       , source_code
149133       , SUBSTR(source_value,1,1996)
149134       , SUBSTR(source_meaning,1,200)
149135       , xla_environment_pkg.g_Usr_Id
149136       , TRUNC(SYSDATE)
149137       , TRUNC(SYSDATE)
149138       , xla_environment_pkg.g_Usr_Id
149139       , xla_environment_pkg.g_Login_Id
149140       , TRUNC(SYSDATE)
149141       , xla_environment_pkg.g_Prog_Appl_Id
149142       , xla_environment_pkg.g_Prog_Id
149146             , l2.line_number                 line_number
149143       , xla_environment_pkg.g_Req_Id
149144   FROM (
149145        SELECT xet.event_id                  event_id
149147             , CASE r
149148                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
149149                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
149150                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
149151                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
149152                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
149153                 
149154                ELSE null
149155               END                           object_name
149156             , CASE r
149157                 WHEN 1 THEN 'LINE' 
149158                 WHEN 2 THEN 'LINE' 
149159                 WHEN 3 THEN 'LINE' 
149160                 WHEN 4 THEN 'LINE' 
149161                 WHEN 5 THEN 'LINE' 
149162                 
149163                 ELSE null
149164               END                           object_type_code
149165             , CASE r
149166                 WHEN 1 THEN '555' 
149167                 WHEN 2 THEN '555' 
149168                 WHEN 3 THEN '555' 
149169                 WHEN 4 THEN '555' 
149170                 WHEN 5 THEN '555' 
149171                 
149172                 ELSE null
149173               END                           source_application_id
149174             , 'S'             source_type_code
149175             , CASE r
149176                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
149177                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
149178                 WHEN 3 THEN 'ENTERED_AMOUNT' 
149179                 WHEN 4 THEN 'LINE_ID' 
149180                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
149181                 
149182                 ELSE null
149183               END                           source_code
149184             , CASE r
149185                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
149186                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
149187                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
149188                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
149189                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
149190                 
149191                 ELSE null
149192               END                           source_value
149193             , null              source_meaning
149194          FROM  xla_events_gt     xet  
149195         , GMF_XLA_EXTRACT_LINES  l2
149196             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
149197         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
149198           AND xet.event_type_code = C_EVENT_TYPE_CODE
149199             AND l2.event_id          = xet.event_id
149200 
149201 )
149202 ;
149203 --
149204 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149205 
149206       trace
149207          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
149208          ,p_level    => C_LEVEL_STATEMENT
149209          ,p_module   => l_log_module);
149210 
149211 END IF;
149212 
149213 
149214 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
149215       trace
149216          (p_msg      => 'END of insert_sources_272'
149217          ,p_level    => C_LEVEL_PROCEDURE
149218          ,p_module   => l_log_module);
149219 END IF;
149220 EXCEPTION
149221   WHEN xla_exceptions_pkg.application_exception THEN
149222       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
149223             trace
149224                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
149225                ,p_level    => C_LEVEL_EXCEPTION
149226                ,p_module   => l_log_module);
149227       END IF;
149228       RAISE;
149229   WHEN OTHERS THEN
149230       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
149231             trace
149232                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
149233                ,p_level    => C_LEVEL_EXCEPTION
149234                ,p_module   => l_log_module);
149235        END IF;
149236        xla_exceptions_pkg.raise_message
149237            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_272');
149238 END insert_sources_272;
149239 --
149240 
149241 ---------------------------------------
149242 --
149243 -- PRIVATE FUNCTION
149244 --         EventType_272
149245 --
149246 ----------------------------------------
149247 --
149248 FUNCTION EventType_272
149249        (p_application_id         IN NUMBER
149250        ,p_base_ledger_id         IN NUMBER
149251        ,p_target_ledger_id       IN NUMBER
149252        ,p_language               IN VARCHAR2
149253        ,p_currency_code          IN VARCHAR2
149254        ,p_sla_ledger_id          IN NUMBER
149255        ,p_pad_start_date         IN DATE
149256        ,p_pad_end_date           IN DATE
149257        ,p_primary_ledger_id      IN NUMBER)
149258 RETURN BOOLEAN IS
149259 --
149260 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_SHIP_TP';
149261 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
149262 
149263 l_calculate_acctd_flag   VARCHAR2(1) :='N';
149264 l_calculate_g_l_flag     VARCHAR2(1) :='N';
149265 --
149266 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149267 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149268 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
149269 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149270 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149271 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
149275 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149272 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
149273 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149274 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149276 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149277 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149278 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149279 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149280 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149281 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149282 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149283 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149284 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149285 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149286 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149287 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149288 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
149289 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
149290 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
149291 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
149292 
149293 l_event_id                             NUMBER;
149294 l_previous_event_id                    NUMBER;
149295 l_first_event_id                       NUMBER;
149296 l_last_event_id                        NUMBER;
149297 
149298 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
149299 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
149300 --
149301 --
149302 l_result                    BOOLEAN := TRUE;
149303 l_rows                      NUMBER  := 1000;
149304 l_event_type_name           VARCHAR2(80) := 'Recipient-side Intransit Interorg Shipment for FOB Shipment, Transfer Pricing';
149305 l_event_class_name          VARCHAR2(80) := 'Recipient-side Intransit Interorg Shipment for FOB Shipment';
149306 l_description               VARCHAR2(4000);
149307 l_transaction_reversal      NUMBER;
149308 l_ae_header_id              NUMBER;
149309 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
149310 l_log_module                VARCHAR2(240);
149311 --
149312 l_acct_reversal_source      VARCHAR2(30);
149313 l_trx_reversal_source       VARCHAR2(30);
149314 
149315 l_continue_with_lines       BOOLEAN := TRUE;
149316 --
149317 l_acc_rev_gl_date_source    DATE;                      -- 4262811
149318 --
149319 type t_array_event_id is table of number index by binary_integer;
149320 
149321 l_rec_array_event                    t_rec_array_event;
149322 l_null_rec_array_event               t_rec_array_event;
149323 l_array_ae_header_id                 xla_number_array_type;
149324 l_actual_flag                        VARCHAR2(1) := NULL;
149325 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
149326 l_balance_type_code                  VARCHAR2(1) :=NULL;
149327 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
149328 
149329 --
149330 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
149331 --
149332 
149333 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
149334 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
149335 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
149336 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
149337 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
149338 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
149339 
149340 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
149341 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
149342 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
149343 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
149344 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
149345 
149346 l_array_source_6              t_array_source_6;
149347 l_array_source_7              t_array_source_7;
149348 l_array_source_8              t_array_source_8;
149349 l_array_source_9              t_array_source_9;
149350 l_array_source_10              t_array_source_10;
149351 l_array_source_12              t_array_source_12;
149352 
149353 l_array_source_1      t_array_source_1;
149354 l_array_source_2      t_array_source_2;
149355 l_array_source_3      t_array_source_3;
149356 l_array_source_5      t_array_source_5;
149357 l_array_source_11      t_array_source_11;
149358 
149359 --
149360 CURSOR header_cur
149361 IS
149362 SELECT /*+ leading(xet) cardinality(xet,1) */
149363 -- Event Type Code: FOB_SHIP_RECIPIENT_SHIP_TP
149364 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
149365     xet.entity_id
149366   , xet.legal_entity_id
149367   , xet.entity_code
149368   , xet.transaction_number
149369   , xet.event_id
149373   , xet.event_date
149370   , xet.event_class_code
149371   , xet.event_type_code
149372   , xet.event_number
149374   , xet.transaction_date
149375   , xet.reference_num_1
149376   , xet.reference_num_2
149377   , xet.reference_num_3
149378   , xet.reference_num_4
149379   , xet.reference_char_1
149380   , xet.reference_char_2
149381   , xet.reference_char_3
149382   , xet.reference_char_4
149383   , xet.reference_date_1
149384   , xet.reference_date_2
149385   , xet.reference_date_3
149386   , xet.reference_date_4
149387   , xet.event_created_by
149388   , xet.budgetary_control_flag 
149389   , h1.ENTITY_CODE    source_6
149390   , h1.CURRENCY_CODE    source_7
149391   , h1.CURRENCY_CONVERSION_DATE    source_8
149392   , h1.CURRENCY_CONVERSION_RATE    source_9
149393   , h1.CURRENCY_CONVERSION_TYPE    source_10
149394   , h1.TRANSACTION_DATE    source_12
149395   FROM xla_events_gt     xet 
149396   , GMF_XLA_EXTRACT_HEADERS  h1
149397  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
149398    and xet.event_type_code = C_EVENT_TYPE_CODE
149399    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
149400 
149401  ORDER BY event_id
149402 ;
149403 
149404 
149405 --
149406 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
149407 IS
149408 SELECT /*+ leading(xet) cardinality(xet,1) */
149409 -- Event Type Code: FOB_SHIP_RECIPIENT_SHIP_TP
149410 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
149411     xet.entity_id
149412    ,xet.legal_entity_id
149413    ,xet.entity_code
149414    ,xet.transaction_number
149415    ,xet.event_id
149416    ,xet.event_class_code
149417    ,xet.event_type_code
149418    ,xet.event_number
149419    ,xet.event_date
149420    ,xet.transaction_date
149421    ,xet.reference_num_1
149422    ,xet.reference_num_2
149423    ,xet.reference_num_3
149424    ,xet.reference_num_4
149425    ,xet.reference_char_1
149426    ,xet.reference_char_2
149427    ,xet.reference_char_3
149428    ,xet.reference_char_4
149429    ,xet.reference_date_1
149430    ,xet.reference_date_2
149431    ,xet.reference_date_3
149432    ,xet.reference_date_4
149433    ,xet.event_created_by
149434    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
149435   , l2.TRANSACTION_ACCOUNT_ID    source_1
149436   , l2.JOURNAL_LINE_TYPE    source_2
149437   , l2.ENTERED_AMOUNT    source_3
149438   , l2.LINE_ID    source_5
149439   , l2.ACCOUNTED_AMOUNT    source_11
149440   FROM xla_events_gt     xet 
149441   , GMF_XLA_EXTRACT_LINES  l2
149442  WHERE xet.event_id between x_first_event_id and x_last_event_id
149443    and xet.event_date between p_pad_start_date and p_pad_end_date
149444    and xet.event_type_code = C_EVENT_TYPE_CODE
149445    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
149446 ;
149447 
149448 --
149449 BEGIN
149450 IF g_log_enabled THEN
149451    l_log_module := C_DEFAULT_MODULE||'.EventType_272';
149452 END IF;
149453 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
149454    trace
149455       (p_msg      => 'BEGIN of EventType_272'
149456       ,p_level    => C_LEVEL_PROCEDURE
149457       ,p_module   => l_log_module);
149458 END IF;
149459 
149460 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149461    trace
149462       (p_msg      => 'p_application_id = '||p_application_id||
149463                      ' - p_base_ledger_id = '||p_base_ledger_id||
149464                      ' - p_target_ledger_id  = '||p_target_ledger_id||
149465                      ' - p_language = '||p_language||
149466                      ' - p_currency_code = '||p_currency_code||
149467                      ' - p_sla_ledger_id = '||p_sla_ledger_id
149468       ,p_level    => C_LEVEL_STATEMENT
149469       ,p_module   => l_log_module);
149470 END IF;
149471 --
149472 -- initialze arrays
149473 --
149474 g_array_event.DELETE;
149475 l_rec_array_event := l_null_rec_array_event;
149476 --
149477 --------------------------------------
149478 -- 4262811 Initialze MPA Line Number
149479 --------------------------------------
149480 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
149481 
149482 --
149483 
149484 --
149485 OPEN header_cur;
149486 --
149487 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149488    trace
149489    (p_msg      => 'SQL - FETCH header_cur'
149490    ,p_level    => C_LEVEL_STATEMENT
149491    ,p_module   => l_log_module);
149492 END IF;
149493 --
149494 LOOP
149495 FETCH header_cur BULK COLLECT INTO
149496         l_array_entity_id
149497       , l_array_legal_entity_id
149498       , l_array_entity_code
149499       , l_array_transaction_num
149500       , l_array_event_id
149501       , l_array_class_code
149502       , l_array_event_type
149503       , l_array_event_number
149504       , l_array_event_date
149505       , l_array_transaction_date
149506       , l_array_reference_num_1
149507       , l_array_reference_num_2
149508       , l_array_reference_num_3
149509       , l_array_reference_num_4
149510       , l_array_reference_char_1
149511       , l_array_reference_char_2
149512       , l_array_reference_char_3
149513       , l_array_reference_char_4
149514       , l_array_reference_date_1
149515       , l_array_reference_date_2
149516       , l_array_reference_date_3
149517       , l_array_reference_date_4
149518       , l_array_event_created_by
149519       , l_array_budgetary_control_flag 
149520       , l_array_source_6
149521       , l_array_source_7
149522       , l_array_source_8
149526       LIMIT l_rows;
149523       , l_array_source_9
149524       , l_array_source_10
149525       , l_array_source_12
149527 --
149528 IF (C_LEVEL_EVENT >= g_log_level) THEN
149529    trace
149530    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
149531    ,p_level    => C_LEVEL_EVENT
149532    ,p_module   => l_log_module);
149533 END IF;
149534 --
149535 EXIT WHEN l_array_entity_id.COUNT = 0;
149536 
149537 -- initialize arrays
149538 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
149539 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
149540 
149541 --
149542 -- Bug 4458708
149543 --
149544 XLA_AE_LINES_PKG.g_LineNumber := 0;
149545 
149546 
149547 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
149548 g_last_hdr_idx := l_array_event_id.LAST;
149549 --
149550 -- loop for the headers. Each iteration is for each header extract row
149551 -- fetched in header cursor
149552 --
149553 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
149554 
149555 --
149556 -- set event info as cache for other routines to refer event attributes
149557 --
149558 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
149559    (p_application_id           => p_application_id
149560    ,p_primary_ledger_id        => p_primary_ledger_id
149561    ,p_base_ledger_id           => p_base_ledger_id
149562    ,p_target_ledger_id         => p_target_ledger_id
149563    ,p_entity_id                => l_array_entity_id(hdr_idx)
149564    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
149565    ,p_entity_code              => l_array_entity_code(hdr_idx)
149566    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
149567    ,p_event_id                 => l_array_event_id(hdr_idx)
149568    ,p_event_class_code         => l_array_class_code(hdr_idx)
149569    ,p_event_type_code          => l_array_event_type(hdr_idx)
149570    ,p_event_number             => l_array_event_number(hdr_idx)
149571    ,p_event_date               => l_array_event_date(hdr_idx)
149572    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
149573    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
149574    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
149575    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
149576    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
149577    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
149578    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
149579    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
149580    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
149581    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
149582    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
149583    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
149584    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
149585    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
149586    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
149587 
149588 --
149589 -- set the status of entry to C_VALID (0)
149590 --
149591 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
149592 
149593 --
149594 -- initialize a row for ae header
149595 --
149596 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
149597 
149598 l_event_id := l_array_event_id(hdr_idx);
149599 
149600 --
149601 -- storing the hdr_idx for event. May be used by line cursor.
149602 --
149603 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
149604 
149605 --
149606 -- store sources from header extract. This can be improved to
149607 -- store only those sources from header extract that may be used in lines
149608 --
149609 
149610 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
149611 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
149612 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
149613 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
149614 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
149615 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
149616 
149617 --
149618 -- initilaize the status of ae headers for diffrent balance types
149619 -- the status is initialised to C_NOT_CREATED (2)
149620 --
149621 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
149622 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
149623 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
149624 
149625 --
149626 -- call api to validate and store accounting attributes for header
149627 --
149628 
149629 ------------------------------------------------------------
149630 -- Accrual Reversal : to get date for Standard Source (NONE)
149631 ------------------------------------------------------------
149632 l_acc_rev_gl_date_source := NULL;
149633 
149634      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
149635       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
149636 
149637 
149638 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
149639 
149640 XLA_AE_HEADER_PKG.SetJeCategoryName;
149641 
149645 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
149642 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
149643 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
149644 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
149646 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
149647 
149648 
149649 -- No header level analytical criteria
149650 
149651 --
149652 --accounting attribute enhancement, bug 3612931
149653 --
149654 l_trx_reversal_source := SUBSTR(NULL, 1,30);
149655 
149656 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
149657    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
149658 
149659    xla_accounting_err_pkg.build_message
149660       (p_appli_s_name            => 'XLA'
149661       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
149662       ,p_token_1                 => 'ACCT_ATTR_NAME'
149663       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
149664       ,p_token_2                 => 'PRODUCT_NAME'
149665       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
149666       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
149667       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
149668       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
149669 
149670 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
149671    --
149672    -- following sets the accounting attributes needed to reverse
149673    -- accounting for a distributeion
149674    --
149675    xla_ae_lines_pkg.SetTrxReversalAttrs
149676       (p_event_id              => l_event_id
149677       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
149678       ,p_trx_reversal_source   => l_trx_reversal_source);
149679 
149680 END IF;
149681 
149682 
149683 ----------------------------------------------------------------
149684 -- 4262811 -  update the header statuses to invalid in need be
149685 ----------------------------------------------------------------
149686 --
149687 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
149688 
149689 
149690   -----------------------------------------------
149691   -- No accrual reversal for the event class/type
149692   -----------------------------------------------
149693 ----------------------------------------------------------------
149694 
149695 --
149696 -- this ends the header loop iteration for one bulk fetch
149697 --
149698 END LOOP;
149699 
149700 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
149701 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
149702 
149703 --
149704 -- insert dummy rows into lines gt table that were created due to
149705 -- transaction reversals
149706 --
149707 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
149708    l_result := XLA_AE_LINES_PKG.InsertLines;
149709 END IF;
149710 
149711 --
149712 -- reset the temp_line_num for each set of events fetched from header
149713 -- cursor rather than doing it for each new event in line cursor
149714 -- Bug 3939231
149715 --
149716 xla_ae_lines_pkg.g_temp_line_num := 0;
149717 
149718 
149719 
149720 --
149721 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
149722 --
149723 --
149724 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149725 
149726       trace
149727          (p_msg      => 'SQL - FETCH line_cur'
149728          ,p_level    => C_LEVEL_STATEMENT
149729          ,p_module   => l_log_module);
149730 
149731 END IF;
149732 --
149733 --
149734 LOOP
149735   --
149736   FETCH line_cur BULK COLLECT INTO
149737         l_array_entity_id
149738       , l_array_legal_entity_id
149739       , l_array_entity_code
149740       , l_array_transaction_num
149741       , l_array_event_id
149742       , l_array_class_code
149743       , l_array_event_type
149744       , l_array_event_number
149745       , l_array_event_date
149746       , l_array_transaction_date
149747       , l_array_reference_num_1
149748       , l_array_reference_num_2
149749       , l_array_reference_num_3
149750       , l_array_reference_num_4
149751       , l_array_reference_char_1
149752       , l_array_reference_char_2
149753       , l_array_reference_char_3
149754       , l_array_reference_char_4
149755       , l_array_reference_date_1
149756       , l_array_reference_date_2
149757       , l_array_reference_date_3
149758       , l_array_reference_date_4
149759       , l_array_event_created_by
149760       , l_array_budgetary_control_flag
149761       , l_array_extract_line_num 
149762       , l_array_source_1
149763       , l_array_source_2
149764       , l_array_source_3
149765       , l_array_source_5
149766       , l_array_source_11
149767       LIMIT l_rows;
149768 
149769   --
149770   IF (C_LEVEL_EVENT >= g_log_level) THEN
149771             trace
149772                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
149773                ,p_level    => C_LEVEL_EVENT
149774                ,p_module   => l_log_module);
149775   END IF;
149776   --
149777   EXIT WHEN l_array_entity_id.count = 0;
149778 
149782 -- Bug 4458708
149779   XLA_AE_LINES_PKG.g_rec_lines := null;
149780 
149781 --
149783 --
149784 XLA_AE_LINES_PKG.g_LineNumber := 0;
149785 --
149786 --
149787 
149788 FOR Idx IN 1..l_array_event_id.count LOOP
149789    --
149790    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
149791    --
149792    l_event_id := l_array_event_id(idx);  -- 5648433
149793 
149794    --
149795    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
149796    --
149797 
149798    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
149799              (g_array_event(l_event_id).array_value_num('header_index'))
149800          ,'N'
149801          ) <> 'Y'
149802    THEN
149803       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149804          trace
149805             (p_msg      => 'Trancaction revesal option is not Y '
149806             ,p_level    => C_LEVEL_STATEMENT
149807             ,p_module   => l_log_module);
149808       END IF;
149809 
149810 --
149811 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
149812 --
149813 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
149814 --
149815 -- set event info as cache for other routines to refer event attributes
149816 --
149817 
149818 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
149819    l_previous_event_id := l_event_id;
149820 
149821    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
149822       (p_application_id           => p_application_id
149823       ,p_primary_ledger_id        => p_primary_ledger_id
149824       ,p_base_ledger_id           => p_base_ledger_id
149825       ,p_target_ledger_id         => p_target_ledger_id
149826       ,p_entity_id                => l_array_entity_id(Idx)
149827       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
149828       ,p_entity_code              => l_array_entity_code(Idx)
149829       ,p_transaction_num          => l_array_transaction_num(Idx)
149830       ,p_event_id                 => l_array_event_id(Idx)
149831       ,p_event_class_code         => l_array_class_code(Idx)
149832       ,p_event_type_code          => l_array_event_type(Idx)
149833       ,p_event_number             => l_array_event_number(Idx)
149834       ,p_event_date               => l_array_event_date(Idx)
149835       ,p_transaction_date         => l_array_transaction_date(Idx)
149836       ,p_reference_num_1          => l_array_reference_num_1(Idx)
149837       ,p_reference_num_2          => l_array_reference_num_2(Idx)
149838       ,p_reference_num_3          => l_array_reference_num_3(Idx)
149839       ,p_reference_num_4          => l_array_reference_num_4(Idx)
149840       ,p_reference_char_1         => l_array_reference_char_1(Idx)
149841       ,p_reference_char_2         => l_array_reference_char_2(Idx)
149842       ,p_reference_char_3         => l_array_reference_char_3(Idx)
149843       ,p_reference_char_4         => l_array_reference_char_4(Idx)
149844       ,p_reference_date_1         => l_array_reference_date_1(Idx)
149845       ,p_reference_date_2         => l_array_reference_date_2(Idx)
149846       ,p_reference_date_3         => l_array_reference_date_3(Idx)
149847       ,p_reference_date_4         => l_array_reference_date_4(Idx)
149848       ,p_event_created_by         => l_array_event_created_by(Idx)
149849       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
149850        --
149851 END IF;
149852 
149853 
149854 
149855 --
149856 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
149857 
149858 l_acct_reversal_source := SUBSTR(NULL, 1,30);
149859 
149860 IF l_continue_with_lines THEN
149861    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
149862       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
149863 
149864       xla_accounting_err_pkg.build_message
149865          (p_appli_s_name            => 'XLA'
149866          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
149867          ,p_token_1                 => 'LINE_NUMBER'
149868          ,p_value_1                 => l_array_extract_line_num(Idx)
149869          ,p_token_2                 => 'PRODUCT_NAME'
149870          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
149871          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
149872          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
149873          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
149874 
149875    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
149876       --
149877       -- following sets the accounting attributes needed to reverse
149878       -- accounting for a distributeion
149879       --
149880 
149881       --
149882       -- 5217187
149883       --
149884       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
149885       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
149886                                        g_array_event(l_event_id).array_value_num('header_index'));
149887       --
149888       --
149889 
149890       -- No reversal code generated
149891 
149892       xla_ae_lines_pkg.SetAcctReversalAttrs
149893          (p_event_id             => l_event_id
149894          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
149895          ,p_calculate_acctd_flag => l_calculate_acctd_flag
149896          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
149897    END IF;
149898 
149902 --
149899    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
149900        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
149901 
149903 AcctLineType_116 (
149904  p_application_id  => p_application_id
149905  ,p_event_id     => l_event_id
149906  ,p_calculate_acctd_flag => l_calculate_acctd_flag
149907  ,p_calculate_g_l_flag => l_calculate_g_l_flag
149908  ,p_actual_flag => l_actual_flag
149909  ,p_balance_type_code => l_balance_type_code
149910  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149911  
149912  , p_source_1 => l_array_source_1(Idx)
149913  , p_source_2 => l_array_source_2(Idx)
149914  , p_source_3 => l_array_source_3(Idx)
149915  , p_source_5 => l_array_source_5(Idx)
149916  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
149917  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149918  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
149919  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
149920  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
149921  , p_source_11 => l_array_source_11(Idx)
149922  );
149923 If(l_balance_type_code = 'A') THEN
149924   l_actual_gain_loss_ref := l_gain_or_loss_ref;
149925 END IF;
149926 
149927 --
149928 
149929 
149930 --
149931 AcctLineType_130 (
149932  p_application_id  => p_application_id
149933  ,p_event_id     => l_event_id
149934  ,p_calculate_acctd_flag => l_calculate_acctd_flag
149935  ,p_calculate_g_l_flag => l_calculate_g_l_flag
149936  ,p_actual_flag => l_actual_flag
149937  ,p_balance_type_code => l_balance_type_code
149938  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149939  
149940  , p_source_1 => l_array_source_1(Idx)
149941  , p_source_2 => l_array_source_2(Idx)
149942  , p_source_3 => l_array_source_3(Idx)
149943  , p_source_5 => l_array_source_5(Idx)
149944  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
149945  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149946  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
149947  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
149948  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
149949  , p_source_11 => l_array_source_11(Idx)
149950  );
149951 If(l_balance_type_code = 'A') THEN
149952   l_actual_gain_loss_ref := l_gain_or_loss_ref;
149953 END IF;
149954 
149955 --
149956 
149957 
149958 --
149959 AcctLineType_178 (
149960  p_application_id  => p_application_id
149961  ,p_event_id     => l_event_id
149962  ,p_calculate_acctd_flag => l_calculate_acctd_flag
149963  ,p_calculate_g_l_flag => l_calculate_g_l_flag
149964  ,p_actual_flag => l_actual_flag
149965  ,p_balance_type_code => l_balance_type_code
149966  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149967  
149968  , p_source_1 => l_array_source_1(Idx)
149969  , p_source_2 => l_array_source_2(Idx)
149970  , p_source_3 => l_array_source_3(Idx)
149971  , p_source_5 => l_array_source_5(Idx)
149972  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
149973  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149974  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
149975  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
149976  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
149977  , p_source_11 => l_array_source_11(Idx)
149978  );
149979 If(l_balance_type_code = 'A') THEN
149980   l_actual_gain_loss_ref := l_gain_or_loss_ref;
149981 END IF;
149982 
149983 --
149984 
149985 
149986 --
149987 AcctLineType_208 (
149988  p_application_id  => p_application_id
149989  ,p_event_id     => l_event_id
149990  ,p_calculate_acctd_flag => l_calculate_acctd_flag
149991  ,p_calculate_g_l_flag => l_calculate_g_l_flag
149992  ,p_actual_flag => l_actual_flag
149993  ,p_balance_type_code => l_balance_type_code
149994  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149995  
149996  , p_source_1 => l_array_source_1(Idx)
149997  , p_source_2 => l_array_source_2(Idx)
149998  , p_source_3 => l_array_source_3(Idx)
149999  , p_source_5 => l_array_source_5(Idx)
150000  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
150001  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
150002  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
150003  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
150004  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
150005  , p_source_11 => l_array_source_11(Idx)
150006  );
150007 If(l_balance_type_code = 'A') THEN
150008   l_actual_gain_loss_ref := l_gain_or_loss_ref;
150009 END IF;
150010 
150011 --
150012 
150013 
150014 --
150015 AcctLineType_221 (
150016  p_application_id  => p_application_id
150017  ,p_event_id     => l_event_id
150018  ,p_calculate_acctd_flag => l_calculate_acctd_flag
150019  ,p_calculate_g_l_flag => l_calculate_g_l_flag
150020  ,p_actual_flag => l_actual_flag
150021  ,p_balance_type_code => l_balance_type_code
150022  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
150023  
150024  , p_source_1 => l_array_source_1(Idx)
150025  , p_source_2 => l_array_source_2(Idx)
150026  , p_source_3 => l_array_source_3(Idx)
150027  , p_source_5 => l_array_source_5(Idx)
150028  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
150029  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
150033  , p_source_11 => l_array_source_11(Idx)
150030  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
150031  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
150032  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
150034  );
150035 If(l_balance_type_code = 'A') THEN
150036   l_actual_gain_loss_ref := l_gain_or_loss_ref;
150037 END IF;
150038 
150039 --
150040 
150041       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
150042       -- or secondary ledger that has different currency with primary
150043       -- or alc that is calculated by sla
150044       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
150045             (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'))
150046 
150047 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
150048 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
150049           AND (l_actual_flag = 'A')) THEN
150050         XLA_AE_LINES_PKG.CreateGainOrLossLines(
150051           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
150052          ,p_application_id   => p_application_id
150053          ,p_amb_context_code => 'DEFAULT'
150054          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
150055          ,p_event_class_code => C_EVENT_CLASS_CODE
150056          ,p_event_type_code  => C_EVENT_TYPE_CODE
150057          
150058          ,p_gain_ccid        => -1
150059          ,p_loss_ccid        => -1
150060 
150061          ,p_actual_flag      => l_actual_flag
150062          ,p_enc_flag         => null
150063          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
150064          ,p_enc_g_l_ref      => null
150065          );
150066       END IF;
150067    END IF;
150068 END IF;
150069 
150070    ELSE
150071       --
150072       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
150073       --
150074       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150075          trace
150076             (p_msg      => 'Trancaction revesal option is Y'
150077             ,p_level    => C_LEVEL_STATEMENT
150078             ,p_module   => l_log_module);
150079       END IF;
150080    END IF;
150081 
150082 END LOOP;
150083 l_result := XLA_AE_LINES_PKG.InsertLines ;
150084 end loop;
150085 close line_cur;
150086 
150087 
150088 --
150089 -- insert headers into xla_ae_headers_gt table
150090 --
150091 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
150092 
150093 -- insert into errors table here.
150094 
150095 END LOOP;
150096 
150097 --
150098 -- 4865292
150099 --
150100 -- Compare g_hdr_extract_count with event count in
150101 -- CreateHeadersAndLines.
150102 --
150103 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
150104 
150105 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150106    trace (p_msg     => '# rows extracted from header extract objects '
150107                     || ' (running total): '
150108                     || g_hdr_extract_count
150109          ,p_level   => C_LEVEL_STATEMENT
150110          ,p_module  => l_log_module);
150111 END IF;
150112 
150113 CLOSE header_cur;
150114 --
150115 
150116 --
150117 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150118    trace
150119       (p_msg      => 'END of EventType_272'
150120       ,p_level    => C_LEVEL_PROCEDURE
150121       ,p_module   => l_log_module);
150122 END IF;
150123 --
150124 RETURN l_result;
150125 EXCEPTION
150126 WHEN xla_exceptions_pkg.application_exception THEN
150127    
150128 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
150129 
150130    
150131 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
150132 
150133    RAISE;
150134 
150135 WHEN NO_DATA_FOUND THEN
150136 
150137 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
150138 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
150139 
150140 FOR header_record IN header_cur
150141 LOOP
150142     l_array_header_events(header_record.event_id) := header_record.event_id;
150143 END LOOP;
150144 
150145 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
150146 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
150147 
150148 fnd_file.put_line(fnd_file.LOG, '                    ');
150149 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
150150 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
150151 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
150152 
150153 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
150154 LOOP
150155 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
150156 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
150157         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
150158 	END IF;
150159 END LOOP;
150160 
150161 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
150162 fnd_file.put_line(fnd_file.LOG, '                    ');
150163 
150164 
150165 xla_exceptions_pkg.raise_message
150169 WHEN OTHERS THEN
150166       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_272');
150167 
150168 
150170    xla_exceptions_pkg.raise_message
150171       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_272');
150172 END EventType_272;
150173 --
150174 
150175 ---------------------------------------
150176 --
150177 -- PRIVATE PROCEDURE
150178 --         insert_sources_273
150179 --
150180 ----------------------------------------
150181 --
150182 PROCEDURE insert_sources_273(
150183                                 p_target_ledger_id       IN NUMBER
150184                               , p_language               IN VARCHAR2
150185                               , p_sla_ledger_id          IN NUMBER
150186                               , p_pad_start_date         IN DATE
150187                               , p_pad_end_date           IN DATE
150188                          )
150189 IS
150190 
150191 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_SENDER_SHIP_NO_TP';
150192 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
150193 p_apps_owner                   VARCHAR2(30);
150194 l_log_module                   VARCHAR2(240);
150195 BEGIN
150196 IF g_log_enabled THEN
150197       l_log_module := C_DEFAULT_MODULE||'.insert_sources_273';
150198 END IF;
150199 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150200 
150201       trace
150202          (p_msg      => 'BEGIN of insert_sources_273'
150203          ,p_level    => C_LEVEL_PROCEDURE
150204          ,p_module   => l_log_module);
150205 
150206 END IF;
150207 
150208 -- select APPS owner
150209 SELECT oracle_username
150210   INTO p_apps_owner
150211   FROM fnd_oracle_userid
150212  WHERE read_only_flag = 'U'
150213 ;
150214 
150215 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150216       trace
150217          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
150218                         ' - p_language = '||p_language||
150219                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
150220                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
150221                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
150222                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
150223          ,p_level    => C_LEVEL_STATEMENT
150224          ,p_module   => l_log_module);
150225 END IF;
150226 
150227 
150228 --
150229 INSERT INTO xla_diag_sources --hdr1
150230 (
150231         event_id
150232       , ledger_id
150233       , sla_ledger_id
150234       , description_language
150235       , object_name
150236       , object_type_code
150237       , line_number
150238       , source_application_id
150239       , source_type_code
150240       , source_code
150241       , source_value
150242       , source_meaning
150243       , created_by
150244       , creation_date
150245       , last_update_date
150246       , last_updated_by
150247       , last_update_login
150248       , program_update_date
150249       , program_application_id
150250       , program_id
150251       , request_id
150252 )
150253 SELECT
150254         event_id
150255       , p_target_ledger_id
150256       , p_sla_ledger_id
150257       , p_language
150258       , object_name
150259       , object_type_code
150260       , line_number
150261       , source_application_id
150262       , source_type_code
150263       , source_code
150264       , SUBSTR(source_value ,1,1996)
150265       , SUBSTR(source_meaning,1,200)
150266       , xla_environment_pkg.g_Usr_Id
150267       , TRUNC(SYSDATE)
150268       , TRUNC(SYSDATE)
150269       , xla_environment_pkg.g_Usr_Id
150270       , xla_environment_pkg.g_Login_Id
150271       , TRUNC(SYSDATE)
150272       , xla_environment_pkg.g_Prog_Appl_Id
150273       , xla_environment_pkg.g_Prog_Id
150274       , xla_environment_pkg.g_Req_Id
150275   FROM (
150276        SELECT xet.event_id                  event_id
150277             , 0                             line_number
150278             , CASE r
150279                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
150280                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
150281                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
150282                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
150283                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
150284                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
150285                 
150286                ELSE null
150287               END                           object_name
150288             , CASE r
150289                 WHEN 1 THEN 'HEADER' 
150290                 WHEN 2 THEN 'HEADER' 
150291                 WHEN 3 THEN 'HEADER' 
150292                 WHEN 4 THEN 'HEADER' 
150293                 WHEN 5 THEN 'HEADER' 
150294                 WHEN 6 THEN 'HEADER' 
150295                 
150296                 ELSE null
150297               END                           object_type_code
150298             , CASE r
150299                 WHEN 1 THEN '555' 
150300                 WHEN 2 THEN '555' 
150301                 WHEN 3 THEN '555' 
150302                 WHEN 4 THEN '555' 
150303                 WHEN 5 THEN '555' 
150304                 WHEN 6 THEN '555' 
150305                 
150306                 ELSE null
150307               END                           source_application_id
150308             , 'S'             source_type_code
150309             , CASE r
150313                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
150310                 WHEN 1 THEN 'ENTITY_CODE' 
150311                 WHEN 2 THEN 'CURRENCY_CODE' 
150312                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
150314                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
150315                 WHEN 6 THEN 'TRANSACTION_DATE' 
150316                 
150317                 ELSE null
150318               END                           source_code
150319             , CASE r
150320                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
150321                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
150322                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
150323                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
150324                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
150325                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
150326                 
150327                 ELSE null
150328               END                           source_value
150329             , CASE r
150330                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
150331                           1010186
150332                          ,TO_CHAR(h1.CURRENCY_CODE)
150333                          ,'CURRENCY_CODE'
150334                          ,'S'
150335                          ,555)
150336                 
150337                 ELSE null
150338               END               source_meaning
150339         FROM xla_events_gt     xet  
150340       , GMF_XLA_EXTRACT_HEADERS  h1
150341             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
150342        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
150343          AND xet.event_type_code = C_EVENT_TYPE_CODE
150344             AND h1.event_id = xet.event_id
150345 
150346 )
150347 ;
150348 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150349 
150350       trace
150351          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
150352          ,p_level    => C_LEVEL_STATEMENT
150353          ,p_module   => l_log_module);
150354 
150355 END IF;
150356 --
150357 
150358 
150359 
150360 --
150361 INSERT INTO xla_diag_sources --line1
150362 (
150363         event_id
150364       , ledger_id
150365       , sla_ledger_id
150366       , description_language
150367       , object_name
150368       , object_type_code
150369       , line_number
150370       , source_application_id
150371       , source_type_code
150372       , source_code
150373       , source_value
150374       , source_meaning
150375       , created_by
150376       , creation_date
150377       , last_update_date
150378       , last_updated_by
150379       , last_update_login
150380       , program_update_date
150381       , program_application_id
150382       , program_id
150383       , request_id
150384 )
150385 SELECT  event_id
150386       , p_target_ledger_id
150387       , p_sla_ledger_id
150388       , p_language
150389       , object_name
150390       , object_type_code
150391       , line_number
150392       , source_application_id
150393       , source_type_code
150394       , source_code
150395       , SUBSTR(source_value,1,1996)
150396       , SUBSTR(source_meaning,1,200)
150397       , xla_environment_pkg.g_Usr_Id
150398       , TRUNC(SYSDATE)
150399       , TRUNC(SYSDATE)
150400       , xla_environment_pkg.g_Usr_Id
150401       , xla_environment_pkg.g_Login_Id
150402       , TRUNC(SYSDATE)
150403       , xla_environment_pkg.g_Prog_Appl_Id
150404       , xla_environment_pkg.g_Prog_Id
150405       , xla_environment_pkg.g_Req_Id
150406   FROM (
150407        SELECT xet.event_id                  event_id
150408             , l2.line_number                 line_number
150409             , CASE r
150410                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
150411                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
150412                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
150413                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
150414                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
150415                 
150416                ELSE null
150417               END                           object_name
150418             , CASE r
150419                 WHEN 1 THEN 'LINE' 
150420                 WHEN 2 THEN 'LINE' 
150421                 WHEN 3 THEN 'LINE' 
150422                 WHEN 4 THEN 'LINE' 
150423                 WHEN 5 THEN 'LINE' 
150424                 
150425                 ELSE null
150426               END                           object_type_code
150427             , CASE r
150428                 WHEN 1 THEN '555' 
150429                 WHEN 2 THEN '555' 
150430                 WHEN 3 THEN '555' 
150431                 WHEN 4 THEN '555' 
150432                 WHEN 5 THEN '555' 
150433                 
150434                 ELSE null
150435               END                           source_application_id
150436             , 'S'             source_type_code
150437             , CASE r
150438                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
150439                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
150440                 WHEN 3 THEN 'ENTERED_AMOUNT' 
150441                 WHEN 4 THEN 'LINE_ID' 
150442                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
150443                 
150444                 ELSE null
150445               END                           source_code
150446             , CASE r
150447                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
150448                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
150449                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
150453                 ELSE null
150450                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
150451                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
150452                 
150454               END                           source_value
150455             , null              source_meaning
150456          FROM  xla_events_gt     xet  
150457         , GMF_XLA_EXTRACT_LINES  l2
150458             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
150459         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
150460           AND xet.event_type_code = C_EVENT_TYPE_CODE
150461             AND l2.event_id          = xet.event_id
150462 
150463 )
150464 ;
150465 --
150466 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150467 
150468       trace
150469          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
150470          ,p_level    => C_LEVEL_STATEMENT
150471          ,p_module   => l_log_module);
150472 
150473 END IF;
150474 
150475 
150476 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150477       trace
150478          (p_msg      => 'END of insert_sources_273'
150479          ,p_level    => C_LEVEL_PROCEDURE
150480          ,p_module   => l_log_module);
150481 END IF;
150482 EXCEPTION
150483   WHEN xla_exceptions_pkg.application_exception THEN
150484       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
150485             trace
150486                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
150487                ,p_level    => C_LEVEL_EXCEPTION
150488                ,p_module   => l_log_module);
150489       END IF;
150490       RAISE;
150491   WHEN OTHERS THEN
150492       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
150493             trace
150494                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
150495                ,p_level    => C_LEVEL_EXCEPTION
150496                ,p_module   => l_log_module);
150497        END IF;
150498        xla_exceptions_pkg.raise_message
150499            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_273');
150500 END insert_sources_273;
150501 --
150502 
150503 ---------------------------------------
150504 --
150505 -- PRIVATE FUNCTION
150506 --         EventType_273
150507 --
150508 ----------------------------------------
150509 --
150510 FUNCTION EventType_273
150511        (p_application_id         IN NUMBER
150512        ,p_base_ledger_id         IN NUMBER
150513        ,p_target_ledger_id       IN NUMBER
150514        ,p_language               IN VARCHAR2
150515        ,p_currency_code          IN VARCHAR2
150516        ,p_sla_ledger_id          IN NUMBER
150517        ,p_pad_start_date         IN DATE
150518        ,p_pad_end_date           IN DATE
150519        ,p_primary_ledger_id      IN NUMBER)
150520 RETURN BOOLEAN IS
150521 --
150522 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_SENDER_SHIP_NO_TP';
150523 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
150524 
150525 l_calculate_acctd_flag   VARCHAR2(1) :='N';
150526 l_calculate_g_l_flag     VARCHAR2(1) :='N';
150527 --
150528 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150529 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150530 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150531 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150532 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150533 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150534 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150535 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150536 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150537 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150538 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150539 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150540 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150541 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150542 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150543 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150544 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150545 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150546 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150547 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150548 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150549 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150550 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
150551 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150552 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
150553 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
150554 
150555 l_event_id                             NUMBER;
150556 l_previous_event_id                    NUMBER;
150557 l_first_event_id                       NUMBER;
150558 l_last_event_id                        NUMBER;
150559 
150560 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
150561 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
150562 --
150563 --
150567 l_event_class_name          VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment';
150564 l_result                    BOOLEAN := TRUE;
150565 l_rows                      NUMBER  := 1000;
150566 l_event_type_name           VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment, no Transfer Pricing';
150568 l_description               VARCHAR2(4000);
150569 l_transaction_reversal      NUMBER;
150570 l_ae_header_id              NUMBER;
150571 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
150572 l_log_module                VARCHAR2(240);
150573 --
150574 l_acct_reversal_source      VARCHAR2(30);
150575 l_trx_reversal_source       VARCHAR2(30);
150576 
150577 l_continue_with_lines       BOOLEAN := TRUE;
150578 --
150579 l_acc_rev_gl_date_source    DATE;                      -- 4262811
150580 --
150581 type t_array_event_id is table of number index by binary_integer;
150582 
150583 l_rec_array_event                    t_rec_array_event;
150584 l_null_rec_array_event               t_rec_array_event;
150585 l_array_ae_header_id                 xla_number_array_type;
150586 l_actual_flag                        VARCHAR2(1) := NULL;
150587 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
150588 l_balance_type_code                  VARCHAR2(1) :=NULL;
150589 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
150590 
150591 --
150592 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
150593 --
150594 
150595 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
150596 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
150597 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
150598 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
150599 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
150600 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
150601 
150602 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
150603 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
150604 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
150605 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
150606 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
150607 
150608 l_array_source_6              t_array_source_6;
150609 l_array_source_7              t_array_source_7;
150610 l_array_source_8              t_array_source_8;
150611 l_array_source_9              t_array_source_9;
150612 l_array_source_10              t_array_source_10;
150613 l_array_source_12              t_array_source_12;
150614 
150615 l_array_source_1      t_array_source_1;
150616 l_array_source_2      t_array_source_2;
150617 l_array_source_3      t_array_source_3;
150618 l_array_source_5      t_array_source_5;
150619 l_array_source_11      t_array_source_11;
150620 
150621 --
150622 CURSOR header_cur
150623 IS
150624 SELECT /*+ leading(xet) cardinality(xet,1) */
150625 -- Event Type Code: FOB_SHIP_SENDER_SHIP_NO_TP
150626 -- Event Class Code: FOB_SHIP_SENDER_SHIP
150627     xet.entity_id
150628   , xet.legal_entity_id
150629   , xet.entity_code
150630   , xet.transaction_number
150631   , xet.event_id
150632   , xet.event_class_code
150633   , xet.event_type_code
150634   , xet.event_number
150635   , xet.event_date
150636   , xet.transaction_date
150637   , xet.reference_num_1
150638   , xet.reference_num_2
150639   , xet.reference_num_3
150640   , xet.reference_num_4
150641   , xet.reference_char_1
150642   , xet.reference_char_2
150643   , xet.reference_char_3
150644   , xet.reference_char_4
150645   , xet.reference_date_1
150646   , xet.reference_date_2
150647   , xet.reference_date_3
150648   , xet.reference_date_4
150649   , xet.event_created_by
150650   , xet.budgetary_control_flag 
150651   , h1.ENTITY_CODE    source_6
150652   , h1.CURRENCY_CODE    source_7
150653   , h1.CURRENCY_CONVERSION_DATE    source_8
150654   , h1.CURRENCY_CONVERSION_RATE    source_9
150655   , h1.CURRENCY_CONVERSION_TYPE    source_10
150656   , h1.TRANSACTION_DATE    source_12
150657   FROM xla_events_gt     xet 
150658   , GMF_XLA_EXTRACT_HEADERS  h1
150659  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
150660    and xet.event_type_code = C_EVENT_TYPE_CODE
150661    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
150662 
150663  ORDER BY event_id
150664 ;
150665 
150666 
150667 --
150668 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
150669 IS
150670 SELECT /*+ leading(xet) cardinality(xet,1) */
150671 -- Event Type Code: FOB_SHIP_SENDER_SHIP_NO_TP
150672 -- Event Class Code: FOB_SHIP_SENDER_SHIP
150673     xet.entity_id
150674    ,xet.legal_entity_id
150675    ,xet.entity_code
150676    ,xet.transaction_number
150677    ,xet.event_id
150678    ,xet.event_class_code
150679    ,xet.event_type_code
150680    ,xet.event_number
150681    ,xet.event_date
150682    ,xet.transaction_date
150683    ,xet.reference_num_1
150684    ,xet.reference_num_2
150685    ,xet.reference_num_3
150686    ,xet.reference_num_4
150687    ,xet.reference_char_1
150691    ,xet.reference_date_1
150688    ,xet.reference_char_2
150689    ,xet.reference_char_3
150690    ,xet.reference_char_4
150692    ,xet.reference_date_2
150693    ,xet.reference_date_3
150694    ,xet.reference_date_4
150695    ,xet.event_created_by
150696    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
150697   , l2.TRANSACTION_ACCOUNT_ID    source_1
150698   , l2.JOURNAL_LINE_TYPE    source_2
150699   , l2.ENTERED_AMOUNT    source_3
150700   , l2.LINE_ID    source_5
150701   , l2.ACCOUNTED_AMOUNT    source_11
150702   FROM xla_events_gt     xet 
150703   , GMF_XLA_EXTRACT_LINES  l2
150704  WHERE xet.event_id between x_first_event_id and x_last_event_id
150705    and xet.event_date between p_pad_start_date and p_pad_end_date
150706    and xet.event_type_code = C_EVENT_TYPE_CODE
150707    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
150708 ;
150709 
150710 --
150711 BEGIN
150712 IF g_log_enabled THEN
150713    l_log_module := C_DEFAULT_MODULE||'.EventType_273';
150714 END IF;
150715 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150716    trace
150717       (p_msg      => 'BEGIN of EventType_273'
150718       ,p_level    => C_LEVEL_PROCEDURE
150719       ,p_module   => l_log_module);
150720 END IF;
150721 
150722 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150723    trace
150724       (p_msg      => 'p_application_id = '||p_application_id||
150725                      ' - p_base_ledger_id = '||p_base_ledger_id||
150726                      ' - p_target_ledger_id  = '||p_target_ledger_id||
150727                      ' - p_language = '||p_language||
150728                      ' - p_currency_code = '||p_currency_code||
150729                      ' - p_sla_ledger_id = '||p_sla_ledger_id
150730       ,p_level    => C_LEVEL_STATEMENT
150731       ,p_module   => l_log_module);
150732 END IF;
150733 --
150734 -- initialze arrays
150735 --
150736 g_array_event.DELETE;
150737 l_rec_array_event := l_null_rec_array_event;
150738 --
150739 --------------------------------------
150740 -- 4262811 Initialze MPA Line Number
150741 --------------------------------------
150742 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
150743 
150744 --
150745 
150746 --
150747 OPEN header_cur;
150748 --
150749 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150750    trace
150751    (p_msg      => 'SQL - FETCH header_cur'
150752    ,p_level    => C_LEVEL_STATEMENT
150753    ,p_module   => l_log_module);
150754 END IF;
150755 --
150756 LOOP
150757 FETCH header_cur BULK COLLECT INTO
150758         l_array_entity_id
150759       , l_array_legal_entity_id
150760       , l_array_entity_code
150761       , l_array_transaction_num
150762       , l_array_event_id
150763       , l_array_class_code
150764       , l_array_event_type
150765       , l_array_event_number
150766       , l_array_event_date
150767       , l_array_transaction_date
150768       , l_array_reference_num_1
150769       , l_array_reference_num_2
150770       , l_array_reference_num_3
150771       , l_array_reference_num_4
150772       , l_array_reference_char_1
150773       , l_array_reference_char_2
150774       , l_array_reference_char_3
150775       , l_array_reference_char_4
150776       , l_array_reference_date_1
150777       , l_array_reference_date_2
150778       , l_array_reference_date_3
150779       , l_array_reference_date_4
150780       , l_array_event_created_by
150781       , l_array_budgetary_control_flag 
150782       , l_array_source_6
150783       , l_array_source_7
150784       , l_array_source_8
150785       , l_array_source_9
150786       , l_array_source_10
150787       , l_array_source_12
150788       LIMIT l_rows;
150789 --
150790 IF (C_LEVEL_EVENT >= g_log_level) THEN
150791    trace
150792    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
150793    ,p_level    => C_LEVEL_EVENT
150794    ,p_module   => l_log_module);
150795 END IF;
150796 --
150797 EXIT WHEN l_array_entity_id.COUNT = 0;
150798 
150799 -- initialize arrays
150800 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
150801 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
150802 
150803 --
150804 -- Bug 4458708
150805 --
150806 XLA_AE_LINES_PKG.g_LineNumber := 0;
150807 
150808 
150809 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
150810 g_last_hdr_idx := l_array_event_id.LAST;
150811 --
150812 -- loop for the headers. Each iteration is for each header extract row
150813 -- fetched in header cursor
150814 --
150815 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
150816 
150817 --
150818 -- set event info as cache for other routines to refer event attributes
150819 --
150820 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
150821    (p_application_id           => p_application_id
150822    ,p_primary_ledger_id        => p_primary_ledger_id
150823    ,p_base_ledger_id           => p_base_ledger_id
150824    ,p_target_ledger_id         => p_target_ledger_id
150825    ,p_entity_id                => l_array_entity_id(hdr_idx)
150826    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
150827    ,p_entity_code              => l_array_entity_code(hdr_idx)
150828    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
150829    ,p_event_id                 => l_array_event_id(hdr_idx)
150830    ,p_event_class_code         => l_array_class_code(hdr_idx)
150834    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
150831    ,p_event_type_code          => l_array_event_type(hdr_idx)
150832    ,p_event_number             => l_array_event_number(hdr_idx)
150833    ,p_event_date               => l_array_event_date(hdr_idx)
150835    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
150836    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
150837    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
150838    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
150839    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
150840    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
150841    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
150842    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
150843    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
150844    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
150845    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
150846    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
150847    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
150848    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
150849 
150850 --
150851 -- set the status of entry to C_VALID (0)
150852 --
150853 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
150854 
150855 --
150856 -- initialize a row for ae header
150857 --
150858 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
150859 
150860 l_event_id := l_array_event_id(hdr_idx);
150861 
150862 --
150863 -- storing the hdr_idx for event. May be used by line cursor.
150864 --
150865 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
150866 
150867 --
150868 -- store sources from header extract. This can be improved to
150869 -- store only those sources from header extract that may be used in lines
150870 --
150871 
150872 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
150873 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
150874 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
150875 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
150876 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
150877 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
150878 
150879 --
150880 -- initilaize the status of ae headers for diffrent balance types
150881 -- the status is initialised to C_NOT_CREATED (2)
150882 --
150883 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
150884 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
150885 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
150886 
150887 --
150888 -- call api to validate and store accounting attributes for header
150889 --
150890 
150891 ------------------------------------------------------------
150892 -- Accrual Reversal : to get date for Standard Source (NONE)
150893 ------------------------------------------------------------
150894 l_acc_rev_gl_date_source := NULL;
150895 
150896      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
150897       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
150898 
150899 
150900 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
150901 
150902 XLA_AE_HEADER_PKG.SetJeCategoryName;
150903 
150904 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
150905 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
150906 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
150907 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
150908 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
150909 
150910 
150911 -- No header level analytical criteria
150912 
150913 --
150914 --accounting attribute enhancement, bug 3612931
150915 --
150916 l_trx_reversal_source := SUBSTR(NULL, 1,30);
150917 
150918 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
150919    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
150920 
150921    xla_accounting_err_pkg.build_message
150922       (p_appli_s_name            => 'XLA'
150923       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
150924       ,p_token_1                 => 'ACCT_ATTR_NAME'
150925       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
150926       ,p_token_2                 => 'PRODUCT_NAME'
150927       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
150928       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
150929       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
150930       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
150931 
150932 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
150933    --
150934    -- following sets the accounting attributes needed to reverse
150935    -- accounting for a distributeion
150936    --
150937    xla_ae_lines_pkg.SetTrxReversalAttrs
150938       (p_event_id              => l_event_id
150942 END IF;
150939       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
150940       ,p_trx_reversal_source   => l_trx_reversal_source);
150941 
150943 
150944 
150945 ----------------------------------------------------------------
150946 -- 4262811 -  update the header statuses to invalid in need be
150947 ----------------------------------------------------------------
150948 --
150949 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
150950 
150951 
150952   -----------------------------------------------
150953   -- No accrual reversal for the event class/type
150954   -----------------------------------------------
150955 ----------------------------------------------------------------
150956 
150957 --
150958 -- this ends the header loop iteration for one bulk fetch
150959 --
150960 END LOOP;
150961 
150962 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
150963 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
150964 
150965 --
150966 -- insert dummy rows into lines gt table that were created due to
150967 -- transaction reversals
150968 --
150969 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
150970    l_result := XLA_AE_LINES_PKG.InsertLines;
150971 END IF;
150972 
150973 --
150974 -- reset the temp_line_num for each set of events fetched from header
150975 -- cursor rather than doing it for each new event in line cursor
150976 -- Bug 3939231
150977 --
150978 xla_ae_lines_pkg.g_temp_line_num := 0;
150979 
150980 
150981 
150982 --
150983 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
150984 --
150985 --
150986 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150987 
150988       trace
150989          (p_msg      => 'SQL - FETCH line_cur'
150990          ,p_level    => C_LEVEL_STATEMENT
150991          ,p_module   => l_log_module);
150992 
150993 END IF;
150994 --
150995 --
150996 LOOP
150997   --
150998   FETCH line_cur BULK COLLECT INTO
150999         l_array_entity_id
151000       , l_array_legal_entity_id
151001       , l_array_entity_code
151002       , l_array_transaction_num
151003       , l_array_event_id
151004       , l_array_class_code
151005       , l_array_event_type
151006       , l_array_event_number
151007       , l_array_event_date
151008       , l_array_transaction_date
151009       , l_array_reference_num_1
151010       , l_array_reference_num_2
151011       , l_array_reference_num_3
151012       , l_array_reference_num_4
151013       , l_array_reference_char_1
151014       , l_array_reference_char_2
151015       , l_array_reference_char_3
151016       , l_array_reference_char_4
151017       , l_array_reference_date_1
151018       , l_array_reference_date_2
151019       , l_array_reference_date_3
151020       , l_array_reference_date_4
151021       , l_array_event_created_by
151022       , l_array_budgetary_control_flag
151023       , l_array_extract_line_num 
151024       , l_array_source_1
151025       , l_array_source_2
151026       , l_array_source_3
151027       , l_array_source_5
151028       , l_array_source_11
151029       LIMIT l_rows;
151030 
151031   --
151032   IF (C_LEVEL_EVENT >= g_log_level) THEN
151033             trace
151034                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
151035                ,p_level    => C_LEVEL_EVENT
151036                ,p_module   => l_log_module);
151037   END IF;
151038   --
151039   EXIT WHEN l_array_entity_id.count = 0;
151040 
151041   XLA_AE_LINES_PKG.g_rec_lines := null;
151042 
151043 --
151044 -- Bug 4458708
151045 --
151046 XLA_AE_LINES_PKG.g_LineNumber := 0;
151047 --
151048 --
151049 
151050 FOR Idx IN 1..l_array_event_id.count LOOP
151051    --
151052    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
151053    --
151054    l_event_id := l_array_event_id(idx);  -- 5648433
151055 
151056    --
151057    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
151058    --
151059 
151060    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
151061              (g_array_event(l_event_id).array_value_num('header_index'))
151062          ,'N'
151063          ) <> 'Y'
151064    THEN
151065       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151066          trace
151067             (p_msg      => 'Trancaction revesal option is not Y '
151068             ,p_level    => C_LEVEL_STATEMENT
151069             ,p_module   => l_log_module);
151070       END IF;
151071 
151072 --
151073 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
151074 --
151075 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
151076 --
151077 -- set event info as cache for other routines to refer event attributes
151078 --
151079 
151080 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
151081    l_previous_event_id := l_event_id;
151082 
151083    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
151084       (p_application_id           => p_application_id
151085       ,p_primary_ledger_id        => p_primary_ledger_id
151086       ,p_base_ledger_id           => p_base_ledger_id
151087       ,p_target_ledger_id         => p_target_ledger_id
151088       ,p_entity_id                => l_array_entity_id(Idx)
151089       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
151090       ,p_entity_code              => l_array_entity_code(Idx)
151094       ,p_event_type_code          => l_array_event_type(Idx)
151091       ,p_transaction_num          => l_array_transaction_num(Idx)
151092       ,p_event_id                 => l_array_event_id(Idx)
151093       ,p_event_class_code         => l_array_class_code(Idx)
151095       ,p_event_number             => l_array_event_number(Idx)
151096       ,p_event_date               => l_array_event_date(Idx)
151097       ,p_transaction_date         => l_array_transaction_date(Idx)
151098       ,p_reference_num_1          => l_array_reference_num_1(Idx)
151099       ,p_reference_num_2          => l_array_reference_num_2(Idx)
151100       ,p_reference_num_3          => l_array_reference_num_3(Idx)
151101       ,p_reference_num_4          => l_array_reference_num_4(Idx)
151102       ,p_reference_char_1         => l_array_reference_char_1(Idx)
151103       ,p_reference_char_2         => l_array_reference_char_2(Idx)
151104       ,p_reference_char_3         => l_array_reference_char_3(Idx)
151105       ,p_reference_char_4         => l_array_reference_char_4(Idx)
151106       ,p_reference_date_1         => l_array_reference_date_1(Idx)
151107       ,p_reference_date_2         => l_array_reference_date_2(Idx)
151108       ,p_reference_date_3         => l_array_reference_date_3(Idx)
151109       ,p_reference_date_4         => l_array_reference_date_4(Idx)
151110       ,p_event_created_by         => l_array_event_created_by(Idx)
151111       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
151112        --
151113 END IF;
151114 
151115 
151116 
151117 --
151118 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
151119 
151120 l_acct_reversal_source := SUBSTR(NULL, 1,30);
151121 
151122 IF l_continue_with_lines THEN
151123    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
151124       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
151125 
151126       xla_accounting_err_pkg.build_message
151127          (p_appli_s_name            => 'XLA'
151128          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
151129          ,p_token_1                 => 'LINE_NUMBER'
151130          ,p_value_1                 => l_array_extract_line_num(Idx)
151131          ,p_token_2                 => 'PRODUCT_NAME'
151132          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
151133          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
151134          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
151135          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
151136 
151137    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
151138       --
151139       -- following sets the accounting attributes needed to reverse
151140       -- accounting for a distributeion
151141       --
151142 
151143       --
151144       -- 5217187
151145       --
151146       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
151147       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
151148                                        g_array_event(l_event_id).array_value_num('header_index'));
151149       --
151150       --
151151 
151152       -- No reversal code generated
151153 
151154       xla_ae_lines_pkg.SetAcctReversalAttrs
151155          (p_event_id             => l_event_id
151156          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
151157          ,p_calculate_acctd_flag => l_calculate_acctd_flag
151158          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
151159    END IF;
151160 
151161    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
151162        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
151163 
151164 --
151165 AcctLineType_76 (
151166  p_application_id  => p_application_id
151167  ,p_event_id     => l_event_id
151168  ,p_calculate_acctd_flag => l_calculate_acctd_flag
151169  ,p_calculate_g_l_flag => l_calculate_g_l_flag
151170  ,p_actual_flag => l_actual_flag
151171  ,p_balance_type_code => l_balance_type_code
151172  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151173  
151174  , p_source_1 => l_array_source_1(Idx)
151175  , p_source_2 => l_array_source_2(Idx)
151176  , p_source_3 => l_array_source_3(Idx)
151177  , p_source_5 => l_array_source_5(Idx)
151178  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
151179  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
151180  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
151181  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
151182  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
151183  , p_source_11 => l_array_source_11(Idx)
151184  );
151185 If(l_balance_type_code = 'A') THEN
151186   l_actual_gain_loss_ref := l_gain_or_loss_ref;
151187 END IF;
151188 
151189 --
151190 
151191 
151192 --
151193 AcctLineType_85 (
151194  p_application_id  => p_application_id
151195  ,p_event_id     => l_event_id
151196  ,p_calculate_acctd_flag => l_calculate_acctd_flag
151197  ,p_calculate_g_l_flag => l_calculate_g_l_flag
151198  ,p_actual_flag => l_actual_flag
151199  ,p_balance_type_code => l_balance_type_code
151200  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151201  
151202  , p_source_1 => l_array_source_1(Idx)
151203  , p_source_2 => l_array_source_2(Idx)
151204  , p_source_3 => l_array_source_3(Idx)
151205  , p_source_5 => l_array_source_5(Idx)
151206  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
151210  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
151207  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
151208  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
151209  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
151211  , p_source_11 => l_array_source_11(Idx)
151212  );
151213 If(l_balance_type_code = 'A') THEN
151214   l_actual_gain_loss_ref := l_gain_or_loss_ref;
151215 END IF;
151216 
151217 --
151218 
151219 
151220 --
151221 AcctLineType_151 (
151222  p_application_id  => p_application_id
151223  ,p_event_id     => l_event_id
151224  ,p_calculate_acctd_flag => l_calculate_acctd_flag
151225  ,p_calculate_g_l_flag => l_calculate_g_l_flag
151226  ,p_actual_flag => l_actual_flag
151227  ,p_balance_type_code => l_balance_type_code
151228  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151229  
151230  , p_source_1 => l_array_source_1(Idx)
151231  , p_source_2 => l_array_source_2(Idx)
151232  , p_source_3 => l_array_source_3(Idx)
151233  , p_source_5 => l_array_source_5(Idx)
151234  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
151235  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
151236  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
151237  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
151238  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
151239  , p_source_11 => l_array_source_11(Idx)
151240  );
151241 If(l_balance_type_code = 'A') THEN
151242   l_actual_gain_loss_ref := l_gain_or_loss_ref;
151243 END IF;
151244 
151245 --
151246 
151247 
151248 --
151249 AcctLineType_184 (
151250  p_application_id  => p_application_id
151251  ,p_event_id     => l_event_id
151252  ,p_calculate_acctd_flag => l_calculate_acctd_flag
151253  ,p_calculate_g_l_flag => l_calculate_g_l_flag
151254  ,p_actual_flag => l_actual_flag
151255  ,p_balance_type_code => l_balance_type_code
151256  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151257  
151258  , p_source_1 => l_array_source_1(Idx)
151259  , p_source_2 => l_array_source_2(Idx)
151260  , p_source_3 => l_array_source_3(Idx)
151261  , p_source_5 => l_array_source_5(Idx)
151262  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
151263  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
151264  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
151265  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
151266  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
151267  , p_source_11 => l_array_source_11(Idx)
151268  );
151269 If(l_balance_type_code = 'A') THEN
151270   l_actual_gain_loss_ref := l_gain_or_loss_ref;
151271 END IF;
151272 
151273 --
151274 
151275 
151276 --
151277 AcctLineType_244 (
151278  p_application_id  => p_application_id
151279  ,p_event_id     => l_event_id
151280  ,p_calculate_acctd_flag => l_calculate_acctd_flag
151281  ,p_calculate_g_l_flag => l_calculate_g_l_flag
151282  ,p_actual_flag => l_actual_flag
151283  ,p_balance_type_code => l_balance_type_code
151284  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151285  
151286  , p_source_1 => l_array_source_1(Idx)
151287  , p_source_2 => l_array_source_2(Idx)
151288  , p_source_3 => l_array_source_3(Idx)
151289  , p_source_5 => l_array_source_5(Idx)
151290  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
151291  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
151292  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
151293  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
151294  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
151295  , p_source_11 => l_array_source_11(Idx)
151296  );
151297 If(l_balance_type_code = 'A') THEN
151298   l_actual_gain_loss_ref := l_gain_or_loss_ref;
151299 END IF;
151300 
151301 --
151302 
151303       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
151304       -- or secondary ledger that has different currency with primary
151305       -- or alc that is calculated by sla
151306       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
151307             (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'))
151308 
151309 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
151310 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
151311           AND (l_actual_flag = 'A')) THEN
151312         XLA_AE_LINES_PKG.CreateGainOrLossLines(
151313           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
151314          ,p_application_id   => p_application_id
151315          ,p_amb_context_code => 'DEFAULT'
151316          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
151317          ,p_event_class_code => C_EVENT_CLASS_CODE
151318          ,p_event_type_code  => C_EVENT_TYPE_CODE
151319          
151320          ,p_gain_ccid        => -1
151321          ,p_loss_ccid        => -1
151322 
151323          ,p_actual_flag      => l_actual_flag
151324          ,p_enc_flag         => null
151325          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
151326          ,p_enc_g_l_ref      => null
151327          );
151328       END IF;
151329    END IF;
151330 END IF;
151331 
151335       --
151332    ELSE
151333       --
151334       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
151336       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151337          trace
151338             (p_msg      => 'Trancaction revesal option is Y'
151339             ,p_level    => C_LEVEL_STATEMENT
151340             ,p_module   => l_log_module);
151341       END IF;
151342    END IF;
151343 
151344 END LOOP;
151345 l_result := XLA_AE_LINES_PKG.InsertLines ;
151346 end loop;
151347 close line_cur;
151348 
151349 
151350 --
151351 -- insert headers into xla_ae_headers_gt table
151352 --
151353 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
151354 
151355 -- insert into errors table here.
151356 
151357 END LOOP;
151358 
151359 --
151360 -- 4865292
151361 --
151362 -- Compare g_hdr_extract_count with event count in
151363 -- CreateHeadersAndLines.
151364 --
151365 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
151366 
151367 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151368    trace (p_msg     => '# rows extracted from header extract objects '
151369                     || ' (running total): '
151370                     || g_hdr_extract_count
151371          ,p_level   => C_LEVEL_STATEMENT
151372          ,p_module  => l_log_module);
151373 END IF;
151374 
151375 CLOSE header_cur;
151376 --
151377 
151378 --
151379 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151380    trace
151381       (p_msg      => 'END of EventType_273'
151382       ,p_level    => C_LEVEL_PROCEDURE
151383       ,p_module   => l_log_module);
151384 END IF;
151385 --
151386 RETURN l_result;
151387 EXCEPTION
151388 WHEN xla_exceptions_pkg.application_exception THEN
151389    
151390 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
151391 
151392    
151393 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
151394 
151395    RAISE;
151396 
151397 WHEN NO_DATA_FOUND THEN
151398 
151399 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
151400 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
151401 
151402 FOR header_record IN header_cur
151403 LOOP
151404     l_array_header_events(header_record.event_id) := header_record.event_id;
151405 END LOOP;
151406 
151407 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
151408 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
151409 
151410 fnd_file.put_line(fnd_file.LOG, '                    ');
151411 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
151412 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
151413 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
151414 
151415 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
151416 LOOP
151417 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
151418 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
151419         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
151420 	END IF;
151421 END LOOP;
151422 
151423 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
151424 fnd_file.put_line(fnd_file.LOG, '                    ');
151425 
151426 
151427 xla_exceptions_pkg.raise_message
151428       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_273');
151429 
151430 
151431 WHEN OTHERS THEN
151432    xla_exceptions_pkg.raise_message
151433       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_273');
151434 END EventType_273;
151435 --
151436 
151437 ---------------------------------------
151438 --
151439 -- PRIVATE PROCEDURE
151440 --         insert_sources_274
151441 --
151442 ----------------------------------------
151443 --
151444 PROCEDURE insert_sources_274(
151445                                 p_target_ledger_id       IN NUMBER
151446                               , p_language               IN VARCHAR2
151447                               , p_sla_ledger_id          IN NUMBER
151448                               , p_pad_start_date         IN DATE
151449                               , p_pad_end_date           IN DATE
151450                          )
151451 IS
151452 
151453 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_SENDER_SHIP_TP';
151454 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
151455 p_apps_owner                   VARCHAR2(30);
151456 l_log_module                   VARCHAR2(240);
151457 BEGIN
151458 IF g_log_enabled THEN
151459       l_log_module := C_DEFAULT_MODULE||'.insert_sources_274';
151460 END IF;
151461 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151462 
151463       trace
151464          (p_msg      => 'BEGIN of insert_sources_274'
151465          ,p_level    => C_LEVEL_PROCEDURE
151466          ,p_module   => l_log_module);
151467 
151468 END IF;
151469 
151470 -- select APPS owner
151471 SELECT oracle_username
151472   INTO p_apps_owner
151473   FROM fnd_oracle_userid
151474  WHERE read_only_flag = 'U'
151475 ;
151476 
151477 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151478       trace
151479          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
151480                         ' - p_language = '||p_language||
151484                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
151481                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
151482                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
151483                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
151485          ,p_level    => C_LEVEL_STATEMENT
151486          ,p_module   => l_log_module);
151487 END IF;
151488 
151489 
151490 --
151491 INSERT INTO xla_diag_sources --hdr1
151492 (
151493         event_id
151494       , ledger_id
151495       , sla_ledger_id
151496       , description_language
151497       , object_name
151498       , object_type_code
151499       , line_number
151500       , source_application_id
151501       , source_type_code
151502       , source_code
151503       , source_value
151504       , source_meaning
151505       , created_by
151506       , creation_date
151507       , last_update_date
151508       , last_updated_by
151509       , last_update_login
151510       , program_update_date
151511       , program_application_id
151512       , program_id
151513       , request_id
151514 )
151515 SELECT
151516         event_id
151517       , p_target_ledger_id
151518       , p_sla_ledger_id
151519       , p_language
151520       , object_name
151521       , object_type_code
151522       , line_number
151523       , source_application_id
151524       , source_type_code
151525       , source_code
151526       , SUBSTR(source_value ,1,1996)
151527       , SUBSTR(source_meaning,1,200)
151528       , xla_environment_pkg.g_Usr_Id
151529       , TRUNC(SYSDATE)
151530       , TRUNC(SYSDATE)
151531       , xla_environment_pkg.g_Usr_Id
151532       , xla_environment_pkg.g_Login_Id
151533       , TRUNC(SYSDATE)
151534       , xla_environment_pkg.g_Prog_Appl_Id
151535       , xla_environment_pkg.g_Prog_Id
151536       , xla_environment_pkg.g_Req_Id
151537   FROM (
151538        SELECT xet.event_id                  event_id
151539             , 0                             line_number
151540             , CASE r
151541                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
151542                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
151543                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
151544                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
151545                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
151546                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
151547                 
151548                ELSE null
151549               END                           object_name
151550             , CASE r
151551                 WHEN 1 THEN 'HEADER' 
151552                 WHEN 2 THEN 'HEADER' 
151553                 WHEN 3 THEN 'HEADER' 
151554                 WHEN 4 THEN 'HEADER' 
151555                 WHEN 5 THEN 'HEADER' 
151556                 WHEN 6 THEN 'HEADER' 
151557                 
151558                 ELSE null
151559               END                           object_type_code
151560             , CASE r
151561                 WHEN 1 THEN '555' 
151562                 WHEN 2 THEN '555' 
151563                 WHEN 3 THEN '555' 
151564                 WHEN 4 THEN '555' 
151565                 WHEN 5 THEN '555' 
151566                 WHEN 6 THEN '555' 
151567                 
151568                 ELSE null
151569               END                           source_application_id
151570             , 'S'             source_type_code
151571             , CASE r
151572                 WHEN 1 THEN 'ENTITY_CODE' 
151573                 WHEN 2 THEN 'CURRENCY_CODE' 
151574                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
151575                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
151576                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
151577                 WHEN 6 THEN 'TRANSACTION_DATE' 
151578                 
151579                 ELSE null
151580               END                           source_code
151581             , CASE r
151582                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
151583                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
151584                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
151585                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
151586                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
151587                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
151588                 
151589                 ELSE null
151590               END                           source_value
151591             , CASE r
151592                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
151593                           1010186
151594                          ,TO_CHAR(h1.CURRENCY_CODE)
151595                          ,'CURRENCY_CODE'
151596                          ,'S'
151597                          ,555)
151598                 
151599                 ELSE null
151600               END               source_meaning
151601         FROM xla_events_gt     xet  
151602       , GMF_XLA_EXTRACT_HEADERS  h1
151603             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
151604        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
151605          AND xet.event_type_code = C_EVENT_TYPE_CODE
151606             AND h1.event_id = xet.event_id
151607 
151608 )
151609 ;
151610 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151611 
151612       trace
151613          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
151614          ,p_level    => C_LEVEL_STATEMENT
151615          ,p_module   => l_log_module);
151616 
151617 END IF;
151618 --
151619 
151620 
151621 
151625         event_id
151622 --
151623 INSERT INTO xla_diag_sources --line1
151624 (
151626       , ledger_id
151627       , sla_ledger_id
151628       , description_language
151629       , object_name
151630       , object_type_code
151631       , line_number
151632       , source_application_id
151633       , source_type_code
151634       , source_code
151635       , source_value
151636       , source_meaning
151637       , created_by
151638       , creation_date
151639       , last_update_date
151640       , last_updated_by
151641       , last_update_login
151642       , program_update_date
151643       , program_application_id
151644       , program_id
151645       , request_id
151646 )
151647 SELECT  event_id
151648       , p_target_ledger_id
151649       , p_sla_ledger_id
151650       , p_language
151651       , object_name
151652       , object_type_code
151653       , line_number
151654       , source_application_id
151655       , source_type_code
151656       , source_code
151657       , SUBSTR(source_value,1,1996)
151658       , SUBSTR(source_meaning,1,200)
151659       , xla_environment_pkg.g_Usr_Id
151660       , TRUNC(SYSDATE)
151661       , TRUNC(SYSDATE)
151662       , xla_environment_pkg.g_Usr_Id
151663       , xla_environment_pkg.g_Login_Id
151664       , TRUNC(SYSDATE)
151665       , xla_environment_pkg.g_Prog_Appl_Id
151666       , xla_environment_pkg.g_Prog_Id
151667       , xla_environment_pkg.g_Req_Id
151668   FROM (
151669        SELECT xet.event_id                  event_id
151670             , l2.line_number                 line_number
151671             , CASE r
151672                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
151673                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
151674                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
151675                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
151676                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
151677                 
151678                ELSE null
151679               END                           object_name
151680             , CASE r
151681                 WHEN 1 THEN 'LINE' 
151682                 WHEN 2 THEN 'LINE' 
151683                 WHEN 3 THEN 'LINE' 
151684                 WHEN 4 THEN 'LINE' 
151685                 WHEN 5 THEN 'LINE' 
151686                 
151687                 ELSE null
151688               END                           object_type_code
151689             , CASE r
151690                 WHEN 1 THEN '555' 
151691                 WHEN 2 THEN '555' 
151692                 WHEN 3 THEN '555' 
151693                 WHEN 4 THEN '555' 
151694                 WHEN 5 THEN '555' 
151695                 
151696                 ELSE null
151697               END                           source_application_id
151698             , 'S'             source_type_code
151699             , CASE r
151700                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
151701                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
151702                 WHEN 3 THEN 'ENTERED_AMOUNT' 
151703                 WHEN 4 THEN 'LINE_ID' 
151704                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
151705                 
151706                 ELSE null
151707               END                           source_code
151708             , CASE r
151709                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
151710                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
151711                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
151712                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
151713                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
151714                 
151715                 ELSE null
151716               END                           source_value
151717             , null              source_meaning
151718          FROM  xla_events_gt     xet  
151719         , GMF_XLA_EXTRACT_LINES  l2
151720             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
151721         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
151722           AND xet.event_type_code = C_EVENT_TYPE_CODE
151723             AND l2.event_id          = xet.event_id
151724 
151725 )
151726 ;
151727 --
151728 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151729 
151730       trace
151731          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
151732          ,p_level    => C_LEVEL_STATEMENT
151733          ,p_module   => l_log_module);
151734 
151735 END IF;
151736 
151737 
151738 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151739       trace
151740          (p_msg      => 'END of insert_sources_274'
151741          ,p_level    => C_LEVEL_PROCEDURE
151742          ,p_module   => l_log_module);
151743 END IF;
151744 EXCEPTION
151745   WHEN xla_exceptions_pkg.application_exception THEN
151746       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
151747             trace
151748                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
151749                ,p_level    => C_LEVEL_EXCEPTION
151750                ,p_module   => l_log_module);
151751       END IF;
151752       RAISE;
151753   WHEN OTHERS THEN
151754       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
151755             trace
151756                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
151757                ,p_level    => C_LEVEL_EXCEPTION
151758                ,p_module   => l_log_module);
151759        END IF;
151760        xla_exceptions_pkg.raise_message
151764 
151761            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_274');
151762 END insert_sources_274;
151763 --
151765 ---------------------------------------
151766 --
151767 -- PRIVATE FUNCTION
151768 --         EventType_274
151769 --
151770 ----------------------------------------
151771 --
151772 FUNCTION EventType_274
151773        (p_application_id         IN NUMBER
151774        ,p_base_ledger_id         IN NUMBER
151775        ,p_target_ledger_id       IN NUMBER
151776        ,p_language               IN VARCHAR2
151777        ,p_currency_code          IN VARCHAR2
151778        ,p_sla_ledger_id          IN NUMBER
151779        ,p_pad_start_date         IN DATE
151780        ,p_pad_end_date           IN DATE
151781        ,p_primary_ledger_id      IN NUMBER)
151782 RETURN BOOLEAN IS
151783 --
151784 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_SENDER_SHIP_TP';
151785 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
151786 
151787 l_calculate_acctd_flag   VARCHAR2(1) :='N';
151788 l_calculate_g_l_flag     VARCHAR2(1) :='N';
151789 --
151790 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151791 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151792 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
151793 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151794 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151795 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
151796 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
151797 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151798 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151799 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151800 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151801 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151802 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151803 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151804 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151805 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151806 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151807 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151808 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151809 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151810 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151811 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151812 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
151813 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
151814 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
151815 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
151816 
151817 l_event_id                             NUMBER;
151818 l_previous_event_id                    NUMBER;
151819 l_first_event_id                       NUMBER;
151820 l_last_event_id                        NUMBER;
151821 
151822 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
151823 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
151824 --
151825 --
151826 l_result                    BOOLEAN := TRUE;
151827 l_rows                      NUMBER  := 1000;
151828 l_event_type_name           VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment, Transfer Pricing';
151829 l_event_class_name          VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment';
151830 l_description               VARCHAR2(4000);
151831 l_transaction_reversal      NUMBER;
151832 l_ae_header_id              NUMBER;
151833 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
151834 l_log_module                VARCHAR2(240);
151835 --
151836 l_acct_reversal_source      VARCHAR2(30);
151837 l_trx_reversal_source       VARCHAR2(30);
151838 
151839 l_continue_with_lines       BOOLEAN := TRUE;
151840 --
151841 l_acc_rev_gl_date_source    DATE;                      -- 4262811
151842 --
151843 type t_array_event_id is table of number index by binary_integer;
151844 
151845 l_rec_array_event                    t_rec_array_event;
151846 l_null_rec_array_event               t_rec_array_event;
151847 l_array_ae_header_id                 xla_number_array_type;
151848 l_actual_flag                        VARCHAR2(1) := NULL;
151849 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
151850 l_balance_type_code                  VARCHAR2(1) :=NULL;
151851 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
151852 
151853 --
151854 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
151855 --
151856 
151857 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
151858 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
151859 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
151860 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
151864 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
151861 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
151862 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
151863 
151865 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
151866 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
151867 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
151868 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
151869 
151870 l_array_source_6              t_array_source_6;
151871 l_array_source_7              t_array_source_7;
151872 l_array_source_8              t_array_source_8;
151873 l_array_source_9              t_array_source_9;
151874 l_array_source_10              t_array_source_10;
151875 l_array_source_12              t_array_source_12;
151876 
151877 l_array_source_1      t_array_source_1;
151878 l_array_source_2      t_array_source_2;
151879 l_array_source_3      t_array_source_3;
151880 l_array_source_5      t_array_source_5;
151881 l_array_source_11      t_array_source_11;
151882 
151883 --
151884 CURSOR header_cur
151885 IS
151886 SELECT /*+ leading(xet) cardinality(xet,1) */
151887 -- Event Type Code: FOB_SHIP_SENDER_SHIP_TP
151888 -- Event Class Code: FOB_SHIP_SENDER_SHIP
151889     xet.entity_id
151890   , xet.legal_entity_id
151891   , xet.entity_code
151892   , xet.transaction_number
151893   , xet.event_id
151894   , xet.event_class_code
151895   , xet.event_type_code
151896   , xet.event_number
151897   , xet.event_date
151898   , xet.transaction_date
151899   , xet.reference_num_1
151900   , xet.reference_num_2
151901   , xet.reference_num_3
151902   , xet.reference_num_4
151903   , xet.reference_char_1
151904   , xet.reference_char_2
151905   , xet.reference_char_3
151906   , xet.reference_char_4
151907   , xet.reference_date_1
151908   , xet.reference_date_2
151909   , xet.reference_date_3
151910   , xet.reference_date_4
151911   , xet.event_created_by
151912   , xet.budgetary_control_flag 
151913   , h1.ENTITY_CODE    source_6
151914   , h1.CURRENCY_CODE    source_7
151915   , h1.CURRENCY_CONVERSION_DATE    source_8
151916   , h1.CURRENCY_CONVERSION_RATE    source_9
151917   , h1.CURRENCY_CONVERSION_TYPE    source_10
151918   , h1.TRANSACTION_DATE    source_12
151919   FROM xla_events_gt     xet 
151920   , GMF_XLA_EXTRACT_HEADERS  h1
151921  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
151922    and xet.event_type_code = C_EVENT_TYPE_CODE
151923    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
151924 
151925  ORDER BY event_id
151926 ;
151927 
151928 
151929 --
151930 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
151931 IS
151932 SELECT /*+ leading(xet) cardinality(xet,1) */
151933 -- Event Type Code: FOB_SHIP_SENDER_SHIP_TP
151934 -- Event Class Code: FOB_SHIP_SENDER_SHIP
151935     xet.entity_id
151936    ,xet.legal_entity_id
151937    ,xet.entity_code
151938    ,xet.transaction_number
151939    ,xet.event_id
151940    ,xet.event_class_code
151941    ,xet.event_type_code
151942    ,xet.event_number
151943    ,xet.event_date
151944    ,xet.transaction_date
151945    ,xet.reference_num_1
151946    ,xet.reference_num_2
151947    ,xet.reference_num_3
151948    ,xet.reference_num_4
151949    ,xet.reference_char_1
151950    ,xet.reference_char_2
151951    ,xet.reference_char_3
151952    ,xet.reference_char_4
151953    ,xet.reference_date_1
151954    ,xet.reference_date_2
151955    ,xet.reference_date_3
151956    ,xet.reference_date_4
151957    ,xet.event_created_by
151958    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
151959   , l2.TRANSACTION_ACCOUNT_ID    source_1
151960   , l2.JOURNAL_LINE_TYPE    source_2
151961   , l2.ENTERED_AMOUNT    source_3
151962   , l2.LINE_ID    source_5
151963   , l2.ACCOUNTED_AMOUNT    source_11
151964   FROM xla_events_gt     xet 
151965   , GMF_XLA_EXTRACT_LINES  l2
151966  WHERE xet.event_id between x_first_event_id and x_last_event_id
151967    and xet.event_date between p_pad_start_date and p_pad_end_date
151968    and xet.event_type_code = C_EVENT_TYPE_CODE
151969    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
151970 ;
151971 
151972 --
151973 BEGIN
151974 IF g_log_enabled THEN
151975    l_log_module := C_DEFAULT_MODULE||'.EventType_274';
151976 END IF;
151977 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151978    trace
151979       (p_msg      => 'BEGIN of EventType_274'
151980       ,p_level    => C_LEVEL_PROCEDURE
151981       ,p_module   => l_log_module);
151982 END IF;
151983 
151984 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151985    trace
151986       (p_msg      => 'p_application_id = '||p_application_id||
151987                      ' - p_base_ledger_id = '||p_base_ledger_id||
151988                      ' - p_target_ledger_id  = '||p_target_ledger_id||
151989                      ' - p_language = '||p_language||
151990                      ' - p_currency_code = '||p_currency_code||
151991                      ' - p_sla_ledger_id = '||p_sla_ledger_id
151992       ,p_level    => C_LEVEL_STATEMENT
151993       ,p_module   => l_log_module);
151994 END IF;
151995 --
151999 l_rec_array_event := l_null_rec_array_event;
151996 -- initialze arrays
151997 --
151998 g_array_event.DELETE;
152000 --
152001 --------------------------------------
152002 -- 4262811 Initialze MPA Line Number
152003 --------------------------------------
152004 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
152005 
152006 --
152007 
152008 --
152009 OPEN header_cur;
152010 --
152011 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152012    trace
152013    (p_msg      => 'SQL - FETCH header_cur'
152014    ,p_level    => C_LEVEL_STATEMENT
152015    ,p_module   => l_log_module);
152016 END IF;
152017 --
152018 LOOP
152019 FETCH header_cur BULK COLLECT INTO
152020         l_array_entity_id
152021       , l_array_legal_entity_id
152022       , l_array_entity_code
152023       , l_array_transaction_num
152024       , l_array_event_id
152025       , l_array_class_code
152026       , l_array_event_type
152027       , l_array_event_number
152028       , l_array_event_date
152029       , l_array_transaction_date
152030       , l_array_reference_num_1
152031       , l_array_reference_num_2
152032       , l_array_reference_num_3
152033       , l_array_reference_num_4
152034       , l_array_reference_char_1
152035       , l_array_reference_char_2
152036       , l_array_reference_char_3
152037       , l_array_reference_char_4
152038       , l_array_reference_date_1
152039       , l_array_reference_date_2
152040       , l_array_reference_date_3
152041       , l_array_reference_date_4
152042       , l_array_event_created_by
152043       , l_array_budgetary_control_flag 
152044       , l_array_source_6
152045       , l_array_source_7
152046       , l_array_source_8
152047       , l_array_source_9
152048       , l_array_source_10
152049       , l_array_source_12
152050       LIMIT l_rows;
152051 --
152052 IF (C_LEVEL_EVENT >= g_log_level) THEN
152053    trace
152054    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
152055    ,p_level    => C_LEVEL_EVENT
152056    ,p_module   => l_log_module);
152057 END IF;
152058 --
152059 EXIT WHEN l_array_entity_id.COUNT = 0;
152060 
152061 -- initialize arrays
152062 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
152063 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
152064 
152065 --
152066 -- Bug 4458708
152067 --
152068 XLA_AE_LINES_PKG.g_LineNumber := 0;
152069 
152070 
152071 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
152072 g_last_hdr_idx := l_array_event_id.LAST;
152073 --
152074 -- loop for the headers. Each iteration is for each header extract row
152075 -- fetched in header cursor
152076 --
152077 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
152078 
152079 --
152080 -- set event info as cache for other routines to refer event attributes
152081 --
152082 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
152083    (p_application_id           => p_application_id
152084    ,p_primary_ledger_id        => p_primary_ledger_id
152085    ,p_base_ledger_id           => p_base_ledger_id
152086    ,p_target_ledger_id         => p_target_ledger_id
152087    ,p_entity_id                => l_array_entity_id(hdr_idx)
152088    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
152089    ,p_entity_code              => l_array_entity_code(hdr_idx)
152090    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
152091    ,p_event_id                 => l_array_event_id(hdr_idx)
152092    ,p_event_class_code         => l_array_class_code(hdr_idx)
152093    ,p_event_type_code          => l_array_event_type(hdr_idx)
152094    ,p_event_number             => l_array_event_number(hdr_idx)
152095    ,p_event_date               => l_array_event_date(hdr_idx)
152096    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
152097    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
152098    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
152099    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
152100    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
152101    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
152102    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
152103    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
152104    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
152105    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
152106    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
152107    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
152108    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
152109    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
152110    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
152111 
152112 --
152113 -- set the status of entry to C_VALID (0)
152114 --
152115 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
152116 
152117 --
152118 -- initialize a row for ae header
152119 --
152120 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
152121 
152122 l_event_id := l_array_event_id(hdr_idx);
152123 
152124 --
152125 -- storing the hdr_idx for event. May be used by line cursor.
152126 --
152127 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
152128 
152129 --
152130 -- store sources from header extract. This can be improved to
152131 -- store only those sources from header extract that may be used in lines
152132 --
152133 
152137 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
152134 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
152135 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
152136 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
152138 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
152139 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
152140 
152141 --
152142 -- initilaize the status of ae headers for diffrent balance types
152143 -- the status is initialised to C_NOT_CREATED (2)
152144 --
152145 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
152146 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
152147 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
152148 
152149 --
152150 -- call api to validate and store accounting attributes for header
152151 --
152152 
152153 ------------------------------------------------------------
152154 -- Accrual Reversal : to get date for Standard Source (NONE)
152155 ------------------------------------------------------------
152156 l_acc_rev_gl_date_source := NULL;
152157 
152158      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
152159       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
152160 
152161 
152162 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
152163 
152164 XLA_AE_HEADER_PKG.SetJeCategoryName;
152165 
152166 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
152167 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
152168 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
152169 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
152170 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
152171 
152172 
152173 -- No header level analytical criteria
152174 
152175 --
152176 --accounting attribute enhancement, bug 3612931
152177 --
152178 l_trx_reversal_source := SUBSTR(NULL, 1,30);
152179 
152180 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
152181    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
152182 
152183    xla_accounting_err_pkg.build_message
152184       (p_appli_s_name            => 'XLA'
152185       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
152186       ,p_token_1                 => 'ACCT_ATTR_NAME'
152187       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
152188       ,p_token_2                 => 'PRODUCT_NAME'
152189       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
152190       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
152191       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
152192       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
152193 
152194 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
152195    --
152196    -- following sets the accounting attributes needed to reverse
152197    -- accounting for a distributeion
152198    --
152199    xla_ae_lines_pkg.SetTrxReversalAttrs
152200       (p_event_id              => l_event_id
152201       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
152202       ,p_trx_reversal_source   => l_trx_reversal_source);
152203 
152204 END IF;
152205 
152206 
152207 ----------------------------------------------------------------
152208 -- 4262811 -  update the header statuses to invalid in need be
152209 ----------------------------------------------------------------
152210 --
152211 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
152212 
152213 
152214   -----------------------------------------------
152215   -- No accrual reversal for the event class/type
152216   -----------------------------------------------
152217 ----------------------------------------------------------------
152218 
152219 --
152220 -- this ends the header loop iteration for one bulk fetch
152221 --
152222 END LOOP;
152223 
152224 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
152225 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
152226 
152227 --
152228 -- insert dummy rows into lines gt table that were created due to
152229 -- transaction reversals
152230 --
152231 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
152232    l_result := XLA_AE_LINES_PKG.InsertLines;
152233 END IF;
152234 
152235 --
152236 -- reset the temp_line_num for each set of events fetched from header
152237 -- cursor rather than doing it for each new event in line cursor
152238 -- Bug 3939231
152239 --
152240 xla_ae_lines_pkg.g_temp_line_num := 0;
152241 
152242 
152243 
152244 --
152245 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
152246 --
152247 --
152248 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152249 
152250       trace
152251          (p_msg      => 'SQL - FETCH line_cur'
152252          ,p_level    => C_LEVEL_STATEMENT
152253          ,p_module   => l_log_module);
152254 
152255 END IF;
152256 --
152260   FETCH line_cur BULK COLLECT INTO
152257 --
152258 LOOP
152259   --
152261         l_array_entity_id
152262       , l_array_legal_entity_id
152263       , l_array_entity_code
152264       , l_array_transaction_num
152265       , l_array_event_id
152266       , l_array_class_code
152267       , l_array_event_type
152268       , l_array_event_number
152269       , l_array_event_date
152270       , l_array_transaction_date
152271       , l_array_reference_num_1
152272       , l_array_reference_num_2
152273       , l_array_reference_num_3
152274       , l_array_reference_num_4
152275       , l_array_reference_char_1
152276       , l_array_reference_char_2
152277       , l_array_reference_char_3
152278       , l_array_reference_char_4
152279       , l_array_reference_date_1
152280       , l_array_reference_date_2
152281       , l_array_reference_date_3
152282       , l_array_reference_date_4
152283       , l_array_event_created_by
152284       , l_array_budgetary_control_flag
152285       , l_array_extract_line_num 
152286       , l_array_source_1
152287       , l_array_source_2
152288       , l_array_source_3
152289       , l_array_source_5
152290       , l_array_source_11
152291       LIMIT l_rows;
152292 
152293   --
152294   IF (C_LEVEL_EVENT >= g_log_level) THEN
152295             trace
152296                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
152297                ,p_level    => C_LEVEL_EVENT
152298                ,p_module   => l_log_module);
152299   END IF;
152300   --
152301   EXIT WHEN l_array_entity_id.count = 0;
152302 
152303   XLA_AE_LINES_PKG.g_rec_lines := null;
152304 
152305 --
152306 -- Bug 4458708
152307 --
152308 XLA_AE_LINES_PKG.g_LineNumber := 0;
152309 --
152310 --
152311 
152312 FOR Idx IN 1..l_array_event_id.count LOOP
152313    --
152314    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
152315    --
152316    l_event_id := l_array_event_id(idx);  -- 5648433
152317 
152318    --
152319    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
152320    --
152321 
152322    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
152323              (g_array_event(l_event_id).array_value_num('header_index'))
152324          ,'N'
152325          ) <> 'Y'
152326    THEN
152327       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152328          trace
152329             (p_msg      => 'Trancaction revesal option is not Y '
152330             ,p_level    => C_LEVEL_STATEMENT
152331             ,p_module   => l_log_module);
152332       END IF;
152333 
152334 --
152335 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
152336 --
152337 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
152338 --
152339 -- set event info as cache for other routines to refer event attributes
152340 --
152341 
152342 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
152343    l_previous_event_id := l_event_id;
152344 
152345    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
152346       (p_application_id           => p_application_id
152347       ,p_primary_ledger_id        => p_primary_ledger_id
152348       ,p_base_ledger_id           => p_base_ledger_id
152349       ,p_target_ledger_id         => p_target_ledger_id
152350       ,p_entity_id                => l_array_entity_id(Idx)
152351       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
152352       ,p_entity_code              => l_array_entity_code(Idx)
152353       ,p_transaction_num          => l_array_transaction_num(Idx)
152354       ,p_event_id                 => l_array_event_id(Idx)
152355       ,p_event_class_code         => l_array_class_code(Idx)
152356       ,p_event_type_code          => l_array_event_type(Idx)
152357       ,p_event_number             => l_array_event_number(Idx)
152358       ,p_event_date               => l_array_event_date(Idx)
152359       ,p_transaction_date         => l_array_transaction_date(Idx)
152360       ,p_reference_num_1          => l_array_reference_num_1(Idx)
152361       ,p_reference_num_2          => l_array_reference_num_2(Idx)
152362       ,p_reference_num_3          => l_array_reference_num_3(Idx)
152363       ,p_reference_num_4          => l_array_reference_num_4(Idx)
152364       ,p_reference_char_1         => l_array_reference_char_1(Idx)
152365       ,p_reference_char_2         => l_array_reference_char_2(Idx)
152366       ,p_reference_char_3         => l_array_reference_char_3(Idx)
152367       ,p_reference_char_4         => l_array_reference_char_4(Idx)
152368       ,p_reference_date_1         => l_array_reference_date_1(Idx)
152369       ,p_reference_date_2         => l_array_reference_date_2(Idx)
152370       ,p_reference_date_3         => l_array_reference_date_3(Idx)
152371       ,p_reference_date_4         => l_array_reference_date_4(Idx)
152372       ,p_event_created_by         => l_array_event_created_by(Idx)
152373       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
152374        --
152375 END IF;
152376 
152377 
152378 
152379 --
152380 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
152381 
152382 l_acct_reversal_source := SUBSTR(NULL, 1,30);
152383 
152384 IF l_continue_with_lines THEN
152385    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
152386       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
152387 
152388       xla_accounting_err_pkg.build_message
152389          (p_appli_s_name            => 'XLA'
152393          ,p_token_2                 => 'PRODUCT_NAME'
152390          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
152391          ,p_token_1                 => 'LINE_NUMBER'
152392          ,p_value_1                 => l_array_extract_line_num(Idx)
152394          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
152395          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
152396          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
152397          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
152398 
152399    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
152400       --
152401       -- following sets the accounting attributes needed to reverse
152402       -- accounting for a distributeion
152403       --
152404 
152405       --
152406       -- 5217187
152407       --
152408       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
152409       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
152410                                        g_array_event(l_event_id).array_value_num('header_index'));
152411       --
152412       --
152413 
152414       -- No reversal code generated
152415 
152416       xla_ae_lines_pkg.SetAcctReversalAttrs
152417          (p_event_id             => l_event_id
152418          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
152419          ,p_calculate_acctd_flag => l_calculate_acctd_flag
152420          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
152421    END IF;
152422 
152423    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
152424        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
152425 
152426 --
152427 AcctLineType_73 (
152428  p_application_id  => p_application_id
152429  ,p_event_id     => l_event_id
152430  ,p_calculate_acctd_flag => l_calculate_acctd_flag
152431  ,p_calculate_g_l_flag => l_calculate_g_l_flag
152432  ,p_actual_flag => l_actual_flag
152433  ,p_balance_type_code => l_balance_type_code
152434  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152435  
152436  , p_source_1 => l_array_source_1(Idx)
152437  , p_source_2 => l_array_source_2(Idx)
152438  , p_source_3 => l_array_source_3(Idx)
152439  , p_source_5 => l_array_source_5(Idx)
152440  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
152441  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152442  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
152443  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
152444  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
152445  , p_source_11 => l_array_source_11(Idx)
152446  );
152447 If(l_balance_type_code = 'A') THEN
152448   l_actual_gain_loss_ref := l_gain_or_loss_ref;
152449 END IF;
152450 
152451 --
152452 
152453 
152454 --
152455 AcctLineType_94 (
152456  p_application_id  => p_application_id
152457  ,p_event_id     => l_event_id
152458  ,p_calculate_acctd_flag => l_calculate_acctd_flag
152459  ,p_calculate_g_l_flag => l_calculate_g_l_flag
152460  ,p_actual_flag => l_actual_flag
152461  ,p_balance_type_code => l_balance_type_code
152462  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152463  
152464  , p_source_1 => l_array_source_1(Idx)
152465  , p_source_2 => l_array_source_2(Idx)
152466  , p_source_3 => l_array_source_3(Idx)
152467  , p_source_5 => l_array_source_5(Idx)
152468  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
152469  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152470  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
152471  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
152472  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
152473  , p_source_11 => l_array_source_11(Idx)
152474  );
152475 If(l_balance_type_code = 'A') THEN
152476   l_actual_gain_loss_ref := l_gain_or_loss_ref;
152477 END IF;
152478 
152479 --
152480 
152481 
152482 --
152483 AcctLineType_131 (
152484  p_application_id  => p_application_id
152485  ,p_event_id     => l_event_id
152486  ,p_calculate_acctd_flag => l_calculate_acctd_flag
152487  ,p_calculate_g_l_flag => l_calculate_g_l_flag
152488  ,p_actual_flag => l_actual_flag
152489  ,p_balance_type_code => l_balance_type_code
152490  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152491  
152492  , p_source_1 => l_array_source_1(Idx)
152493  , p_source_2 => l_array_source_2(Idx)
152494  , p_source_3 => l_array_source_3(Idx)
152495  , p_source_5 => l_array_source_5(Idx)
152496  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
152497  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152498  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
152499  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
152500  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
152501  , p_source_11 => l_array_source_11(Idx)
152502  );
152503 If(l_balance_type_code = 'A') THEN
152504   l_actual_gain_loss_ref := l_gain_or_loss_ref;
152505 END IF;
152506 
152507 --
152508 
152509 
152510 --
152511 AcctLineType_179 (
152512  p_application_id  => p_application_id
152513  ,p_event_id     => l_event_id
152514  ,p_calculate_acctd_flag => l_calculate_acctd_flag
152515  ,p_calculate_g_l_flag => l_calculate_g_l_flag
152516  ,p_actual_flag => l_actual_flag
152520  , p_source_1 => l_array_source_1(Idx)
152517  ,p_balance_type_code => l_balance_type_code
152518  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152519  
152521  , p_source_2 => l_array_source_2(Idx)
152522  , p_source_3 => l_array_source_3(Idx)
152523  , p_source_5 => l_array_source_5(Idx)
152524  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
152525  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152526  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
152527  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
152528  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
152529  , p_source_11 => l_array_source_11(Idx)
152530  );
152531 If(l_balance_type_code = 'A') THEN
152532   l_actual_gain_loss_ref := l_gain_or_loss_ref;
152533 END IF;
152534 
152535 --
152536 
152537 
152538 --
152539 AcctLineType_187 (
152540  p_application_id  => p_application_id
152541  ,p_event_id     => l_event_id
152542  ,p_calculate_acctd_flag => l_calculate_acctd_flag
152543  ,p_calculate_g_l_flag => l_calculate_g_l_flag
152544  ,p_actual_flag => l_actual_flag
152545  ,p_balance_type_code => l_balance_type_code
152546  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152547  
152548  , p_source_1 => l_array_source_1(Idx)
152549  , p_source_2 => l_array_source_2(Idx)
152550  , p_source_3 => l_array_source_3(Idx)
152551  , p_source_5 => l_array_source_5(Idx)
152552  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
152553  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152554  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
152555  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
152556  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
152557  , p_source_11 => l_array_source_11(Idx)
152558  );
152559 If(l_balance_type_code = 'A') THEN
152560   l_actual_gain_loss_ref := l_gain_or_loss_ref;
152561 END IF;
152562 
152563 --
152564 
152565       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
152566       -- or secondary ledger that has different currency with primary
152567       -- or alc that is calculated by sla
152568       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
152569             (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'))
152570 
152571 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
152572 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
152573           AND (l_actual_flag = 'A')) THEN
152574         XLA_AE_LINES_PKG.CreateGainOrLossLines(
152575           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
152576          ,p_application_id   => p_application_id
152577          ,p_amb_context_code => 'DEFAULT'
152578          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
152579          ,p_event_class_code => C_EVENT_CLASS_CODE
152580          ,p_event_type_code  => C_EVENT_TYPE_CODE
152581          
152582          ,p_gain_ccid        => -1
152583          ,p_loss_ccid        => -1
152584 
152585          ,p_actual_flag      => l_actual_flag
152586          ,p_enc_flag         => null
152587          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
152588          ,p_enc_g_l_ref      => null
152589          );
152590       END IF;
152591    END IF;
152592 END IF;
152593 
152594    ELSE
152595       --
152596       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
152597       --
152598       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152599          trace
152600             (p_msg      => 'Trancaction revesal option is Y'
152601             ,p_level    => C_LEVEL_STATEMENT
152602             ,p_module   => l_log_module);
152603       END IF;
152604    END IF;
152605 
152606 END LOOP;
152607 l_result := XLA_AE_LINES_PKG.InsertLines ;
152608 end loop;
152609 close line_cur;
152610 
152611 
152612 --
152613 -- insert headers into xla_ae_headers_gt table
152614 --
152615 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
152616 
152617 -- insert into errors table here.
152618 
152619 END LOOP;
152620 
152621 --
152622 -- 4865292
152623 --
152624 -- Compare g_hdr_extract_count with event count in
152625 -- CreateHeadersAndLines.
152626 --
152627 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
152628 
152629 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152630    trace (p_msg     => '# rows extracted from header extract objects '
152631                     || ' (running total): '
152632                     || g_hdr_extract_count
152633          ,p_level   => C_LEVEL_STATEMENT
152634          ,p_module  => l_log_module);
152635 END IF;
152636 
152637 CLOSE header_cur;
152638 --
152639 
152640 --
152641 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
152642    trace
152643       (p_msg      => 'END of EventType_274'
152644       ,p_level    => C_LEVEL_PROCEDURE
152645       ,p_module   => l_log_module);
152646 END IF;
152647 --
152648 RETURN l_result;
152649 EXCEPTION
152650 WHEN xla_exceptions_pkg.application_exception THEN
152651    
152652 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
152653 
152654    
152655 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
152659 WHEN NO_DATA_FOUND THEN
152656 
152657    RAISE;
152658 
152660 
152661 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
152662 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
152663 
152664 FOR header_record IN header_cur
152665 LOOP
152666     l_array_header_events(header_record.event_id) := header_record.event_id;
152667 END LOOP;
152668 
152669 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
152670 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
152671 
152672 fnd_file.put_line(fnd_file.LOG, '                    ');
152673 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
152674 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
152675 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
152676 
152677 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
152678 LOOP
152679 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
152680 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
152681         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
152682 	END IF;
152683 END LOOP;
152684 
152685 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
152686 fnd_file.put_line(fnd_file.LOG, '                    ');
152687 
152688 
152689 xla_exceptions_pkg.raise_message
152690       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_274');
152691 
152692 
152693 WHEN OTHERS THEN
152694    xla_exceptions_pkg.raise_message
152695       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_274');
152696 END EventType_274;
152697 --
152698 
152699 ---------------------------------------
152700 --
152701 -- PRIVATE PROCEDURE
152702 --         insert_sources_275
152703 --
152704 ----------------------------------------
152705 --
152706 PROCEDURE insert_sources_275(
152707                                 p_target_ledger_id       IN NUMBER
152708                               , p_language               IN VARCHAR2
152709                               , p_sla_ledger_id          IN NUMBER
152710                               , p_pad_start_date         IN DATE
152711                               , p_pad_end_date           IN DATE
152712                          )
152713 IS
152714 
152715 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'GLCOSTALOC';
152716 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'GLCOSTALOC';
152717 p_apps_owner                   VARCHAR2(30);
152718 l_log_module                   VARCHAR2(240);
152719 BEGIN
152720 IF g_log_enabled THEN
152721       l_log_module := C_DEFAULT_MODULE||'.insert_sources_275';
152722 END IF;
152723 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
152724 
152725       trace
152726          (p_msg      => 'BEGIN of insert_sources_275'
152727          ,p_level    => C_LEVEL_PROCEDURE
152728          ,p_module   => l_log_module);
152729 
152730 END IF;
152731 
152732 -- select APPS owner
152733 SELECT oracle_username
152734   INTO p_apps_owner
152735   FROM fnd_oracle_userid
152736  WHERE read_only_flag = 'U'
152737 ;
152738 
152739 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152740       trace
152741          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
152742                         ' - p_language = '||p_language||
152743                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
152744                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
152745                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
152746                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
152747          ,p_level    => C_LEVEL_STATEMENT
152748          ,p_module   => l_log_module);
152749 END IF;
152750 
152751 
152752 --
152753 INSERT INTO xla_diag_sources --hdr1
152754 (
152755         event_id
152756       , ledger_id
152757       , sla_ledger_id
152758       , description_language
152759       , object_name
152760       , object_type_code
152761       , line_number
152762       , source_application_id
152763       , source_type_code
152764       , source_code
152765       , source_value
152766       , source_meaning
152767       , created_by
152768       , creation_date
152769       , last_update_date
152770       , last_updated_by
152771       , last_update_login
152772       , program_update_date
152773       , program_application_id
152774       , program_id
152775       , request_id
152776 )
152777 SELECT
152778         event_id
152779       , p_target_ledger_id
152780       , p_sla_ledger_id
152781       , p_language
152782       , object_name
152783       , object_type_code
152784       , line_number
152785       , source_application_id
152786       , source_type_code
152787       , source_code
152788       , SUBSTR(source_value ,1,1996)
152789       , SUBSTR(source_meaning,1,200)
152790       , xla_environment_pkg.g_Usr_Id
152791       , TRUNC(SYSDATE)
152792       , TRUNC(SYSDATE)
152793       , xla_environment_pkg.g_Usr_Id
152794       , xla_environment_pkg.g_Login_Id
152795       , TRUNC(SYSDATE)
152796       , xla_environment_pkg.g_Prog_Appl_Id
152797       , xla_environment_pkg.g_Prog_Id
152798       , xla_environment_pkg.g_Req_Id
152799   FROM (
152800        SELECT xet.event_id                  event_id
152801             , 0                             line_number
152805                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
152802             , CASE r
152803                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
152804                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
152806                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
152807                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
152808                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
152809                 
152810                ELSE null
152811               END                           object_name
152812             , CASE r
152813                 WHEN 1 THEN 'HEADER' 
152814                 WHEN 2 THEN 'HEADER' 
152815                 WHEN 3 THEN 'HEADER' 
152816                 WHEN 4 THEN 'HEADER' 
152817                 WHEN 5 THEN 'HEADER' 
152818                 WHEN 6 THEN 'HEADER' 
152819                 
152820                 ELSE null
152821               END                           object_type_code
152822             , CASE r
152823                 WHEN 1 THEN '555' 
152824                 WHEN 2 THEN '555' 
152825                 WHEN 3 THEN '555' 
152826                 WHEN 4 THEN '555' 
152827                 WHEN 5 THEN '555' 
152828                 WHEN 6 THEN '555' 
152829                 
152830                 ELSE null
152831               END                           source_application_id
152832             , 'S'             source_type_code
152833             , CASE r
152834                 WHEN 1 THEN 'ENTITY_CODE' 
152835                 WHEN 2 THEN 'CURRENCY_CODE' 
152836                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
152837                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
152838                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
152839                 WHEN 6 THEN 'TRANSACTION_DATE' 
152840                 
152841                 ELSE null
152842               END                           source_code
152843             , CASE r
152844                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
152845                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
152846                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
152847                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
152848                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
152849                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
152850                 
152851                 ELSE null
152852               END                           source_value
152853             , CASE r
152854                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
152855                           1010186
152856                          ,TO_CHAR(h1.CURRENCY_CODE)
152857                          ,'CURRENCY_CODE'
152858                          ,'S'
152859                          ,555)
152860                 
152861                 ELSE null
152862               END               source_meaning
152863         FROM xla_events_gt     xet  
152864       , GMF_XLA_EXTRACT_HEADERS  h1
152865             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
152866        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
152867          AND xet.event_type_code = C_EVENT_TYPE_CODE
152868             AND h1.event_id = xet.event_id
152869 
152870 )
152871 ;
152872 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152873 
152874       trace
152875          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
152876          ,p_level    => C_LEVEL_STATEMENT
152877          ,p_module   => l_log_module);
152878 
152879 END IF;
152880 --
152881 
152882 
152883 
152884 --
152885 INSERT INTO xla_diag_sources --line1
152886 (
152887         event_id
152888       , ledger_id
152889       , sla_ledger_id
152890       , description_language
152891       , object_name
152892       , object_type_code
152893       , line_number
152894       , source_application_id
152895       , source_type_code
152896       , source_code
152897       , source_value
152898       , source_meaning
152899       , created_by
152900       , creation_date
152901       , last_update_date
152902       , last_updated_by
152903       , last_update_login
152904       , program_update_date
152905       , program_application_id
152906       , program_id
152907       , request_id
152908 )
152909 SELECT  event_id
152910       , p_target_ledger_id
152911       , p_sla_ledger_id
152912       , p_language
152913       , object_name
152914       , object_type_code
152915       , line_number
152916       , source_application_id
152917       , source_type_code
152918       , source_code
152919       , SUBSTR(source_value,1,1996)
152920       , SUBSTR(source_meaning,1,200)
152921       , xla_environment_pkg.g_Usr_Id
152922       , TRUNC(SYSDATE)
152923       , TRUNC(SYSDATE)
152924       , xla_environment_pkg.g_Usr_Id
152925       , xla_environment_pkg.g_Login_Id
152926       , TRUNC(SYSDATE)
152927       , xla_environment_pkg.g_Prog_Appl_Id
152928       , xla_environment_pkg.g_Prog_Id
152929       , xla_environment_pkg.g_Req_Id
152930   FROM (
152931        SELECT xet.event_id                  event_id
152932             , l2.line_number                 line_number
152933             , CASE r
152934                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
152935                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
152936                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
152937                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
152938                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
152939                 
152940                ELSE null
152944                 WHEN 2 THEN 'LINE' 
152941               END                           object_name
152942             , CASE r
152943                 WHEN 1 THEN 'LINE' 
152945                 WHEN 3 THEN 'LINE' 
152946                 WHEN 4 THEN 'LINE' 
152947                 WHEN 5 THEN 'LINE' 
152948                 
152949                 ELSE null
152950               END                           object_type_code
152951             , CASE r
152952                 WHEN 1 THEN '555' 
152953                 WHEN 2 THEN '555' 
152954                 WHEN 3 THEN '555' 
152955                 WHEN 4 THEN '555' 
152956                 WHEN 5 THEN '555' 
152957                 
152958                 ELSE null
152959               END                           source_application_id
152960             , 'S'             source_type_code
152961             , CASE r
152962                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
152963                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
152964                 WHEN 3 THEN 'ENTERED_AMOUNT' 
152965                 WHEN 4 THEN 'LINE_ID' 
152966                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
152967                 
152968                 ELSE null
152969               END                           source_code
152970             , CASE r
152971                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
152972                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
152973                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
152974                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
152975                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
152976                 
152977                 ELSE null
152978               END                           source_value
152979             , null              source_meaning
152980          FROM  xla_events_gt     xet  
152981         , GMF_XLA_EXTRACT_LINES  l2
152982             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
152983         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
152984           AND xet.event_type_code = C_EVENT_TYPE_CODE
152985             AND l2.event_id          = xet.event_id
152986 
152987 )
152988 ;
152989 --
152990 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152991 
152992       trace
152993          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
152994          ,p_level    => C_LEVEL_STATEMENT
152995          ,p_module   => l_log_module);
152996 
152997 END IF;
152998 
152999 
153000 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153001       trace
153002          (p_msg      => 'END of insert_sources_275'
153003          ,p_level    => C_LEVEL_PROCEDURE
153004          ,p_module   => l_log_module);
153005 END IF;
153006 EXCEPTION
153007   WHEN xla_exceptions_pkg.application_exception THEN
153008       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
153009             trace
153010                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
153011                ,p_level    => C_LEVEL_EXCEPTION
153012                ,p_module   => l_log_module);
153013       END IF;
153014       RAISE;
153015   WHEN OTHERS THEN
153016       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
153017             trace
153018                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
153019                ,p_level    => C_LEVEL_EXCEPTION
153020                ,p_module   => l_log_module);
153021        END IF;
153022        xla_exceptions_pkg.raise_message
153023            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_275');
153024 END insert_sources_275;
153025 --
153026 
153027 ---------------------------------------
153028 --
153029 -- PRIVATE FUNCTION
153030 --         EventType_275
153031 --
153032 ----------------------------------------
153033 --
153034 FUNCTION EventType_275
153035        (p_application_id         IN NUMBER
153036        ,p_base_ledger_id         IN NUMBER
153037        ,p_target_ledger_id       IN NUMBER
153038        ,p_language               IN VARCHAR2
153039        ,p_currency_code          IN VARCHAR2
153040        ,p_sla_ledger_id          IN NUMBER
153041        ,p_pad_start_date         IN DATE
153042        ,p_pad_end_date           IN DATE
153043        ,p_primary_ledger_id      IN NUMBER)
153044 RETURN BOOLEAN IS
153045 --
153046 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'GLCOSTALOC';
153047 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'GLCOSTALOC';
153048 
153049 l_calculate_acctd_flag   VARCHAR2(1) :='N';
153050 l_calculate_g_l_flag     VARCHAR2(1) :='N';
153051 --
153052 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153053 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153054 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153055 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153056 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153057 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153058 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153059 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153060 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153061 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153062 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153063 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153067 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153064 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153065 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153066 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153068 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153069 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153070 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153071 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153072 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153073 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153074 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
153075 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153076 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
153077 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
153078 
153079 l_event_id                             NUMBER;
153080 l_previous_event_id                    NUMBER;
153081 l_first_event_id                       NUMBER;
153082 l_last_event_id                        NUMBER;
153083 
153084 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
153085 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
153086 --
153087 --
153088 l_result                    BOOLEAN := TRUE;
153089 l_rows                      NUMBER  := 1000;
153090 l_event_type_name           VARCHAR2(80) := 'GL Cost Allocation';
153091 l_event_class_name          VARCHAR2(80) := 'GL Cost Allocation';
153092 l_description               VARCHAR2(4000);
153093 l_transaction_reversal      NUMBER;
153094 l_ae_header_id              NUMBER;
153095 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
153096 l_log_module                VARCHAR2(240);
153097 --
153098 l_acct_reversal_source      VARCHAR2(30);
153099 l_trx_reversal_source       VARCHAR2(30);
153100 
153101 l_continue_with_lines       BOOLEAN := TRUE;
153102 --
153103 l_acc_rev_gl_date_source    DATE;                      -- 4262811
153104 --
153105 type t_array_event_id is table of number index by binary_integer;
153106 
153107 l_rec_array_event                    t_rec_array_event;
153108 l_null_rec_array_event               t_rec_array_event;
153109 l_array_ae_header_id                 xla_number_array_type;
153110 l_actual_flag                        VARCHAR2(1) := NULL;
153111 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
153112 l_balance_type_code                  VARCHAR2(1) :=NULL;
153113 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
153114 
153115 --
153116 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
153117 --
153118 
153119 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
153120 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
153121 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
153122 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
153123 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
153124 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
153125 
153126 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
153127 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
153128 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
153129 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
153130 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
153131 
153132 l_array_source_6              t_array_source_6;
153133 l_array_source_7              t_array_source_7;
153134 l_array_source_8              t_array_source_8;
153135 l_array_source_9              t_array_source_9;
153136 l_array_source_10              t_array_source_10;
153137 l_array_source_12              t_array_source_12;
153138 
153139 l_array_source_1      t_array_source_1;
153140 l_array_source_2      t_array_source_2;
153141 l_array_source_3      t_array_source_3;
153142 l_array_source_5      t_array_source_5;
153143 l_array_source_11      t_array_source_11;
153144 
153145 --
153146 CURSOR header_cur
153147 IS
153148 SELECT /*+ leading(xet) cardinality(xet,1) */
153149 -- Event Type Code: GLCOSTALOC
153150 -- Event Class Code: GLCOSTALOC
153151     xet.entity_id
153152   , xet.legal_entity_id
153153   , xet.entity_code
153154   , xet.transaction_number
153155   , xet.event_id
153156   , xet.event_class_code
153157   , xet.event_type_code
153158   , xet.event_number
153159   , xet.event_date
153160   , xet.transaction_date
153161   , xet.reference_num_1
153162   , xet.reference_num_2
153163   , xet.reference_num_3
153164   , xet.reference_num_4
153165   , xet.reference_char_1
153166   , xet.reference_char_2
153167   , xet.reference_char_3
153168   , xet.reference_char_4
153169   , xet.reference_date_1
153170   , xet.reference_date_2
153174   , xet.budgetary_control_flag 
153171   , xet.reference_date_3
153172   , xet.reference_date_4
153173   , xet.event_created_by
153175   , h1.ENTITY_CODE    source_6
153176   , h1.CURRENCY_CODE    source_7
153177   , h1.CURRENCY_CONVERSION_DATE    source_8
153178   , h1.CURRENCY_CONVERSION_RATE    source_9
153179   , h1.CURRENCY_CONVERSION_TYPE    source_10
153180   , h1.TRANSACTION_DATE    source_12
153181   FROM xla_events_gt     xet 
153182   , GMF_XLA_EXTRACT_HEADERS  h1
153183  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
153184    and xet.event_type_code = C_EVENT_TYPE_CODE
153185    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
153186 
153187  ORDER BY event_id
153188 ;
153189 
153190 
153191 --
153192 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
153193 IS
153194 SELECT /*+ leading(xet) cardinality(xet,1) */
153195 -- Event Type Code: GLCOSTALOC
153196 -- Event Class Code: GLCOSTALOC
153197     xet.entity_id
153198    ,xet.legal_entity_id
153199    ,xet.entity_code
153200    ,xet.transaction_number
153201    ,xet.event_id
153202    ,xet.event_class_code
153203    ,xet.event_type_code
153204    ,xet.event_number
153205    ,xet.event_date
153206    ,xet.transaction_date
153207    ,xet.reference_num_1
153208    ,xet.reference_num_2
153209    ,xet.reference_num_3
153210    ,xet.reference_num_4
153211    ,xet.reference_char_1
153212    ,xet.reference_char_2
153213    ,xet.reference_char_3
153214    ,xet.reference_char_4
153215    ,xet.reference_date_1
153216    ,xet.reference_date_2
153217    ,xet.reference_date_3
153218    ,xet.reference_date_4
153219    ,xet.event_created_by
153220    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
153221   , l2.TRANSACTION_ACCOUNT_ID    source_1
153222   , l2.JOURNAL_LINE_TYPE    source_2
153223   , l2.ENTERED_AMOUNT    source_3
153224   , l2.LINE_ID    source_5
153225   , l2.ACCOUNTED_AMOUNT    source_11
153226   FROM xla_events_gt     xet 
153227   , GMF_XLA_EXTRACT_LINES  l2
153228  WHERE xet.event_id between x_first_event_id and x_last_event_id
153229    and xet.event_date between p_pad_start_date and p_pad_end_date
153230    and xet.event_type_code = C_EVENT_TYPE_CODE
153231    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
153232 ;
153233 
153234 --
153235 BEGIN
153236 IF g_log_enabled THEN
153237    l_log_module := C_DEFAULT_MODULE||'.EventType_275';
153238 END IF;
153239 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153240    trace
153241       (p_msg      => 'BEGIN of EventType_275'
153242       ,p_level    => C_LEVEL_PROCEDURE
153243       ,p_module   => l_log_module);
153244 END IF;
153245 
153246 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153247    trace
153248       (p_msg      => 'p_application_id = '||p_application_id||
153249                      ' - p_base_ledger_id = '||p_base_ledger_id||
153250                      ' - p_target_ledger_id  = '||p_target_ledger_id||
153251                      ' - p_language = '||p_language||
153252                      ' - p_currency_code = '||p_currency_code||
153253                      ' - p_sla_ledger_id = '||p_sla_ledger_id
153254       ,p_level    => C_LEVEL_STATEMENT
153255       ,p_module   => l_log_module);
153256 END IF;
153257 --
153258 -- initialze arrays
153259 --
153260 g_array_event.DELETE;
153261 l_rec_array_event := l_null_rec_array_event;
153262 --
153263 --------------------------------------
153264 -- 4262811 Initialze MPA Line Number
153265 --------------------------------------
153266 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
153267 
153268 --
153269 
153270 --
153271 OPEN header_cur;
153272 --
153273 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153274    trace
153275    (p_msg      => 'SQL - FETCH header_cur'
153276    ,p_level    => C_LEVEL_STATEMENT
153277    ,p_module   => l_log_module);
153278 END IF;
153279 --
153280 LOOP
153281 FETCH header_cur BULK COLLECT INTO
153282         l_array_entity_id
153283       , l_array_legal_entity_id
153284       , l_array_entity_code
153285       , l_array_transaction_num
153286       , l_array_event_id
153287       , l_array_class_code
153288       , l_array_event_type
153289       , l_array_event_number
153290       , l_array_event_date
153291       , l_array_transaction_date
153292       , l_array_reference_num_1
153293       , l_array_reference_num_2
153294       , l_array_reference_num_3
153295       , l_array_reference_num_4
153296       , l_array_reference_char_1
153297       , l_array_reference_char_2
153298       , l_array_reference_char_3
153299       , l_array_reference_char_4
153300       , l_array_reference_date_1
153301       , l_array_reference_date_2
153302       , l_array_reference_date_3
153303       , l_array_reference_date_4
153304       , l_array_event_created_by
153305       , l_array_budgetary_control_flag 
153306       , l_array_source_6
153307       , l_array_source_7
153308       , l_array_source_8
153309       , l_array_source_9
153310       , l_array_source_10
153311       , l_array_source_12
153312       LIMIT l_rows;
153313 --
153314 IF (C_LEVEL_EVENT >= g_log_level) THEN
153315    trace
153316    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
153317    ,p_level    => C_LEVEL_EVENT
153318    ,p_module   => l_log_module);
153319 END IF;
153320 --
153321 EXIT WHEN l_array_entity_id.COUNT = 0;
153322 
153323 -- initialize arrays
153324 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
153328 -- Bug 4458708
153325 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
153326 
153327 --
153329 --
153330 XLA_AE_LINES_PKG.g_LineNumber := 0;
153331 
153332 
153333 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
153334 g_last_hdr_idx := l_array_event_id.LAST;
153335 --
153336 -- loop for the headers. Each iteration is for each header extract row
153337 -- fetched in header cursor
153338 --
153339 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
153340 
153341 --
153342 -- set event info as cache for other routines to refer event attributes
153343 --
153344 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
153345    (p_application_id           => p_application_id
153346    ,p_primary_ledger_id        => p_primary_ledger_id
153347    ,p_base_ledger_id           => p_base_ledger_id
153348    ,p_target_ledger_id         => p_target_ledger_id
153349    ,p_entity_id                => l_array_entity_id(hdr_idx)
153350    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
153351    ,p_entity_code              => l_array_entity_code(hdr_idx)
153352    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
153353    ,p_event_id                 => l_array_event_id(hdr_idx)
153354    ,p_event_class_code         => l_array_class_code(hdr_idx)
153355    ,p_event_type_code          => l_array_event_type(hdr_idx)
153356    ,p_event_number             => l_array_event_number(hdr_idx)
153357    ,p_event_date               => l_array_event_date(hdr_idx)
153358    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
153359    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
153360    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
153361    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
153362    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
153363    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
153364    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
153365    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
153366    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
153367    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
153368    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
153369    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
153370    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
153371    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
153372    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
153373 
153374 --
153375 -- set the status of entry to C_VALID (0)
153376 --
153377 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
153378 
153379 --
153380 -- initialize a row for ae header
153381 --
153382 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
153383 
153384 l_event_id := l_array_event_id(hdr_idx);
153385 
153386 --
153387 -- storing the hdr_idx for event. May be used by line cursor.
153388 --
153389 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
153390 
153391 --
153392 -- store sources from header extract. This can be improved to
153393 -- store only those sources from header extract that may be used in lines
153394 --
153395 
153396 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
153397 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
153398 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
153399 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
153400 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
153401 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
153402 
153403 --
153404 -- initilaize the status of ae headers for diffrent balance types
153405 -- the status is initialised to C_NOT_CREATED (2)
153406 --
153407 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
153408 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
153409 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
153410 
153411 --
153412 -- call api to validate and store accounting attributes for header
153413 --
153414 
153415 ------------------------------------------------------------
153416 -- Accrual Reversal : to get date for Standard Source (NONE)
153417 ------------------------------------------------------------
153418 l_acc_rev_gl_date_source := NULL;
153419 
153420      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
153421       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
153422 
153423 
153424 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
153425 
153426 XLA_AE_HEADER_PKG.SetJeCategoryName;
153427 
153428 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
153429 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
153430 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
153431 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
153432 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
153433 
153434 
153435 -- No header level analytical criteria
153436 
153437 --
153438 --accounting attribute enhancement, bug 3612931
153439 --
153443    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
153440 l_trx_reversal_source := SUBSTR(NULL, 1,30);
153441 
153442 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
153444 
153445    xla_accounting_err_pkg.build_message
153446       (p_appli_s_name            => 'XLA'
153447       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
153448       ,p_token_1                 => 'ACCT_ATTR_NAME'
153449       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
153450       ,p_token_2                 => 'PRODUCT_NAME'
153451       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
153452       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
153453       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
153454       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
153455 
153456 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
153457    --
153458    -- following sets the accounting attributes needed to reverse
153459    -- accounting for a distributeion
153460    --
153461    xla_ae_lines_pkg.SetTrxReversalAttrs
153462       (p_event_id              => l_event_id
153463       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
153464       ,p_trx_reversal_source   => l_trx_reversal_source);
153465 
153466 END IF;
153467 
153468 
153469 ----------------------------------------------------------------
153470 -- 4262811 -  update the header statuses to invalid in need be
153471 ----------------------------------------------------------------
153472 --
153473 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
153474 
153475 
153476   -----------------------------------------------
153477   -- No accrual reversal for the event class/type
153478   -----------------------------------------------
153479 ----------------------------------------------------------------
153480 
153481 --
153482 -- this ends the header loop iteration for one bulk fetch
153483 --
153484 END LOOP;
153485 
153486 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
153487 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
153488 
153489 --
153490 -- insert dummy rows into lines gt table that were created due to
153491 -- transaction reversals
153492 --
153493 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
153494    l_result := XLA_AE_LINES_PKG.InsertLines;
153495 END IF;
153496 
153497 --
153498 -- reset the temp_line_num for each set of events fetched from header
153499 -- cursor rather than doing it for each new event in line cursor
153500 -- Bug 3939231
153501 --
153502 xla_ae_lines_pkg.g_temp_line_num := 0;
153503 
153504 
153505 
153506 --
153507 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
153508 --
153509 --
153510 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153511 
153512       trace
153513          (p_msg      => 'SQL - FETCH line_cur'
153514          ,p_level    => C_LEVEL_STATEMENT
153515          ,p_module   => l_log_module);
153516 
153517 END IF;
153518 --
153519 --
153520 LOOP
153521   --
153522   FETCH line_cur BULK COLLECT INTO
153523         l_array_entity_id
153524       , l_array_legal_entity_id
153525       , l_array_entity_code
153526       , l_array_transaction_num
153527       , l_array_event_id
153528       , l_array_class_code
153529       , l_array_event_type
153530       , l_array_event_number
153531       , l_array_event_date
153532       , l_array_transaction_date
153533       , l_array_reference_num_1
153534       , l_array_reference_num_2
153535       , l_array_reference_num_3
153536       , l_array_reference_num_4
153537       , l_array_reference_char_1
153538       , l_array_reference_char_2
153539       , l_array_reference_char_3
153540       , l_array_reference_char_4
153541       , l_array_reference_date_1
153542       , l_array_reference_date_2
153543       , l_array_reference_date_3
153544       , l_array_reference_date_4
153545       , l_array_event_created_by
153546       , l_array_budgetary_control_flag
153547       , l_array_extract_line_num 
153548       , l_array_source_1
153549       , l_array_source_2
153550       , l_array_source_3
153551       , l_array_source_5
153552       , l_array_source_11
153553       LIMIT l_rows;
153554 
153555   --
153556   IF (C_LEVEL_EVENT >= g_log_level) THEN
153557             trace
153558                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
153559                ,p_level    => C_LEVEL_EVENT
153560                ,p_module   => l_log_module);
153561   END IF;
153562   --
153563   EXIT WHEN l_array_entity_id.count = 0;
153564 
153565   XLA_AE_LINES_PKG.g_rec_lines := null;
153566 
153567 --
153568 -- Bug 4458708
153569 --
153570 XLA_AE_LINES_PKG.g_LineNumber := 0;
153571 --
153572 --
153573 
153574 FOR Idx IN 1..l_array_event_id.count LOOP
153575    --
153576    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
153577    --
153578    l_event_id := l_array_event_id(idx);  -- 5648433
153579 
153580    --
153581    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
153582    --
153583 
153584    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
153588    THEN
153585              (g_array_event(l_event_id).array_value_num('header_index'))
153586          ,'N'
153587          ) <> 'Y'
153589       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153590          trace
153591             (p_msg      => 'Trancaction revesal option is not Y '
153592             ,p_level    => C_LEVEL_STATEMENT
153593             ,p_module   => l_log_module);
153594       END IF;
153595 
153596 --
153597 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
153598 --
153599 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
153600 --
153601 -- set event info as cache for other routines to refer event attributes
153602 --
153603 
153604 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
153605    l_previous_event_id := l_event_id;
153606 
153607    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
153608       (p_application_id           => p_application_id
153609       ,p_primary_ledger_id        => p_primary_ledger_id
153610       ,p_base_ledger_id           => p_base_ledger_id
153611       ,p_target_ledger_id         => p_target_ledger_id
153612       ,p_entity_id                => l_array_entity_id(Idx)
153613       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
153614       ,p_entity_code              => l_array_entity_code(Idx)
153615       ,p_transaction_num          => l_array_transaction_num(Idx)
153616       ,p_event_id                 => l_array_event_id(Idx)
153617       ,p_event_class_code         => l_array_class_code(Idx)
153618       ,p_event_type_code          => l_array_event_type(Idx)
153619       ,p_event_number             => l_array_event_number(Idx)
153620       ,p_event_date               => l_array_event_date(Idx)
153621       ,p_transaction_date         => l_array_transaction_date(Idx)
153622       ,p_reference_num_1          => l_array_reference_num_1(Idx)
153623       ,p_reference_num_2          => l_array_reference_num_2(Idx)
153624       ,p_reference_num_3          => l_array_reference_num_3(Idx)
153625       ,p_reference_num_4          => l_array_reference_num_4(Idx)
153626       ,p_reference_char_1         => l_array_reference_char_1(Idx)
153627       ,p_reference_char_2         => l_array_reference_char_2(Idx)
153628       ,p_reference_char_3         => l_array_reference_char_3(Idx)
153629       ,p_reference_char_4         => l_array_reference_char_4(Idx)
153630       ,p_reference_date_1         => l_array_reference_date_1(Idx)
153631       ,p_reference_date_2         => l_array_reference_date_2(Idx)
153632       ,p_reference_date_3         => l_array_reference_date_3(Idx)
153633       ,p_reference_date_4         => l_array_reference_date_4(Idx)
153634       ,p_event_created_by         => l_array_event_created_by(Idx)
153635       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
153636        --
153637 END IF;
153638 
153639 
153640 
153641 --
153642 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
153643 
153644 l_acct_reversal_source := SUBSTR(NULL, 1,30);
153645 
153646 IF l_continue_with_lines THEN
153647    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
153648       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
153649 
153650       xla_accounting_err_pkg.build_message
153651          (p_appli_s_name            => 'XLA'
153652          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
153653          ,p_token_1                 => 'LINE_NUMBER'
153654          ,p_value_1                 => l_array_extract_line_num(Idx)
153655          ,p_token_2                 => 'PRODUCT_NAME'
153656          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
153657          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
153658          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
153659          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
153660 
153661    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
153662       --
153663       -- following sets the accounting attributes needed to reverse
153664       -- accounting for a distributeion
153665       --
153666 
153667       --
153668       -- 5217187
153669       --
153670       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
153671       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
153672                                        g_array_event(l_event_id).array_value_num('header_index'));
153673       --
153674       --
153675 
153676       -- No reversal code generated
153677 
153678       xla_ae_lines_pkg.SetAcctReversalAttrs
153679          (p_event_id             => l_event_id
153680          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
153681          ,p_calculate_acctd_flag => l_calculate_acctd_flag
153682          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
153683    END IF;
153684 
153685    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
153686        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
153687 
153688 --
153689 AcctLineType_60 (
153690  p_application_id  => p_application_id
153691  ,p_event_id     => l_event_id
153692  ,p_calculate_acctd_flag => l_calculate_acctd_flag
153693  ,p_calculate_g_l_flag => l_calculate_g_l_flag
153694  ,p_actual_flag => l_actual_flag
153695  ,p_balance_type_code => l_balance_type_code
153696  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153697  
153698  , p_source_1 => l_array_source_1(Idx)
153699  , p_source_2 => l_array_source_2(Idx)
153703  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
153700  , p_source_3 => l_array_source_3(Idx)
153701  , p_source_5 => l_array_source_5(Idx)
153702  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
153704  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
153705  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
153706  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
153707  , p_source_11 => l_array_source_11(Idx)
153708  );
153709 If(l_balance_type_code = 'A') THEN
153710   l_actual_gain_loss_ref := l_gain_or_loss_ref;
153711 END IF;
153712 
153713 --
153714 
153715 
153716 --
153717 AcctLineType_141 (
153718  p_application_id  => p_application_id
153719  ,p_event_id     => l_event_id
153720  ,p_calculate_acctd_flag => l_calculate_acctd_flag
153721  ,p_calculate_g_l_flag => l_calculate_g_l_flag
153722  ,p_actual_flag => l_actual_flag
153723  ,p_balance_type_code => l_balance_type_code
153724  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153725  
153726  , p_source_1 => l_array_source_1(Idx)
153727  , p_source_2 => l_array_source_2(Idx)
153728  , p_source_3 => l_array_source_3(Idx)
153729  , p_source_5 => l_array_source_5(Idx)
153730  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
153731  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
153732  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
153733  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
153734  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
153735  , p_source_11 => l_array_source_11(Idx)
153736  );
153737 If(l_balance_type_code = 'A') THEN
153738   l_actual_gain_loss_ref := l_gain_or_loss_ref;
153739 END IF;
153740 
153741 --
153742 
153743       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
153744       -- or secondary ledger that has different currency with primary
153745       -- or alc that is calculated by sla
153746       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
153747             (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'))
153748 
153749 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
153750 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
153751           AND (l_actual_flag = 'A')) THEN
153752         XLA_AE_LINES_PKG.CreateGainOrLossLines(
153753           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
153754          ,p_application_id   => p_application_id
153755          ,p_amb_context_code => 'DEFAULT'
153756          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
153757          ,p_event_class_code => C_EVENT_CLASS_CODE
153758          ,p_event_type_code  => C_EVENT_TYPE_CODE
153759          
153760          ,p_gain_ccid        => -1
153761          ,p_loss_ccid        => -1
153762 
153763          ,p_actual_flag      => l_actual_flag
153764          ,p_enc_flag         => null
153765          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
153766          ,p_enc_g_l_ref      => null
153767          );
153768       END IF;
153769    END IF;
153770 END IF;
153771 
153772    ELSE
153773       --
153774       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
153775       --
153776       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153777          trace
153778             (p_msg      => 'Trancaction revesal option is Y'
153779             ,p_level    => C_LEVEL_STATEMENT
153780             ,p_module   => l_log_module);
153781       END IF;
153782    END IF;
153783 
153784 END LOOP;
153785 l_result := XLA_AE_LINES_PKG.InsertLines ;
153786 end loop;
153787 close line_cur;
153788 
153789 
153790 --
153791 -- insert headers into xla_ae_headers_gt table
153792 --
153793 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
153794 
153795 -- insert into errors table here.
153796 
153797 END LOOP;
153798 
153799 --
153800 -- 4865292
153801 --
153802 -- Compare g_hdr_extract_count with event count in
153803 -- CreateHeadersAndLines.
153804 --
153805 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
153806 
153807 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153808    trace (p_msg     => '# rows extracted from header extract objects '
153809                     || ' (running total): '
153810                     || g_hdr_extract_count
153811          ,p_level   => C_LEVEL_STATEMENT
153812          ,p_module  => l_log_module);
153813 END IF;
153814 
153815 CLOSE header_cur;
153816 --
153817 
153818 --
153819 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153820    trace
153821       (p_msg      => 'END of EventType_275'
153822       ,p_level    => C_LEVEL_PROCEDURE
153823       ,p_module   => l_log_module);
153824 END IF;
153825 --
153826 RETURN l_result;
153827 EXCEPTION
153828 WHEN xla_exceptions_pkg.application_exception THEN
153829    
153830 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
153831 
153832    
153833 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
153834 
153835    RAISE;
153836 
153837 WHEN NO_DATA_FOUND THEN
153838 
153839 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
153840 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
153841 
153845 END LOOP;
153842 FOR header_record IN header_cur
153843 LOOP
153844     l_array_header_events(header_record.event_id) := header_record.event_id;
153846 
153847 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
153848 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
153849 
153850 fnd_file.put_line(fnd_file.LOG, '                    ');
153851 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
153852 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
153853 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
153854 
153855 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
153856 LOOP
153857 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
153858 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
153859         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
153860 	END IF;
153861 END LOOP;
153862 
153863 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
153864 fnd_file.put_line(fnd_file.LOG, '                    ');
153865 
153866 
153867 xla_exceptions_pkg.raise_message
153868       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_275');
153869 
153870 
153871 WHEN OTHERS THEN
153872    xla_exceptions_pkg.raise_message
153873       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_275');
153874 END EventType_275;
153875 --
153876 
153877 ---------------------------------------
153878 --
153879 -- PRIVATE PROCEDURE
153880 --         insert_sources_276
153881 --
153882 ----------------------------------------
153883 --
153884 PROCEDURE insert_sources_276(
153885                                 p_target_ledger_id       IN NUMBER
153886                               , p_language               IN VARCHAR2
153887                               , p_sla_ledger_id          IN NUMBER
153888                               , p_pad_start_date         IN DATE
153889                               , p_pad_end_date           IN DATE
153890                          )
153891 IS
153892 
153893 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_ORDER_ISSUE';
153894 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
153895 p_apps_owner                   VARCHAR2(30);
153896 l_log_module                   VARCHAR2(240);
153897 BEGIN
153898 IF g_log_enabled THEN
153899       l_log_module := C_DEFAULT_MODULE||'.insert_sources_276';
153900 END IF;
153901 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153902 
153903       trace
153904          (p_msg      => 'BEGIN of insert_sources_276'
153905          ,p_level    => C_LEVEL_PROCEDURE
153906          ,p_module   => l_log_module);
153907 
153908 END IF;
153909 
153910 -- select APPS owner
153911 SELECT oracle_username
153912   INTO p_apps_owner
153913   FROM fnd_oracle_userid
153914  WHERE read_only_flag = 'U'
153915 ;
153916 
153917 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153918       trace
153919          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
153920                         ' - p_language = '||p_language||
153921                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
153922                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
153923                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
153924                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
153925          ,p_level    => C_LEVEL_STATEMENT
153926          ,p_module   => l_log_module);
153927 END IF;
153928 
153929 
153930 --
153931 INSERT INTO xla_diag_sources --hdr1
153932 (
153933         event_id
153934       , ledger_id
153935       , sla_ledger_id
153936       , description_language
153937       , object_name
153938       , object_type_code
153939       , line_number
153940       , source_application_id
153941       , source_type_code
153942       , source_code
153943       , source_value
153944       , source_meaning
153945       , created_by
153946       , creation_date
153947       , last_update_date
153948       , last_updated_by
153949       , last_update_login
153950       , program_update_date
153951       , program_application_id
153952       , program_id
153953       , request_id
153954 )
153955 SELECT
153956         event_id
153957       , p_target_ledger_id
153958       , p_sla_ledger_id
153959       , p_language
153960       , object_name
153961       , object_type_code
153962       , line_number
153963       , source_application_id
153964       , source_type_code
153965       , source_code
153966       , SUBSTR(source_value ,1,1996)
153967       , SUBSTR(source_meaning,1,200)
153968       , xla_environment_pkg.g_Usr_Id
153969       , TRUNC(SYSDATE)
153970       , TRUNC(SYSDATE)
153971       , xla_environment_pkg.g_Usr_Id
153972       , xla_environment_pkg.g_Login_Id
153973       , TRUNC(SYSDATE)
153974       , xla_environment_pkg.g_Prog_Appl_Id
153975       , xla_environment_pkg.g_Prog_Id
153976       , xla_environment_pkg.g_Req_Id
153977   FROM (
153978        SELECT xet.event_id                  event_id
153979             , 0                             line_number
153980             , CASE r
153981                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
153982                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
153983                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
153987                 
153984                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
153985                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
153986                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
153988                ELSE null
153989               END                           object_name
153990             , CASE r
153991                 WHEN 1 THEN 'HEADER' 
153992                 WHEN 2 THEN 'HEADER' 
153993                 WHEN 3 THEN 'HEADER' 
153994                 WHEN 4 THEN 'HEADER' 
153995                 WHEN 5 THEN 'HEADER' 
153996                 WHEN 6 THEN 'HEADER' 
153997                 
153998                 ELSE null
153999               END                           object_type_code
154000             , CASE r
154001                 WHEN 1 THEN '555' 
154002                 WHEN 2 THEN '555' 
154003                 WHEN 3 THEN '555' 
154004                 WHEN 4 THEN '555' 
154005                 WHEN 5 THEN '555' 
154006                 WHEN 6 THEN '555' 
154007                 
154008                 ELSE null
154009               END                           source_application_id
154010             , 'S'             source_type_code
154011             , CASE r
154012                 WHEN 1 THEN 'ENTITY_CODE' 
154013                 WHEN 2 THEN 'CURRENCY_CODE' 
154014                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
154015                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
154016                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
154017                 WHEN 6 THEN 'TRANSACTION_DATE' 
154018                 
154019                 ELSE null
154020               END                           source_code
154021             , CASE r
154022                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
154023                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
154024                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
154025                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
154026                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
154027                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
154028                 
154029                 ELSE null
154030               END                           source_value
154031             , CASE r
154032                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
154033                           1010186
154034                          ,TO_CHAR(h1.CURRENCY_CODE)
154035                          ,'CURRENCY_CODE'
154036                          ,'S'
154037                          ,555)
154038                 
154039                 ELSE null
154040               END               source_meaning
154041         FROM xla_events_gt     xet  
154042       , GMF_XLA_EXTRACT_HEADERS  h1
154043             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
154044        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
154045          AND xet.event_type_code = C_EVENT_TYPE_CODE
154046             AND h1.event_id = xet.event_id
154047 
154048 )
154049 ;
154050 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154051 
154052       trace
154053          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
154054          ,p_level    => C_LEVEL_STATEMENT
154055          ,p_module   => l_log_module);
154056 
154057 END IF;
154058 --
154059 
154060 
154061 
154062 --
154063 INSERT INTO xla_diag_sources --line1
154064 (
154065         event_id
154066       , ledger_id
154067       , sla_ledger_id
154068       , description_language
154069       , object_name
154070       , object_type_code
154071       , line_number
154072       , source_application_id
154073       , source_type_code
154074       , source_code
154075       , source_value
154076       , source_meaning
154077       , created_by
154078       , creation_date
154079       , last_update_date
154080       , last_updated_by
154081       , last_update_login
154082       , program_update_date
154083       , program_application_id
154084       , program_id
154085       , request_id
154086 )
154087 SELECT  event_id
154088       , p_target_ledger_id
154089       , p_sla_ledger_id
154090       , p_language
154091       , object_name
154092       , object_type_code
154093       , line_number
154094       , source_application_id
154095       , source_type_code
154096       , source_code
154097       , SUBSTR(source_value,1,1996)
154098       , SUBSTR(source_meaning,1,200)
154099       , xla_environment_pkg.g_Usr_Id
154100       , TRUNC(SYSDATE)
154101       , TRUNC(SYSDATE)
154102       , xla_environment_pkg.g_Usr_Id
154103       , xla_environment_pkg.g_Login_Id
154104       , TRUNC(SYSDATE)
154105       , xla_environment_pkg.g_Prog_Appl_Id
154106       , xla_environment_pkg.g_Prog_Id
154107       , xla_environment_pkg.g_Req_Id
154108   FROM (
154109        SELECT xet.event_id                  event_id
154110             , l2.line_number                 line_number
154111             , CASE r
154112                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
154113                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
154114                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
154115                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
154116                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
154117                 
154118                ELSE null
154119               END                           object_name
154120             , CASE r
154121                 WHEN 1 THEN 'LINE' 
154122                 WHEN 2 THEN 'LINE' 
154126                 
154123                 WHEN 3 THEN 'LINE' 
154124                 WHEN 4 THEN 'LINE' 
154125                 WHEN 5 THEN 'LINE' 
154127                 ELSE null
154128               END                           object_type_code
154129             , CASE r
154130                 WHEN 1 THEN '555' 
154131                 WHEN 2 THEN '555' 
154132                 WHEN 3 THEN '555' 
154133                 WHEN 4 THEN '555' 
154134                 WHEN 5 THEN '555' 
154135                 
154136                 ELSE null
154137               END                           source_application_id
154138             , 'S'             source_type_code
154139             , CASE r
154140                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
154141                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
154142                 WHEN 3 THEN 'ENTERED_AMOUNT' 
154143                 WHEN 4 THEN 'LINE_ID' 
154144                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
154145                 
154146                 ELSE null
154147               END                           source_code
154148             , CASE r
154149                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
154150                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
154151                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
154152                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
154153                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
154154                 
154155                 ELSE null
154156               END                           source_value
154157             , null              source_meaning
154158          FROM  xla_events_gt     xet  
154159         , GMF_XLA_EXTRACT_LINES  l2
154160             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
154161         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
154162           AND xet.event_type_code = C_EVENT_TYPE_CODE
154163             AND l2.event_id          = xet.event_id
154164 
154165 )
154166 ;
154167 --
154168 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154169 
154170       trace
154171          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
154172          ,p_level    => C_LEVEL_STATEMENT
154173          ,p_module   => l_log_module);
154174 
154175 END IF;
154176 
154177 
154178 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154179       trace
154180          (p_msg      => 'END of insert_sources_276'
154181          ,p_level    => C_LEVEL_PROCEDURE
154182          ,p_module   => l_log_module);
154183 END IF;
154184 EXCEPTION
154185   WHEN xla_exceptions_pkg.application_exception THEN
154186       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
154187             trace
154188                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
154189                ,p_level    => C_LEVEL_EXCEPTION
154190                ,p_module   => l_log_module);
154191       END IF;
154192       RAISE;
154193   WHEN OTHERS THEN
154194       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
154195             trace
154196                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
154197                ,p_level    => C_LEVEL_EXCEPTION
154198                ,p_module   => l_log_module);
154199        END IF;
154200        xla_exceptions_pkg.raise_message
154201            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_276');
154202 END insert_sources_276;
154203 --
154204 
154205 ---------------------------------------
154206 --
154207 -- PRIVATE FUNCTION
154208 --         EventType_276
154209 --
154210 ----------------------------------------
154211 --
154212 FUNCTION EventType_276
154213        (p_application_id         IN NUMBER
154214        ,p_base_ledger_id         IN NUMBER
154215        ,p_target_ledger_id       IN NUMBER
154216        ,p_language               IN VARCHAR2
154217        ,p_currency_code          IN VARCHAR2
154218        ,p_sla_ledger_id          IN NUMBER
154219        ,p_pad_start_date         IN DATE
154220        ,p_pad_end_date           IN DATE
154221        ,p_primary_ledger_id      IN NUMBER)
154222 RETURN BOOLEAN IS
154223 --
154224 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_ORDER_ISSUE';
154225 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
154226 
154227 l_calculate_acctd_flag   VARCHAR2(1) :='N';
154228 l_calculate_g_l_flag     VARCHAR2(1) :='N';
154229 --
154230 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154231 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154232 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154233 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154234 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154235 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154236 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154237 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154238 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154239 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154240 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154241 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154242 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154246 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154243 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154244 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154245 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154247 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154248 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154249 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154250 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154251 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154252 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
154253 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154254 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
154255 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
154256 
154257 l_event_id                             NUMBER;
154258 l_previous_event_id                    NUMBER;
154259 l_first_event_id                       NUMBER;
154260 l_last_event_id                        NUMBER;
154261 
154262 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
154263 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
154264 --
154265 --
154266 l_result                    BOOLEAN := TRUE;
154267 l_rows                      NUMBER  := 1000;
154268 l_event_type_name           VARCHAR2(80) := 'Internal Order Issue to Expense';
154269 l_event_class_name          VARCHAR2(80) := 'Internal Order to Expense';
154270 l_description               VARCHAR2(4000);
154271 l_transaction_reversal      NUMBER;
154272 l_ae_header_id              NUMBER;
154273 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
154274 l_log_module                VARCHAR2(240);
154275 --
154276 l_acct_reversal_source      VARCHAR2(30);
154277 l_trx_reversal_source       VARCHAR2(30);
154278 
154279 l_continue_with_lines       BOOLEAN := TRUE;
154280 --
154281 l_acc_rev_gl_date_source    DATE;                      -- 4262811
154282 --
154283 type t_array_event_id is table of number index by binary_integer;
154284 
154285 l_rec_array_event                    t_rec_array_event;
154286 l_null_rec_array_event               t_rec_array_event;
154287 l_array_ae_header_id                 xla_number_array_type;
154288 l_actual_flag                        VARCHAR2(1) := NULL;
154289 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
154290 l_balance_type_code                  VARCHAR2(1) :=NULL;
154291 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
154292 
154293 --
154294 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
154295 --
154296 
154297 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
154298 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
154299 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
154300 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
154301 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
154302 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
154303 
154304 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
154305 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
154306 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
154307 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
154308 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
154309 
154310 l_array_source_6              t_array_source_6;
154311 l_array_source_7              t_array_source_7;
154312 l_array_source_8              t_array_source_8;
154313 l_array_source_9              t_array_source_9;
154314 l_array_source_10              t_array_source_10;
154315 l_array_source_12              t_array_source_12;
154316 
154317 l_array_source_1      t_array_source_1;
154318 l_array_source_2      t_array_source_2;
154319 l_array_source_3      t_array_source_3;
154320 l_array_source_5      t_array_source_5;
154321 l_array_source_11      t_array_source_11;
154322 
154323 --
154324 CURSOR header_cur
154325 IS
154326 SELECT /*+ leading(xet) cardinality(xet,1) */
154327 -- Event Type Code: INT_ORDER_ISSUE
154328 -- Event Class Code: INT_ORDER_TO_EXP
154329     xet.entity_id
154330   , xet.legal_entity_id
154331   , xet.entity_code
154332   , xet.transaction_number
154333   , xet.event_id
154334   , xet.event_class_code
154335   , xet.event_type_code
154336   , xet.event_number
154337   , xet.event_date
154338   , xet.transaction_date
154339   , xet.reference_num_1
154340   , xet.reference_num_2
154341   , xet.reference_num_3
154342   , xet.reference_num_4
154343   , xet.reference_char_1
154344   , xet.reference_char_2
154345   , xet.reference_char_3
154346   , xet.reference_char_4
154347   , xet.reference_date_1
154348   , xet.reference_date_2
154349   , xet.reference_date_3
154350   , xet.reference_date_4
154354   , h1.CURRENCY_CODE    source_7
154351   , xet.event_created_by
154352   , xet.budgetary_control_flag 
154353   , h1.ENTITY_CODE    source_6
154355   , h1.CURRENCY_CONVERSION_DATE    source_8
154356   , h1.CURRENCY_CONVERSION_RATE    source_9
154357   , h1.CURRENCY_CONVERSION_TYPE    source_10
154358   , h1.TRANSACTION_DATE    source_12
154359   FROM xla_events_gt     xet 
154360   , GMF_XLA_EXTRACT_HEADERS  h1
154361  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
154362    and xet.event_type_code = C_EVENT_TYPE_CODE
154363    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
154364 
154365  ORDER BY event_id
154366 ;
154367 
154368 
154369 --
154370 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
154371 IS
154372 SELECT /*+ leading(xet) cardinality(xet,1) */
154373 -- Event Type Code: INT_ORDER_ISSUE
154374 -- Event Class Code: INT_ORDER_TO_EXP
154375     xet.entity_id
154376    ,xet.legal_entity_id
154377    ,xet.entity_code
154378    ,xet.transaction_number
154379    ,xet.event_id
154380    ,xet.event_class_code
154381    ,xet.event_type_code
154382    ,xet.event_number
154383    ,xet.event_date
154384    ,xet.transaction_date
154385    ,xet.reference_num_1
154386    ,xet.reference_num_2
154387    ,xet.reference_num_3
154388    ,xet.reference_num_4
154389    ,xet.reference_char_1
154390    ,xet.reference_char_2
154391    ,xet.reference_char_3
154392    ,xet.reference_char_4
154393    ,xet.reference_date_1
154394    ,xet.reference_date_2
154395    ,xet.reference_date_3
154396    ,xet.reference_date_4
154397    ,xet.event_created_by
154398    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
154399   , l2.TRANSACTION_ACCOUNT_ID    source_1
154400   , l2.JOURNAL_LINE_TYPE    source_2
154401   , l2.ENTERED_AMOUNT    source_3
154402   , l2.LINE_ID    source_5
154403   , l2.ACCOUNTED_AMOUNT    source_11
154404   FROM xla_events_gt     xet 
154405   , GMF_XLA_EXTRACT_LINES  l2
154406  WHERE xet.event_id between x_first_event_id and x_last_event_id
154407    and xet.event_date between p_pad_start_date and p_pad_end_date
154408    and xet.event_type_code = C_EVENT_TYPE_CODE
154409    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
154410 ;
154411 
154412 --
154413 BEGIN
154414 IF g_log_enabled THEN
154415    l_log_module := C_DEFAULT_MODULE||'.EventType_276';
154416 END IF;
154417 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154418    trace
154419       (p_msg      => 'BEGIN of EventType_276'
154420       ,p_level    => C_LEVEL_PROCEDURE
154421       ,p_module   => l_log_module);
154422 END IF;
154423 
154424 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154425    trace
154426       (p_msg      => 'p_application_id = '||p_application_id||
154427                      ' - p_base_ledger_id = '||p_base_ledger_id||
154428                      ' - p_target_ledger_id  = '||p_target_ledger_id||
154429                      ' - p_language = '||p_language||
154430                      ' - p_currency_code = '||p_currency_code||
154431                      ' - p_sla_ledger_id = '||p_sla_ledger_id
154432       ,p_level    => C_LEVEL_STATEMENT
154433       ,p_module   => l_log_module);
154434 END IF;
154435 --
154436 -- initialze arrays
154437 --
154438 g_array_event.DELETE;
154439 l_rec_array_event := l_null_rec_array_event;
154440 --
154441 --------------------------------------
154442 -- 4262811 Initialze MPA Line Number
154443 --------------------------------------
154444 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
154445 
154446 --
154447 
154448 --
154449 OPEN header_cur;
154450 --
154451 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154452    trace
154453    (p_msg      => 'SQL - FETCH header_cur'
154454    ,p_level    => C_LEVEL_STATEMENT
154455    ,p_module   => l_log_module);
154456 END IF;
154457 --
154458 LOOP
154459 FETCH header_cur BULK COLLECT INTO
154460         l_array_entity_id
154461       , l_array_legal_entity_id
154462       , l_array_entity_code
154463       , l_array_transaction_num
154464       , l_array_event_id
154465       , l_array_class_code
154466       , l_array_event_type
154467       , l_array_event_number
154468       , l_array_event_date
154469       , l_array_transaction_date
154470       , l_array_reference_num_1
154471       , l_array_reference_num_2
154472       , l_array_reference_num_3
154473       , l_array_reference_num_4
154474       , l_array_reference_char_1
154475       , l_array_reference_char_2
154476       , l_array_reference_char_3
154477       , l_array_reference_char_4
154478       , l_array_reference_date_1
154479       , l_array_reference_date_2
154480       , l_array_reference_date_3
154481       , l_array_reference_date_4
154482       , l_array_event_created_by
154483       , l_array_budgetary_control_flag 
154484       , l_array_source_6
154485       , l_array_source_7
154486       , l_array_source_8
154487       , l_array_source_9
154488       , l_array_source_10
154489       , l_array_source_12
154490       LIMIT l_rows;
154491 --
154492 IF (C_LEVEL_EVENT >= g_log_level) THEN
154493    trace
154494    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
154495    ,p_level    => C_LEVEL_EVENT
154496    ,p_module   => l_log_module);
154497 END IF;
154498 --
154499 EXIT WHEN l_array_entity_id.COUNT = 0;
154500 
154501 -- initialize arrays
154502 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
154503 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
154504 
154508 XLA_AE_LINES_PKG.g_LineNumber := 0;
154505 --
154506 -- Bug 4458708
154507 --
154509 
154510 
154511 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
154512 g_last_hdr_idx := l_array_event_id.LAST;
154513 --
154514 -- loop for the headers. Each iteration is for each header extract row
154515 -- fetched in header cursor
154516 --
154517 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
154518 
154519 --
154520 -- set event info as cache for other routines to refer event attributes
154521 --
154522 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
154523    (p_application_id           => p_application_id
154524    ,p_primary_ledger_id        => p_primary_ledger_id
154525    ,p_base_ledger_id           => p_base_ledger_id
154526    ,p_target_ledger_id         => p_target_ledger_id
154527    ,p_entity_id                => l_array_entity_id(hdr_idx)
154528    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
154529    ,p_entity_code              => l_array_entity_code(hdr_idx)
154530    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
154531    ,p_event_id                 => l_array_event_id(hdr_idx)
154532    ,p_event_class_code         => l_array_class_code(hdr_idx)
154533    ,p_event_type_code          => l_array_event_type(hdr_idx)
154534    ,p_event_number             => l_array_event_number(hdr_idx)
154535    ,p_event_date               => l_array_event_date(hdr_idx)
154536    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
154537    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
154538    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
154539    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
154540    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
154541    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
154542    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
154543    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
154544    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
154545    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
154546    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
154547    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
154548    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
154549    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
154550    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
154551 
154552 --
154553 -- set the status of entry to C_VALID (0)
154554 --
154555 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
154556 
154557 --
154558 -- initialize a row for ae header
154559 --
154560 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
154561 
154562 l_event_id := l_array_event_id(hdr_idx);
154563 
154564 --
154565 -- storing the hdr_idx for event. May be used by line cursor.
154566 --
154567 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
154568 
154569 --
154570 -- store sources from header extract. This can be improved to
154571 -- store only those sources from header extract that may be used in lines
154572 --
154573 
154574 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
154575 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
154576 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
154577 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
154578 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
154579 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
154580 
154581 --
154582 -- initilaize the status of ae headers for diffrent balance types
154583 -- the status is initialised to C_NOT_CREATED (2)
154584 --
154585 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
154586 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
154587 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
154588 
154589 --
154590 -- call api to validate and store accounting attributes for header
154591 --
154592 
154593 ------------------------------------------------------------
154594 -- Accrual Reversal : to get date for Standard Source (NONE)
154595 ------------------------------------------------------------
154596 l_acc_rev_gl_date_source := NULL;
154597 
154598      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
154599       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
154600 
154601 
154602 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
154603 
154604 XLA_AE_HEADER_PKG.SetJeCategoryName;
154605 
154606 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
154607 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
154608 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
154609 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
154610 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
154611 
154612 
154613 -- No header level analytical criteria
154614 
154615 --
154616 --accounting attribute enhancement, bug 3612931
154617 --
154618 l_trx_reversal_source := SUBSTR(NULL, 1,30);
154622 
154619 
154620 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
154621    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
154623    xla_accounting_err_pkg.build_message
154624       (p_appli_s_name            => 'XLA'
154625       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
154626       ,p_token_1                 => 'ACCT_ATTR_NAME'
154627       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
154628       ,p_token_2                 => 'PRODUCT_NAME'
154629       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
154630       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
154631       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
154632       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
154633 
154634 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
154635    --
154636    -- following sets the accounting attributes needed to reverse
154637    -- accounting for a distributeion
154638    --
154639    xla_ae_lines_pkg.SetTrxReversalAttrs
154640       (p_event_id              => l_event_id
154641       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
154642       ,p_trx_reversal_source   => l_trx_reversal_source);
154643 
154644 END IF;
154645 
154646 
154647 ----------------------------------------------------------------
154648 -- 4262811 -  update the header statuses to invalid in need be
154649 ----------------------------------------------------------------
154650 --
154651 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
154652 
154653 
154654   -----------------------------------------------
154655   -- No accrual reversal for the event class/type
154656   -----------------------------------------------
154657 ----------------------------------------------------------------
154658 
154659 --
154660 -- this ends the header loop iteration for one bulk fetch
154661 --
154662 END LOOP;
154663 
154664 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
154665 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
154666 
154667 --
154668 -- insert dummy rows into lines gt table that were created due to
154669 -- transaction reversals
154670 --
154671 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
154672    l_result := XLA_AE_LINES_PKG.InsertLines;
154673 END IF;
154674 
154675 --
154676 -- reset the temp_line_num for each set of events fetched from header
154677 -- cursor rather than doing it for each new event in line cursor
154678 -- Bug 3939231
154679 --
154680 xla_ae_lines_pkg.g_temp_line_num := 0;
154681 
154682 
154683 
154684 --
154685 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
154686 --
154687 --
154688 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154689 
154690       trace
154691          (p_msg      => 'SQL - FETCH line_cur'
154692          ,p_level    => C_LEVEL_STATEMENT
154693          ,p_module   => l_log_module);
154694 
154695 END IF;
154696 --
154697 --
154698 LOOP
154699   --
154700   FETCH line_cur BULK COLLECT INTO
154701         l_array_entity_id
154702       , l_array_legal_entity_id
154703       , l_array_entity_code
154704       , l_array_transaction_num
154705       , l_array_event_id
154706       , l_array_class_code
154707       , l_array_event_type
154708       , l_array_event_number
154709       , l_array_event_date
154710       , l_array_transaction_date
154711       , l_array_reference_num_1
154712       , l_array_reference_num_2
154713       , l_array_reference_num_3
154714       , l_array_reference_num_4
154715       , l_array_reference_char_1
154716       , l_array_reference_char_2
154717       , l_array_reference_char_3
154718       , l_array_reference_char_4
154719       , l_array_reference_date_1
154720       , l_array_reference_date_2
154721       , l_array_reference_date_3
154722       , l_array_reference_date_4
154723       , l_array_event_created_by
154724       , l_array_budgetary_control_flag
154725       , l_array_extract_line_num 
154726       , l_array_source_1
154727       , l_array_source_2
154728       , l_array_source_3
154729       , l_array_source_5
154730       , l_array_source_11
154731       LIMIT l_rows;
154732 
154733   --
154734   IF (C_LEVEL_EVENT >= g_log_level) THEN
154735             trace
154736                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
154737                ,p_level    => C_LEVEL_EVENT
154738                ,p_module   => l_log_module);
154739   END IF;
154740   --
154741   EXIT WHEN l_array_entity_id.count = 0;
154742 
154743   XLA_AE_LINES_PKG.g_rec_lines := null;
154744 
154745 --
154746 -- Bug 4458708
154747 --
154748 XLA_AE_LINES_PKG.g_LineNumber := 0;
154749 --
154750 --
154751 
154752 FOR Idx IN 1..l_array_event_id.count LOOP
154753    --
154754    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
154755    --
154756    l_event_id := l_array_event_id(idx);  -- 5648433
154757 
154758    --
154759    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
154760    --
154761 
154762    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
154766    THEN
154763              (g_array_event(l_event_id).array_value_num('header_index'))
154764          ,'N'
154765          ) <> 'Y'
154767       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154768          trace
154769             (p_msg      => 'Trancaction revesal option is not Y '
154770             ,p_level    => C_LEVEL_STATEMENT
154771             ,p_module   => l_log_module);
154772       END IF;
154773 
154774 --
154775 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
154776 --
154777 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
154778 --
154779 -- set event info as cache for other routines to refer event attributes
154780 --
154781 
154782 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
154783    l_previous_event_id := l_event_id;
154784 
154785    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
154786       (p_application_id           => p_application_id
154787       ,p_primary_ledger_id        => p_primary_ledger_id
154788       ,p_base_ledger_id           => p_base_ledger_id
154789       ,p_target_ledger_id         => p_target_ledger_id
154790       ,p_entity_id                => l_array_entity_id(Idx)
154791       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
154792       ,p_entity_code              => l_array_entity_code(Idx)
154793       ,p_transaction_num          => l_array_transaction_num(Idx)
154794       ,p_event_id                 => l_array_event_id(Idx)
154795       ,p_event_class_code         => l_array_class_code(Idx)
154796       ,p_event_type_code          => l_array_event_type(Idx)
154797       ,p_event_number             => l_array_event_number(Idx)
154798       ,p_event_date               => l_array_event_date(Idx)
154799       ,p_transaction_date         => l_array_transaction_date(Idx)
154800       ,p_reference_num_1          => l_array_reference_num_1(Idx)
154801       ,p_reference_num_2          => l_array_reference_num_2(Idx)
154802       ,p_reference_num_3          => l_array_reference_num_3(Idx)
154803       ,p_reference_num_4          => l_array_reference_num_4(Idx)
154804       ,p_reference_char_1         => l_array_reference_char_1(Idx)
154805       ,p_reference_char_2         => l_array_reference_char_2(Idx)
154806       ,p_reference_char_3         => l_array_reference_char_3(Idx)
154807       ,p_reference_char_4         => l_array_reference_char_4(Idx)
154808       ,p_reference_date_1         => l_array_reference_date_1(Idx)
154809       ,p_reference_date_2         => l_array_reference_date_2(Idx)
154810       ,p_reference_date_3         => l_array_reference_date_3(Idx)
154811       ,p_reference_date_4         => l_array_reference_date_4(Idx)
154812       ,p_event_created_by         => l_array_event_created_by(Idx)
154813       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
154814        --
154815 END IF;
154816 
154817 
154818 
154819 --
154820 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
154821 
154822 l_acct_reversal_source := SUBSTR(NULL, 1,30);
154823 
154824 IF l_continue_with_lines THEN
154825    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
154826       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
154827 
154828       xla_accounting_err_pkg.build_message
154829          (p_appli_s_name            => 'XLA'
154830          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
154831          ,p_token_1                 => 'LINE_NUMBER'
154832          ,p_value_1                 => l_array_extract_line_num(Idx)
154833          ,p_token_2                 => 'PRODUCT_NAME'
154834          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
154835          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
154836          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
154837          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
154838 
154839    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
154840       --
154841       -- following sets the accounting attributes needed to reverse
154842       -- accounting for a distributeion
154843       --
154844 
154845       --
154846       -- 5217187
154847       --
154848       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
154849       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
154850                                        g_array_event(l_event_id).array_value_num('header_index'));
154851       --
154852       --
154853 
154854       -- No reversal code generated
154855 
154856       xla_ae_lines_pkg.SetAcctReversalAttrs
154857          (p_event_id             => l_event_id
154858          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
154859          ,p_calculate_acctd_flag => l_calculate_acctd_flag
154860          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
154861    END IF;
154862 
154863    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
154864        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
154865 
154866 --
154867 AcctLineType_107 (
154868  p_application_id  => p_application_id
154869  ,p_event_id     => l_event_id
154870  ,p_calculate_acctd_flag => l_calculate_acctd_flag
154871  ,p_calculate_g_l_flag => l_calculate_g_l_flag
154872  ,p_actual_flag => l_actual_flag
154873  ,p_balance_type_code => l_balance_type_code
154874  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154875  
154876  , p_source_1 => l_array_source_1(Idx)
154877  , p_source_2 => l_array_source_2(Idx)
154881  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
154878  , p_source_3 => l_array_source_3(Idx)
154879  , p_source_5 => l_array_source_5(Idx)
154880  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
154882  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
154883  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
154884  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
154885  , p_source_11 => l_array_source_11(Idx)
154886  );
154887 If(l_balance_type_code = 'A') THEN
154888   l_actual_gain_loss_ref := l_gain_or_loss_ref;
154889 END IF;
154890 
154891 --
154892 
154893 
154894 --
154895 AcctLineType_167 (
154896  p_application_id  => p_application_id
154897  ,p_event_id     => l_event_id
154898  ,p_calculate_acctd_flag => l_calculate_acctd_flag
154899  ,p_calculate_g_l_flag => l_calculate_g_l_flag
154900  ,p_actual_flag => l_actual_flag
154901  ,p_balance_type_code => l_balance_type_code
154902  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154903  
154904  , p_source_1 => l_array_source_1(Idx)
154905  , p_source_2 => l_array_source_2(Idx)
154906  , p_source_3 => l_array_source_3(Idx)
154907  , p_source_5 => l_array_source_5(Idx)
154908  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
154909  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
154910  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
154911  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
154912  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
154913  , p_source_11 => l_array_source_11(Idx)
154914  );
154915 If(l_balance_type_code = 'A') THEN
154916   l_actual_gain_loss_ref := l_gain_or_loss_ref;
154917 END IF;
154918 
154919 --
154920 
154921 
154922 --
154923 AcctLineType_188 (
154924  p_application_id  => p_application_id
154925  ,p_event_id     => l_event_id
154926  ,p_calculate_acctd_flag => l_calculate_acctd_flag
154927  ,p_calculate_g_l_flag => l_calculate_g_l_flag
154928  ,p_actual_flag => l_actual_flag
154929  ,p_balance_type_code => l_balance_type_code
154930  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154931  
154932  , p_source_1 => l_array_source_1(Idx)
154933  , p_source_2 => l_array_source_2(Idx)
154934  , p_source_3 => l_array_source_3(Idx)
154935  , p_source_5 => l_array_source_5(Idx)
154936  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
154937  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
154938  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
154939  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
154940  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
154941  , p_source_11 => l_array_source_11(Idx)
154942  );
154943 If(l_balance_type_code = 'A') THEN
154944   l_actual_gain_loss_ref := l_gain_or_loss_ref;
154945 END IF;
154946 
154947 --
154948 
154949       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
154950       -- or secondary ledger that has different currency with primary
154951       -- or alc that is calculated by sla
154952       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
154953             (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'))
154954 
154955 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
154956 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
154957           AND (l_actual_flag = 'A')) THEN
154958         XLA_AE_LINES_PKG.CreateGainOrLossLines(
154959           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
154960          ,p_application_id   => p_application_id
154961          ,p_amb_context_code => 'DEFAULT'
154962          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
154963          ,p_event_class_code => C_EVENT_CLASS_CODE
154964          ,p_event_type_code  => C_EVENT_TYPE_CODE
154965          
154966          ,p_gain_ccid        => -1
154967          ,p_loss_ccid        => -1
154968 
154969          ,p_actual_flag      => l_actual_flag
154970          ,p_enc_flag         => null
154971          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
154972          ,p_enc_g_l_ref      => null
154973          );
154974       END IF;
154975    END IF;
154976 END IF;
154977 
154978    ELSE
154979       --
154980       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
154981       --
154982       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154983          trace
154984             (p_msg      => 'Trancaction revesal option is Y'
154985             ,p_level    => C_LEVEL_STATEMENT
154986             ,p_module   => l_log_module);
154987       END IF;
154988    END IF;
154989 
154990 END LOOP;
154991 l_result := XLA_AE_LINES_PKG.InsertLines ;
154992 end loop;
154993 close line_cur;
154994 
154995 
154996 --
154997 -- insert headers into xla_ae_headers_gt table
154998 --
154999 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
155000 
155001 -- insert into errors table here.
155002 
155003 END LOOP;
155004 
155005 --
155006 -- 4865292
155007 --
155008 -- Compare g_hdr_extract_count with event count in
155009 -- CreateHeadersAndLines.
155010 --
155014    trace (p_msg     => '# rows extracted from header extract objects '
155011 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
155012 
155013 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155015                     || ' (running total): '
155016                     || g_hdr_extract_count
155017          ,p_level   => C_LEVEL_STATEMENT
155018          ,p_module  => l_log_module);
155019 END IF;
155020 
155021 CLOSE header_cur;
155022 --
155023 
155024 --
155025 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155026    trace
155027       (p_msg      => 'END of EventType_276'
155028       ,p_level    => C_LEVEL_PROCEDURE
155029       ,p_module   => l_log_module);
155030 END IF;
155031 --
155032 RETURN l_result;
155033 EXCEPTION
155034 WHEN xla_exceptions_pkg.application_exception THEN
155035    
155036 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
155037 
155038    
155039 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
155040 
155041    RAISE;
155042 
155043 WHEN NO_DATA_FOUND THEN
155044 
155045 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
155046 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
155047 
155048 FOR header_record IN header_cur
155049 LOOP
155050     l_array_header_events(header_record.event_id) := header_record.event_id;
155051 END LOOP;
155052 
155053 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
155054 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
155055 
155056 fnd_file.put_line(fnd_file.LOG, '                    ');
155057 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
155058 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
155059 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
155060 
155061 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
155062 LOOP
155063 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
155064 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
155065         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
155066 	END IF;
155067 END LOOP;
155068 
155069 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
155070 fnd_file.put_line(fnd_file.LOG, '                    ');
155071 
155072 
155073 xla_exceptions_pkg.raise_message
155074       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_276');
155075 
155076 
155077 WHEN OTHERS THEN
155078    xla_exceptions_pkg.raise_message
155079       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_276');
155080 END EventType_276;
155081 --
155082 
155083 ---------------------------------------
155084 --
155085 -- PRIVATE PROCEDURE
155086 --         insert_sources_277
155087 --
155088 ----------------------------------------
155089 --
155090 PROCEDURE insert_sources_277(
155091                                 p_target_ledger_id       IN NUMBER
155092                               , p_language               IN VARCHAR2
155093                               , p_sla_ledger_id          IN NUMBER
155094                               , p_pad_start_date         IN DATE
155095                               , p_pad_end_date           IN DATE
155096                          )
155097 IS
155098 
155099 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_ORDER_ISSUE_TP';
155100 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
155101 p_apps_owner                   VARCHAR2(30);
155102 l_log_module                   VARCHAR2(240);
155103 BEGIN
155104 IF g_log_enabled THEN
155105       l_log_module := C_DEFAULT_MODULE||'.insert_sources_277';
155106 END IF;
155107 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155108 
155109       trace
155110          (p_msg      => 'BEGIN of insert_sources_277'
155111          ,p_level    => C_LEVEL_PROCEDURE
155112          ,p_module   => l_log_module);
155113 
155114 END IF;
155115 
155116 -- select APPS owner
155117 SELECT oracle_username
155118   INTO p_apps_owner
155119   FROM fnd_oracle_userid
155120  WHERE read_only_flag = 'U'
155121 ;
155122 
155123 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155124       trace
155125          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
155126                         ' - p_language = '||p_language||
155127                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
155128                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
155129                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
155130                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
155131          ,p_level    => C_LEVEL_STATEMENT
155132          ,p_module   => l_log_module);
155133 END IF;
155134 
155135 
155136 --
155137 INSERT INTO xla_diag_sources --hdr1
155138 (
155139         event_id
155140       , ledger_id
155141       , sla_ledger_id
155142       , description_language
155143       , object_name
155144       , object_type_code
155145       , line_number
155146       , source_application_id
155147       , source_type_code
155148       , source_code
155149       , source_value
155150       , source_meaning
155151       , created_by
155152       , creation_date
155153       , last_update_date
155154       , last_updated_by
155155       , last_update_login
155156       , program_update_date
155160 )
155157       , program_application_id
155158       , program_id
155159       , request_id
155161 SELECT
155162         event_id
155163       , p_target_ledger_id
155164       , p_sla_ledger_id
155165       , p_language
155166       , object_name
155167       , object_type_code
155168       , line_number
155169       , source_application_id
155170       , source_type_code
155171       , source_code
155172       , SUBSTR(source_value ,1,1996)
155173       , SUBSTR(source_meaning,1,200)
155174       , xla_environment_pkg.g_Usr_Id
155175       , TRUNC(SYSDATE)
155176       , TRUNC(SYSDATE)
155177       , xla_environment_pkg.g_Usr_Id
155178       , xla_environment_pkg.g_Login_Id
155179       , TRUNC(SYSDATE)
155180       , xla_environment_pkg.g_Prog_Appl_Id
155181       , xla_environment_pkg.g_Prog_Id
155182       , xla_environment_pkg.g_Req_Id
155183   FROM (
155184        SELECT xet.event_id                  event_id
155185             , 0                             line_number
155186             , CASE r
155187                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
155188                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
155189                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
155190                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
155191                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
155192                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
155193                 
155194                ELSE null
155195               END                           object_name
155196             , CASE r
155197                 WHEN 1 THEN 'HEADER' 
155198                 WHEN 2 THEN 'HEADER' 
155199                 WHEN 3 THEN 'HEADER' 
155200                 WHEN 4 THEN 'HEADER' 
155201                 WHEN 5 THEN 'HEADER' 
155202                 WHEN 6 THEN 'HEADER' 
155203                 
155204                 ELSE null
155205               END                           object_type_code
155206             , CASE r
155207                 WHEN 1 THEN '555' 
155208                 WHEN 2 THEN '555' 
155209                 WHEN 3 THEN '555' 
155210                 WHEN 4 THEN '555' 
155211                 WHEN 5 THEN '555' 
155212                 WHEN 6 THEN '555' 
155213                 
155214                 ELSE null
155215               END                           source_application_id
155216             , 'S'             source_type_code
155217             , CASE r
155218                 WHEN 1 THEN 'ENTITY_CODE' 
155219                 WHEN 2 THEN 'CURRENCY_CODE' 
155220                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
155221                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
155222                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
155223                 WHEN 6 THEN 'TRANSACTION_DATE' 
155224                 
155225                 ELSE null
155226               END                           source_code
155227             , CASE r
155228                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
155229                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
155230                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
155231                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
155232                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
155233                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
155234                 
155235                 ELSE null
155236               END                           source_value
155237             , CASE r
155238                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
155239                           1010186
155240                          ,TO_CHAR(h1.CURRENCY_CODE)
155241                          ,'CURRENCY_CODE'
155242                          ,'S'
155243                          ,555)
155244                 
155245                 ELSE null
155246               END               source_meaning
155247         FROM xla_events_gt     xet  
155248       , GMF_XLA_EXTRACT_HEADERS  h1
155249             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
155250        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
155251          AND xet.event_type_code = C_EVENT_TYPE_CODE
155252             AND h1.event_id = xet.event_id
155253 
155254 )
155255 ;
155256 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155257 
155258       trace
155259          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
155260          ,p_level    => C_LEVEL_STATEMENT
155261          ,p_module   => l_log_module);
155262 
155263 END IF;
155264 --
155265 
155266 
155267 
155268 --
155269 INSERT INTO xla_diag_sources --line1
155270 (
155271         event_id
155272       , ledger_id
155273       , sla_ledger_id
155274       , description_language
155275       , object_name
155276       , object_type_code
155277       , line_number
155278       , source_application_id
155279       , source_type_code
155280       , source_code
155281       , source_value
155282       , source_meaning
155283       , created_by
155284       , creation_date
155285       , last_update_date
155286       , last_updated_by
155287       , last_update_login
155288       , program_update_date
155289       , program_application_id
155290       , program_id
155291       , request_id
155292 )
155293 SELECT  event_id
155294       , p_target_ledger_id
155295       , p_sla_ledger_id
155296       , p_language
155297       , object_name
155298       , object_type_code
155299       , line_number
155303       , SUBSTR(source_value,1,1996)
155300       , source_application_id
155301       , source_type_code
155302       , source_code
155304       , SUBSTR(source_meaning,1,200)
155305       , xla_environment_pkg.g_Usr_Id
155306       , TRUNC(SYSDATE)
155307       , TRUNC(SYSDATE)
155308       , xla_environment_pkg.g_Usr_Id
155309       , xla_environment_pkg.g_Login_Id
155310       , TRUNC(SYSDATE)
155311       , xla_environment_pkg.g_Prog_Appl_Id
155312       , xla_environment_pkg.g_Prog_Id
155313       , xla_environment_pkg.g_Req_Id
155314   FROM (
155315        SELECT xet.event_id                  event_id
155316             , l2.line_number                 line_number
155317             , CASE r
155318                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
155319                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
155320                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
155321                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
155322                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
155323                 
155324                ELSE null
155325               END                           object_name
155326             , CASE r
155327                 WHEN 1 THEN 'LINE' 
155328                 WHEN 2 THEN 'LINE' 
155329                 WHEN 3 THEN 'LINE' 
155330                 WHEN 4 THEN 'LINE' 
155331                 WHEN 5 THEN 'LINE' 
155332                 
155333                 ELSE null
155334               END                           object_type_code
155335             , CASE r
155336                 WHEN 1 THEN '555' 
155337                 WHEN 2 THEN '555' 
155338                 WHEN 3 THEN '555' 
155339                 WHEN 4 THEN '555' 
155340                 WHEN 5 THEN '555' 
155341                 
155342                 ELSE null
155343               END                           source_application_id
155344             , 'S'             source_type_code
155345             , CASE r
155346                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
155347                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
155348                 WHEN 3 THEN 'ENTERED_AMOUNT' 
155349                 WHEN 4 THEN 'LINE_ID' 
155350                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
155351                 
155352                 ELSE null
155353               END                           source_code
155354             , CASE r
155355                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
155356                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
155357                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
155358                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
155359                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
155360                 
155361                 ELSE null
155362               END                           source_value
155363             , null              source_meaning
155364          FROM  xla_events_gt     xet  
155365         , GMF_XLA_EXTRACT_LINES  l2
155366             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
155367         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
155368           AND xet.event_type_code = C_EVENT_TYPE_CODE
155369             AND l2.event_id          = xet.event_id
155370 
155371 )
155372 ;
155373 --
155374 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155375 
155376       trace
155377          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
155378          ,p_level    => C_LEVEL_STATEMENT
155379          ,p_module   => l_log_module);
155380 
155381 END IF;
155382 
155383 
155384 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155385       trace
155386          (p_msg      => 'END of insert_sources_277'
155387          ,p_level    => C_LEVEL_PROCEDURE
155388          ,p_module   => l_log_module);
155389 END IF;
155390 EXCEPTION
155391   WHEN xla_exceptions_pkg.application_exception THEN
155392       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
155393             trace
155394                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
155395                ,p_level    => C_LEVEL_EXCEPTION
155396                ,p_module   => l_log_module);
155397       END IF;
155398       RAISE;
155399   WHEN OTHERS THEN
155400       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
155401             trace
155402                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
155403                ,p_level    => C_LEVEL_EXCEPTION
155404                ,p_module   => l_log_module);
155405        END IF;
155406        xla_exceptions_pkg.raise_message
155407            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_277');
155408 END insert_sources_277;
155409 --
155410 
155411 ---------------------------------------
155412 --
155413 -- PRIVATE FUNCTION
155414 --         EventType_277
155415 --
155416 ----------------------------------------
155417 --
155418 FUNCTION EventType_277
155419        (p_application_id         IN NUMBER
155420        ,p_base_ledger_id         IN NUMBER
155421        ,p_target_ledger_id       IN NUMBER
155422        ,p_language               IN VARCHAR2
155423        ,p_currency_code          IN VARCHAR2
155424        ,p_sla_ledger_id          IN NUMBER
155425        ,p_pad_start_date         IN DATE
155426        ,p_pad_end_date           IN DATE
155427        ,p_primary_ledger_id      IN NUMBER)
155428 RETURN BOOLEAN IS
155429 --
155430 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_ORDER_ISSUE_TP';
155434 l_calculate_g_l_flag     VARCHAR2(1) :='N';
155431 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
155432 
155433 l_calculate_acctd_flag   VARCHAR2(1) :='N';
155435 --
155436 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155437 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155438 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
155439 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155440 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155441 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
155442 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
155443 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155444 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155445 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155446 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155447 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155448 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155449 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155450 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155451 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155452 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155453 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155454 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155455 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155456 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155457 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155458 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
155459 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
155460 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
155461 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
155462 
155463 l_event_id                             NUMBER;
155464 l_previous_event_id                    NUMBER;
155465 l_first_event_id                       NUMBER;
155466 l_last_event_id                        NUMBER;
155467 
155468 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
155469 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
155470 --
155471 --
155472 l_result                    BOOLEAN := TRUE;
155473 l_rows                      NUMBER  := 1000;
155474 l_event_type_name           VARCHAR2(80) := 'Internal Order Issue to Expense, Transfer Pricing';
155475 l_event_class_name          VARCHAR2(80) := 'Internal Order to Expense';
155476 l_description               VARCHAR2(4000);
155477 l_transaction_reversal      NUMBER;
155478 l_ae_header_id              NUMBER;
155479 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
155480 l_log_module                VARCHAR2(240);
155481 --
155482 l_acct_reversal_source      VARCHAR2(30);
155483 l_trx_reversal_source       VARCHAR2(30);
155484 
155485 l_continue_with_lines       BOOLEAN := TRUE;
155486 --
155487 l_acc_rev_gl_date_source    DATE;                      -- 4262811
155488 --
155489 type t_array_event_id is table of number index by binary_integer;
155490 
155491 l_rec_array_event                    t_rec_array_event;
155492 l_null_rec_array_event               t_rec_array_event;
155493 l_array_ae_header_id                 xla_number_array_type;
155494 l_actual_flag                        VARCHAR2(1) := NULL;
155495 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
155496 l_balance_type_code                  VARCHAR2(1) :=NULL;
155497 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
155498 
155499 --
155500 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
155501 --
155502 
155503 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
155504 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
155505 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
155506 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
155507 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
155508 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
155509 
155510 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
155511 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
155512 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
155513 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
155514 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
155515 
155516 l_array_source_6              t_array_source_6;
155517 l_array_source_7              t_array_source_7;
155518 l_array_source_8              t_array_source_8;
155519 l_array_source_9              t_array_source_9;
155520 l_array_source_10              t_array_source_10;
155524 l_array_source_2      t_array_source_2;
155521 l_array_source_12              t_array_source_12;
155522 
155523 l_array_source_1      t_array_source_1;
155525 l_array_source_3      t_array_source_3;
155526 l_array_source_5      t_array_source_5;
155527 l_array_source_11      t_array_source_11;
155528 
155529 --
155530 CURSOR header_cur
155531 IS
155532 SELECT /*+ leading(xet) cardinality(xet,1) */
155533 -- Event Type Code: INT_ORDER_ISSUE_TP
155534 -- Event Class Code: INT_ORDER_TO_EXP
155535     xet.entity_id
155536   , xet.legal_entity_id
155537   , xet.entity_code
155538   , xet.transaction_number
155539   , xet.event_id
155540   , xet.event_class_code
155541   , xet.event_type_code
155542   , xet.event_number
155543   , xet.event_date
155544   , xet.transaction_date
155545   , xet.reference_num_1
155546   , xet.reference_num_2
155547   , xet.reference_num_3
155548   , xet.reference_num_4
155549   , xet.reference_char_1
155550   , xet.reference_char_2
155551   , xet.reference_char_3
155552   , xet.reference_char_4
155553   , xet.reference_date_1
155554   , xet.reference_date_2
155555   , xet.reference_date_3
155556   , xet.reference_date_4
155557   , xet.event_created_by
155558   , xet.budgetary_control_flag 
155559   , h1.ENTITY_CODE    source_6
155560   , h1.CURRENCY_CODE    source_7
155561   , h1.CURRENCY_CONVERSION_DATE    source_8
155562   , h1.CURRENCY_CONVERSION_RATE    source_9
155563   , h1.CURRENCY_CONVERSION_TYPE    source_10
155564   , h1.TRANSACTION_DATE    source_12
155565   FROM xla_events_gt     xet 
155566   , GMF_XLA_EXTRACT_HEADERS  h1
155567  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
155568    and xet.event_type_code = C_EVENT_TYPE_CODE
155569    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
155570 
155571  ORDER BY event_id
155572 ;
155573 
155574 
155575 --
155576 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
155577 IS
155578 SELECT /*+ leading(xet) cardinality(xet,1) */
155579 -- Event Type Code: INT_ORDER_ISSUE_TP
155580 -- Event Class Code: INT_ORDER_TO_EXP
155581     xet.entity_id
155582    ,xet.legal_entity_id
155583    ,xet.entity_code
155584    ,xet.transaction_number
155585    ,xet.event_id
155586    ,xet.event_class_code
155587    ,xet.event_type_code
155588    ,xet.event_number
155589    ,xet.event_date
155590    ,xet.transaction_date
155591    ,xet.reference_num_1
155592    ,xet.reference_num_2
155593    ,xet.reference_num_3
155594    ,xet.reference_num_4
155595    ,xet.reference_char_1
155596    ,xet.reference_char_2
155597    ,xet.reference_char_3
155598    ,xet.reference_char_4
155599    ,xet.reference_date_1
155600    ,xet.reference_date_2
155601    ,xet.reference_date_3
155602    ,xet.reference_date_4
155603    ,xet.event_created_by
155604    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
155605   , l2.TRANSACTION_ACCOUNT_ID    source_1
155606   , l2.JOURNAL_LINE_TYPE    source_2
155607   , l2.ENTERED_AMOUNT    source_3
155608   , l2.LINE_ID    source_5
155609   , l2.ACCOUNTED_AMOUNT    source_11
155610   FROM xla_events_gt     xet 
155611   , GMF_XLA_EXTRACT_LINES  l2
155612  WHERE xet.event_id between x_first_event_id and x_last_event_id
155613    and xet.event_date between p_pad_start_date and p_pad_end_date
155614    and xet.event_type_code = C_EVENT_TYPE_CODE
155615    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
155616 ;
155617 
155618 --
155619 BEGIN
155620 IF g_log_enabled THEN
155621    l_log_module := C_DEFAULT_MODULE||'.EventType_277';
155622 END IF;
155623 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155624    trace
155625       (p_msg      => 'BEGIN of EventType_277'
155626       ,p_level    => C_LEVEL_PROCEDURE
155627       ,p_module   => l_log_module);
155628 END IF;
155629 
155630 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155631    trace
155632       (p_msg      => 'p_application_id = '||p_application_id||
155633                      ' - p_base_ledger_id = '||p_base_ledger_id||
155634                      ' - p_target_ledger_id  = '||p_target_ledger_id||
155635                      ' - p_language = '||p_language||
155636                      ' - p_currency_code = '||p_currency_code||
155637                      ' - p_sla_ledger_id = '||p_sla_ledger_id
155638       ,p_level    => C_LEVEL_STATEMENT
155639       ,p_module   => l_log_module);
155640 END IF;
155641 --
155642 -- initialze arrays
155643 --
155644 g_array_event.DELETE;
155645 l_rec_array_event := l_null_rec_array_event;
155646 --
155647 --------------------------------------
155648 -- 4262811 Initialze MPA Line Number
155649 --------------------------------------
155650 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
155651 
155652 --
155653 
155654 --
155655 OPEN header_cur;
155656 --
155657 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155658    trace
155659    (p_msg      => 'SQL - FETCH header_cur'
155660    ,p_level    => C_LEVEL_STATEMENT
155661    ,p_module   => l_log_module);
155662 END IF;
155663 --
155664 LOOP
155665 FETCH header_cur BULK COLLECT INTO
155666         l_array_entity_id
155667       , l_array_legal_entity_id
155668       , l_array_entity_code
155669       , l_array_transaction_num
155670       , l_array_event_id
155671       , l_array_class_code
155672       , l_array_event_type
155673       , l_array_event_number
155674       , l_array_event_date
155675       , l_array_transaction_date
155676       , l_array_reference_num_1
155677       , l_array_reference_num_2
155681       , l_array_reference_char_2
155678       , l_array_reference_num_3
155679       , l_array_reference_num_4
155680       , l_array_reference_char_1
155682       , l_array_reference_char_3
155683       , l_array_reference_char_4
155684       , l_array_reference_date_1
155685       , l_array_reference_date_2
155686       , l_array_reference_date_3
155687       , l_array_reference_date_4
155688       , l_array_event_created_by
155689       , l_array_budgetary_control_flag 
155690       , l_array_source_6
155691       , l_array_source_7
155692       , l_array_source_8
155693       , l_array_source_9
155694       , l_array_source_10
155695       , l_array_source_12
155696       LIMIT l_rows;
155697 --
155698 IF (C_LEVEL_EVENT >= g_log_level) THEN
155699    trace
155700    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
155701    ,p_level    => C_LEVEL_EVENT
155702    ,p_module   => l_log_module);
155703 END IF;
155704 --
155705 EXIT WHEN l_array_entity_id.COUNT = 0;
155706 
155707 -- initialize arrays
155708 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
155709 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
155710 
155711 --
155712 -- Bug 4458708
155713 --
155714 XLA_AE_LINES_PKG.g_LineNumber := 0;
155715 
155716 
155717 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
155718 g_last_hdr_idx := l_array_event_id.LAST;
155719 --
155720 -- loop for the headers. Each iteration is for each header extract row
155721 -- fetched in header cursor
155722 --
155723 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
155724 
155725 --
155726 -- set event info as cache for other routines to refer event attributes
155727 --
155728 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
155729    (p_application_id           => p_application_id
155730    ,p_primary_ledger_id        => p_primary_ledger_id
155731    ,p_base_ledger_id           => p_base_ledger_id
155732    ,p_target_ledger_id         => p_target_ledger_id
155733    ,p_entity_id                => l_array_entity_id(hdr_idx)
155734    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
155735    ,p_entity_code              => l_array_entity_code(hdr_idx)
155736    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
155737    ,p_event_id                 => l_array_event_id(hdr_idx)
155738    ,p_event_class_code         => l_array_class_code(hdr_idx)
155739    ,p_event_type_code          => l_array_event_type(hdr_idx)
155740    ,p_event_number             => l_array_event_number(hdr_idx)
155741    ,p_event_date               => l_array_event_date(hdr_idx)
155742    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
155743    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
155744    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
155745    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
155746    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
155747    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
155748    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
155749    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
155750    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
155751    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
155752    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
155753    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
155754    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
155755    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
155756    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
155757 
155758 --
155759 -- set the status of entry to C_VALID (0)
155760 --
155761 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
155762 
155763 --
155764 -- initialize a row for ae header
155765 --
155766 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
155767 
155768 l_event_id := l_array_event_id(hdr_idx);
155769 
155770 --
155771 -- storing the hdr_idx for event. May be used by line cursor.
155772 --
155773 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
155774 
155775 --
155776 -- store sources from header extract. This can be improved to
155777 -- store only those sources from header extract that may be used in lines
155778 --
155779 
155780 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
155781 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
155782 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
155783 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
155784 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
155785 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
155786 
155787 --
155788 -- initilaize the status of ae headers for diffrent balance types
155789 -- the status is initialised to C_NOT_CREATED (2)
155790 --
155791 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
155792 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
155793 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
155794 
155795 --
155796 -- call api to validate and store accounting attributes for header
155797 --
155801 ------------------------------------------------------------
155798 
155799 ------------------------------------------------------------
155800 -- Accrual Reversal : to get date for Standard Source (NONE)
155802 l_acc_rev_gl_date_source := NULL;
155803 
155804      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
155805       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
155806 
155807 
155808 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
155809 
155810 XLA_AE_HEADER_PKG.SetJeCategoryName;
155811 
155812 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
155813 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
155814 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
155815 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
155816 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
155817 
155818 
155819 -- No header level analytical criteria
155820 
155821 --
155822 --accounting attribute enhancement, bug 3612931
155823 --
155824 l_trx_reversal_source := SUBSTR(NULL, 1,30);
155825 
155826 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
155827    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
155828 
155829    xla_accounting_err_pkg.build_message
155830       (p_appli_s_name            => 'XLA'
155831       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
155832       ,p_token_1                 => 'ACCT_ATTR_NAME'
155833       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
155834       ,p_token_2                 => 'PRODUCT_NAME'
155835       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
155836       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
155837       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
155838       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
155839 
155840 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
155841    --
155842    -- following sets the accounting attributes needed to reverse
155843    -- accounting for a distributeion
155844    --
155845    xla_ae_lines_pkg.SetTrxReversalAttrs
155846       (p_event_id              => l_event_id
155847       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
155848       ,p_trx_reversal_source   => l_trx_reversal_source);
155849 
155850 END IF;
155851 
155852 
155853 ----------------------------------------------------------------
155854 -- 4262811 -  update the header statuses to invalid in need be
155855 ----------------------------------------------------------------
155856 --
155857 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
155858 
155859 
155860   -----------------------------------------------
155861   -- No accrual reversal for the event class/type
155862   -----------------------------------------------
155863 ----------------------------------------------------------------
155864 
155865 --
155866 -- this ends the header loop iteration for one bulk fetch
155867 --
155868 END LOOP;
155869 
155870 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
155871 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
155872 
155873 --
155874 -- insert dummy rows into lines gt table that were created due to
155875 -- transaction reversals
155876 --
155877 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
155878    l_result := XLA_AE_LINES_PKG.InsertLines;
155879 END IF;
155880 
155881 --
155882 -- reset the temp_line_num for each set of events fetched from header
155883 -- cursor rather than doing it for each new event in line cursor
155884 -- Bug 3939231
155885 --
155886 xla_ae_lines_pkg.g_temp_line_num := 0;
155887 
155888 
155889 
155890 --
155891 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
155892 --
155893 --
155894 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155895 
155896       trace
155897          (p_msg      => 'SQL - FETCH line_cur'
155898          ,p_level    => C_LEVEL_STATEMENT
155899          ,p_module   => l_log_module);
155900 
155901 END IF;
155902 --
155903 --
155904 LOOP
155905   --
155906   FETCH line_cur BULK COLLECT INTO
155907         l_array_entity_id
155908       , l_array_legal_entity_id
155909       , l_array_entity_code
155910       , l_array_transaction_num
155911       , l_array_event_id
155912       , l_array_class_code
155913       , l_array_event_type
155914       , l_array_event_number
155915       , l_array_event_date
155916       , l_array_transaction_date
155917       , l_array_reference_num_1
155918       , l_array_reference_num_2
155919       , l_array_reference_num_3
155920       , l_array_reference_num_4
155921       , l_array_reference_char_1
155922       , l_array_reference_char_2
155923       , l_array_reference_char_3
155924       , l_array_reference_char_4
155925       , l_array_reference_date_1
155926       , l_array_reference_date_2
155927       , l_array_reference_date_3
155928       , l_array_reference_date_4
155929       , l_array_event_created_by
155930       , l_array_budgetary_control_flag
155931       , l_array_extract_line_num 
155935       , l_array_source_5
155932       , l_array_source_1
155933       , l_array_source_2
155934       , l_array_source_3
155936       , l_array_source_11
155937       LIMIT l_rows;
155938 
155939   --
155940   IF (C_LEVEL_EVENT >= g_log_level) THEN
155941             trace
155942                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
155943                ,p_level    => C_LEVEL_EVENT
155944                ,p_module   => l_log_module);
155945   END IF;
155946   --
155947   EXIT WHEN l_array_entity_id.count = 0;
155948 
155949   XLA_AE_LINES_PKG.g_rec_lines := null;
155950 
155951 --
155952 -- Bug 4458708
155953 --
155954 XLA_AE_LINES_PKG.g_LineNumber := 0;
155955 --
155956 --
155957 
155958 FOR Idx IN 1..l_array_event_id.count LOOP
155959    --
155960    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
155961    --
155962    l_event_id := l_array_event_id(idx);  -- 5648433
155963 
155964    --
155965    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
155966    --
155967 
155968    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
155969              (g_array_event(l_event_id).array_value_num('header_index'))
155970          ,'N'
155971          ) <> 'Y'
155972    THEN
155973       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155974          trace
155975             (p_msg      => 'Trancaction revesal option is not Y '
155976             ,p_level    => C_LEVEL_STATEMENT
155977             ,p_module   => l_log_module);
155978       END IF;
155979 
155980 --
155981 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
155982 --
155983 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
155984 --
155985 -- set event info as cache for other routines to refer event attributes
155986 --
155987 
155988 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
155989    l_previous_event_id := l_event_id;
155990 
155991    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
155992       (p_application_id           => p_application_id
155993       ,p_primary_ledger_id        => p_primary_ledger_id
155994       ,p_base_ledger_id           => p_base_ledger_id
155995       ,p_target_ledger_id         => p_target_ledger_id
155996       ,p_entity_id                => l_array_entity_id(Idx)
155997       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
155998       ,p_entity_code              => l_array_entity_code(Idx)
155999       ,p_transaction_num          => l_array_transaction_num(Idx)
156000       ,p_event_id                 => l_array_event_id(Idx)
156001       ,p_event_class_code         => l_array_class_code(Idx)
156002       ,p_event_type_code          => l_array_event_type(Idx)
156003       ,p_event_number             => l_array_event_number(Idx)
156004       ,p_event_date               => l_array_event_date(Idx)
156005       ,p_transaction_date         => l_array_transaction_date(Idx)
156006       ,p_reference_num_1          => l_array_reference_num_1(Idx)
156007       ,p_reference_num_2          => l_array_reference_num_2(Idx)
156008       ,p_reference_num_3          => l_array_reference_num_3(Idx)
156009       ,p_reference_num_4          => l_array_reference_num_4(Idx)
156010       ,p_reference_char_1         => l_array_reference_char_1(Idx)
156011       ,p_reference_char_2         => l_array_reference_char_2(Idx)
156012       ,p_reference_char_3         => l_array_reference_char_3(Idx)
156013       ,p_reference_char_4         => l_array_reference_char_4(Idx)
156014       ,p_reference_date_1         => l_array_reference_date_1(Idx)
156015       ,p_reference_date_2         => l_array_reference_date_2(Idx)
156016       ,p_reference_date_3         => l_array_reference_date_3(Idx)
156017       ,p_reference_date_4         => l_array_reference_date_4(Idx)
156018       ,p_event_created_by         => l_array_event_created_by(Idx)
156019       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
156020        --
156021 END IF;
156022 
156023 
156024 
156025 --
156026 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
156027 
156028 l_acct_reversal_source := SUBSTR(NULL, 1,30);
156029 
156030 IF l_continue_with_lines THEN
156031    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
156032       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
156033 
156034       xla_accounting_err_pkg.build_message
156035          (p_appli_s_name            => 'XLA'
156036          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
156037          ,p_token_1                 => 'LINE_NUMBER'
156038          ,p_value_1                 => l_array_extract_line_num(Idx)
156039          ,p_token_2                 => 'PRODUCT_NAME'
156040          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
156041          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
156042          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
156043          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
156044 
156045    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
156046       --
156047       -- following sets the accounting attributes needed to reverse
156048       -- accounting for a distributeion
156049       --
156050 
156051       --
156052       -- 5217187
156053       --
156057       --
156054       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
156055       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
156056                                        g_array_event(l_event_id).array_value_num('header_index'));
156058       --
156059 
156060       -- No reversal code generated
156061 
156062       xla_ae_lines_pkg.SetAcctReversalAttrs
156063          (p_event_id             => l_event_id
156064          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
156065          ,p_calculate_acctd_flag => l_calculate_acctd_flag
156066          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
156067    END IF;
156068 
156069    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
156070        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
156071 
156072 --
156073 AcctLineType_86 (
156074  p_application_id  => p_application_id
156075  ,p_event_id     => l_event_id
156076  ,p_calculate_acctd_flag => l_calculate_acctd_flag
156077  ,p_calculate_g_l_flag => l_calculate_g_l_flag
156078  ,p_actual_flag => l_actual_flag
156079  ,p_balance_type_code => l_balance_type_code
156080  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156081  
156082  , p_source_1 => l_array_source_1(Idx)
156083  , p_source_2 => l_array_source_2(Idx)
156084  , p_source_3 => l_array_source_3(Idx)
156085  , p_source_5 => l_array_source_5(Idx)
156086  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
156087  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
156088  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
156089  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
156090  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
156091  , p_source_11 => l_array_source_11(Idx)
156092  );
156093 If(l_balance_type_code = 'A') THEN
156094   l_actual_gain_loss_ref := l_gain_or_loss_ref;
156095 END IF;
156096 
156097 --
156098 
156099 
156100 --
156101 AcctLineType_159 (
156102  p_application_id  => p_application_id
156103  ,p_event_id     => l_event_id
156104  ,p_calculate_acctd_flag => l_calculate_acctd_flag
156105  ,p_calculate_g_l_flag => l_calculate_g_l_flag
156106  ,p_actual_flag => l_actual_flag
156107  ,p_balance_type_code => l_balance_type_code
156108  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156109  
156110  , p_source_1 => l_array_source_1(Idx)
156111  , p_source_2 => l_array_source_2(Idx)
156112  , p_source_3 => l_array_source_3(Idx)
156113  , p_source_5 => l_array_source_5(Idx)
156114  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
156115  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
156116  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
156117  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
156118  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
156119  , p_source_11 => l_array_source_11(Idx)
156120  );
156121 If(l_balance_type_code = 'A') THEN
156122   l_actual_gain_loss_ref := l_gain_or_loss_ref;
156123 END IF;
156124 
156125 --
156126 
156127 
156128 --
156129 AcctLineType_181 (
156130  p_application_id  => p_application_id
156131  ,p_event_id     => l_event_id
156132  ,p_calculate_acctd_flag => l_calculate_acctd_flag
156133  ,p_calculate_g_l_flag => l_calculate_g_l_flag
156134  ,p_actual_flag => l_actual_flag
156135  ,p_balance_type_code => l_balance_type_code
156136  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156137  
156138  , p_source_1 => l_array_source_1(Idx)
156139  , p_source_2 => l_array_source_2(Idx)
156140  , p_source_3 => l_array_source_3(Idx)
156141  , p_source_5 => l_array_source_5(Idx)
156142  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
156143  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
156144  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
156145  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
156146  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
156147  , p_source_11 => l_array_source_11(Idx)
156148  );
156149 If(l_balance_type_code = 'A') THEN
156150   l_actual_gain_loss_ref := l_gain_or_loss_ref;
156151 END IF;
156152 
156153 --
156154 
156155 
156156 --
156157 AcctLineType_183 (
156158  p_application_id  => p_application_id
156159  ,p_event_id     => l_event_id
156160  ,p_calculate_acctd_flag => l_calculate_acctd_flag
156161  ,p_calculate_g_l_flag => l_calculate_g_l_flag
156162  ,p_actual_flag => l_actual_flag
156163  ,p_balance_type_code => l_balance_type_code
156164  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156165  
156166  , p_source_1 => l_array_source_1(Idx)
156167  , p_source_2 => l_array_source_2(Idx)
156168  , p_source_3 => l_array_source_3(Idx)
156169  , p_source_5 => l_array_source_5(Idx)
156170  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
156171  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
156172  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
156173  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
156174  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
156175  , p_source_11 => l_array_source_11(Idx)
156176  );
156177 If(l_balance_type_code = 'A') THEN
156178   l_actual_gain_loss_ref := l_gain_or_loss_ref;
156179 END IF;
156180 
156181 --
156182 
156183       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
156184       -- or secondary ledger that has different currency with primary
156188 
156185       -- or alc that is calculated by sla
156186       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
156187             (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'))
156189 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
156190 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
156191           AND (l_actual_flag = 'A')) THEN
156192         XLA_AE_LINES_PKG.CreateGainOrLossLines(
156193           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
156194          ,p_application_id   => p_application_id
156195          ,p_amb_context_code => 'DEFAULT'
156196          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
156197          ,p_event_class_code => C_EVENT_CLASS_CODE
156198          ,p_event_type_code  => C_EVENT_TYPE_CODE
156199          
156200          ,p_gain_ccid        => -1
156201          ,p_loss_ccid        => -1
156202 
156203          ,p_actual_flag      => l_actual_flag
156204          ,p_enc_flag         => null
156205          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
156206          ,p_enc_g_l_ref      => null
156207          );
156208       END IF;
156209    END IF;
156210 END IF;
156211 
156212    ELSE
156213       --
156214       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
156215       --
156216       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156217          trace
156218             (p_msg      => 'Trancaction revesal option is Y'
156219             ,p_level    => C_LEVEL_STATEMENT
156220             ,p_module   => l_log_module);
156221       END IF;
156222    END IF;
156223 
156224 END LOOP;
156225 l_result := XLA_AE_LINES_PKG.InsertLines ;
156226 end loop;
156227 close line_cur;
156228 
156229 
156230 --
156231 -- insert headers into xla_ae_headers_gt table
156232 --
156233 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
156234 
156235 -- insert into errors table here.
156236 
156237 END LOOP;
156238 
156239 --
156240 -- 4865292
156241 --
156242 -- Compare g_hdr_extract_count with event count in
156243 -- CreateHeadersAndLines.
156244 --
156245 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
156246 
156247 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156248    trace (p_msg     => '# rows extracted from header extract objects '
156249                     || ' (running total): '
156250                     || g_hdr_extract_count
156251          ,p_level   => C_LEVEL_STATEMENT
156252          ,p_module  => l_log_module);
156253 END IF;
156254 
156255 CLOSE header_cur;
156256 --
156257 
156258 --
156259 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156260    trace
156261       (p_msg      => 'END of EventType_277'
156262       ,p_level    => C_LEVEL_PROCEDURE
156263       ,p_module   => l_log_module);
156264 END IF;
156265 --
156266 RETURN l_result;
156267 EXCEPTION
156268 WHEN xla_exceptions_pkg.application_exception THEN
156269    
156270 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
156271 
156272    
156273 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
156274 
156275    RAISE;
156276 
156277 WHEN NO_DATA_FOUND THEN
156278 
156279 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
156280 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
156281 
156282 FOR header_record IN header_cur
156283 LOOP
156284     l_array_header_events(header_record.event_id) := header_record.event_id;
156285 END LOOP;
156286 
156287 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
156288 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
156289 
156290 fnd_file.put_line(fnd_file.LOG, '                    ');
156291 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
156292 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
156293 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
156294 
156295 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
156296 LOOP
156297 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
156298 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
156299         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
156300 	END IF;
156301 END LOOP;
156302 
156303 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
156304 fnd_file.put_line(fnd_file.LOG, '                    ');
156305 
156306 
156307 xla_exceptions_pkg.raise_message
156308       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_277');
156309 
156310 
156311 WHEN OTHERS THEN
156312    xla_exceptions_pkg.raise_message
156313       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_277');
156314 END EventType_277;
156315 --
156316 
156317 ---------------------------------------
156318 --
156319 -- PRIVATE PROCEDURE
156320 --         insert_sources_278
156321 --
156322 ----------------------------------------
156323 --
156324 PROCEDURE insert_sources_278(
156325                                 p_target_ledger_id       IN NUMBER
156329                               , p_pad_end_date           IN DATE
156326                               , p_language               IN VARCHAR2
156327                               , p_sla_ledger_id          IN NUMBER
156328                               , p_pad_start_date         IN DATE
156330                          )
156331 IS
156332 
156333 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_REQ_RECEIPT_ADJ';
156334 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DELIVER';
156335 p_apps_owner                   VARCHAR2(30);
156336 l_log_module                   VARCHAR2(240);
156337 BEGIN
156338 IF g_log_enabled THEN
156339       l_log_module := C_DEFAULT_MODULE||'.insert_sources_278';
156340 END IF;
156341 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156342 
156343       trace
156344          (p_msg      => 'BEGIN of insert_sources_278'
156345          ,p_level    => C_LEVEL_PROCEDURE
156346          ,p_module   => l_log_module);
156347 
156348 END IF;
156349 
156350 -- select APPS owner
156351 SELECT oracle_username
156352   INTO p_apps_owner
156353   FROM fnd_oracle_userid
156354  WHERE read_only_flag = 'U'
156355 ;
156356 
156357 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156358       trace
156359          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
156360                         ' - p_language = '||p_language||
156361                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
156362                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
156363                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
156364                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
156365          ,p_level    => C_LEVEL_STATEMENT
156366          ,p_module   => l_log_module);
156367 END IF;
156368 
156369 
156370 --
156371 INSERT INTO xla_diag_sources --hdr1
156372 (
156373         event_id
156374       , ledger_id
156375       , sla_ledger_id
156376       , description_language
156377       , object_name
156378       , object_type_code
156379       , line_number
156380       , source_application_id
156381       , source_type_code
156382       , source_code
156383       , source_value
156384       , source_meaning
156385       , created_by
156386       , creation_date
156387       , last_update_date
156388       , last_updated_by
156389       , last_update_login
156390       , program_update_date
156391       , program_application_id
156392       , program_id
156393       , request_id
156394 )
156395 SELECT
156396         event_id
156397       , p_target_ledger_id
156398       , p_sla_ledger_id
156399       , p_language
156400       , object_name
156401       , object_type_code
156402       , line_number
156403       , source_application_id
156404       , source_type_code
156405       , source_code
156406       , SUBSTR(source_value ,1,1996)
156407       , SUBSTR(source_meaning,1,200)
156408       , xla_environment_pkg.g_Usr_Id
156409       , TRUNC(SYSDATE)
156410       , TRUNC(SYSDATE)
156411       , xla_environment_pkg.g_Usr_Id
156412       , xla_environment_pkg.g_Login_Id
156413       , TRUNC(SYSDATE)
156414       , xla_environment_pkg.g_Prog_Appl_Id
156415       , xla_environment_pkg.g_Prog_Id
156416       , xla_environment_pkg.g_Req_Id
156417   FROM (
156418        SELECT xet.event_id                  event_id
156419             , 0                             line_number
156420             , CASE r
156421                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
156422                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
156423                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
156424                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
156425                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
156426                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
156427                 
156428                ELSE null
156429               END                           object_name
156430             , CASE r
156431                 WHEN 1 THEN 'HEADER' 
156432                 WHEN 2 THEN 'HEADER' 
156433                 WHEN 3 THEN 'HEADER' 
156434                 WHEN 4 THEN 'HEADER' 
156435                 WHEN 5 THEN 'HEADER' 
156436                 WHEN 6 THEN 'HEADER' 
156437                 
156438                 ELSE null
156439               END                           object_type_code
156440             , CASE r
156441                 WHEN 1 THEN '555' 
156442                 WHEN 2 THEN '555' 
156443                 WHEN 3 THEN '555' 
156444                 WHEN 4 THEN '555' 
156445                 WHEN 5 THEN '555' 
156446                 WHEN 6 THEN '555' 
156447                 
156448                 ELSE null
156449               END                           source_application_id
156450             , 'S'             source_type_code
156451             , CASE r
156452                 WHEN 1 THEN 'ENTITY_CODE' 
156453                 WHEN 2 THEN 'CURRENCY_CODE' 
156454                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
156455                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
156456                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
156457                 WHEN 6 THEN 'TRANSACTION_DATE' 
156458                 
156459                 ELSE null
156460               END                           source_code
156461             , CASE r
156462                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
156463                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
156464                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
156468                 
156465                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
156466                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
156467                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
156469                 ELSE null
156470               END                           source_value
156471             , CASE r
156472                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
156473                           1010186
156474                          ,TO_CHAR(h1.CURRENCY_CODE)
156475                          ,'CURRENCY_CODE'
156476                          ,'S'
156477                          ,555)
156478                 
156479                 ELSE null
156480               END               source_meaning
156481         FROM xla_events_gt     xet  
156482       , GMF_XLA_EXTRACT_HEADERS  h1
156483             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
156484        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
156485          AND xet.event_type_code = C_EVENT_TYPE_CODE
156486             AND h1.event_id = xet.event_id
156487 
156488 )
156489 ;
156490 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156491 
156492       trace
156493          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
156494          ,p_level    => C_LEVEL_STATEMENT
156495          ,p_module   => l_log_module);
156496 
156497 END IF;
156498 --
156499 
156500 
156501 
156502 --
156503 INSERT INTO xla_diag_sources --line1
156504 (
156505         event_id
156506       , ledger_id
156507       , sla_ledger_id
156508       , description_language
156509       , object_name
156510       , object_type_code
156511       , line_number
156512       , source_application_id
156513       , source_type_code
156514       , source_code
156515       , source_value
156516       , source_meaning
156517       , created_by
156518       , creation_date
156519       , last_update_date
156520       , last_updated_by
156521       , last_update_login
156522       , program_update_date
156523       , program_application_id
156524       , program_id
156525       , request_id
156526 )
156527 SELECT  event_id
156528       , p_target_ledger_id
156529       , p_sla_ledger_id
156530       , p_language
156531       , object_name
156532       , object_type_code
156533       , line_number
156534       , source_application_id
156535       , source_type_code
156536       , source_code
156537       , SUBSTR(source_value,1,1996)
156538       , SUBSTR(source_meaning,1,200)
156539       , xla_environment_pkg.g_Usr_Id
156540       , TRUNC(SYSDATE)
156541       , TRUNC(SYSDATE)
156542       , xla_environment_pkg.g_Usr_Id
156543       , xla_environment_pkg.g_Login_Id
156544       , TRUNC(SYSDATE)
156545       , xla_environment_pkg.g_Prog_Appl_Id
156546       , xla_environment_pkg.g_Prog_Id
156547       , xla_environment_pkg.g_Req_Id
156548   FROM (
156549        SELECT xet.event_id                  event_id
156550             , l2.line_number                 line_number
156551             , CASE r
156552                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
156553                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
156554                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
156555                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
156556                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
156557                 
156558                ELSE null
156559               END                           object_name
156560             , CASE r
156561                 WHEN 1 THEN 'LINE' 
156562                 WHEN 2 THEN 'LINE' 
156563                 WHEN 3 THEN 'LINE' 
156564                 WHEN 4 THEN 'LINE' 
156565                 WHEN 5 THEN 'LINE' 
156566                 
156567                 ELSE null
156568               END                           object_type_code
156569             , CASE r
156570                 WHEN 1 THEN '555' 
156571                 WHEN 2 THEN '555' 
156572                 WHEN 3 THEN '555' 
156573                 WHEN 4 THEN '555' 
156574                 WHEN 5 THEN '555' 
156575                 
156576                 ELSE null
156577               END                           source_application_id
156578             , 'S'             source_type_code
156579             , CASE r
156580                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
156581                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
156582                 WHEN 3 THEN 'ENTERED_AMOUNT' 
156583                 WHEN 4 THEN 'LINE_ID' 
156584                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
156585                 
156586                 ELSE null
156587               END                           source_code
156588             , CASE r
156589                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
156590                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
156591                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
156592                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
156593                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
156594                 
156595                 ELSE null
156596               END                           source_value
156597             , null              source_meaning
156598          FROM  xla_events_gt     xet  
156599         , GMF_XLA_EXTRACT_LINES  l2
156600             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
156601         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
156605 )
156602           AND xet.event_type_code = C_EVENT_TYPE_CODE
156603             AND l2.event_id          = xet.event_id
156604 
156606 ;
156607 --
156608 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156609 
156610       trace
156611          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
156612          ,p_level    => C_LEVEL_STATEMENT
156613          ,p_module   => l_log_module);
156614 
156615 END IF;
156616 
156617 
156618 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156619       trace
156620          (p_msg      => 'END of insert_sources_278'
156621          ,p_level    => C_LEVEL_PROCEDURE
156622          ,p_module   => l_log_module);
156623 END IF;
156624 EXCEPTION
156625   WHEN xla_exceptions_pkg.application_exception THEN
156626       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
156627             trace
156628                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
156629                ,p_level    => C_LEVEL_EXCEPTION
156630                ,p_module   => l_log_module);
156631       END IF;
156632       RAISE;
156633   WHEN OTHERS THEN
156634       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
156635             trace
156636                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
156637                ,p_level    => C_LEVEL_EXCEPTION
156638                ,p_module   => l_log_module);
156639        END IF;
156640        xla_exceptions_pkg.raise_message
156641            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_278');
156642 END insert_sources_278;
156643 --
156644 
156645 ---------------------------------------
156646 --
156647 -- PRIVATE FUNCTION
156648 --         EventType_278
156649 --
156650 ----------------------------------------
156651 --
156652 FUNCTION EventType_278
156653        (p_application_id         IN NUMBER
156654        ,p_base_ledger_id         IN NUMBER
156655        ,p_target_ledger_id       IN NUMBER
156656        ,p_language               IN VARCHAR2
156657        ,p_currency_code          IN VARCHAR2
156658        ,p_sla_ledger_id          IN NUMBER
156659        ,p_pad_start_date         IN DATE
156660        ,p_pad_end_date           IN DATE
156661        ,p_primary_ledger_id      IN NUMBER)
156662 RETURN BOOLEAN IS
156663 --
156664 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_REQ_RECEIPT_ADJ';
156665 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DELIVER';
156666 
156667 l_calculate_acctd_flag   VARCHAR2(1) :='N';
156668 l_calculate_g_l_flag     VARCHAR2(1) :='N';
156669 --
156670 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156671 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156672 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
156673 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156674 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156675 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
156676 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
156677 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156678 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156679 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156680 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156681 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156682 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156683 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156684 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156685 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156686 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156687 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156688 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156689 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156690 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156691 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156692 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
156693 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
156694 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
156695 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
156696 
156697 l_event_id                             NUMBER;
156698 l_previous_event_id                    NUMBER;
156699 l_first_event_id                       NUMBER;
156700 l_last_event_id                        NUMBER;
156701 
156702 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
156703 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
156704 --
156705 --
156706 l_result                    BOOLEAN := TRUE;
156707 l_rows                      NUMBER  := 1000;
156708 l_event_type_name           VARCHAR2(80) := 'Internal Requisition Receipt Adjustment';
156709 l_event_class_name          VARCHAR2(80) := 'Deliver to or Return from Inventory';
156710 l_description               VARCHAR2(4000);
156711 l_transaction_reversal      NUMBER;
156712 l_ae_header_id              NUMBER;
156713 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
156714 l_log_module                VARCHAR2(240);
156715 --
156719 l_continue_with_lines       BOOLEAN := TRUE;
156716 l_acct_reversal_source      VARCHAR2(30);
156717 l_trx_reversal_source       VARCHAR2(30);
156718 
156720 --
156721 l_acc_rev_gl_date_source    DATE;                      -- 4262811
156722 --
156723 type t_array_event_id is table of number index by binary_integer;
156724 
156725 l_rec_array_event                    t_rec_array_event;
156726 l_null_rec_array_event               t_rec_array_event;
156727 l_array_ae_header_id                 xla_number_array_type;
156728 l_actual_flag                        VARCHAR2(1) := NULL;
156729 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
156730 l_balance_type_code                  VARCHAR2(1) :=NULL;
156731 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
156732 
156733 --
156734 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
156735 --
156736 
156737 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
156738 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
156739 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
156740 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
156741 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
156742 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
156743 
156744 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
156745 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
156746 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
156747 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
156748 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
156749 
156750 l_array_source_6              t_array_source_6;
156751 l_array_source_7              t_array_source_7;
156752 l_array_source_8              t_array_source_8;
156753 l_array_source_9              t_array_source_9;
156754 l_array_source_10              t_array_source_10;
156755 l_array_source_12              t_array_source_12;
156756 
156757 l_array_source_1      t_array_source_1;
156758 l_array_source_2      t_array_source_2;
156759 l_array_source_3      t_array_source_3;
156760 l_array_source_5      t_array_source_5;
156761 l_array_source_11      t_array_source_11;
156762 
156763 --
156764 CURSOR header_cur
156765 IS
156766 SELECT /*+ leading(xet) cardinality(xet,1) */
156767 -- Event Type Code: INT_REQ_RECEIPT_ADJ
156768 -- Event Class Code: DELIVER
156769     xet.entity_id
156770   , xet.legal_entity_id
156771   , xet.entity_code
156772   , xet.transaction_number
156773   , xet.event_id
156774   , xet.event_class_code
156775   , xet.event_type_code
156776   , xet.event_number
156777   , xet.event_date
156778   , xet.transaction_date
156779   , xet.reference_num_1
156780   , xet.reference_num_2
156781   , xet.reference_num_3
156782   , xet.reference_num_4
156783   , xet.reference_char_1
156784   , xet.reference_char_2
156785   , xet.reference_char_3
156786   , xet.reference_char_4
156787   , xet.reference_date_1
156788   , xet.reference_date_2
156789   , xet.reference_date_3
156790   , xet.reference_date_4
156791   , xet.event_created_by
156792   , xet.budgetary_control_flag 
156793   , h1.ENTITY_CODE    source_6
156794   , h1.CURRENCY_CODE    source_7
156795   , h1.CURRENCY_CONVERSION_DATE    source_8
156796   , h1.CURRENCY_CONVERSION_RATE    source_9
156797   , h1.CURRENCY_CONVERSION_TYPE    source_10
156798   , h1.TRANSACTION_DATE    source_12
156799   FROM xla_events_gt     xet 
156800   , GMF_XLA_EXTRACT_HEADERS  h1
156801  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
156802    and xet.event_type_code = C_EVENT_TYPE_CODE
156803    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
156804 
156805  ORDER BY event_id
156806 ;
156807 
156808 
156809 --
156810 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
156811 IS
156812 SELECT /*+ leading(xet) cardinality(xet,1) */
156813 -- Event Type Code: INT_REQ_RECEIPT_ADJ
156814 -- Event Class Code: DELIVER
156815     xet.entity_id
156816    ,xet.legal_entity_id
156817    ,xet.entity_code
156818    ,xet.transaction_number
156819    ,xet.event_id
156820    ,xet.event_class_code
156821    ,xet.event_type_code
156822    ,xet.event_number
156823    ,xet.event_date
156824    ,xet.transaction_date
156825    ,xet.reference_num_1
156826    ,xet.reference_num_2
156827    ,xet.reference_num_3
156828    ,xet.reference_num_4
156829    ,xet.reference_char_1
156830    ,xet.reference_char_2
156831    ,xet.reference_char_3
156832    ,xet.reference_char_4
156833    ,xet.reference_date_1
156834    ,xet.reference_date_2
156835    ,xet.reference_date_3
156836    ,xet.reference_date_4
156837    ,xet.event_created_by
156838    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
156839   , l2.TRANSACTION_ACCOUNT_ID    source_1
156840   , l2.JOURNAL_LINE_TYPE    source_2
156841   , l2.ENTERED_AMOUNT    source_3
156842   , l2.LINE_ID    source_5
156843   , l2.ACCOUNTED_AMOUNT    source_11
156844   FROM xla_events_gt     xet 
156845   , GMF_XLA_EXTRACT_LINES  l2
156846  WHERE xet.event_id between x_first_event_id and x_last_event_id
156850 ;
156847    and xet.event_date between p_pad_start_date and p_pad_end_date
156848    and xet.event_type_code = C_EVENT_TYPE_CODE
156849    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
156851 
156852 --
156853 BEGIN
156854 IF g_log_enabled THEN
156855    l_log_module := C_DEFAULT_MODULE||'.EventType_278';
156856 END IF;
156857 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156858    trace
156859       (p_msg      => 'BEGIN of EventType_278'
156860       ,p_level    => C_LEVEL_PROCEDURE
156861       ,p_module   => l_log_module);
156862 END IF;
156863 
156864 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156865    trace
156866       (p_msg      => 'p_application_id = '||p_application_id||
156867                      ' - p_base_ledger_id = '||p_base_ledger_id||
156868                      ' - p_target_ledger_id  = '||p_target_ledger_id||
156869                      ' - p_language = '||p_language||
156870                      ' - p_currency_code = '||p_currency_code||
156871                      ' - p_sla_ledger_id = '||p_sla_ledger_id
156872       ,p_level    => C_LEVEL_STATEMENT
156873       ,p_module   => l_log_module);
156874 END IF;
156875 --
156876 -- initialze arrays
156877 --
156878 g_array_event.DELETE;
156879 l_rec_array_event := l_null_rec_array_event;
156880 --
156881 --------------------------------------
156882 -- 4262811 Initialze MPA Line Number
156883 --------------------------------------
156884 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
156885 
156886 --
156887 
156888 --
156889 OPEN header_cur;
156890 --
156891 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156892    trace
156893    (p_msg      => 'SQL - FETCH header_cur'
156894    ,p_level    => C_LEVEL_STATEMENT
156895    ,p_module   => l_log_module);
156896 END IF;
156897 --
156898 LOOP
156899 FETCH header_cur BULK COLLECT INTO
156900         l_array_entity_id
156901       , l_array_legal_entity_id
156902       , l_array_entity_code
156903       , l_array_transaction_num
156904       , l_array_event_id
156905       , l_array_class_code
156906       , l_array_event_type
156907       , l_array_event_number
156908       , l_array_event_date
156909       , l_array_transaction_date
156910       , l_array_reference_num_1
156911       , l_array_reference_num_2
156912       , l_array_reference_num_3
156913       , l_array_reference_num_4
156914       , l_array_reference_char_1
156915       , l_array_reference_char_2
156916       , l_array_reference_char_3
156917       , l_array_reference_char_4
156918       , l_array_reference_date_1
156919       , l_array_reference_date_2
156920       , l_array_reference_date_3
156921       , l_array_reference_date_4
156922       , l_array_event_created_by
156923       , l_array_budgetary_control_flag 
156924       , l_array_source_6
156925       , l_array_source_7
156926       , l_array_source_8
156927       , l_array_source_9
156928       , l_array_source_10
156929       , l_array_source_12
156930       LIMIT l_rows;
156931 --
156932 IF (C_LEVEL_EVENT >= g_log_level) THEN
156933    trace
156934    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
156935    ,p_level    => C_LEVEL_EVENT
156936    ,p_module   => l_log_module);
156937 END IF;
156938 --
156939 EXIT WHEN l_array_entity_id.COUNT = 0;
156940 
156941 -- initialize arrays
156942 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
156943 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
156944 
156945 --
156946 -- Bug 4458708
156947 --
156948 XLA_AE_LINES_PKG.g_LineNumber := 0;
156949 
156950 
156951 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
156952 g_last_hdr_idx := l_array_event_id.LAST;
156953 --
156954 -- loop for the headers. Each iteration is for each header extract row
156955 -- fetched in header cursor
156956 --
156957 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
156958 
156959 --
156960 -- set event info as cache for other routines to refer event attributes
156961 --
156962 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
156963    (p_application_id           => p_application_id
156964    ,p_primary_ledger_id        => p_primary_ledger_id
156965    ,p_base_ledger_id           => p_base_ledger_id
156966    ,p_target_ledger_id         => p_target_ledger_id
156967    ,p_entity_id                => l_array_entity_id(hdr_idx)
156968    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
156969    ,p_entity_code              => l_array_entity_code(hdr_idx)
156970    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
156971    ,p_event_id                 => l_array_event_id(hdr_idx)
156972    ,p_event_class_code         => l_array_class_code(hdr_idx)
156973    ,p_event_type_code          => l_array_event_type(hdr_idx)
156974    ,p_event_number             => l_array_event_number(hdr_idx)
156975    ,p_event_date               => l_array_event_date(hdr_idx)
156976    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
156977    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
156978    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
156979    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
156980    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
156981    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
156982    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
156983    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
156987    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
156984    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
156985    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
156986    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
156988    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
156989    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
156990    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
156991 
156992 --
156993 -- set the status of entry to C_VALID (0)
156994 --
156995 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
156996 
156997 --
156998 -- initialize a row for ae header
156999 --
157000 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
157001 
157002 l_event_id := l_array_event_id(hdr_idx);
157003 
157004 --
157005 -- storing the hdr_idx for event. May be used by line cursor.
157006 --
157007 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
157008 
157009 --
157010 -- store sources from header extract. This can be improved to
157011 -- store only those sources from header extract that may be used in lines
157012 --
157013 
157014 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
157015 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
157016 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
157017 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
157018 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
157019 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
157020 
157021 --
157022 -- initilaize the status of ae headers for diffrent balance types
157023 -- the status is initialised to C_NOT_CREATED (2)
157024 --
157025 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
157026 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
157027 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
157028 
157029 --
157030 -- call api to validate and store accounting attributes for header
157031 --
157032 
157033 ------------------------------------------------------------
157034 -- Accrual Reversal : to get date for Standard Source (NONE)
157035 ------------------------------------------------------------
157036 l_acc_rev_gl_date_source := NULL;
157037 
157038      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
157039       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
157040 
157041 
157042 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
157043 
157044 XLA_AE_HEADER_PKG.SetJeCategoryName;
157045 
157046 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
157047 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
157048 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
157049 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
157050 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
157051 
157052 
157053 -- No header level analytical criteria
157054 
157055 --
157056 --accounting attribute enhancement, bug 3612931
157057 --
157058 l_trx_reversal_source := SUBSTR(NULL, 1,30);
157059 
157060 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
157061    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
157062 
157063    xla_accounting_err_pkg.build_message
157064       (p_appli_s_name            => 'XLA'
157065       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
157066       ,p_token_1                 => 'ACCT_ATTR_NAME'
157067       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
157068       ,p_token_2                 => 'PRODUCT_NAME'
157069       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
157070       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
157071       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
157072       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
157073 
157074 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
157075    --
157076    -- following sets the accounting attributes needed to reverse
157077    -- accounting for a distributeion
157078    --
157079    xla_ae_lines_pkg.SetTrxReversalAttrs
157080       (p_event_id              => l_event_id
157081       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
157082       ,p_trx_reversal_source   => l_trx_reversal_source);
157083 
157084 END IF;
157085 
157086 
157087 ----------------------------------------------------------------
157088 -- 4262811 -  update the header statuses to invalid in need be
157089 ----------------------------------------------------------------
157090 --
157091 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
157092 
157093 
157094   -----------------------------------------------
157095   -- No accrual reversal for the event class/type
157096   -----------------------------------------------
157100 -- this ends the header loop iteration for one bulk fetch
157097 ----------------------------------------------------------------
157098 
157099 --
157101 --
157102 END LOOP;
157103 
157104 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
157105 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
157106 
157107 --
157108 -- insert dummy rows into lines gt table that were created due to
157109 -- transaction reversals
157110 --
157111 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
157112    l_result := XLA_AE_LINES_PKG.InsertLines;
157113 END IF;
157114 
157115 --
157116 -- reset the temp_line_num for each set of events fetched from header
157117 -- cursor rather than doing it for each new event in line cursor
157118 -- Bug 3939231
157119 --
157120 xla_ae_lines_pkg.g_temp_line_num := 0;
157121 
157122 
157123 
157124 --
157125 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
157126 --
157127 --
157128 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157129 
157130       trace
157131          (p_msg      => 'SQL - FETCH line_cur'
157132          ,p_level    => C_LEVEL_STATEMENT
157133          ,p_module   => l_log_module);
157134 
157135 END IF;
157136 --
157137 --
157138 LOOP
157139   --
157140   FETCH line_cur BULK COLLECT INTO
157141         l_array_entity_id
157142       , l_array_legal_entity_id
157143       , l_array_entity_code
157144       , l_array_transaction_num
157145       , l_array_event_id
157146       , l_array_class_code
157147       , l_array_event_type
157148       , l_array_event_number
157149       , l_array_event_date
157150       , l_array_transaction_date
157151       , l_array_reference_num_1
157152       , l_array_reference_num_2
157153       , l_array_reference_num_3
157154       , l_array_reference_num_4
157155       , l_array_reference_char_1
157156       , l_array_reference_char_2
157157       , l_array_reference_char_3
157158       , l_array_reference_char_4
157159       , l_array_reference_date_1
157160       , l_array_reference_date_2
157161       , l_array_reference_date_3
157162       , l_array_reference_date_4
157163       , l_array_event_created_by
157164       , l_array_budgetary_control_flag
157165       , l_array_extract_line_num 
157166       , l_array_source_1
157167       , l_array_source_2
157168       , l_array_source_3
157169       , l_array_source_5
157170       , l_array_source_11
157171       LIMIT l_rows;
157172 
157173   --
157174   IF (C_LEVEL_EVENT >= g_log_level) THEN
157175             trace
157176                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
157177                ,p_level    => C_LEVEL_EVENT
157178                ,p_module   => l_log_module);
157179   END IF;
157180   --
157181   EXIT WHEN l_array_entity_id.count = 0;
157182 
157183   XLA_AE_LINES_PKG.g_rec_lines := null;
157184 
157185 --
157186 -- Bug 4458708
157187 --
157188 XLA_AE_LINES_PKG.g_LineNumber := 0;
157189 --
157190 --
157191 
157192 FOR Idx IN 1..l_array_event_id.count LOOP
157193    --
157194    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
157195    --
157196    l_event_id := l_array_event_id(idx);  -- 5648433
157197 
157198    --
157199    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
157200    --
157201 
157202    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
157203              (g_array_event(l_event_id).array_value_num('header_index'))
157204          ,'N'
157205          ) <> 'Y'
157206    THEN
157207       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157208          trace
157209             (p_msg      => 'Trancaction revesal option is not Y '
157210             ,p_level    => C_LEVEL_STATEMENT
157211             ,p_module   => l_log_module);
157212       END IF;
157213 
157214 --
157215 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
157216 --
157217 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
157218 --
157219 -- set event info as cache for other routines to refer event attributes
157220 --
157221 
157222 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
157223    l_previous_event_id := l_event_id;
157224 
157225    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
157226       (p_application_id           => p_application_id
157227       ,p_primary_ledger_id        => p_primary_ledger_id
157228       ,p_base_ledger_id           => p_base_ledger_id
157229       ,p_target_ledger_id         => p_target_ledger_id
157230       ,p_entity_id                => l_array_entity_id(Idx)
157231       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
157232       ,p_entity_code              => l_array_entity_code(Idx)
157233       ,p_transaction_num          => l_array_transaction_num(Idx)
157234       ,p_event_id                 => l_array_event_id(Idx)
157235       ,p_event_class_code         => l_array_class_code(Idx)
157236       ,p_event_type_code          => l_array_event_type(Idx)
157237       ,p_event_number             => l_array_event_number(Idx)
157238       ,p_event_date               => l_array_event_date(Idx)
157239       ,p_transaction_date         => l_array_transaction_date(Idx)
157240       ,p_reference_num_1          => l_array_reference_num_1(Idx)
157241       ,p_reference_num_2          => l_array_reference_num_2(Idx)
157245       ,p_reference_char_2         => l_array_reference_char_2(Idx)
157242       ,p_reference_num_3          => l_array_reference_num_3(Idx)
157243       ,p_reference_num_4          => l_array_reference_num_4(Idx)
157244       ,p_reference_char_1         => l_array_reference_char_1(Idx)
157246       ,p_reference_char_3         => l_array_reference_char_3(Idx)
157247       ,p_reference_char_4         => l_array_reference_char_4(Idx)
157248       ,p_reference_date_1         => l_array_reference_date_1(Idx)
157249       ,p_reference_date_2         => l_array_reference_date_2(Idx)
157250       ,p_reference_date_3         => l_array_reference_date_3(Idx)
157251       ,p_reference_date_4         => l_array_reference_date_4(Idx)
157252       ,p_event_created_by         => l_array_event_created_by(Idx)
157253       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
157254        --
157255 END IF;
157256 
157257 
157258 
157259 --
157260 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
157261 
157262 l_acct_reversal_source := SUBSTR(NULL, 1,30);
157263 
157264 IF l_continue_with_lines THEN
157265    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
157266       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
157267 
157268       xla_accounting_err_pkg.build_message
157269          (p_appli_s_name            => 'XLA'
157270          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
157271          ,p_token_1                 => 'LINE_NUMBER'
157272          ,p_value_1                 => l_array_extract_line_num(Idx)
157273          ,p_token_2                 => 'PRODUCT_NAME'
157274          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
157275          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
157276          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
157277          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
157278 
157279    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
157280       --
157281       -- following sets the accounting attributes needed to reverse
157282       -- accounting for a distributeion
157283       --
157284 
157285       --
157286       -- 5217187
157287       --
157288       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
157289       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
157290                                        g_array_event(l_event_id).array_value_num('header_index'));
157291       --
157292       --
157293 
157294       -- No reversal code generated
157295 
157296       xla_ae_lines_pkg.SetAcctReversalAttrs
157297          (p_event_id             => l_event_id
157298          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
157299          ,p_calculate_acctd_flag => l_calculate_acctd_flag
157300          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
157301    END IF;
157302 
157303    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
157304        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
157305 
157306 --
157307 AcctLineType_44 (
157308  p_application_id  => p_application_id
157309  ,p_event_id     => l_event_id
157310  ,p_calculate_acctd_flag => l_calculate_acctd_flag
157311  ,p_calculate_g_l_flag => l_calculate_g_l_flag
157312  ,p_actual_flag => l_actual_flag
157313  ,p_balance_type_code => l_balance_type_code
157314  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157315  
157316  , p_source_1 => l_array_source_1(Idx)
157317  , p_source_2 => l_array_source_2(Idx)
157318  , p_source_3 => l_array_source_3(Idx)
157319  , p_source_5 => l_array_source_5(Idx)
157320  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
157321  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
157322  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
157323  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
157324  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
157325  , p_source_11 => l_array_source_11(Idx)
157326  );
157327 If(l_balance_type_code = 'A') THEN
157328   l_actual_gain_loss_ref := l_gain_or_loss_ref;
157329 END IF;
157330 
157331 --
157332 
157333 
157334 --
157335 AcctLineType_57 (
157336  p_application_id  => p_application_id
157337  ,p_event_id     => l_event_id
157338  ,p_calculate_acctd_flag => l_calculate_acctd_flag
157339  ,p_calculate_g_l_flag => l_calculate_g_l_flag
157340  ,p_actual_flag => l_actual_flag
157341  ,p_balance_type_code => l_balance_type_code
157342  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157343  
157344  , p_source_1 => l_array_source_1(Idx)
157345  , p_source_2 => l_array_source_2(Idx)
157346  , p_source_3 => l_array_source_3(Idx)
157347  , p_source_5 => l_array_source_5(Idx)
157348  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
157349  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
157350  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
157351  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
157352  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
157353  , p_source_11 => l_array_source_11(Idx)
157354  );
157355 If(l_balance_type_code = 'A') THEN
157356   l_actual_gain_loss_ref := l_gain_or_loss_ref;
157357 END IF;
157358 
157359 --
157360 
157361 
157362 --
157363 AcctLineType_100 (
157364  p_application_id  => p_application_id
157365  ,p_event_id     => l_event_id
157369  ,p_balance_type_code => l_balance_type_code
157366  ,p_calculate_acctd_flag => l_calculate_acctd_flag
157367  ,p_calculate_g_l_flag => l_calculate_g_l_flag
157368  ,p_actual_flag => l_actual_flag
157370  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157371  
157372  , p_source_1 => l_array_source_1(Idx)
157373  , p_source_2 => l_array_source_2(Idx)
157374  , p_source_3 => l_array_source_3(Idx)
157375  , p_source_5 => l_array_source_5(Idx)
157376  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
157377  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
157378  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
157379  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
157380  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
157381  , p_source_11 => l_array_source_11(Idx)
157382  );
157383 If(l_balance_type_code = 'A') THEN
157384   l_actual_gain_loss_ref := l_gain_or_loss_ref;
157385 END IF;
157386 
157387 --
157388 
157389 
157390 --
157391 AcctLineType_161 (
157392  p_application_id  => p_application_id
157393  ,p_event_id     => l_event_id
157394  ,p_calculate_acctd_flag => l_calculate_acctd_flag
157395  ,p_calculate_g_l_flag => l_calculate_g_l_flag
157396  ,p_actual_flag => l_actual_flag
157397  ,p_balance_type_code => l_balance_type_code
157398  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157399  
157400  , p_source_1 => l_array_source_1(Idx)
157401  , p_source_2 => l_array_source_2(Idx)
157402  , p_source_3 => l_array_source_3(Idx)
157403  , p_source_5 => l_array_source_5(Idx)
157404  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
157405  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
157406  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
157407  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
157408  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
157409  , p_source_11 => l_array_source_11(Idx)
157410  );
157411 If(l_balance_type_code = 'A') THEN
157412   l_actual_gain_loss_ref := l_gain_or_loss_ref;
157413 END IF;
157414 
157415 --
157416 
157417 
157418 --
157419 AcctLineType_196 (
157420  p_application_id  => p_application_id
157421  ,p_event_id     => l_event_id
157422  ,p_calculate_acctd_flag => l_calculate_acctd_flag
157423  ,p_calculate_g_l_flag => l_calculate_g_l_flag
157424  ,p_actual_flag => l_actual_flag
157425  ,p_balance_type_code => l_balance_type_code
157426  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157427  
157428  , p_source_1 => l_array_source_1(Idx)
157429  , p_source_2 => l_array_source_2(Idx)
157430  , p_source_3 => l_array_source_3(Idx)
157431  , p_source_5 => l_array_source_5(Idx)
157432  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
157433  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
157434  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
157435  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
157436  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
157437  , p_source_11 => l_array_source_11(Idx)
157438  );
157439 If(l_balance_type_code = 'A') THEN
157440   l_actual_gain_loss_ref := l_gain_or_loss_ref;
157441 END IF;
157442 
157443 --
157444 
157445 
157446 --
157447 AcctLineType_223 (
157448  p_application_id  => p_application_id
157449  ,p_event_id     => l_event_id
157450  ,p_calculate_acctd_flag => l_calculate_acctd_flag
157451  ,p_calculate_g_l_flag => l_calculate_g_l_flag
157452  ,p_actual_flag => l_actual_flag
157453  ,p_balance_type_code => l_balance_type_code
157454  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157455  
157456  , p_source_1 => l_array_source_1(Idx)
157457  , p_source_2 => l_array_source_2(Idx)
157458  , p_source_3 => l_array_source_3(Idx)
157459  , p_source_5 => l_array_source_5(Idx)
157460  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
157461  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
157462  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
157463  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
157464  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
157465  , p_source_11 => l_array_source_11(Idx)
157466  );
157467 If(l_balance_type_code = 'A') THEN
157468   l_actual_gain_loss_ref := l_gain_or_loss_ref;
157469 END IF;
157470 
157471 --
157472 
157473       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
157474       -- or secondary ledger that has different currency with primary
157475       -- or alc that is calculated by sla
157476       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
157477             (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'))
157478 
157479 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
157480 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
157481           AND (l_actual_flag = 'A')) THEN
157482         XLA_AE_LINES_PKG.CreateGainOrLossLines(
157483           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
157484          ,p_application_id   => p_application_id
157485          ,p_amb_context_code => 'DEFAULT'
157486          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
157490          ,p_gain_ccid        => -1
157487          ,p_event_class_code => C_EVENT_CLASS_CODE
157488          ,p_event_type_code  => C_EVENT_TYPE_CODE
157489          
157491          ,p_loss_ccid        => -1
157492 
157493          ,p_actual_flag      => l_actual_flag
157494          ,p_enc_flag         => null
157495          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
157496          ,p_enc_g_l_ref      => null
157497          );
157498       END IF;
157499    END IF;
157500 END IF;
157501 
157502    ELSE
157503       --
157504       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
157505       --
157506       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157507          trace
157508             (p_msg      => 'Trancaction revesal option is Y'
157509             ,p_level    => C_LEVEL_STATEMENT
157510             ,p_module   => l_log_module);
157511       END IF;
157512    END IF;
157513 
157514 END LOOP;
157515 l_result := XLA_AE_LINES_PKG.InsertLines ;
157516 end loop;
157517 close line_cur;
157518 
157519 
157520 --
157521 -- insert headers into xla_ae_headers_gt table
157522 --
157523 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
157524 
157525 -- insert into errors table here.
157526 
157527 END LOOP;
157528 
157529 --
157530 -- 4865292
157531 --
157532 -- Compare g_hdr_extract_count with event count in
157533 -- CreateHeadersAndLines.
157534 --
157535 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
157536 
157537 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157538    trace (p_msg     => '# rows extracted from header extract objects '
157539                     || ' (running total): '
157540                     || g_hdr_extract_count
157541          ,p_level   => C_LEVEL_STATEMENT
157542          ,p_module  => l_log_module);
157543 END IF;
157544 
157545 CLOSE header_cur;
157546 --
157547 
157548 --
157549 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157550    trace
157551       (p_msg      => 'END of EventType_278'
157552       ,p_level    => C_LEVEL_PROCEDURE
157553       ,p_module   => l_log_module);
157554 END IF;
157555 --
157556 RETURN l_result;
157557 EXCEPTION
157558 WHEN xla_exceptions_pkg.application_exception THEN
157559    
157560 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
157561 
157562    
157563 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
157564 
157565    RAISE;
157566 
157567 WHEN NO_DATA_FOUND THEN
157568 
157569 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
157570 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
157571 
157572 FOR header_record IN header_cur
157573 LOOP
157574     l_array_header_events(header_record.event_id) := header_record.event_id;
157575 END LOOP;
157576 
157577 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
157578 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
157579 
157580 fnd_file.put_line(fnd_file.LOG, '                    ');
157581 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
157582 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
157583 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
157584 
157585 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
157586 LOOP
157587 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
157588 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
157589         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
157590 	END IF;
157591 END LOOP;
157592 
157593 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
157594 fnd_file.put_line(fnd_file.LOG, '                    ');
157595 
157596 
157597 xla_exceptions_pkg.raise_message
157598       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_278');
157599 
157600 
157601 WHEN OTHERS THEN
157602    xla_exceptions_pkg.raise_message
157603       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_278');
157604 END EventType_278;
157605 --
157606 
157607 ---------------------------------------
157608 --
157609 -- PRIVATE PROCEDURE
157610 --         insert_sources_279
157611 --
157612 ----------------------------------------
157613 --
157614 PROCEDURE insert_sources_279(
157615                                 p_target_ledger_id       IN NUMBER
157616                               , p_language               IN VARCHAR2
157617                               , p_sla_ledger_id          IN NUMBER
157618                               , p_pad_start_date         IN DATE
157619                               , p_pad_end_date           IN DATE
157620                          )
157621 IS
157622 
157623 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVOICE_ERV_ADJ';
157624 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PAYABLES_INVOICE';
157625 p_apps_owner                   VARCHAR2(30);
157626 l_log_module                   VARCHAR2(240);
157627 BEGIN
157628 IF g_log_enabled THEN
157629       l_log_module := C_DEFAULT_MODULE||'.insert_sources_279';
157630 END IF;
157631 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157632 
157633       trace
157634          (p_msg      => 'BEGIN of insert_sources_279'
157635          ,p_level    => C_LEVEL_PROCEDURE
157639 
157636          ,p_module   => l_log_module);
157637 
157638 END IF;
157640 -- select APPS owner
157641 SELECT oracle_username
157642   INTO p_apps_owner
157643   FROM fnd_oracle_userid
157644  WHERE read_only_flag = 'U'
157645 ;
157646 
157647 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157648       trace
157649          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
157650                         ' - p_language = '||p_language||
157651                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
157652                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
157653                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
157654                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
157655          ,p_level    => C_LEVEL_STATEMENT
157656          ,p_module   => l_log_module);
157657 END IF;
157658 
157659 
157660 --
157661 INSERT INTO xla_diag_sources --hdr1
157662 (
157663         event_id
157664       , ledger_id
157665       , sla_ledger_id
157666       , description_language
157667       , object_name
157668       , object_type_code
157669       , line_number
157670       , source_application_id
157671       , source_type_code
157672       , source_code
157673       , source_value
157674       , source_meaning
157675       , created_by
157676       , creation_date
157677       , last_update_date
157678       , last_updated_by
157679       , last_update_login
157680       , program_update_date
157681       , program_application_id
157682       , program_id
157683       , request_id
157684 )
157685 SELECT
157686         event_id
157687       , p_target_ledger_id
157688       , p_sla_ledger_id
157689       , p_language
157690       , object_name
157691       , object_type_code
157692       , line_number
157693       , source_application_id
157694       , source_type_code
157695       , source_code
157696       , SUBSTR(source_value ,1,1996)
157697       , SUBSTR(source_meaning,1,200)
157698       , xla_environment_pkg.g_Usr_Id
157699       , TRUNC(SYSDATE)
157700       , TRUNC(SYSDATE)
157701       , xla_environment_pkg.g_Usr_Id
157702       , xla_environment_pkg.g_Login_Id
157703       , TRUNC(SYSDATE)
157704       , xla_environment_pkg.g_Prog_Appl_Id
157705       , xla_environment_pkg.g_Prog_Id
157706       , xla_environment_pkg.g_Req_Id
157707   FROM (
157708        SELECT xet.event_id                  event_id
157709             , 0                             line_number
157710             , CASE r
157711                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
157712                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
157713                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
157714                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
157715                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
157716                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
157717                 
157718                ELSE null
157719               END                           object_name
157720             , CASE r
157721                 WHEN 1 THEN 'HEADER' 
157722                 WHEN 2 THEN 'HEADER' 
157723                 WHEN 3 THEN 'HEADER' 
157724                 WHEN 4 THEN 'HEADER' 
157725                 WHEN 5 THEN 'HEADER' 
157726                 WHEN 6 THEN 'HEADER' 
157727                 
157728                 ELSE null
157729               END                           object_type_code
157730             , CASE r
157731                 WHEN 1 THEN '555' 
157732                 WHEN 2 THEN '555' 
157733                 WHEN 3 THEN '555' 
157734                 WHEN 4 THEN '555' 
157735                 WHEN 5 THEN '555' 
157736                 WHEN 6 THEN '555' 
157737                 
157738                 ELSE null
157739               END                           source_application_id
157740             , 'S'             source_type_code
157741             , CASE r
157742                 WHEN 1 THEN 'ENTITY_CODE' 
157743                 WHEN 2 THEN 'CURRENCY_CODE' 
157744                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
157745                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
157746                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
157747                 WHEN 6 THEN 'TRANSACTION_DATE' 
157748                 
157749                 ELSE null
157750               END                           source_code
157751             , CASE r
157752                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
157753                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
157754                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
157755                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
157756                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
157757                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
157758                 
157759                 ELSE null
157760               END                           source_value
157761             , CASE r
157762                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
157763                           1010186
157764                          ,TO_CHAR(h1.CURRENCY_CODE)
157765                          ,'CURRENCY_CODE'
157766                          ,'S'
157767                          ,555)
157768                 
157769                 ELSE null
157770               END               source_meaning
157771         FROM xla_events_gt     xet  
157772       , GMF_XLA_EXTRACT_HEADERS  h1
157776             AND h1.event_id = xet.event_id
157773             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
157774        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
157775          AND xet.event_type_code = C_EVENT_TYPE_CODE
157777 
157778 )
157779 ;
157780 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157781 
157782       trace
157783          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
157784          ,p_level    => C_LEVEL_STATEMENT
157785          ,p_module   => l_log_module);
157786 
157787 END IF;
157788 --
157789 
157790 
157791 
157792 --
157793 INSERT INTO xla_diag_sources --line1
157794 (
157795         event_id
157796       , ledger_id
157797       , sla_ledger_id
157798       , description_language
157799       , object_name
157800       , object_type_code
157801       , line_number
157802       , source_application_id
157803       , source_type_code
157804       , source_code
157805       , source_value
157806       , source_meaning
157807       , created_by
157808       , creation_date
157809       , last_update_date
157810       , last_updated_by
157811       , last_update_login
157812       , program_update_date
157813       , program_application_id
157814       , program_id
157815       , request_id
157816 )
157817 SELECT  event_id
157818       , p_target_ledger_id
157819       , p_sla_ledger_id
157820       , p_language
157821       , object_name
157822       , object_type_code
157823       , line_number
157824       , source_application_id
157825       , source_type_code
157826       , source_code
157827       , SUBSTR(source_value,1,1996)
157828       , SUBSTR(source_meaning,1,200)
157829       , xla_environment_pkg.g_Usr_Id
157830       , TRUNC(SYSDATE)
157831       , TRUNC(SYSDATE)
157832       , xla_environment_pkg.g_Usr_Id
157833       , xla_environment_pkg.g_Login_Id
157834       , TRUNC(SYSDATE)
157835       , xla_environment_pkg.g_Prog_Appl_Id
157836       , xla_environment_pkg.g_Prog_Id
157837       , xla_environment_pkg.g_Req_Id
157838   FROM (
157839        SELECT xet.event_id                  event_id
157840             , l2.line_number                 line_number
157841             , CASE r
157842                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
157843                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
157844                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
157845                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
157846                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
157847                 
157848                ELSE null
157849               END                           object_name
157850             , CASE r
157851                 WHEN 1 THEN 'LINE' 
157852                 WHEN 2 THEN 'LINE' 
157853                 WHEN 3 THEN 'LINE' 
157854                 WHEN 4 THEN 'LINE' 
157855                 WHEN 5 THEN 'LINE' 
157856                 
157857                 ELSE null
157858               END                           object_type_code
157859             , CASE r
157860                 WHEN 1 THEN '555' 
157861                 WHEN 2 THEN '555' 
157862                 WHEN 3 THEN '555' 
157863                 WHEN 4 THEN '555' 
157864                 WHEN 5 THEN '555' 
157865                 
157866                 ELSE null
157867               END                           source_application_id
157868             , 'S'             source_type_code
157869             , CASE r
157870                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
157871                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
157872                 WHEN 3 THEN 'ENTERED_AMOUNT' 
157873                 WHEN 4 THEN 'LINE_ID' 
157874                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
157875                 
157876                 ELSE null
157877               END                           source_code
157878             , CASE r
157879                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
157880                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
157881                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
157882                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
157883                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
157884                 
157885                 ELSE null
157886               END                           source_value
157887             , null              source_meaning
157888          FROM  xla_events_gt     xet  
157889         , GMF_XLA_EXTRACT_LINES  l2
157890             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
157891         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
157892           AND xet.event_type_code = C_EVENT_TYPE_CODE
157893             AND l2.event_id          = xet.event_id
157894 
157895 )
157896 ;
157897 --
157898 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157899 
157900       trace
157901          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
157902          ,p_level    => C_LEVEL_STATEMENT
157903          ,p_module   => l_log_module);
157904 
157905 END IF;
157906 
157907 
157908 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157909       trace
157910          (p_msg      => 'END of insert_sources_279'
157911          ,p_level    => C_LEVEL_PROCEDURE
157912          ,p_module   => l_log_module);
157913 END IF;
157914 EXCEPTION
157915   WHEN xla_exceptions_pkg.application_exception THEN
157916       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
157920                ,p_module   => l_log_module);
157917             trace
157918                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
157919                ,p_level    => C_LEVEL_EXCEPTION
157921       END IF;
157922       RAISE;
157923   WHEN OTHERS THEN
157924       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
157925             trace
157926                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
157927                ,p_level    => C_LEVEL_EXCEPTION
157928                ,p_module   => l_log_module);
157929        END IF;
157930        xla_exceptions_pkg.raise_message
157931            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_279');
157932 END insert_sources_279;
157933 --
157934 
157935 ---------------------------------------
157936 --
157937 -- PRIVATE FUNCTION
157938 --         EventType_279
157939 --
157940 ----------------------------------------
157941 --
157942 FUNCTION EventType_279
157943        (p_application_id         IN NUMBER
157944        ,p_base_ledger_id         IN NUMBER
157945        ,p_target_ledger_id       IN NUMBER
157946        ,p_language               IN VARCHAR2
157947        ,p_currency_code          IN VARCHAR2
157948        ,p_sla_ledger_id          IN NUMBER
157949        ,p_pad_start_date         IN DATE
157950        ,p_pad_end_date           IN DATE
157951        ,p_primary_ledger_id      IN NUMBER)
157952 RETURN BOOLEAN IS
157953 --
157954 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVOICE_ERV_ADJ';
157955 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PAYABLES_INVOICE';
157956 
157957 l_calculate_acctd_flag   VARCHAR2(1) :='N';
157958 l_calculate_g_l_flag     VARCHAR2(1) :='N';
157959 --
157960 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157961 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157962 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157963 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157964 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157965 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157966 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157967 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157968 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157969 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157970 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157971 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157972 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157973 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157974 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157975 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157976 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157977 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157978 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157979 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157980 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157981 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157982 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
157983 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157984 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
157985 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
157986 
157987 l_event_id                             NUMBER;
157988 l_previous_event_id                    NUMBER;
157989 l_first_event_id                       NUMBER;
157990 l_last_event_id                        NUMBER;
157991 
157992 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
157993 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
157994 --
157995 --
157996 l_result                    BOOLEAN := TRUE;
157997 l_rows                      NUMBER  := 1000;
157998 l_event_type_name           VARCHAR2(80) := 'Invoice ERV Adjustment';
157999 l_event_class_name          VARCHAR2(80) := 'Invoicing In Actual Costing';
158000 l_description               VARCHAR2(4000);
158001 l_transaction_reversal      NUMBER;
158002 l_ae_header_id              NUMBER;
158003 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
158004 l_log_module                VARCHAR2(240);
158005 --
158006 l_acct_reversal_source      VARCHAR2(30);
158007 l_trx_reversal_source       VARCHAR2(30);
158008 
158009 l_continue_with_lines       BOOLEAN := TRUE;
158010 --
158011 l_acc_rev_gl_date_source    DATE;                      -- 4262811
158012 --
158013 type t_array_event_id is table of number index by binary_integer;
158014 
158015 l_rec_array_event                    t_rec_array_event;
158016 l_null_rec_array_event               t_rec_array_event;
158017 l_array_ae_header_id                 xla_number_array_type;
158018 l_actual_flag                        VARCHAR2(1) := NULL;
158019 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
158020 l_balance_type_code                  VARCHAR2(1) :=NULL;
158021 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
158022 
158023 --
158024 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
158025 --
158026 
158030 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
158027 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
158028 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
158029 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
158031 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
158032 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
158033 
158034 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
158035 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
158036 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
158037 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
158038 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
158039 
158040 l_array_source_6              t_array_source_6;
158041 l_array_source_7              t_array_source_7;
158042 l_array_source_8              t_array_source_8;
158043 l_array_source_9              t_array_source_9;
158044 l_array_source_10              t_array_source_10;
158045 l_array_source_12              t_array_source_12;
158046 
158047 l_array_source_1      t_array_source_1;
158048 l_array_source_2      t_array_source_2;
158049 l_array_source_3      t_array_source_3;
158050 l_array_source_5      t_array_source_5;
158051 l_array_source_11      t_array_source_11;
158052 
158053 --
158054 CURSOR header_cur
158055 IS
158056 SELECT /*+ leading(xet) cardinality(xet,1) */
158057 -- Event Type Code: INVOICE_ERV_ADJ
158058 -- Event Class Code: PAYABLES_INVOICE
158059     xet.entity_id
158060   , xet.legal_entity_id
158061   , xet.entity_code
158062   , xet.transaction_number
158063   , xet.event_id
158064   , xet.event_class_code
158065   , xet.event_type_code
158066   , xet.event_number
158067   , xet.event_date
158068   , xet.transaction_date
158069   , xet.reference_num_1
158070   , xet.reference_num_2
158071   , xet.reference_num_3
158072   , xet.reference_num_4
158073   , xet.reference_char_1
158074   , xet.reference_char_2
158075   , xet.reference_char_3
158076   , xet.reference_char_4
158077   , xet.reference_date_1
158078   , xet.reference_date_2
158079   , xet.reference_date_3
158080   , xet.reference_date_4
158081   , xet.event_created_by
158082   , xet.budgetary_control_flag 
158083   , h1.ENTITY_CODE    source_6
158084   , h1.CURRENCY_CODE    source_7
158085   , h1.CURRENCY_CONVERSION_DATE    source_8
158086   , h1.CURRENCY_CONVERSION_RATE    source_9
158087   , h1.CURRENCY_CONVERSION_TYPE    source_10
158088   , h1.TRANSACTION_DATE    source_12
158089   FROM xla_events_gt     xet 
158090   , GMF_XLA_EXTRACT_HEADERS  h1
158091  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
158092    and xet.event_type_code = C_EVENT_TYPE_CODE
158093    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
158094 
158095  ORDER BY event_id
158096 ;
158097 
158098 
158099 --
158100 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
158101 IS
158102 SELECT /*+ leading(xet) cardinality(xet,1) */
158103 -- Event Type Code: INVOICE_ERV_ADJ
158104 -- Event Class Code: PAYABLES_INVOICE
158105     xet.entity_id
158106    ,xet.legal_entity_id
158107    ,xet.entity_code
158108    ,xet.transaction_number
158109    ,xet.event_id
158110    ,xet.event_class_code
158111    ,xet.event_type_code
158112    ,xet.event_number
158113    ,xet.event_date
158114    ,xet.transaction_date
158115    ,xet.reference_num_1
158116    ,xet.reference_num_2
158117    ,xet.reference_num_3
158118    ,xet.reference_num_4
158119    ,xet.reference_char_1
158120    ,xet.reference_char_2
158121    ,xet.reference_char_3
158122    ,xet.reference_char_4
158123    ,xet.reference_date_1
158124    ,xet.reference_date_2
158125    ,xet.reference_date_3
158126    ,xet.reference_date_4
158127    ,xet.event_created_by
158128    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
158129   , l2.TRANSACTION_ACCOUNT_ID    source_1
158130   , l2.JOURNAL_LINE_TYPE    source_2
158131   , l2.ENTERED_AMOUNT    source_3
158132   , l2.LINE_ID    source_5
158133   , l2.ACCOUNTED_AMOUNT    source_11
158134   FROM xla_events_gt     xet 
158135   , GMF_XLA_EXTRACT_LINES  l2
158136  WHERE xet.event_id between x_first_event_id and x_last_event_id
158137    and xet.event_date between p_pad_start_date and p_pad_end_date
158138    and xet.event_type_code = C_EVENT_TYPE_CODE
158139    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
158140 ;
158141 
158142 --
158143 BEGIN
158144 IF g_log_enabled THEN
158145    l_log_module := C_DEFAULT_MODULE||'.EventType_279';
158146 END IF;
158147 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158148    trace
158149       (p_msg      => 'BEGIN of EventType_279'
158150       ,p_level    => C_LEVEL_PROCEDURE
158151       ,p_module   => l_log_module);
158152 END IF;
158153 
158154 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158155    trace
158156       (p_msg      => 'p_application_id = '||p_application_id||
158157                      ' - p_base_ledger_id = '||p_base_ledger_id||
158161                      ' - p_sla_ledger_id = '||p_sla_ledger_id
158158                      ' - p_target_ledger_id  = '||p_target_ledger_id||
158159                      ' - p_language = '||p_language||
158160                      ' - p_currency_code = '||p_currency_code||
158162       ,p_level    => C_LEVEL_STATEMENT
158163       ,p_module   => l_log_module);
158164 END IF;
158165 --
158166 -- initialze arrays
158167 --
158168 g_array_event.DELETE;
158169 l_rec_array_event := l_null_rec_array_event;
158170 --
158171 --------------------------------------
158172 -- 4262811 Initialze MPA Line Number
158173 --------------------------------------
158174 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
158175 
158176 --
158177 
158178 --
158179 OPEN header_cur;
158180 --
158181 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158182    trace
158183    (p_msg      => 'SQL - FETCH header_cur'
158184    ,p_level    => C_LEVEL_STATEMENT
158185    ,p_module   => l_log_module);
158186 END IF;
158187 --
158188 LOOP
158189 FETCH header_cur BULK COLLECT INTO
158190         l_array_entity_id
158191       , l_array_legal_entity_id
158192       , l_array_entity_code
158193       , l_array_transaction_num
158194       , l_array_event_id
158195       , l_array_class_code
158196       , l_array_event_type
158197       , l_array_event_number
158198       , l_array_event_date
158199       , l_array_transaction_date
158200       , l_array_reference_num_1
158201       , l_array_reference_num_2
158202       , l_array_reference_num_3
158203       , l_array_reference_num_4
158204       , l_array_reference_char_1
158205       , l_array_reference_char_2
158206       , l_array_reference_char_3
158207       , l_array_reference_char_4
158208       , l_array_reference_date_1
158209       , l_array_reference_date_2
158210       , l_array_reference_date_3
158211       , l_array_reference_date_4
158212       , l_array_event_created_by
158213       , l_array_budgetary_control_flag 
158214       , l_array_source_6
158215       , l_array_source_7
158216       , l_array_source_8
158217       , l_array_source_9
158218       , l_array_source_10
158219       , l_array_source_12
158220       LIMIT l_rows;
158221 --
158222 IF (C_LEVEL_EVENT >= g_log_level) THEN
158223    trace
158224    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
158225    ,p_level    => C_LEVEL_EVENT
158226    ,p_module   => l_log_module);
158227 END IF;
158228 --
158229 EXIT WHEN l_array_entity_id.COUNT = 0;
158230 
158231 -- initialize arrays
158232 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
158233 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
158234 
158235 --
158236 -- Bug 4458708
158237 --
158238 XLA_AE_LINES_PKG.g_LineNumber := 0;
158239 
158240 
158241 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
158242 g_last_hdr_idx := l_array_event_id.LAST;
158243 --
158244 -- loop for the headers. Each iteration is for each header extract row
158245 -- fetched in header cursor
158246 --
158247 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
158248 
158249 --
158250 -- set event info as cache for other routines to refer event attributes
158251 --
158252 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
158253    (p_application_id           => p_application_id
158254    ,p_primary_ledger_id        => p_primary_ledger_id
158255    ,p_base_ledger_id           => p_base_ledger_id
158256    ,p_target_ledger_id         => p_target_ledger_id
158257    ,p_entity_id                => l_array_entity_id(hdr_idx)
158258    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
158259    ,p_entity_code              => l_array_entity_code(hdr_idx)
158260    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
158261    ,p_event_id                 => l_array_event_id(hdr_idx)
158262    ,p_event_class_code         => l_array_class_code(hdr_idx)
158263    ,p_event_type_code          => l_array_event_type(hdr_idx)
158264    ,p_event_number             => l_array_event_number(hdr_idx)
158265    ,p_event_date               => l_array_event_date(hdr_idx)
158266    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
158267    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
158268    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
158269    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
158270    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
158271    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
158272    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
158273    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
158274    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
158275    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
158276    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
158277    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
158278    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
158279    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
158280    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
158281 
158282 --
158283 -- set the status of entry to C_VALID (0)
158284 --
158285 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
158286 
158287 --
158288 -- initialize a row for ae header
158289 --
158293 
158290 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
158291 
158292 l_event_id := l_array_event_id(hdr_idx);
158294 --
158295 -- storing the hdr_idx for event. May be used by line cursor.
158296 --
158297 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
158298 
158299 --
158300 -- store sources from header extract. This can be improved to
158301 -- store only those sources from header extract that may be used in lines
158302 --
158303 
158304 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
158305 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
158306 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
158307 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
158308 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
158309 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
158310 
158311 --
158312 -- initilaize the status of ae headers for diffrent balance types
158313 -- the status is initialised to C_NOT_CREATED (2)
158314 --
158315 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
158316 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
158317 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
158318 
158319 --
158320 -- call api to validate and store accounting attributes for header
158321 --
158322 
158323 ------------------------------------------------------------
158324 -- Accrual Reversal : to get date for Standard Source (NONE)
158325 ------------------------------------------------------------
158326 l_acc_rev_gl_date_source := NULL;
158327 
158328      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
158329       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
158330 
158331 
158332 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
158333 
158334 XLA_AE_HEADER_PKG.SetJeCategoryName;
158335 
158336 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
158337 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
158338 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
158339 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
158340 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
158341 
158342 
158343 -- No header level analytical criteria
158344 
158345 --
158346 --accounting attribute enhancement, bug 3612931
158347 --
158348 l_trx_reversal_source := SUBSTR(NULL, 1,30);
158349 
158350 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
158351    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
158352 
158353    xla_accounting_err_pkg.build_message
158354       (p_appli_s_name            => 'XLA'
158355       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
158356       ,p_token_1                 => 'ACCT_ATTR_NAME'
158357       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
158358       ,p_token_2                 => 'PRODUCT_NAME'
158359       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
158360       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
158361       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
158362       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
158363 
158364 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
158365    --
158366    -- following sets the accounting attributes needed to reverse
158367    -- accounting for a distributeion
158368    --
158369    xla_ae_lines_pkg.SetTrxReversalAttrs
158370       (p_event_id              => l_event_id
158371       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
158372       ,p_trx_reversal_source   => l_trx_reversal_source);
158373 
158374 END IF;
158375 
158376 
158377 ----------------------------------------------------------------
158378 -- 4262811 -  update the header statuses to invalid in need be
158379 ----------------------------------------------------------------
158380 --
158381 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
158382 
158383 
158384   -----------------------------------------------
158385   -- No accrual reversal for the event class/type
158386   -----------------------------------------------
158387 ----------------------------------------------------------------
158388 
158389 --
158390 -- this ends the header loop iteration for one bulk fetch
158391 --
158392 END LOOP;
158393 
158394 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
158395 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
158396 
158397 --
158398 -- insert dummy rows into lines gt table that were created due to
158399 -- transaction reversals
158400 --
158401 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
158402    l_result := XLA_AE_LINES_PKG.InsertLines;
158403 END IF;
158404 
158405 --
158406 -- reset the temp_line_num for each set of events fetched from header
158407 -- cursor rather than doing it for each new event in line cursor
158411 
158408 -- Bug 3939231
158409 --
158410 xla_ae_lines_pkg.g_temp_line_num := 0;
158412 
158413 
158414 --
158415 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
158416 --
158417 --
158418 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158419 
158420       trace
158421          (p_msg      => 'SQL - FETCH line_cur'
158422          ,p_level    => C_LEVEL_STATEMENT
158423          ,p_module   => l_log_module);
158424 
158425 END IF;
158426 --
158427 --
158428 LOOP
158429   --
158430   FETCH line_cur BULK COLLECT INTO
158431         l_array_entity_id
158432       , l_array_legal_entity_id
158433       , l_array_entity_code
158434       , l_array_transaction_num
158435       , l_array_event_id
158436       , l_array_class_code
158437       , l_array_event_type
158438       , l_array_event_number
158439       , l_array_event_date
158440       , l_array_transaction_date
158441       , l_array_reference_num_1
158442       , l_array_reference_num_2
158443       , l_array_reference_num_3
158444       , l_array_reference_num_4
158445       , l_array_reference_char_1
158446       , l_array_reference_char_2
158447       , l_array_reference_char_3
158448       , l_array_reference_char_4
158449       , l_array_reference_date_1
158450       , l_array_reference_date_2
158451       , l_array_reference_date_3
158452       , l_array_reference_date_4
158453       , l_array_event_created_by
158454       , l_array_budgetary_control_flag
158455       , l_array_extract_line_num 
158456       , l_array_source_1
158457       , l_array_source_2
158458       , l_array_source_3
158459       , l_array_source_5
158460       , l_array_source_11
158461       LIMIT l_rows;
158462 
158463   --
158464   IF (C_LEVEL_EVENT >= g_log_level) THEN
158465             trace
158466                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
158467                ,p_level    => C_LEVEL_EVENT
158468                ,p_module   => l_log_module);
158469   END IF;
158470   --
158471   EXIT WHEN l_array_entity_id.count = 0;
158472 
158473   XLA_AE_LINES_PKG.g_rec_lines := null;
158474 
158475 --
158476 -- Bug 4458708
158477 --
158478 XLA_AE_LINES_PKG.g_LineNumber := 0;
158479 --
158480 --
158481 
158482 FOR Idx IN 1..l_array_event_id.count LOOP
158483    --
158484    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
158485    --
158486    l_event_id := l_array_event_id(idx);  -- 5648433
158487 
158488    --
158489    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
158490    --
158491 
158492    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
158493              (g_array_event(l_event_id).array_value_num('header_index'))
158494          ,'N'
158495          ) <> 'Y'
158496    THEN
158497       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158498          trace
158499             (p_msg      => 'Trancaction revesal option is not Y '
158500             ,p_level    => C_LEVEL_STATEMENT
158501             ,p_module   => l_log_module);
158502       END IF;
158503 
158504 --
158505 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
158506 --
158507 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
158508 --
158509 -- set event info as cache for other routines to refer event attributes
158510 --
158511 
158512 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
158513    l_previous_event_id := l_event_id;
158514 
158515    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
158516       (p_application_id           => p_application_id
158517       ,p_primary_ledger_id        => p_primary_ledger_id
158518       ,p_base_ledger_id           => p_base_ledger_id
158519       ,p_target_ledger_id         => p_target_ledger_id
158520       ,p_entity_id                => l_array_entity_id(Idx)
158521       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
158522       ,p_entity_code              => l_array_entity_code(Idx)
158523       ,p_transaction_num          => l_array_transaction_num(Idx)
158524       ,p_event_id                 => l_array_event_id(Idx)
158525       ,p_event_class_code         => l_array_class_code(Idx)
158526       ,p_event_type_code          => l_array_event_type(Idx)
158527       ,p_event_number             => l_array_event_number(Idx)
158528       ,p_event_date               => l_array_event_date(Idx)
158529       ,p_transaction_date         => l_array_transaction_date(Idx)
158530       ,p_reference_num_1          => l_array_reference_num_1(Idx)
158531       ,p_reference_num_2          => l_array_reference_num_2(Idx)
158532       ,p_reference_num_3          => l_array_reference_num_3(Idx)
158533       ,p_reference_num_4          => l_array_reference_num_4(Idx)
158534       ,p_reference_char_1         => l_array_reference_char_1(Idx)
158535       ,p_reference_char_2         => l_array_reference_char_2(Idx)
158536       ,p_reference_char_3         => l_array_reference_char_3(Idx)
158537       ,p_reference_char_4         => l_array_reference_char_4(Idx)
158538       ,p_reference_date_1         => l_array_reference_date_1(Idx)
158539       ,p_reference_date_2         => l_array_reference_date_2(Idx)
158540       ,p_reference_date_3         => l_array_reference_date_3(Idx)
158541       ,p_reference_date_4         => l_array_reference_date_4(Idx)
158542       ,p_event_created_by         => l_array_event_created_by(Idx)
158543       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
158544        --
158545 END IF;
158546 
158547 
158548 
158552 l_acct_reversal_source := SUBSTR(NULL, 1,30);
158549 --
158550 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
158551 
158553 
158554 IF l_continue_with_lines THEN
158555    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
158556       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
158557 
158558       xla_accounting_err_pkg.build_message
158559          (p_appli_s_name            => 'XLA'
158560          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
158561          ,p_token_1                 => 'LINE_NUMBER'
158562          ,p_value_1                 => l_array_extract_line_num(Idx)
158563          ,p_token_2                 => 'PRODUCT_NAME'
158564          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
158565          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
158566          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
158567          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
158568 
158569    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
158570       --
158571       -- following sets the accounting attributes needed to reverse
158572       -- accounting for a distributeion
158573       --
158574 
158575       --
158576       -- 5217187
158577       --
158578       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
158579       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
158580                                        g_array_event(l_event_id).array_value_num('header_index'));
158581       --
158582       --
158583 
158584       -- No reversal code generated
158585 
158586       xla_ae_lines_pkg.SetAcctReversalAttrs
158587          (p_event_id             => l_event_id
158588          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
158589          ,p_calculate_acctd_flag => l_calculate_acctd_flag
158590          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
158591    END IF;
158592 
158593    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
158594        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
158595 
158596 --
158597 AcctLineType_82 (
158598  p_application_id  => p_application_id
158599  ,p_event_id     => l_event_id
158600  ,p_calculate_acctd_flag => l_calculate_acctd_flag
158601  ,p_calculate_g_l_flag => l_calculate_g_l_flag
158602  ,p_actual_flag => l_actual_flag
158603  ,p_balance_type_code => l_balance_type_code
158604  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158605  
158606  , p_source_1 => l_array_source_1(Idx)
158607  , p_source_2 => l_array_source_2(Idx)
158608  , p_source_3 => l_array_source_3(Idx)
158609  , p_source_5 => l_array_source_5(Idx)
158610  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
158611  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
158612  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
158613  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
158614  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
158615  , p_source_11 => l_array_source_11(Idx)
158616  );
158617 If(l_balance_type_code = 'A') THEN
158618   l_actual_gain_loss_ref := l_gain_or_loss_ref;
158619 END IF;
158620 
158621 --
158622 
158623 
158624 --
158625 AcctLineType_168 (
158626  p_application_id  => p_application_id
158627  ,p_event_id     => l_event_id
158628  ,p_calculate_acctd_flag => l_calculate_acctd_flag
158629  ,p_calculate_g_l_flag => l_calculate_g_l_flag
158630  ,p_actual_flag => l_actual_flag
158631  ,p_balance_type_code => l_balance_type_code
158632  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158633  
158634  , p_source_1 => l_array_source_1(Idx)
158635  , p_source_2 => l_array_source_2(Idx)
158636  , p_source_3 => l_array_source_3(Idx)
158637  , p_source_5 => l_array_source_5(Idx)
158638  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
158639  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
158640  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
158641  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
158642  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
158643  , p_source_11 => l_array_source_11(Idx)
158644  );
158645 If(l_balance_type_code = 'A') THEN
158646   l_actual_gain_loss_ref := l_gain_or_loss_ref;
158647 END IF;
158648 
158649 --
158650 
158651       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
158652       -- or secondary ledger that has different currency with primary
158653       -- or alc that is calculated by sla
158654       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
158655             (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'))
158656 
158657 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
158658 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
158659           AND (l_actual_flag = 'A')) THEN
158660         XLA_AE_LINES_PKG.CreateGainOrLossLines(
158661           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
158662          ,p_application_id   => p_application_id
158663          ,p_amb_context_code => 'DEFAULT'
158667          
158664          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
158665          ,p_event_class_code => C_EVENT_CLASS_CODE
158666          ,p_event_type_code  => C_EVENT_TYPE_CODE
158668          ,p_gain_ccid        => -1
158669          ,p_loss_ccid        => -1
158670 
158671          ,p_actual_flag      => l_actual_flag
158672          ,p_enc_flag         => null
158673          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
158674          ,p_enc_g_l_ref      => null
158675          );
158676       END IF;
158677    END IF;
158678 END IF;
158679 
158680    ELSE
158681       --
158682       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
158683       --
158684       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158685          trace
158686             (p_msg      => 'Trancaction revesal option is Y'
158687             ,p_level    => C_LEVEL_STATEMENT
158688             ,p_module   => l_log_module);
158689       END IF;
158690    END IF;
158691 
158692 END LOOP;
158693 l_result := XLA_AE_LINES_PKG.InsertLines ;
158694 end loop;
158695 close line_cur;
158696 
158697 
158698 --
158699 -- insert headers into xla_ae_headers_gt table
158700 --
158701 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
158702 
158703 -- insert into errors table here.
158704 
158705 END LOOP;
158706 
158707 --
158708 -- 4865292
158709 --
158710 -- Compare g_hdr_extract_count with event count in
158711 -- CreateHeadersAndLines.
158712 --
158713 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
158714 
158715 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158716    trace (p_msg     => '# rows extracted from header extract objects '
158717                     || ' (running total): '
158718                     || g_hdr_extract_count
158719          ,p_level   => C_LEVEL_STATEMENT
158720          ,p_module  => l_log_module);
158721 END IF;
158722 
158723 CLOSE header_cur;
158724 --
158725 
158726 --
158727 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158728    trace
158729       (p_msg      => 'END of EventType_279'
158730       ,p_level    => C_LEVEL_PROCEDURE
158731       ,p_module   => l_log_module);
158732 END IF;
158733 --
158734 RETURN l_result;
158735 EXCEPTION
158736 WHEN xla_exceptions_pkg.application_exception THEN
158737    
158738 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
158739 
158740    
158741 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
158742 
158743    RAISE;
158744 
158745 WHEN NO_DATA_FOUND THEN
158746 
158747 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
158748 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
158749 
158750 FOR header_record IN header_cur
158751 LOOP
158752     l_array_header_events(header_record.event_id) := header_record.event_id;
158753 END LOOP;
158754 
158755 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
158756 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
158757 
158758 fnd_file.put_line(fnd_file.LOG, '                    ');
158759 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
158760 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
158761 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
158762 
158763 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
158764 LOOP
158765 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
158766 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
158767         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
158768 	END IF;
158769 END LOOP;
158770 
158771 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
158772 fnd_file.put_line(fnd_file.LOG, '                    ');
158773 
158774 
158775 xla_exceptions_pkg.raise_message
158776       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_279');
158777 
158778 
158779 WHEN OTHERS THEN
158780    xla_exceptions_pkg.raise_message
158781       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_279');
158782 END EventType_279;
158783 --
158784 
158785 ---------------------------------------
158786 --
158787 -- PRIVATE PROCEDURE
158788 --         insert_sources_280
158789 --
158790 ----------------------------------------
158791 --
158792 PROCEDURE insert_sources_280(
158793                                 p_target_ledger_id       IN NUMBER
158794                               , p_language               IN VARCHAR2
158795                               , p_sla_ledger_id          IN NUMBER
158796                               , p_pad_start_date         IN DATE
158797                               , p_pad_end_date           IN DATE
158798                          )
158799 IS
158800 
158801 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVOICE_IPV_ADJ';
158802 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PAYABLES_INVOICE';
158803 p_apps_owner                   VARCHAR2(30);
158804 l_log_module                   VARCHAR2(240);
158805 BEGIN
158806 IF g_log_enabled THEN
158807       l_log_module := C_DEFAULT_MODULE||'.insert_sources_280';
158808 END IF;
158809 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158810 
158811       trace
158815 
158812          (p_msg      => 'BEGIN of insert_sources_280'
158813          ,p_level    => C_LEVEL_PROCEDURE
158814          ,p_module   => l_log_module);
158816 END IF;
158817 
158818 -- select APPS owner
158819 SELECT oracle_username
158820   INTO p_apps_owner
158821   FROM fnd_oracle_userid
158822  WHERE read_only_flag = 'U'
158823 ;
158824 
158825 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158826       trace
158827          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
158828                         ' - p_language = '||p_language||
158829                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
158830                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
158831                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
158832                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
158833          ,p_level    => C_LEVEL_STATEMENT
158834          ,p_module   => l_log_module);
158835 END IF;
158836 
158837 
158838 --
158839 INSERT INTO xla_diag_sources --hdr1
158840 (
158841         event_id
158842       , ledger_id
158843       , sla_ledger_id
158844       , description_language
158845       , object_name
158846       , object_type_code
158847       , line_number
158848       , source_application_id
158849       , source_type_code
158850       , source_code
158851       , source_value
158852       , source_meaning
158853       , created_by
158854       , creation_date
158855       , last_update_date
158856       , last_updated_by
158857       , last_update_login
158858       , program_update_date
158859       , program_application_id
158860       , program_id
158861       , request_id
158862 )
158863 SELECT
158864         event_id
158865       , p_target_ledger_id
158866       , p_sla_ledger_id
158867       , p_language
158868       , object_name
158869       , object_type_code
158870       , line_number
158871       , source_application_id
158872       , source_type_code
158873       , source_code
158874       , SUBSTR(source_value ,1,1996)
158875       , SUBSTR(source_meaning,1,200)
158876       , xla_environment_pkg.g_Usr_Id
158877       , TRUNC(SYSDATE)
158878       , TRUNC(SYSDATE)
158879       , xla_environment_pkg.g_Usr_Id
158880       , xla_environment_pkg.g_Login_Id
158881       , TRUNC(SYSDATE)
158882       , xla_environment_pkg.g_Prog_Appl_Id
158883       , xla_environment_pkg.g_Prog_Id
158884       , xla_environment_pkg.g_Req_Id
158885   FROM (
158886        SELECT xet.event_id                  event_id
158887             , 0                             line_number
158888             , CASE r
158889                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
158890                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
158891                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
158892                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
158893                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
158894                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
158895                 
158896                ELSE null
158897               END                           object_name
158898             , CASE r
158899                 WHEN 1 THEN 'HEADER' 
158900                 WHEN 2 THEN 'HEADER' 
158901                 WHEN 3 THEN 'HEADER' 
158902                 WHEN 4 THEN 'HEADER' 
158903                 WHEN 5 THEN 'HEADER' 
158904                 WHEN 6 THEN 'HEADER' 
158905                 
158906                 ELSE null
158907               END                           object_type_code
158908             , CASE r
158909                 WHEN 1 THEN '555' 
158910                 WHEN 2 THEN '555' 
158911                 WHEN 3 THEN '555' 
158912                 WHEN 4 THEN '555' 
158913                 WHEN 5 THEN '555' 
158914                 WHEN 6 THEN '555' 
158915                 
158916                 ELSE null
158917               END                           source_application_id
158918             , 'S'             source_type_code
158919             , CASE r
158920                 WHEN 1 THEN 'ENTITY_CODE' 
158921                 WHEN 2 THEN 'CURRENCY_CODE' 
158922                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
158923                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
158924                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
158925                 WHEN 6 THEN 'TRANSACTION_DATE' 
158926                 
158927                 ELSE null
158928               END                           source_code
158929             , CASE r
158930                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
158931                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
158932                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
158933                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
158934                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
158935                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
158936                 
158937                 ELSE null
158938               END                           source_value
158939             , CASE r
158940                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
158941                           1010186
158942                          ,TO_CHAR(h1.CURRENCY_CODE)
158943                          ,'CURRENCY_CODE'
158944                          ,'S'
158945                          ,555)
158946                 
158947                 ELSE null
158951             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
158948               END               source_meaning
158949         FROM xla_events_gt     xet  
158950       , GMF_XLA_EXTRACT_HEADERS  h1
158952        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
158953          AND xet.event_type_code = C_EVENT_TYPE_CODE
158954             AND h1.event_id = xet.event_id
158955 
158956 )
158957 ;
158958 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158959 
158960       trace
158961          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
158962          ,p_level    => C_LEVEL_STATEMENT
158963          ,p_module   => l_log_module);
158964 
158965 END IF;
158966 --
158967 
158968 
158969 
158970 --
158971 INSERT INTO xla_diag_sources --line1
158972 (
158973         event_id
158974       , ledger_id
158975       , sla_ledger_id
158976       , description_language
158977       , object_name
158978       , object_type_code
158979       , line_number
158980       , source_application_id
158981       , source_type_code
158982       , source_code
158983       , source_value
158984       , source_meaning
158985       , created_by
158986       , creation_date
158987       , last_update_date
158988       , last_updated_by
158989       , last_update_login
158990       , program_update_date
158991       , program_application_id
158992       , program_id
158993       , request_id
158994 )
158995 SELECT  event_id
158996       , p_target_ledger_id
158997       , p_sla_ledger_id
158998       , p_language
158999       , object_name
159000       , object_type_code
159001       , line_number
159002       , source_application_id
159003       , source_type_code
159004       , source_code
159005       , SUBSTR(source_value,1,1996)
159006       , SUBSTR(source_meaning,1,200)
159007       , xla_environment_pkg.g_Usr_Id
159008       , TRUNC(SYSDATE)
159009       , TRUNC(SYSDATE)
159010       , xla_environment_pkg.g_Usr_Id
159011       , xla_environment_pkg.g_Login_Id
159012       , TRUNC(SYSDATE)
159013       , xla_environment_pkg.g_Prog_Appl_Id
159014       , xla_environment_pkg.g_Prog_Id
159015       , xla_environment_pkg.g_Req_Id
159016   FROM (
159017        SELECT xet.event_id                  event_id
159018             , l2.line_number                 line_number
159019             , CASE r
159020                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
159021                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
159022                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
159023                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
159024                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
159025                 
159026                ELSE null
159027               END                           object_name
159028             , CASE r
159029                 WHEN 1 THEN 'LINE' 
159030                 WHEN 2 THEN 'LINE' 
159031                 WHEN 3 THEN 'LINE' 
159032                 WHEN 4 THEN 'LINE' 
159033                 WHEN 5 THEN 'LINE' 
159034                 
159035                 ELSE null
159036               END                           object_type_code
159037             , CASE r
159038                 WHEN 1 THEN '555' 
159039                 WHEN 2 THEN '555' 
159040                 WHEN 3 THEN '555' 
159041                 WHEN 4 THEN '555' 
159042                 WHEN 5 THEN '555' 
159043                 
159044                 ELSE null
159045               END                           source_application_id
159046             , 'S'             source_type_code
159047             , CASE r
159048                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
159049                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
159050                 WHEN 3 THEN 'ENTERED_AMOUNT' 
159051                 WHEN 4 THEN 'LINE_ID' 
159052                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
159053                 
159054                 ELSE null
159055               END                           source_code
159056             , CASE r
159057                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
159058                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
159059                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
159060                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
159061                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
159062                 
159063                 ELSE null
159064               END                           source_value
159065             , null              source_meaning
159066          FROM  xla_events_gt     xet  
159067         , GMF_XLA_EXTRACT_LINES  l2
159068             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
159069         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
159070           AND xet.event_type_code = C_EVENT_TYPE_CODE
159071             AND l2.event_id          = xet.event_id
159072 
159073 )
159074 ;
159075 --
159076 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159077 
159078       trace
159079          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
159080          ,p_level    => C_LEVEL_STATEMENT
159081          ,p_module   => l_log_module);
159082 
159083 END IF;
159084 
159085 
159086 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159087       trace
159088          (p_msg      => 'END of insert_sources_280'
159089          ,p_level    => C_LEVEL_PROCEDURE
159090          ,p_module   => l_log_module);
159091 END IF;
159092 EXCEPTION
159096                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
159093   WHEN xla_exceptions_pkg.application_exception THEN
159094       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
159095             trace
159097                ,p_level    => C_LEVEL_EXCEPTION
159098                ,p_module   => l_log_module);
159099       END IF;
159100       RAISE;
159101   WHEN OTHERS THEN
159102       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
159103             trace
159104                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
159105                ,p_level    => C_LEVEL_EXCEPTION
159106                ,p_module   => l_log_module);
159107        END IF;
159108        xla_exceptions_pkg.raise_message
159109            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_280');
159110 END insert_sources_280;
159111 --
159112 
159113 ---------------------------------------
159114 --
159115 -- PRIVATE FUNCTION
159116 --         EventType_280
159117 --
159118 ----------------------------------------
159119 --
159120 FUNCTION EventType_280
159121        (p_application_id         IN NUMBER
159122        ,p_base_ledger_id         IN NUMBER
159123        ,p_target_ledger_id       IN NUMBER
159124        ,p_language               IN VARCHAR2
159125        ,p_currency_code          IN VARCHAR2
159126        ,p_sla_ledger_id          IN NUMBER
159127        ,p_pad_start_date         IN DATE
159128        ,p_pad_end_date           IN DATE
159129        ,p_primary_ledger_id      IN NUMBER)
159130 RETURN BOOLEAN IS
159131 --
159132 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVOICE_IPV_ADJ';
159133 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PAYABLES_INVOICE';
159134 
159135 l_calculate_acctd_flag   VARCHAR2(1) :='N';
159136 l_calculate_g_l_flag     VARCHAR2(1) :='N';
159137 --
159138 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159139 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159140 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159141 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159142 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159143 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159144 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159145 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159146 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159147 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159148 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159149 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159150 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159151 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159152 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159153 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159154 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159155 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159156 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159157 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159158 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159159 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159160 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
159161 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159162 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
159163 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
159164 
159165 l_event_id                             NUMBER;
159166 l_previous_event_id                    NUMBER;
159167 l_first_event_id                       NUMBER;
159168 l_last_event_id                        NUMBER;
159169 
159170 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
159171 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
159172 --
159173 --
159174 l_result                    BOOLEAN := TRUE;
159175 l_rows                      NUMBER  := 1000;
159176 l_event_type_name           VARCHAR2(80) := 'Invoice IPV Adjustment';
159177 l_event_class_name          VARCHAR2(80) := 'Invoicing In Actual Costing';
159178 l_description               VARCHAR2(4000);
159179 l_transaction_reversal      NUMBER;
159180 l_ae_header_id              NUMBER;
159181 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
159182 l_log_module                VARCHAR2(240);
159183 --
159184 l_acct_reversal_source      VARCHAR2(30);
159185 l_trx_reversal_source       VARCHAR2(30);
159186 
159187 l_continue_with_lines       BOOLEAN := TRUE;
159188 --
159189 l_acc_rev_gl_date_source    DATE;                      -- 4262811
159190 --
159191 type t_array_event_id is table of number index by binary_integer;
159192 
159193 l_rec_array_event                    t_rec_array_event;
159194 l_null_rec_array_event               t_rec_array_event;
159195 l_array_ae_header_id                 xla_number_array_type;
159196 l_actual_flag                        VARCHAR2(1) := NULL;
159197 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
159198 l_balance_type_code                  VARCHAR2(1) :=NULL;
159199 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
159200 
159201 --
159205 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
159202 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
159203 --
159204 
159206 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
159207 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
159208 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
159209 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
159210 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
159211 
159212 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
159213 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
159214 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
159215 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
159216 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
159217 
159218 l_array_source_6              t_array_source_6;
159219 l_array_source_7              t_array_source_7;
159220 l_array_source_8              t_array_source_8;
159221 l_array_source_9              t_array_source_9;
159222 l_array_source_10              t_array_source_10;
159223 l_array_source_12              t_array_source_12;
159224 
159225 l_array_source_1      t_array_source_1;
159226 l_array_source_2      t_array_source_2;
159227 l_array_source_3      t_array_source_3;
159228 l_array_source_5      t_array_source_5;
159229 l_array_source_11      t_array_source_11;
159230 
159231 --
159232 CURSOR header_cur
159233 IS
159234 SELECT /*+ leading(xet) cardinality(xet,1) */
159235 -- Event Type Code: INVOICE_IPV_ADJ
159236 -- Event Class Code: PAYABLES_INVOICE
159237     xet.entity_id
159238   , xet.legal_entity_id
159239   , xet.entity_code
159240   , xet.transaction_number
159241   , xet.event_id
159242   , xet.event_class_code
159243   , xet.event_type_code
159244   , xet.event_number
159245   , xet.event_date
159246   , xet.transaction_date
159247   , xet.reference_num_1
159248   , xet.reference_num_2
159249   , xet.reference_num_3
159250   , xet.reference_num_4
159251   , xet.reference_char_1
159252   , xet.reference_char_2
159253   , xet.reference_char_3
159254   , xet.reference_char_4
159255   , xet.reference_date_1
159256   , xet.reference_date_2
159257   , xet.reference_date_3
159258   , xet.reference_date_4
159259   , xet.event_created_by
159260   , xet.budgetary_control_flag 
159261   , h1.ENTITY_CODE    source_6
159262   , h1.CURRENCY_CODE    source_7
159263   , h1.CURRENCY_CONVERSION_DATE    source_8
159264   , h1.CURRENCY_CONVERSION_RATE    source_9
159265   , h1.CURRENCY_CONVERSION_TYPE    source_10
159266   , h1.TRANSACTION_DATE    source_12
159267   FROM xla_events_gt     xet 
159268   , GMF_XLA_EXTRACT_HEADERS  h1
159269  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
159270    and xet.event_type_code = C_EVENT_TYPE_CODE
159271    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
159272 
159273  ORDER BY event_id
159274 ;
159275 
159276 
159277 --
159278 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
159279 IS
159280 SELECT /*+ leading(xet) cardinality(xet,1) */
159281 -- Event Type Code: INVOICE_IPV_ADJ
159282 -- Event Class Code: PAYABLES_INVOICE
159283     xet.entity_id
159284    ,xet.legal_entity_id
159285    ,xet.entity_code
159286    ,xet.transaction_number
159287    ,xet.event_id
159288    ,xet.event_class_code
159289    ,xet.event_type_code
159290    ,xet.event_number
159291    ,xet.event_date
159292    ,xet.transaction_date
159293    ,xet.reference_num_1
159294    ,xet.reference_num_2
159295    ,xet.reference_num_3
159296    ,xet.reference_num_4
159297    ,xet.reference_char_1
159298    ,xet.reference_char_2
159299    ,xet.reference_char_3
159300    ,xet.reference_char_4
159301    ,xet.reference_date_1
159302    ,xet.reference_date_2
159303    ,xet.reference_date_3
159304    ,xet.reference_date_4
159305    ,xet.event_created_by
159306    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
159307   , l2.TRANSACTION_ACCOUNT_ID    source_1
159308   , l2.JOURNAL_LINE_TYPE    source_2
159309   , l2.ENTERED_AMOUNT    source_3
159310   , l2.LINE_ID    source_5
159311   , l2.ACCOUNTED_AMOUNT    source_11
159312   FROM xla_events_gt     xet 
159313   , GMF_XLA_EXTRACT_LINES  l2
159314  WHERE xet.event_id between x_first_event_id and x_last_event_id
159315    and xet.event_date between p_pad_start_date and p_pad_end_date
159316    and xet.event_type_code = C_EVENT_TYPE_CODE
159317    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
159318 ;
159319 
159320 --
159321 BEGIN
159322 IF g_log_enabled THEN
159323    l_log_module := C_DEFAULT_MODULE||'.EventType_280';
159324 END IF;
159325 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159326    trace
159327       (p_msg      => 'BEGIN of EventType_280'
159328       ,p_level    => C_LEVEL_PROCEDURE
159329       ,p_module   => l_log_module);
159330 END IF;
159331 
159332 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159333    trace
159334       (p_msg      => 'p_application_id = '||p_application_id||
159338                      ' - p_currency_code = '||p_currency_code||
159335                      ' - p_base_ledger_id = '||p_base_ledger_id||
159336                      ' - p_target_ledger_id  = '||p_target_ledger_id||
159337                      ' - p_language = '||p_language||
159339                      ' - p_sla_ledger_id = '||p_sla_ledger_id
159340       ,p_level    => C_LEVEL_STATEMENT
159341       ,p_module   => l_log_module);
159342 END IF;
159343 --
159344 -- initialze arrays
159345 --
159346 g_array_event.DELETE;
159347 l_rec_array_event := l_null_rec_array_event;
159348 --
159349 --------------------------------------
159350 -- 4262811 Initialze MPA Line Number
159351 --------------------------------------
159352 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
159353 
159354 --
159355 
159356 --
159357 OPEN header_cur;
159358 --
159359 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159360    trace
159361    (p_msg      => 'SQL - FETCH header_cur'
159362    ,p_level    => C_LEVEL_STATEMENT
159363    ,p_module   => l_log_module);
159364 END IF;
159365 --
159366 LOOP
159367 FETCH header_cur BULK COLLECT INTO
159368         l_array_entity_id
159369       , l_array_legal_entity_id
159370       , l_array_entity_code
159371       , l_array_transaction_num
159372       , l_array_event_id
159373       , l_array_class_code
159374       , l_array_event_type
159375       , l_array_event_number
159376       , l_array_event_date
159377       , l_array_transaction_date
159378       , l_array_reference_num_1
159379       , l_array_reference_num_2
159380       , l_array_reference_num_3
159381       , l_array_reference_num_4
159382       , l_array_reference_char_1
159383       , l_array_reference_char_2
159384       , l_array_reference_char_3
159385       , l_array_reference_char_4
159386       , l_array_reference_date_1
159387       , l_array_reference_date_2
159388       , l_array_reference_date_3
159389       , l_array_reference_date_4
159390       , l_array_event_created_by
159391       , l_array_budgetary_control_flag 
159392       , l_array_source_6
159393       , l_array_source_7
159394       , l_array_source_8
159395       , l_array_source_9
159396       , l_array_source_10
159397       , l_array_source_12
159398       LIMIT l_rows;
159399 --
159400 IF (C_LEVEL_EVENT >= g_log_level) THEN
159401    trace
159402    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
159403    ,p_level    => C_LEVEL_EVENT
159404    ,p_module   => l_log_module);
159405 END IF;
159406 --
159407 EXIT WHEN l_array_entity_id.COUNT = 0;
159408 
159409 -- initialize arrays
159410 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
159411 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
159412 
159413 --
159414 -- Bug 4458708
159415 --
159416 XLA_AE_LINES_PKG.g_LineNumber := 0;
159417 
159418 
159419 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
159420 g_last_hdr_idx := l_array_event_id.LAST;
159421 --
159422 -- loop for the headers. Each iteration is for each header extract row
159423 -- fetched in header cursor
159424 --
159425 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
159426 
159427 --
159428 -- set event info as cache for other routines to refer event attributes
159429 --
159430 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
159431    (p_application_id           => p_application_id
159432    ,p_primary_ledger_id        => p_primary_ledger_id
159433    ,p_base_ledger_id           => p_base_ledger_id
159434    ,p_target_ledger_id         => p_target_ledger_id
159435    ,p_entity_id                => l_array_entity_id(hdr_idx)
159436    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
159437    ,p_entity_code              => l_array_entity_code(hdr_idx)
159438    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
159439    ,p_event_id                 => l_array_event_id(hdr_idx)
159440    ,p_event_class_code         => l_array_class_code(hdr_idx)
159441    ,p_event_type_code          => l_array_event_type(hdr_idx)
159442    ,p_event_number             => l_array_event_number(hdr_idx)
159443    ,p_event_date               => l_array_event_date(hdr_idx)
159444    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
159445    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
159446    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
159447    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
159448    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
159449    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
159450    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
159451    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
159452    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
159453    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
159454    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
159455    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
159456    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
159457    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
159458    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
159459 
159460 --
159461 -- set the status of entry to C_VALID (0)
159462 --
159463 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
159464 
159465 --
159469 
159466 -- initialize a row for ae header
159467 --
159468 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
159470 l_event_id := l_array_event_id(hdr_idx);
159471 
159472 --
159473 -- storing the hdr_idx for event. May be used by line cursor.
159474 --
159475 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
159476 
159477 --
159478 -- store sources from header extract. This can be improved to
159479 -- store only those sources from header extract that may be used in lines
159480 --
159481 
159482 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
159483 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
159484 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
159485 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
159486 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
159487 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
159488 
159489 --
159490 -- initilaize the status of ae headers for diffrent balance types
159491 -- the status is initialised to C_NOT_CREATED (2)
159492 --
159493 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
159494 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
159495 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
159496 
159497 --
159498 -- call api to validate and store accounting attributes for header
159499 --
159500 
159501 ------------------------------------------------------------
159502 -- Accrual Reversal : to get date for Standard Source (NONE)
159503 ------------------------------------------------------------
159504 l_acc_rev_gl_date_source := NULL;
159505 
159506      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
159507       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
159508 
159509 
159510 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
159511 
159512 XLA_AE_HEADER_PKG.SetJeCategoryName;
159513 
159514 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
159515 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
159516 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
159517 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
159518 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
159519 
159520 
159521 -- No header level analytical criteria
159522 
159523 --
159524 --accounting attribute enhancement, bug 3612931
159525 --
159526 l_trx_reversal_source := SUBSTR(NULL, 1,30);
159527 
159528 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
159529    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
159530 
159531    xla_accounting_err_pkg.build_message
159532       (p_appli_s_name            => 'XLA'
159533       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
159534       ,p_token_1                 => 'ACCT_ATTR_NAME'
159535       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
159536       ,p_token_2                 => 'PRODUCT_NAME'
159537       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
159538       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
159539       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
159540       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
159541 
159542 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
159543    --
159544    -- following sets the accounting attributes needed to reverse
159545    -- accounting for a distributeion
159546    --
159547    xla_ae_lines_pkg.SetTrxReversalAttrs
159548       (p_event_id              => l_event_id
159549       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
159550       ,p_trx_reversal_source   => l_trx_reversal_source);
159551 
159552 END IF;
159553 
159554 
159555 ----------------------------------------------------------------
159556 -- 4262811 -  update the header statuses to invalid in need be
159557 ----------------------------------------------------------------
159558 --
159559 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
159560 
159561 
159562   -----------------------------------------------
159563   -- No accrual reversal for the event class/type
159564   -----------------------------------------------
159565 ----------------------------------------------------------------
159566 
159567 --
159568 -- this ends the header loop iteration for one bulk fetch
159569 --
159570 END LOOP;
159571 
159572 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
159573 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
159574 
159575 --
159576 -- insert dummy rows into lines gt table that were created due to
159577 -- transaction reversals
159578 --
159579 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
159580    l_result := XLA_AE_LINES_PKG.InsertLines;
159581 END IF;
159582 
159583 --
159584 -- reset the temp_line_num for each set of events fetched from header
159588 xla_ae_lines_pkg.g_temp_line_num := 0;
159585 -- cursor rather than doing it for each new event in line cursor
159586 -- Bug 3939231
159587 --
159589 
159590 
159591 
159592 --
159593 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
159594 --
159595 --
159596 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159597 
159598       trace
159599          (p_msg      => 'SQL - FETCH line_cur'
159600          ,p_level    => C_LEVEL_STATEMENT
159601          ,p_module   => l_log_module);
159602 
159603 END IF;
159604 --
159605 --
159606 LOOP
159607   --
159608   FETCH line_cur BULK COLLECT INTO
159609         l_array_entity_id
159610       , l_array_legal_entity_id
159611       , l_array_entity_code
159612       , l_array_transaction_num
159613       , l_array_event_id
159614       , l_array_class_code
159615       , l_array_event_type
159616       , l_array_event_number
159617       , l_array_event_date
159618       , l_array_transaction_date
159619       , l_array_reference_num_1
159620       , l_array_reference_num_2
159621       , l_array_reference_num_3
159622       , l_array_reference_num_4
159623       , l_array_reference_char_1
159624       , l_array_reference_char_2
159625       , l_array_reference_char_3
159626       , l_array_reference_char_4
159627       , l_array_reference_date_1
159628       , l_array_reference_date_2
159629       , l_array_reference_date_3
159630       , l_array_reference_date_4
159631       , l_array_event_created_by
159632       , l_array_budgetary_control_flag
159633       , l_array_extract_line_num 
159634       , l_array_source_1
159635       , l_array_source_2
159636       , l_array_source_3
159637       , l_array_source_5
159638       , l_array_source_11
159639       LIMIT l_rows;
159640 
159641   --
159642   IF (C_LEVEL_EVENT >= g_log_level) THEN
159643             trace
159644                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
159645                ,p_level    => C_LEVEL_EVENT
159646                ,p_module   => l_log_module);
159647   END IF;
159648   --
159649   EXIT WHEN l_array_entity_id.count = 0;
159650 
159651   XLA_AE_LINES_PKG.g_rec_lines := null;
159652 
159653 --
159654 -- Bug 4458708
159655 --
159656 XLA_AE_LINES_PKG.g_LineNumber := 0;
159657 --
159658 --
159659 
159660 FOR Idx IN 1..l_array_event_id.count LOOP
159661    --
159662    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
159663    --
159664    l_event_id := l_array_event_id(idx);  -- 5648433
159665 
159666    --
159667    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
159668    --
159669 
159670    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
159671              (g_array_event(l_event_id).array_value_num('header_index'))
159672          ,'N'
159673          ) <> 'Y'
159674    THEN
159675       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159676          trace
159677             (p_msg      => 'Trancaction revesal option is not Y '
159678             ,p_level    => C_LEVEL_STATEMENT
159679             ,p_module   => l_log_module);
159680       END IF;
159681 
159682 --
159683 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
159684 --
159685 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
159686 --
159687 -- set event info as cache for other routines to refer event attributes
159688 --
159689 
159690 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
159691    l_previous_event_id := l_event_id;
159692 
159693    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
159694       (p_application_id           => p_application_id
159695       ,p_primary_ledger_id        => p_primary_ledger_id
159696       ,p_base_ledger_id           => p_base_ledger_id
159697       ,p_target_ledger_id         => p_target_ledger_id
159698       ,p_entity_id                => l_array_entity_id(Idx)
159699       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
159700       ,p_entity_code              => l_array_entity_code(Idx)
159701       ,p_transaction_num          => l_array_transaction_num(Idx)
159702       ,p_event_id                 => l_array_event_id(Idx)
159703       ,p_event_class_code         => l_array_class_code(Idx)
159704       ,p_event_type_code          => l_array_event_type(Idx)
159705       ,p_event_number             => l_array_event_number(Idx)
159706       ,p_event_date               => l_array_event_date(Idx)
159707       ,p_transaction_date         => l_array_transaction_date(Idx)
159708       ,p_reference_num_1          => l_array_reference_num_1(Idx)
159709       ,p_reference_num_2          => l_array_reference_num_2(Idx)
159710       ,p_reference_num_3          => l_array_reference_num_3(Idx)
159711       ,p_reference_num_4          => l_array_reference_num_4(Idx)
159712       ,p_reference_char_1         => l_array_reference_char_1(Idx)
159713       ,p_reference_char_2         => l_array_reference_char_2(Idx)
159714       ,p_reference_char_3         => l_array_reference_char_3(Idx)
159715       ,p_reference_char_4         => l_array_reference_char_4(Idx)
159716       ,p_reference_date_1         => l_array_reference_date_1(Idx)
159717       ,p_reference_date_2         => l_array_reference_date_2(Idx)
159718       ,p_reference_date_3         => l_array_reference_date_3(Idx)
159719       ,p_reference_date_4         => l_array_reference_date_4(Idx)
159720       ,p_event_created_by         => l_array_event_created_by(Idx)
159721       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
159725 
159722        --
159723 END IF;
159724 
159726 
159727 --
159728 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
159729 
159730 l_acct_reversal_source := SUBSTR(NULL, 1,30);
159731 
159732 IF l_continue_with_lines THEN
159733    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
159734       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
159735 
159736       xla_accounting_err_pkg.build_message
159737          (p_appli_s_name            => 'XLA'
159738          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
159739          ,p_token_1                 => 'LINE_NUMBER'
159740          ,p_value_1                 => l_array_extract_line_num(Idx)
159741          ,p_token_2                 => 'PRODUCT_NAME'
159742          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
159743          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
159744          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
159745          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
159746 
159747    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
159748       --
159749       -- following sets the accounting attributes needed to reverse
159750       -- accounting for a distributeion
159751       --
159752 
159753       --
159754       -- 5217187
159755       --
159756       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
159757       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
159758                                        g_array_event(l_event_id).array_value_num('header_index'));
159759       --
159760       --
159761 
159762       -- No reversal code generated
159763 
159764       xla_ae_lines_pkg.SetAcctReversalAttrs
159765          (p_event_id             => l_event_id
159766          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
159767          ,p_calculate_acctd_flag => l_calculate_acctd_flag
159768          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
159769    END IF;
159770 
159771    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
159772        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
159773 
159774 --
159775 AcctLineType_148 (
159776  p_application_id  => p_application_id
159777  ,p_event_id     => l_event_id
159778  ,p_calculate_acctd_flag => l_calculate_acctd_flag
159779  ,p_calculate_g_l_flag => l_calculate_g_l_flag
159780  ,p_actual_flag => l_actual_flag
159781  ,p_balance_type_code => l_balance_type_code
159782  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159783  
159784  , p_source_1 => l_array_source_1(Idx)
159785  , p_source_2 => l_array_source_2(Idx)
159786  , p_source_3 => l_array_source_3(Idx)
159787  , p_source_5 => l_array_source_5(Idx)
159788  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
159789  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
159790  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
159791  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
159792  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
159793  , p_source_11 => l_array_source_11(Idx)
159794  );
159795 If(l_balance_type_code = 'A') THEN
159796   l_actual_gain_loss_ref := l_gain_or_loss_ref;
159797 END IF;
159798 
159799 --
159800 
159801 
159802 --
159803 AcctLineType_191 (
159804  p_application_id  => p_application_id
159805  ,p_event_id     => l_event_id
159806  ,p_calculate_acctd_flag => l_calculate_acctd_flag
159807  ,p_calculate_g_l_flag => l_calculate_g_l_flag
159808  ,p_actual_flag => l_actual_flag
159809  ,p_balance_type_code => l_balance_type_code
159810  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159811  
159812  , p_source_1 => l_array_source_1(Idx)
159813  , p_source_2 => l_array_source_2(Idx)
159814  , p_source_3 => l_array_source_3(Idx)
159815  , p_source_5 => l_array_source_5(Idx)
159816  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
159817  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
159818  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
159819  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
159820  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
159821  , p_source_11 => l_array_source_11(Idx)
159822  );
159823 If(l_balance_type_code = 'A') THEN
159824   l_actual_gain_loss_ref := l_gain_or_loss_ref;
159825 END IF;
159826 
159827 --
159828 
159829       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
159830       -- or secondary ledger that has different currency with primary
159831       -- or alc that is calculated by sla
159832       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
159833             (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'))
159834 
159835 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
159836 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
159837           AND (l_actual_flag = 'A')) THEN
159838         XLA_AE_LINES_PKG.CreateGainOrLossLines(
159839           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
159840          ,p_application_id   => p_application_id
159841          ,p_amb_context_code => 'DEFAULT'
159845          
159842          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
159843          ,p_event_class_code => C_EVENT_CLASS_CODE
159844          ,p_event_type_code  => C_EVENT_TYPE_CODE
159846          ,p_gain_ccid        => -1
159847          ,p_loss_ccid        => -1
159848 
159849          ,p_actual_flag      => l_actual_flag
159850          ,p_enc_flag         => null
159851          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
159852          ,p_enc_g_l_ref      => null
159853          );
159854       END IF;
159855    END IF;
159856 END IF;
159857 
159858    ELSE
159859       --
159860       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
159861       --
159862       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159863          trace
159864             (p_msg      => 'Trancaction revesal option is Y'
159865             ,p_level    => C_LEVEL_STATEMENT
159866             ,p_module   => l_log_module);
159867       END IF;
159868    END IF;
159869 
159870 END LOOP;
159871 l_result := XLA_AE_LINES_PKG.InsertLines ;
159872 end loop;
159873 close line_cur;
159874 
159875 
159876 --
159877 -- insert headers into xla_ae_headers_gt table
159878 --
159879 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
159880 
159881 -- insert into errors table here.
159882 
159883 END LOOP;
159884 
159885 --
159886 -- 4865292
159887 --
159888 -- Compare g_hdr_extract_count with event count in
159889 -- CreateHeadersAndLines.
159890 --
159891 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
159892 
159893 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159894    trace (p_msg     => '# rows extracted from header extract objects '
159895                     || ' (running total): '
159896                     || g_hdr_extract_count
159897          ,p_level   => C_LEVEL_STATEMENT
159898          ,p_module  => l_log_module);
159899 END IF;
159900 
159901 CLOSE header_cur;
159902 --
159903 
159904 --
159905 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159906    trace
159907       (p_msg      => 'END of EventType_280'
159908       ,p_level    => C_LEVEL_PROCEDURE
159909       ,p_module   => l_log_module);
159910 END IF;
159911 --
159912 RETURN l_result;
159913 EXCEPTION
159914 WHEN xla_exceptions_pkg.application_exception THEN
159915    
159916 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
159917 
159918    
159919 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
159920 
159921    RAISE;
159922 
159923 WHEN NO_DATA_FOUND THEN
159924 
159925 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
159926 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
159927 
159928 FOR header_record IN header_cur
159929 LOOP
159930     l_array_header_events(header_record.event_id) := header_record.event_id;
159931 END LOOP;
159932 
159933 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
159934 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
159935 
159936 fnd_file.put_line(fnd_file.LOG, '                    ');
159937 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
159938 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
159939 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
159940 
159941 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
159942 LOOP
159943 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
159944 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
159945         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
159946 	END IF;
159947 END LOOP;
159948 
159949 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
159950 fnd_file.put_line(fnd_file.LOG, '                    ');
159951 
159952 
159953 xla_exceptions_pkg.raise_message
159954       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_280');
159955 
159956 
159957 WHEN OTHERS THEN
159958    xla_exceptions_pkg.raise_message
159959       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_280');
159960 END EventType_280;
159961 --
159962 
159963 ---------------------------------------
159964 --
159965 -- PRIVATE PROCEDURE
159966 --         insert_sources_281
159967 --
159968 ----------------------------------------
159969 --
159970 PROCEDURE insert_sources_281(
159971                                 p_target_ledger_id       IN NUMBER
159972                               , p_language               IN VARCHAR2
159973                               , p_sla_ledger_id          IN NUMBER
159974                               , p_pad_start_date         IN DATE
159975                               , p_pad_end_date           IN DATE
159976                          )
159977 IS
159978 
159979 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_IC_RCPT_RETURN';
159980 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
159981 p_apps_owner                   VARCHAR2(30);
159982 l_log_module                   VARCHAR2(240);
159983 BEGIN
159984 IF g_log_enabled THEN
159985       l_log_module := C_DEFAULT_MODULE||'.insert_sources_281';
159986 END IF;
159987 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159988 
159989       trace
159993 
159990          (p_msg      => 'BEGIN of insert_sources_281'
159991          ,p_level    => C_LEVEL_PROCEDURE
159992          ,p_module   => l_log_module);
159994 END IF;
159995 
159996 -- select APPS owner
159997 SELECT oracle_username
159998   INTO p_apps_owner
159999   FROM fnd_oracle_userid
160000  WHERE read_only_flag = 'U'
160001 ;
160002 
160003 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160004       trace
160005          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
160006                         ' - p_language = '||p_language||
160007                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
160008                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
160009                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
160010                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
160011          ,p_level    => C_LEVEL_STATEMENT
160012          ,p_module   => l_log_module);
160013 END IF;
160014 
160015 
160016 --
160017 INSERT INTO xla_diag_sources --hdr1
160018 (
160019         event_id
160020       , ledger_id
160021       , sla_ledger_id
160022       , description_language
160023       , object_name
160024       , object_type_code
160025       , line_number
160026       , source_application_id
160027       , source_type_code
160028       , source_code
160029       , source_value
160030       , source_meaning
160031       , created_by
160032       , creation_date
160033       , last_update_date
160034       , last_updated_by
160035       , last_update_login
160036       , program_update_date
160037       , program_application_id
160038       , program_id
160039       , request_id
160040 )
160041 SELECT
160042         event_id
160043       , p_target_ledger_id
160044       , p_sla_ledger_id
160045       , p_language
160046       , object_name
160047       , object_type_code
160048       , line_number
160049       , source_application_id
160050       , source_type_code
160051       , source_code
160052       , SUBSTR(source_value ,1,1996)
160053       , SUBSTR(source_meaning,1,200)
160054       , xla_environment_pkg.g_Usr_Id
160055       , TRUNC(SYSDATE)
160056       , TRUNC(SYSDATE)
160057       , xla_environment_pkg.g_Usr_Id
160058       , xla_environment_pkg.g_Login_Id
160059       , TRUNC(SYSDATE)
160060       , xla_environment_pkg.g_Prog_Appl_Id
160061       , xla_environment_pkg.g_Prog_Id
160062       , xla_environment_pkg.g_Req_Id
160063   FROM (
160064        SELECT xet.event_id                  event_id
160065             , 0                             line_number
160066             , CASE r
160067                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
160068                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
160069                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
160070                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
160071                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
160072                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
160073                 
160074                ELSE null
160075               END                           object_name
160076             , CASE r
160077                 WHEN 1 THEN 'HEADER' 
160078                 WHEN 2 THEN 'HEADER' 
160079                 WHEN 3 THEN 'HEADER' 
160080                 WHEN 4 THEN 'HEADER' 
160081                 WHEN 5 THEN 'HEADER' 
160082                 WHEN 6 THEN 'HEADER' 
160083                 
160084                 ELSE null
160085               END                           object_type_code
160086             , CASE r
160087                 WHEN 1 THEN '555' 
160088                 WHEN 2 THEN '555' 
160089                 WHEN 3 THEN '555' 
160090                 WHEN 4 THEN '555' 
160091                 WHEN 5 THEN '555' 
160092                 WHEN 6 THEN '555' 
160093                 
160094                 ELSE null
160095               END                           source_application_id
160096             , 'S'             source_type_code
160097             , CASE r
160098                 WHEN 1 THEN 'ENTITY_CODE' 
160099                 WHEN 2 THEN 'CURRENCY_CODE' 
160100                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
160101                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
160102                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
160103                 WHEN 6 THEN 'TRANSACTION_DATE' 
160104                 
160105                 ELSE null
160106               END                           source_code
160107             , CASE r
160108                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
160109                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
160110                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
160111                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
160112                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
160113                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
160114                 
160115                 ELSE null
160116               END                           source_value
160117             , CASE r
160118                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
160119                           1010186
160120                          ,TO_CHAR(h1.CURRENCY_CODE)
160121                          ,'CURRENCY_CODE'
160122                          ,'S'
160123                          ,555)
160124                 
160125                 ELSE null
160129             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
160126               END               source_meaning
160127         FROM xla_events_gt     xet  
160128       , GMF_XLA_EXTRACT_HEADERS  h1
160130        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
160131          AND xet.event_type_code = C_EVENT_TYPE_CODE
160132             AND h1.event_id = xet.event_id
160133 
160134 )
160135 ;
160136 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160137 
160138       trace
160139          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
160140          ,p_level    => C_LEVEL_STATEMENT
160141          ,p_module   => l_log_module);
160142 
160143 END IF;
160144 --
160145 
160146 
160147 
160148 --
160149 INSERT INTO xla_diag_sources --line1
160150 (
160151         event_id
160152       , ledger_id
160153       , sla_ledger_id
160154       , description_language
160155       , object_name
160156       , object_type_code
160157       , line_number
160158       , source_application_id
160159       , source_type_code
160160       , source_code
160161       , source_value
160162       , source_meaning
160163       , created_by
160164       , creation_date
160165       , last_update_date
160166       , last_updated_by
160167       , last_update_login
160168       , program_update_date
160169       , program_application_id
160170       , program_id
160171       , request_id
160172 )
160173 SELECT  event_id
160174       , p_target_ledger_id
160175       , p_sla_ledger_id
160176       , p_language
160177       , object_name
160178       , object_type_code
160179       , line_number
160180       , source_application_id
160181       , source_type_code
160182       , source_code
160183       , SUBSTR(source_value,1,1996)
160184       , SUBSTR(source_meaning,1,200)
160185       , xla_environment_pkg.g_Usr_Id
160186       , TRUNC(SYSDATE)
160187       , TRUNC(SYSDATE)
160188       , xla_environment_pkg.g_Usr_Id
160189       , xla_environment_pkg.g_Login_Id
160190       , TRUNC(SYSDATE)
160191       , xla_environment_pkg.g_Prog_Appl_Id
160192       , xla_environment_pkg.g_Prog_Id
160193       , xla_environment_pkg.g_Req_Id
160194   FROM (
160195        SELECT xet.event_id                  event_id
160196             , l2.line_number                 line_number
160197             , CASE r
160198                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
160199                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
160200                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
160201                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
160202                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
160203                 
160204                ELSE null
160205               END                           object_name
160206             , CASE r
160207                 WHEN 1 THEN 'LINE' 
160208                 WHEN 2 THEN 'LINE' 
160209                 WHEN 3 THEN 'LINE' 
160210                 WHEN 4 THEN 'LINE' 
160211                 WHEN 5 THEN 'LINE' 
160212                 
160213                 ELSE null
160214               END                           object_type_code
160215             , CASE r
160216                 WHEN 1 THEN '555' 
160217                 WHEN 2 THEN '555' 
160218                 WHEN 3 THEN '555' 
160219                 WHEN 4 THEN '555' 
160220                 WHEN 5 THEN '555' 
160221                 
160222                 ELSE null
160223               END                           source_application_id
160224             , 'S'             source_type_code
160225             , CASE r
160226                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
160227                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
160228                 WHEN 3 THEN 'ENTERED_AMOUNT' 
160229                 WHEN 4 THEN 'LINE_ID' 
160230                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
160231                 
160232                 ELSE null
160233               END                           source_code
160234             , CASE r
160235                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
160236                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
160237                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
160238                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
160239                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
160240                 
160241                 ELSE null
160242               END                           source_value
160243             , null              source_meaning
160244          FROM  xla_events_gt     xet  
160245         , GMF_XLA_EXTRACT_LINES  l2
160246             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
160247         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
160248           AND xet.event_type_code = C_EVENT_TYPE_CODE
160249             AND l2.event_id          = xet.event_id
160250 
160251 )
160252 ;
160253 --
160254 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160255 
160256       trace
160257          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
160258          ,p_level    => C_LEVEL_STATEMENT
160259          ,p_module   => l_log_module);
160260 
160261 END IF;
160262 
160263 
160264 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160265       trace
160266          (p_msg      => 'END of insert_sources_281'
160267          ,p_level    => C_LEVEL_PROCEDURE
160268          ,p_module   => l_log_module);
160269 END IF;
160270 EXCEPTION
160271   WHEN xla_exceptions_pkg.application_exception THEN
160275                ,p_level    => C_LEVEL_EXCEPTION
160272       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
160273             trace
160274                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
160276                ,p_module   => l_log_module);
160277       END IF;
160278       RAISE;
160279   WHEN OTHERS THEN
160280       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
160281             trace
160282                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
160283                ,p_level    => C_LEVEL_EXCEPTION
160284                ,p_module   => l_log_module);
160285        END IF;
160286        xla_exceptions_pkg.raise_message
160287            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_281');
160288 END insert_sources_281;
160289 --
160290 
160291 ---------------------------------------
160292 --
160293 -- PRIVATE FUNCTION
160294 --         EventType_281
160295 --
160296 ----------------------------------------
160297 --
160298 FUNCTION EventType_281
160299        (p_application_id         IN NUMBER
160300        ,p_base_ledger_id         IN NUMBER
160301        ,p_target_ledger_id       IN NUMBER
160302        ,p_language               IN VARCHAR2
160303        ,p_currency_code          IN VARCHAR2
160304        ,p_sla_ledger_id          IN NUMBER
160305        ,p_pad_start_date         IN DATE
160306        ,p_pad_end_date           IN DATE
160307        ,p_primary_ledger_id      IN NUMBER)
160308 RETURN BOOLEAN IS
160309 --
160310 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_IC_RCPT_RETURN';
160311 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
160312 
160313 l_calculate_acctd_flag   VARCHAR2(1) :='N';
160314 l_calculate_g_l_flag     VARCHAR2(1) :='N';
160315 --
160316 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
160317 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
160318 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
160319 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
160320 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
160321 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
160322 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
160323 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
160324 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
160325 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
160326 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
160327 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
160328 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
160329 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
160330 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
160331 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
160332 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
160333 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
160334 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
160335 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
160336 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
160337 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
160338 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
160339 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
160340 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
160341 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
160342 
160343 l_event_id                             NUMBER;
160344 l_previous_event_id                    NUMBER;
160345 l_first_event_id                       NUMBER;
160346 l_last_event_id                        NUMBER;
160347 
160348 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
160349 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
160350 --
160351 --
160352 l_result                    BOOLEAN := TRUE;
160353 l_rows                      NUMBER  := 1000;
160354 l_event_type_name           VARCHAR2(80) := 'Logical InterCompany Receipt Return';
160355 l_event_class_name          VARCHAR2(80) := 'Logical Intercompany';
160356 l_description               VARCHAR2(4000);
160357 l_transaction_reversal      NUMBER;
160358 l_ae_header_id              NUMBER;
160359 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
160360 l_log_module                VARCHAR2(240);
160361 --
160362 l_acct_reversal_source      VARCHAR2(30);
160363 l_trx_reversal_source       VARCHAR2(30);
160364 
160365 l_continue_with_lines       BOOLEAN := TRUE;
160366 --
160367 l_acc_rev_gl_date_source    DATE;                      -- 4262811
160368 --
160369 type t_array_event_id is table of number index by binary_integer;
160370 
160371 l_rec_array_event                    t_rec_array_event;
160372 l_null_rec_array_event               t_rec_array_event;
160373 l_array_ae_header_id                 xla_number_array_type;
160374 l_actual_flag                        VARCHAR2(1) := NULL;
160375 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
160376 l_balance_type_code                  VARCHAR2(1) :=NULL;
160377 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
160378 
160379 --
160383 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
160380 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
160381 --
160382 
160384 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
160385 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
160386 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
160387 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
160388 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
160389 
160390 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
160391 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
160392 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
160393 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
160394 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
160395 
160396 l_array_source_6              t_array_source_6;
160397 l_array_source_7              t_array_source_7;
160398 l_array_source_8              t_array_source_8;
160399 l_array_source_9              t_array_source_9;
160400 l_array_source_10              t_array_source_10;
160401 l_array_source_12              t_array_source_12;
160402 
160403 l_array_source_1      t_array_source_1;
160404 l_array_source_2      t_array_source_2;
160405 l_array_source_3      t_array_source_3;
160406 l_array_source_5      t_array_source_5;
160407 l_array_source_11      t_array_source_11;
160408 
160409 --
160410 CURSOR header_cur
160411 IS
160412 SELECT /*+ leading(xet) cardinality(xet,1) */
160413 -- Event Type Code: LOG_IC_RCPT_RETURN
160414 -- Event Class Code: LOG_INTERCOMPANY
160415     xet.entity_id
160416   , xet.legal_entity_id
160417   , xet.entity_code
160418   , xet.transaction_number
160419   , xet.event_id
160420   , xet.event_class_code
160421   , xet.event_type_code
160422   , xet.event_number
160423   , xet.event_date
160424   , xet.transaction_date
160425   , xet.reference_num_1
160426   , xet.reference_num_2
160427   , xet.reference_num_3
160428   , xet.reference_num_4
160429   , xet.reference_char_1
160430   , xet.reference_char_2
160431   , xet.reference_char_3
160432   , xet.reference_char_4
160433   , xet.reference_date_1
160434   , xet.reference_date_2
160435   , xet.reference_date_3
160436   , xet.reference_date_4
160437   , xet.event_created_by
160438   , xet.budgetary_control_flag 
160439   , h1.ENTITY_CODE    source_6
160440   , h1.CURRENCY_CODE    source_7
160441   , h1.CURRENCY_CONVERSION_DATE    source_8
160442   , h1.CURRENCY_CONVERSION_RATE    source_9
160443   , h1.CURRENCY_CONVERSION_TYPE    source_10
160444   , h1.TRANSACTION_DATE    source_12
160445   FROM xla_events_gt     xet 
160446   , GMF_XLA_EXTRACT_HEADERS  h1
160447  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
160448    and xet.event_type_code = C_EVENT_TYPE_CODE
160449    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
160450 
160451  ORDER BY event_id
160452 ;
160453 
160454 
160455 --
160456 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
160457 IS
160458 SELECT /*+ leading(xet) cardinality(xet,1) */
160459 -- Event Type Code: LOG_IC_RCPT_RETURN
160460 -- Event Class Code: LOG_INTERCOMPANY
160461     xet.entity_id
160462    ,xet.legal_entity_id
160463    ,xet.entity_code
160464    ,xet.transaction_number
160465    ,xet.event_id
160466    ,xet.event_class_code
160467    ,xet.event_type_code
160468    ,xet.event_number
160469    ,xet.event_date
160470    ,xet.transaction_date
160471    ,xet.reference_num_1
160472    ,xet.reference_num_2
160473    ,xet.reference_num_3
160474    ,xet.reference_num_4
160475    ,xet.reference_char_1
160476    ,xet.reference_char_2
160477    ,xet.reference_char_3
160478    ,xet.reference_char_4
160479    ,xet.reference_date_1
160480    ,xet.reference_date_2
160481    ,xet.reference_date_3
160482    ,xet.reference_date_4
160483    ,xet.event_created_by
160484    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
160485   , l2.TRANSACTION_ACCOUNT_ID    source_1
160486   , l2.JOURNAL_LINE_TYPE    source_2
160487   , l2.ENTERED_AMOUNT    source_3
160488   , l2.LINE_ID    source_5
160489   , l2.ACCOUNTED_AMOUNT    source_11
160490   FROM xla_events_gt     xet 
160491   , GMF_XLA_EXTRACT_LINES  l2
160492  WHERE xet.event_id between x_first_event_id and x_last_event_id
160493    and xet.event_date between p_pad_start_date and p_pad_end_date
160494    and xet.event_type_code = C_EVENT_TYPE_CODE
160495    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
160496 ;
160497 
160498 --
160499 BEGIN
160500 IF g_log_enabled THEN
160501    l_log_module := C_DEFAULT_MODULE||'.EventType_281';
160502 END IF;
160503 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160504    trace
160505       (p_msg      => 'BEGIN of EventType_281'
160506       ,p_level    => C_LEVEL_PROCEDURE
160507       ,p_module   => l_log_module);
160508 END IF;
160509 
160510 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160511    trace
160512       (p_msg      => 'p_application_id = '||p_application_id||
160516                      ' - p_currency_code = '||p_currency_code||
160513                      ' - p_base_ledger_id = '||p_base_ledger_id||
160514                      ' - p_target_ledger_id  = '||p_target_ledger_id||
160515                      ' - p_language = '||p_language||
160517                      ' - p_sla_ledger_id = '||p_sla_ledger_id
160518       ,p_level    => C_LEVEL_STATEMENT
160519       ,p_module   => l_log_module);
160520 END IF;
160521 --
160522 -- initialze arrays
160523 --
160524 g_array_event.DELETE;
160525 l_rec_array_event := l_null_rec_array_event;
160526 --
160527 --------------------------------------
160528 -- 4262811 Initialze MPA Line Number
160529 --------------------------------------
160530 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
160531 
160532 --
160533 
160534 --
160535 OPEN header_cur;
160536 --
160537 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160538    trace
160539    (p_msg      => 'SQL - FETCH header_cur'
160540    ,p_level    => C_LEVEL_STATEMENT
160541    ,p_module   => l_log_module);
160542 END IF;
160543 --
160544 LOOP
160545 FETCH header_cur BULK COLLECT INTO
160546         l_array_entity_id
160547       , l_array_legal_entity_id
160548       , l_array_entity_code
160549       , l_array_transaction_num
160550       , l_array_event_id
160551       , l_array_class_code
160552       , l_array_event_type
160553       , l_array_event_number
160554       , l_array_event_date
160555       , l_array_transaction_date
160556       , l_array_reference_num_1
160557       , l_array_reference_num_2
160558       , l_array_reference_num_3
160559       , l_array_reference_num_4
160560       , l_array_reference_char_1
160561       , l_array_reference_char_2
160562       , l_array_reference_char_3
160563       , l_array_reference_char_4
160564       , l_array_reference_date_1
160565       , l_array_reference_date_2
160566       , l_array_reference_date_3
160567       , l_array_reference_date_4
160568       , l_array_event_created_by
160569       , l_array_budgetary_control_flag 
160570       , l_array_source_6
160571       , l_array_source_7
160572       , l_array_source_8
160573       , l_array_source_9
160574       , l_array_source_10
160575       , l_array_source_12
160576       LIMIT l_rows;
160577 --
160578 IF (C_LEVEL_EVENT >= g_log_level) THEN
160579    trace
160580    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
160581    ,p_level    => C_LEVEL_EVENT
160582    ,p_module   => l_log_module);
160583 END IF;
160584 --
160585 EXIT WHEN l_array_entity_id.COUNT = 0;
160586 
160587 -- initialize arrays
160588 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
160589 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
160590 
160591 --
160592 -- Bug 4458708
160593 --
160594 XLA_AE_LINES_PKG.g_LineNumber := 0;
160595 
160596 
160597 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
160598 g_last_hdr_idx := l_array_event_id.LAST;
160599 --
160600 -- loop for the headers. Each iteration is for each header extract row
160601 -- fetched in header cursor
160602 --
160603 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
160604 
160605 --
160606 -- set event info as cache for other routines to refer event attributes
160607 --
160608 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
160609    (p_application_id           => p_application_id
160610    ,p_primary_ledger_id        => p_primary_ledger_id
160611    ,p_base_ledger_id           => p_base_ledger_id
160612    ,p_target_ledger_id         => p_target_ledger_id
160613    ,p_entity_id                => l_array_entity_id(hdr_idx)
160614    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
160615    ,p_entity_code              => l_array_entity_code(hdr_idx)
160616    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
160617    ,p_event_id                 => l_array_event_id(hdr_idx)
160618    ,p_event_class_code         => l_array_class_code(hdr_idx)
160619    ,p_event_type_code          => l_array_event_type(hdr_idx)
160620    ,p_event_number             => l_array_event_number(hdr_idx)
160621    ,p_event_date               => l_array_event_date(hdr_idx)
160622    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
160623    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
160624    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
160625    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
160626    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
160627    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
160628    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
160629    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
160630    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
160631    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
160632    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
160633    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
160634    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
160635    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
160636    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
160637 
160638 --
160639 -- set the status of entry to C_VALID (0)
160640 --
160641 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
160642 
160643 --
160647 
160644 -- initialize a row for ae header
160645 --
160646 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
160648 l_event_id := l_array_event_id(hdr_idx);
160649 
160650 --
160651 -- storing the hdr_idx for event. May be used by line cursor.
160652 --
160653 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
160654 
160655 --
160656 -- store sources from header extract. This can be improved to
160657 -- store only those sources from header extract that may be used in lines
160658 --
160659 
160660 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
160661 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
160662 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
160663 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
160664 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
160665 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
160666 
160667 --
160668 -- initilaize the status of ae headers for diffrent balance types
160669 -- the status is initialised to C_NOT_CREATED (2)
160670 --
160671 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
160672 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
160673 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
160674 
160675 --
160676 -- call api to validate and store accounting attributes for header
160677 --
160678 
160679 ------------------------------------------------------------
160680 -- Accrual Reversal : to get date for Standard Source (NONE)
160681 ------------------------------------------------------------
160682 l_acc_rev_gl_date_source := NULL;
160683 
160684      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
160685       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
160686 
160687 
160688 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
160689 
160690 XLA_AE_HEADER_PKG.SetJeCategoryName;
160691 
160692 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
160693 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
160694 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
160695 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
160696 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
160697 
160698 
160699 -- No header level analytical criteria
160700 
160701 --
160702 --accounting attribute enhancement, bug 3612931
160703 --
160704 l_trx_reversal_source := SUBSTR(NULL, 1,30);
160705 
160706 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
160707    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
160708 
160709    xla_accounting_err_pkg.build_message
160710       (p_appli_s_name            => 'XLA'
160711       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
160712       ,p_token_1                 => 'ACCT_ATTR_NAME'
160713       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
160714       ,p_token_2                 => 'PRODUCT_NAME'
160715       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
160716       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
160717       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
160718       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
160719 
160720 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
160721    --
160722    -- following sets the accounting attributes needed to reverse
160723    -- accounting for a distributeion
160724    --
160725    xla_ae_lines_pkg.SetTrxReversalAttrs
160726       (p_event_id              => l_event_id
160727       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
160728       ,p_trx_reversal_source   => l_trx_reversal_source);
160729 
160730 END IF;
160731 
160732 
160733 ----------------------------------------------------------------
160734 -- 4262811 -  update the header statuses to invalid in need be
160735 ----------------------------------------------------------------
160736 --
160737 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
160738 
160739 
160740   -----------------------------------------------
160741   -- No accrual reversal for the event class/type
160742   -----------------------------------------------
160743 ----------------------------------------------------------------
160744 
160745 --
160746 -- this ends the header loop iteration for one bulk fetch
160747 --
160748 END LOOP;
160749 
160750 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
160751 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
160752 
160753 --
160754 -- insert dummy rows into lines gt table that were created due to
160755 -- transaction reversals
160756 --
160757 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
160758    l_result := XLA_AE_LINES_PKG.InsertLines;
160759 END IF;
160760 
160761 --
160762 -- reset the temp_line_num for each set of events fetched from header
160766 xla_ae_lines_pkg.g_temp_line_num := 0;
160763 -- cursor rather than doing it for each new event in line cursor
160764 -- Bug 3939231
160765 --
160767 
160768 
160769 
160770 --
160771 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
160772 --
160773 --
160774 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160775 
160776       trace
160777          (p_msg      => 'SQL - FETCH line_cur'
160778          ,p_level    => C_LEVEL_STATEMENT
160779          ,p_module   => l_log_module);
160780 
160781 END IF;
160782 --
160783 --
160784 LOOP
160785   --
160786   FETCH line_cur BULK COLLECT INTO
160787         l_array_entity_id
160788       , l_array_legal_entity_id
160789       , l_array_entity_code
160790       , l_array_transaction_num
160791       , l_array_event_id
160792       , l_array_class_code
160793       , l_array_event_type
160794       , l_array_event_number
160795       , l_array_event_date
160796       , l_array_transaction_date
160797       , l_array_reference_num_1
160798       , l_array_reference_num_2
160799       , l_array_reference_num_3
160800       , l_array_reference_num_4
160801       , l_array_reference_char_1
160802       , l_array_reference_char_2
160803       , l_array_reference_char_3
160804       , l_array_reference_char_4
160805       , l_array_reference_date_1
160806       , l_array_reference_date_2
160807       , l_array_reference_date_3
160808       , l_array_reference_date_4
160809       , l_array_event_created_by
160810       , l_array_budgetary_control_flag
160811       , l_array_extract_line_num 
160812       , l_array_source_1
160813       , l_array_source_2
160814       , l_array_source_3
160815       , l_array_source_5
160816       , l_array_source_11
160817       LIMIT l_rows;
160818 
160819   --
160820   IF (C_LEVEL_EVENT >= g_log_level) THEN
160821             trace
160822                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
160823                ,p_level    => C_LEVEL_EVENT
160824                ,p_module   => l_log_module);
160825   END IF;
160826   --
160827   EXIT WHEN l_array_entity_id.count = 0;
160828 
160829   XLA_AE_LINES_PKG.g_rec_lines := null;
160830 
160831 --
160832 -- Bug 4458708
160833 --
160834 XLA_AE_LINES_PKG.g_LineNumber := 0;
160835 --
160836 --
160837 
160838 FOR Idx IN 1..l_array_event_id.count LOOP
160839    --
160840    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
160841    --
160842    l_event_id := l_array_event_id(idx);  -- 5648433
160843 
160844    --
160845    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
160846    --
160847 
160848    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
160849              (g_array_event(l_event_id).array_value_num('header_index'))
160850          ,'N'
160851          ) <> 'Y'
160852    THEN
160853       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160854          trace
160855             (p_msg      => 'Trancaction revesal option is not Y '
160856             ,p_level    => C_LEVEL_STATEMENT
160857             ,p_module   => l_log_module);
160858       END IF;
160859 
160860 --
160861 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
160862 --
160863 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
160864 --
160865 -- set event info as cache for other routines to refer event attributes
160866 --
160867 
160868 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
160869    l_previous_event_id := l_event_id;
160870 
160871    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
160872       (p_application_id           => p_application_id
160873       ,p_primary_ledger_id        => p_primary_ledger_id
160874       ,p_base_ledger_id           => p_base_ledger_id
160875       ,p_target_ledger_id         => p_target_ledger_id
160876       ,p_entity_id                => l_array_entity_id(Idx)
160877       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
160878       ,p_entity_code              => l_array_entity_code(Idx)
160879       ,p_transaction_num          => l_array_transaction_num(Idx)
160880       ,p_event_id                 => l_array_event_id(Idx)
160881       ,p_event_class_code         => l_array_class_code(Idx)
160882       ,p_event_type_code          => l_array_event_type(Idx)
160883       ,p_event_number             => l_array_event_number(Idx)
160884       ,p_event_date               => l_array_event_date(Idx)
160885       ,p_transaction_date         => l_array_transaction_date(Idx)
160886       ,p_reference_num_1          => l_array_reference_num_1(Idx)
160887       ,p_reference_num_2          => l_array_reference_num_2(Idx)
160888       ,p_reference_num_3          => l_array_reference_num_3(Idx)
160889       ,p_reference_num_4          => l_array_reference_num_4(Idx)
160890       ,p_reference_char_1         => l_array_reference_char_1(Idx)
160891       ,p_reference_char_2         => l_array_reference_char_2(Idx)
160892       ,p_reference_char_3         => l_array_reference_char_3(Idx)
160893       ,p_reference_char_4         => l_array_reference_char_4(Idx)
160894       ,p_reference_date_1         => l_array_reference_date_1(Idx)
160895       ,p_reference_date_2         => l_array_reference_date_2(Idx)
160896       ,p_reference_date_3         => l_array_reference_date_3(Idx)
160897       ,p_reference_date_4         => l_array_reference_date_4(Idx)
160898       ,p_event_created_by         => l_array_event_created_by(Idx)
160899       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
160903 
160900        --
160901 END IF;
160902 
160904 
160905 --
160906 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
160907 
160908 l_acct_reversal_source := SUBSTR(NULL, 1,30);
160909 
160910 IF l_continue_with_lines THEN
160911    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
160912       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
160913 
160914       xla_accounting_err_pkg.build_message
160915          (p_appli_s_name            => 'XLA'
160916          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
160917          ,p_token_1                 => 'LINE_NUMBER'
160918          ,p_value_1                 => l_array_extract_line_num(Idx)
160919          ,p_token_2                 => 'PRODUCT_NAME'
160920          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
160921          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
160922          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
160923          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
160924 
160925    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
160926       --
160927       -- following sets the accounting attributes needed to reverse
160928       -- accounting for a distributeion
160929       --
160930 
160931       --
160932       -- 5217187
160933       --
160934       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
160935       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
160936                                        g_array_event(l_event_id).array_value_num('header_index'));
160937       --
160938       --
160939 
160940       -- No reversal code generated
160941 
160942       xla_ae_lines_pkg.SetAcctReversalAttrs
160943          (p_event_id             => l_event_id
160944          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
160945          ,p_calculate_acctd_flag => l_calculate_acctd_flag
160946          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
160947    END IF;
160948 
160949    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
160950        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
160951 
160952 --
160953 AcctLineType_95 (
160954  p_application_id  => p_application_id
160955  ,p_event_id     => l_event_id
160956  ,p_calculate_acctd_flag => l_calculate_acctd_flag
160957  ,p_calculate_g_l_flag => l_calculate_g_l_flag
160958  ,p_actual_flag => l_actual_flag
160959  ,p_balance_type_code => l_balance_type_code
160960  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160961  
160962  , p_source_1 => l_array_source_1(Idx)
160963  , p_source_2 => l_array_source_2(Idx)
160964  , p_source_3 => l_array_source_3(Idx)
160965  , p_source_5 => l_array_source_5(Idx)
160966  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
160967  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
160968  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
160969  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
160970  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
160971  , p_source_11 => l_array_source_11(Idx)
160972  );
160973 If(l_balance_type_code = 'A') THEN
160974   l_actual_gain_loss_ref := l_gain_or_loss_ref;
160975 END IF;
160976 
160977 --
160978 
160979 
160980 --
160981 AcctLineType_123 (
160982  p_application_id  => p_application_id
160983  ,p_event_id     => l_event_id
160984  ,p_calculate_acctd_flag => l_calculate_acctd_flag
160985  ,p_calculate_g_l_flag => l_calculate_g_l_flag
160986  ,p_actual_flag => l_actual_flag
160987  ,p_balance_type_code => l_balance_type_code
160988  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160989  
160990  , p_source_1 => l_array_source_1(Idx)
160991  , p_source_2 => l_array_source_2(Idx)
160992  , p_source_3 => l_array_source_3(Idx)
160993  , p_source_5 => l_array_source_5(Idx)
160994  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
160995  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
160996  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
160997  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
160998  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
160999  , p_source_11 => l_array_source_11(Idx)
161000  );
161001 If(l_balance_type_code = 'A') THEN
161002   l_actual_gain_loss_ref := l_gain_or_loss_ref;
161003 END IF;
161004 
161005 --
161006 
161007 
161008 --
161009 AcctLineType_165 (
161010  p_application_id  => p_application_id
161011  ,p_event_id     => l_event_id
161012  ,p_calculate_acctd_flag => l_calculate_acctd_flag
161013  ,p_calculate_g_l_flag => l_calculate_g_l_flag
161014  ,p_actual_flag => l_actual_flag
161015  ,p_balance_type_code => l_balance_type_code
161016  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
161017  
161018  , p_source_1 => l_array_source_1(Idx)
161019  , p_source_2 => l_array_source_2(Idx)
161020  , p_source_3 => l_array_source_3(Idx)
161021  , p_source_5 => l_array_source_5(Idx)
161022  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
161023  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
161024  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
161025  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
161026  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
161030   l_actual_gain_loss_ref := l_gain_or_loss_ref;
161027  , p_source_11 => l_array_source_11(Idx)
161028  );
161029 If(l_balance_type_code = 'A') THEN
161031 END IF;
161032 
161033 --
161034 
161035       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
161036       -- or secondary ledger that has different currency with primary
161037       -- or alc that is calculated by sla
161038       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
161039             (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'))
161040 
161041 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
161042 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
161043           AND (l_actual_flag = 'A')) THEN
161044         XLA_AE_LINES_PKG.CreateGainOrLossLines(
161045           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
161046          ,p_application_id   => p_application_id
161047          ,p_amb_context_code => 'DEFAULT'
161048          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
161049          ,p_event_class_code => C_EVENT_CLASS_CODE
161050          ,p_event_type_code  => C_EVENT_TYPE_CODE
161051          
161052          ,p_gain_ccid        => -1
161053          ,p_loss_ccid        => -1
161054 
161055          ,p_actual_flag      => l_actual_flag
161056          ,p_enc_flag         => null
161057          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
161058          ,p_enc_g_l_ref      => null
161059          );
161060       END IF;
161061    END IF;
161062 END IF;
161063 
161064    ELSE
161065       --
161066       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
161067       --
161068       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161069          trace
161070             (p_msg      => 'Trancaction revesal option is Y'
161071             ,p_level    => C_LEVEL_STATEMENT
161072             ,p_module   => l_log_module);
161073       END IF;
161074    END IF;
161075 
161076 END LOOP;
161077 l_result := XLA_AE_LINES_PKG.InsertLines ;
161078 end loop;
161079 close line_cur;
161080 
161081 
161082 --
161083 -- insert headers into xla_ae_headers_gt table
161084 --
161085 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
161086 
161087 -- insert into errors table here.
161088 
161089 END LOOP;
161090 
161091 --
161092 -- 4865292
161093 --
161094 -- Compare g_hdr_extract_count with event count in
161095 -- CreateHeadersAndLines.
161096 --
161097 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
161098 
161099 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161100    trace (p_msg     => '# rows extracted from header extract objects '
161101                     || ' (running total): '
161102                     || g_hdr_extract_count
161103          ,p_level   => C_LEVEL_STATEMENT
161104          ,p_module  => l_log_module);
161105 END IF;
161106 
161107 CLOSE header_cur;
161108 --
161109 
161110 --
161111 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
161112    trace
161113       (p_msg      => 'END of EventType_281'
161114       ,p_level    => C_LEVEL_PROCEDURE
161115       ,p_module   => l_log_module);
161116 END IF;
161117 --
161118 RETURN l_result;
161119 EXCEPTION
161120 WHEN xla_exceptions_pkg.application_exception THEN
161121    
161122 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
161123 
161124    
161125 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
161126 
161127    RAISE;
161128 
161129 WHEN NO_DATA_FOUND THEN
161130 
161131 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
161132 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
161133 
161134 FOR header_record IN header_cur
161135 LOOP
161136     l_array_header_events(header_record.event_id) := header_record.event_id;
161137 END LOOP;
161138 
161139 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
161140 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
161141 
161142 fnd_file.put_line(fnd_file.LOG, '                    ');
161143 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
161144 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
161145 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
161146 
161147 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
161148 LOOP
161149 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
161150 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
161151         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
161152 	END IF;
161153 END LOOP;
161154 
161155 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
161156 fnd_file.put_line(fnd_file.LOG, '                    ');
161157 
161158 
161159 xla_exceptions_pkg.raise_message
161160       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_281');
161161 
161162 
161163 WHEN OTHERS THEN
161164    xla_exceptions_pkg.raise_message
161168 
161165       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_281');
161166 END EventType_281;
161167 --
161169 ---------------------------------------
161170 --
161171 -- PRIVATE PROCEDURE
161172 --         insert_sources_282
161173 --
161174 ----------------------------------------
161175 --
161176 PROCEDURE insert_sources_282(
161177                                 p_target_ledger_id       IN NUMBER
161178                               , p_language               IN VARCHAR2
161179                               , p_sla_ledger_id          IN NUMBER
161180                               , p_pad_start_date         IN DATE
161181                               , p_pad_end_date           IN DATE
161182                          )
161183 IS
161184 
161185 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_IC_SALES_ISSUE';
161186 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
161187 p_apps_owner                   VARCHAR2(30);
161188 l_log_module                   VARCHAR2(240);
161189 BEGIN
161190 IF g_log_enabled THEN
161191       l_log_module := C_DEFAULT_MODULE||'.insert_sources_282';
161192 END IF;
161193 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
161194 
161195       trace
161196          (p_msg      => 'BEGIN of insert_sources_282'
161197          ,p_level    => C_LEVEL_PROCEDURE
161198          ,p_module   => l_log_module);
161199 
161200 END IF;
161201 
161202 -- select APPS owner
161203 SELECT oracle_username
161204   INTO p_apps_owner
161205   FROM fnd_oracle_userid
161206  WHERE read_only_flag = 'U'
161207 ;
161208 
161209 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161210       trace
161211          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
161212                         ' - p_language = '||p_language||
161213                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
161214                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
161215                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
161216                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
161217          ,p_level    => C_LEVEL_STATEMENT
161218          ,p_module   => l_log_module);
161219 END IF;
161220 
161221 
161222 --
161223 INSERT INTO xla_diag_sources --hdr1
161224 (
161225         event_id
161226       , ledger_id
161227       , sla_ledger_id
161228       , description_language
161229       , object_name
161230       , object_type_code
161231       , line_number
161232       , source_application_id
161233       , source_type_code
161234       , source_code
161235       , source_value
161236       , source_meaning
161237       , created_by
161238       , creation_date
161239       , last_update_date
161240       , last_updated_by
161241       , last_update_login
161242       , program_update_date
161243       , program_application_id
161244       , program_id
161245       , request_id
161246 )
161247 SELECT
161248         event_id
161249       , p_target_ledger_id
161250       , p_sla_ledger_id
161251       , p_language
161252       , object_name
161253       , object_type_code
161254       , line_number
161255       , source_application_id
161256       , source_type_code
161257       , source_code
161258       , SUBSTR(source_value ,1,1996)
161259       , SUBSTR(source_meaning,1,200)
161260       , xla_environment_pkg.g_Usr_Id
161261       , TRUNC(SYSDATE)
161262       , TRUNC(SYSDATE)
161263       , xla_environment_pkg.g_Usr_Id
161264       , xla_environment_pkg.g_Login_Id
161265       , TRUNC(SYSDATE)
161266       , xla_environment_pkg.g_Prog_Appl_Id
161267       , xla_environment_pkg.g_Prog_Id
161268       , xla_environment_pkg.g_Req_Id
161269   FROM (
161270        SELECT xet.event_id                  event_id
161271             , 0                             line_number
161272             , CASE r
161273                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
161274                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
161275                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
161276                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
161277                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
161278                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
161279                 
161280                ELSE null
161281               END                           object_name
161282             , CASE r
161283                 WHEN 1 THEN 'HEADER' 
161284                 WHEN 2 THEN 'HEADER' 
161285                 WHEN 3 THEN 'HEADER' 
161286                 WHEN 4 THEN 'HEADER' 
161287                 WHEN 5 THEN 'HEADER' 
161288                 WHEN 6 THEN 'HEADER' 
161289                 
161290                 ELSE null
161291               END                           object_type_code
161292             , CASE r
161293                 WHEN 1 THEN '555' 
161294                 WHEN 2 THEN '555' 
161295                 WHEN 3 THEN '555' 
161296                 WHEN 4 THEN '555' 
161297                 WHEN 5 THEN '555' 
161298                 WHEN 6 THEN '555' 
161299                 
161300                 ELSE null
161301               END                           source_application_id
161302             , 'S'             source_type_code
161303             , CASE r
161304                 WHEN 1 THEN 'ENTITY_CODE' 
161305                 WHEN 2 THEN 'CURRENCY_CODE' 
161306                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
161310                 
161307                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
161308                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
161309                 WHEN 6 THEN 'TRANSACTION_DATE' 
161311                 ELSE null
161312               END                           source_code
161313             , CASE r
161314                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
161315                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
161316                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
161317                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
161318                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
161319                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
161320                 
161321                 ELSE null
161322               END                           source_value
161323             , CASE r
161324                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
161325                           1010186
161326                          ,TO_CHAR(h1.CURRENCY_CODE)
161327                          ,'CURRENCY_CODE'
161328                          ,'S'
161329                          ,555)
161330                 
161331                 ELSE null
161332               END               source_meaning
161333         FROM xla_events_gt     xet  
161334       , GMF_XLA_EXTRACT_HEADERS  h1
161335             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
161336        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
161337          AND xet.event_type_code = C_EVENT_TYPE_CODE
161338             AND h1.event_id = xet.event_id
161339 
161340 )
161341 ;
161342 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161343 
161344       trace
161345          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
161346          ,p_level    => C_LEVEL_STATEMENT
161347          ,p_module   => l_log_module);
161348 
161349 END IF;
161350 --
161351 
161352 
161353 
161354 --
161355 INSERT INTO xla_diag_sources --line1
161356 (
161357         event_id
161358       , ledger_id
161359       , sla_ledger_id
161360       , description_language
161361       , object_name
161362       , object_type_code
161363       , line_number
161364       , source_application_id
161365       , source_type_code
161366       , source_code
161367       , source_value
161368       , source_meaning
161369       , created_by
161370       , creation_date
161371       , last_update_date
161372       , last_updated_by
161373       , last_update_login
161374       , program_update_date
161375       , program_application_id
161376       , program_id
161377       , request_id
161378 )
161379 SELECT  event_id
161380       , p_target_ledger_id
161381       , p_sla_ledger_id
161382       , p_language
161383       , object_name
161384       , object_type_code
161385       , line_number
161386       , source_application_id
161387       , source_type_code
161388       , source_code
161389       , SUBSTR(source_value,1,1996)
161390       , SUBSTR(source_meaning,1,200)
161391       , xla_environment_pkg.g_Usr_Id
161392       , TRUNC(SYSDATE)
161393       , TRUNC(SYSDATE)
161394       , xla_environment_pkg.g_Usr_Id
161395       , xla_environment_pkg.g_Login_Id
161396       , TRUNC(SYSDATE)
161397       , xla_environment_pkg.g_Prog_Appl_Id
161398       , xla_environment_pkg.g_Prog_Id
161399       , xla_environment_pkg.g_Req_Id
161400   FROM (
161401        SELECT xet.event_id                  event_id
161402             , l2.line_number                 line_number
161403             , CASE r
161404                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
161405                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
161406                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
161407                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
161408                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
161409                 
161410                ELSE null
161411               END                           object_name
161412             , CASE r
161413                 WHEN 1 THEN 'LINE' 
161414                 WHEN 2 THEN 'LINE' 
161415                 WHEN 3 THEN 'LINE' 
161416                 WHEN 4 THEN 'LINE' 
161417                 WHEN 5 THEN 'LINE' 
161418                 
161419                 ELSE null
161420               END                           object_type_code
161421             , CASE r
161422                 WHEN 1 THEN '555' 
161423                 WHEN 2 THEN '555' 
161424                 WHEN 3 THEN '555' 
161425                 WHEN 4 THEN '555' 
161426                 WHEN 5 THEN '555' 
161427                 
161428                 ELSE null
161429               END                           source_application_id
161430             , 'S'             source_type_code
161431             , CASE r
161432                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
161433                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
161434                 WHEN 3 THEN 'ENTERED_AMOUNT' 
161435                 WHEN 4 THEN 'LINE_ID' 
161436                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
161437                 
161438                 ELSE null
161439               END                           source_code
161440             , CASE r
161441                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
161442                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
161443                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
161444                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
161445                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
161446                 
161450          FROM  xla_events_gt     xet  
161447                 ELSE null
161448               END                           source_value
161449             , null              source_meaning
161451         , GMF_XLA_EXTRACT_LINES  l2
161452             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
161453         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
161454           AND xet.event_type_code = C_EVENT_TYPE_CODE
161455             AND l2.event_id          = xet.event_id
161456 
161457 )
161458 ;
161459 --
161460 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161461 
161462       trace
161463          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
161464          ,p_level    => C_LEVEL_STATEMENT
161465          ,p_module   => l_log_module);
161466 
161467 END IF;
161468 
161469 
161470 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
161471       trace
161472          (p_msg      => 'END of insert_sources_282'
161473          ,p_level    => C_LEVEL_PROCEDURE
161474          ,p_module   => l_log_module);
161475 END IF;
161476 EXCEPTION
161477   WHEN xla_exceptions_pkg.application_exception THEN
161478       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
161479             trace
161480                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
161481                ,p_level    => C_LEVEL_EXCEPTION
161482                ,p_module   => l_log_module);
161483       END IF;
161484       RAISE;
161485   WHEN OTHERS THEN
161486       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
161487             trace
161488                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
161489                ,p_level    => C_LEVEL_EXCEPTION
161490                ,p_module   => l_log_module);
161491        END IF;
161492        xla_exceptions_pkg.raise_message
161493            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_282');
161494 END insert_sources_282;
161495 --
161496 
161497 ---------------------------------------
161498 --
161499 -- PRIVATE FUNCTION
161500 --         EventType_282
161501 --
161502 ----------------------------------------
161503 --
161504 FUNCTION EventType_282
161505        (p_application_id         IN NUMBER
161506        ,p_base_ledger_id         IN NUMBER
161507        ,p_target_ledger_id       IN NUMBER
161508        ,p_language               IN VARCHAR2
161509        ,p_currency_code          IN VARCHAR2
161510        ,p_sla_ledger_id          IN NUMBER
161511        ,p_pad_start_date         IN DATE
161512        ,p_pad_end_date           IN DATE
161513        ,p_primary_ledger_id      IN NUMBER)
161514 RETURN BOOLEAN IS
161515 --
161516 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_IC_SALES_ISSUE';
161517 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
161518 
161519 l_calculate_acctd_flag   VARCHAR2(1) :='N';
161520 l_calculate_g_l_flag     VARCHAR2(1) :='N';
161521 --
161522 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161523 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161524 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161525 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161526 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161527 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161528 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161529 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161530 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161531 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161532 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161533 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161534 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161535 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161536 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161537 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161538 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161539 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161540 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161541 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161542 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161543 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161544 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
161545 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161546 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
161547 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
161548 
161549 l_event_id                             NUMBER;
161550 l_previous_event_id                    NUMBER;
161551 l_first_event_id                       NUMBER;
161552 l_last_event_id                        NUMBER;
161553 
161554 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
161555 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
161556 --
161557 --
161558 l_result                    BOOLEAN := TRUE;
161559 l_rows                      NUMBER  := 1000;
161563 l_transaction_reversal      NUMBER;
161560 l_event_type_name           VARCHAR2(80) := 'Logical Intercompany Sales Issue';
161561 l_event_class_name          VARCHAR2(80) := 'Logical Intercompany';
161562 l_description               VARCHAR2(4000);
161564 l_ae_header_id              NUMBER;
161565 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
161566 l_log_module                VARCHAR2(240);
161567 --
161568 l_acct_reversal_source      VARCHAR2(30);
161569 l_trx_reversal_source       VARCHAR2(30);
161570 
161571 l_continue_with_lines       BOOLEAN := TRUE;
161572 --
161573 l_acc_rev_gl_date_source    DATE;                      -- 4262811
161574 --
161575 type t_array_event_id is table of number index by binary_integer;
161576 
161577 l_rec_array_event                    t_rec_array_event;
161578 l_null_rec_array_event               t_rec_array_event;
161579 l_array_ae_header_id                 xla_number_array_type;
161580 l_actual_flag                        VARCHAR2(1) := NULL;
161581 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
161582 l_balance_type_code                  VARCHAR2(1) :=NULL;
161583 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
161584 
161585 --
161586 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
161587 --
161588 
161589 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
161590 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
161591 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
161592 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
161593 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
161594 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
161595 
161596 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
161597 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
161598 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
161599 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
161600 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
161601 
161602 l_array_source_6              t_array_source_6;
161603 l_array_source_7              t_array_source_7;
161604 l_array_source_8              t_array_source_8;
161605 l_array_source_9              t_array_source_9;
161606 l_array_source_10              t_array_source_10;
161607 l_array_source_12              t_array_source_12;
161608 
161609 l_array_source_1      t_array_source_1;
161610 l_array_source_2      t_array_source_2;
161611 l_array_source_3      t_array_source_3;
161612 l_array_source_5      t_array_source_5;
161613 l_array_source_11      t_array_source_11;
161614 
161615 --
161616 CURSOR header_cur
161617 IS
161618 SELECT /*+ leading(xet) cardinality(xet,1) */
161619 -- Event Type Code: LOG_IC_SALES_ISSUE
161620 -- Event Class Code: LOG_INTERCOMPANY
161621     xet.entity_id
161622   , xet.legal_entity_id
161623   , xet.entity_code
161624   , xet.transaction_number
161625   , xet.event_id
161626   , xet.event_class_code
161627   , xet.event_type_code
161628   , xet.event_number
161629   , xet.event_date
161630   , xet.transaction_date
161631   , xet.reference_num_1
161632   , xet.reference_num_2
161633   , xet.reference_num_3
161634   , xet.reference_num_4
161635   , xet.reference_char_1
161636   , xet.reference_char_2
161637   , xet.reference_char_3
161638   , xet.reference_char_4
161639   , xet.reference_date_1
161640   , xet.reference_date_2
161641   , xet.reference_date_3
161642   , xet.reference_date_4
161643   , xet.event_created_by
161644   , xet.budgetary_control_flag 
161645   , h1.ENTITY_CODE    source_6
161646   , h1.CURRENCY_CODE    source_7
161647   , h1.CURRENCY_CONVERSION_DATE    source_8
161648   , h1.CURRENCY_CONVERSION_RATE    source_9
161649   , h1.CURRENCY_CONVERSION_TYPE    source_10
161650   , h1.TRANSACTION_DATE    source_12
161651   FROM xla_events_gt     xet 
161652   , GMF_XLA_EXTRACT_HEADERS  h1
161653  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
161654    and xet.event_type_code = C_EVENT_TYPE_CODE
161655    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
161656 
161657  ORDER BY event_id
161658 ;
161659 
161660 
161661 --
161662 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
161663 IS
161664 SELECT /*+ leading(xet) cardinality(xet,1) */
161665 -- Event Type Code: LOG_IC_SALES_ISSUE
161666 -- Event Class Code: LOG_INTERCOMPANY
161667     xet.entity_id
161668    ,xet.legal_entity_id
161669    ,xet.entity_code
161670    ,xet.transaction_number
161671    ,xet.event_id
161672    ,xet.event_class_code
161673    ,xet.event_type_code
161674    ,xet.event_number
161675    ,xet.event_date
161676    ,xet.transaction_date
161677    ,xet.reference_num_1
161678    ,xet.reference_num_2
161679    ,xet.reference_num_3
161680    ,xet.reference_num_4
161681    ,xet.reference_char_1
161682    ,xet.reference_char_2
161683    ,xet.reference_char_3
161684    ,xet.reference_char_4
161685    ,xet.reference_date_1
161686    ,xet.reference_date_2
161687    ,xet.reference_date_3
161688    ,xet.reference_date_4
161692   , l2.JOURNAL_LINE_TYPE    source_2
161689    ,xet.event_created_by
161690    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
161691   , l2.TRANSACTION_ACCOUNT_ID    source_1
161693   , l2.ENTERED_AMOUNT    source_3
161694   , l2.LINE_ID    source_5
161695   , l2.ACCOUNTED_AMOUNT    source_11
161696   FROM xla_events_gt     xet 
161697   , GMF_XLA_EXTRACT_LINES  l2
161698  WHERE xet.event_id between x_first_event_id and x_last_event_id
161699    and xet.event_date between p_pad_start_date and p_pad_end_date
161700    and xet.event_type_code = C_EVENT_TYPE_CODE
161701    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
161702 ;
161703 
161704 --
161705 BEGIN
161706 IF g_log_enabled THEN
161707    l_log_module := C_DEFAULT_MODULE||'.EventType_282';
161708 END IF;
161709 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
161710    trace
161711       (p_msg      => 'BEGIN of EventType_282'
161712       ,p_level    => C_LEVEL_PROCEDURE
161713       ,p_module   => l_log_module);
161714 END IF;
161715 
161716 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161717    trace
161718       (p_msg      => 'p_application_id = '||p_application_id||
161719                      ' - p_base_ledger_id = '||p_base_ledger_id||
161720                      ' - p_target_ledger_id  = '||p_target_ledger_id||
161721                      ' - p_language = '||p_language||
161722                      ' - p_currency_code = '||p_currency_code||
161723                      ' - p_sla_ledger_id = '||p_sla_ledger_id
161724       ,p_level    => C_LEVEL_STATEMENT
161725       ,p_module   => l_log_module);
161726 END IF;
161727 --
161728 -- initialze arrays
161729 --
161730 g_array_event.DELETE;
161731 l_rec_array_event := l_null_rec_array_event;
161732 --
161733 --------------------------------------
161734 -- 4262811 Initialze MPA Line Number
161735 --------------------------------------
161736 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
161737 
161738 --
161739 
161740 --
161741 OPEN header_cur;
161742 --
161743 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161744    trace
161745    (p_msg      => 'SQL - FETCH header_cur'
161746    ,p_level    => C_LEVEL_STATEMENT
161747    ,p_module   => l_log_module);
161748 END IF;
161749 --
161750 LOOP
161751 FETCH header_cur BULK COLLECT INTO
161752         l_array_entity_id
161753       , l_array_legal_entity_id
161754       , l_array_entity_code
161755       , l_array_transaction_num
161756       , l_array_event_id
161757       , l_array_class_code
161758       , l_array_event_type
161759       , l_array_event_number
161760       , l_array_event_date
161761       , l_array_transaction_date
161762       , l_array_reference_num_1
161763       , l_array_reference_num_2
161764       , l_array_reference_num_3
161765       , l_array_reference_num_4
161766       , l_array_reference_char_1
161767       , l_array_reference_char_2
161768       , l_array_reference_char_3
161769       , l_array_reference_char_4
161770       , l_array_reference_date_1
161771       , l_array_reference_date_2
161772       , l_array_reference_date_3
161773       , l_array_reference_date_4
161774       , l_array_event_created_by
161775       , l_array_budgetary_control_flag 
161776       , l_array_source_6
161777       , l_array_source_7
161778       , l_array_source_8
161779       , l_array_source_9
161780       , l_array_source_10
161781       , l_array_source_12
161782       LIMIT l_rows;
161783 --
161784 IF (C_LEVEL_EVENT >= g_log_level) THEN
161785    trace
161786    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
161787    ,p_level    => C_LEVEL_EVENT
161788    ,p_module   => l_log_module);
161789 END IF;
161790 --
161791 EXIT WHEN l_array_entity_id.COUNT = 0;
161792 
161793 -- initialize arrays
161794 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
161795 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
161796 
161797 --
161798 -- Bug 4458708
161799 --
161800 XLA_AE_LINES_PKG.g_LineNumber := 0;
161801 
161802 
161803 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
161804 g_last_hdr_idx := l_array_event_id.LAST;
161805 --
161806 -- loop for the headers. Each iteration is for each header extract row
161807 -- fetched in header cursor
161808 --
161809 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
161810 
161811 --
161812 -- set event info as cache for other routines to refer event attributes
161813 --
161814 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
161815    (p_application_id           => p_application_id
161816    ,p_primary_ledger_id        => p_primary_ledger_id
161817    ,p_base_ledger_id           => p_base_ledger_id
161818    ,p_target_ledger_id         => p_target_ledger_id
161819    ,p_entity_id                => l_array_entity_id(hdr_idx)
161820    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
161821    ,p_entity_code              => l_array_entity_code(hdr_idx)
161822    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
161823    ,p_event_id                 => l_array_event_id(hdr_idx)
161824    ,p_event_class_code         => l_array_class_code(hdr_idx)
161825    ,p_event_type_code          => l_array_event_type(hdr_idx)
161826    ,p_event_number             => l_array_event_number(hdr_idx)
161827    ,p_event_date               => l_array_event_date(hdr_idx)
161828    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
161832    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
161829    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
161830    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
161831    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
161833    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
161834    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
161835    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
161836    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
161837    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
161838    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
161839    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
161840    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
161841    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
161842    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
161843 
161844 --
161845 -- set the status of entry to C_VALID (0)
161846 --
161847 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
161848 
161849 --
161850 -- initialize a row for ae header
161851 --
161852 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
161853 
161854 l_event_id := l_array_event_id(hdr_idx);
161855 
161856 --
161857 -- storing the hdr_idx for event. May be used by line cursor.
161858 --
161859 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
161860 
161861 --
161862 -- store sources from header extract. This can be improved to
161863 -- store only those sources from header extract that may be used in lines
161864 --
161865 
161866 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
161867 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
161868 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
161869 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
161870 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
161871 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
161872 
161873 --
161874 -- initilaize the status of ae headers for diffrent balance types
161875 -- the status is initialised to C_NOT_CREATED (2)
161876 --
161877 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
161878 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
161879 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
161880 
161881 --
161882 -- call api to validate and store accounting attributes for header
161883 --
161884 
161885 ------------------------------------------------------------
161886 -- Accrual Reversal : to get date for Standard Source (NONE)
161887 ------------------------------------------------------------
161888 l_acc_rev_gl_date_source := NULL;
161889 
161890      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
161891       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
161892 
161893 
161894 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
161895 
161896 XLA_AE_HEADER_PKG.SetJeCategoryName;
161897 
161898 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
161899 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
161900 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
161901 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
161902 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
161903 
161904 
161905 -- No header level analytical criteria
161906 
161907 --
161908 --accounting attribute enhancement, bug 3612931
161909 --
161910 l_trx_reversal_source := SUBSTR(NULL, 1,30);
161911 
161912 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
161913    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
161914 
161915    xla_accounting_err_pkg.build_message
161916       (p_appli_s_name            => 'XLA'
161917       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
161918       ,p_token_1                 => 'ACCT_ATTR_NAME'
161919       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
161920       ,p_token_2                 => 'PRODUCT_NAME'
161921       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
161922       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
161923       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
161924       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
161925 
161926 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
161927    --
161928    -- following sets the accounting attributes needed to reverse
161929    -- accounting for a distributeion
161930    --
161931    xla_ae_lines_pkg.SetTrxReversalAttrs
161932       (p_event_id              => l_event_id
161933       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
161934       ,p_trx_reversal_source   => l_trx_reversal_source);
161935 
161936 END IF;
161937 
161938 
161939 ----------------------------------------------------------------
161943 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
161940 -- 4262811 -  update the header statuses to invalid in need be
161941 ----------------------------------------------------------------
161942 --
161944 
161945 
161946   -----------------------------------------------
161947   -- No accrual reversal for the event class/type
161948   -----------------------------------------------
161949 ----------------------------------------------------------------
161950 
161951 --
161952 -- this ends the header loop iteration for one bulk fetch
161953 --
161954 END LOOP;
161955 
161956 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
161957 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
161958 
161959 --
161960 -- insert dummy rows into lines gt table that were created due to
161961 -- transaction reversals
161962 --
161963 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
161964    l_result := XLA_AE_LINES_PKG.InsertLines;
161965 END IF;
161966 
161967 --
161968 -- reset the temp_line_num for each set of events fetched from header
161969 -- cursor rather than doing it for each new event in line cursor
161970 -- Bug 3939231
161971 --
161972 xla_ae_lines_pkg.g_temp_line_num := 0;
161973 
161974 
161975 
161976 --
161977 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
161978 --
161979 --
161980 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161981 
161982       trace
161983          (p_msg      => 'SQL - FETCH line_cur'
161984          ,p_level    => C_LEVEL_STATEMENT
161985          ,p_module   => l_log_module);
161986 
161987 END IF;
161988 --
161989 --
161990 LOOP
161991   --
161992   FETCH line_cur BULK COLLECT INTO
161993         l_array_entity_id
161994       , l_array_legal_entity_id
161995       , l_array_entity_code
161996       , l_array_transaction_num
161997       , l_array_event_id
161998       , l_array_class_code
161999       , l_array_event_type
162000       , l_array_event_number
162001       , l_array_event_date
162002       , l_array_transaction_date
162003       , l_array_reference_num_1
162004       , l_array_reference_num_2
162005       , l_array_reference_num_3
162006       , l_array_reference_num_4
162007       , l_array_reference_char_1
162008       , l_array_reference_char_2
162009       , l_array_reference_char_3
162010       , l_array_reference_char_4
162011       , l_array_reference_date_1
162012       , l_array_reference_date_2
162013       , l_array_reference_date_3
162014       , l_array_reference_date_4
162015       , l_array_event_created_by
162016       , l_array_budgetary_control_flag
162017       , l_array_extract_line_num 
162018       , l_array_source_1
162019       , l_array_source_2
162020       , l_array_source_3
162021       , l_array_source_5
162022       , l_array_source_11
162023       LIMIT l_rows;
162024 
162025   --
162026   IF (C_LEVEL_EVENT >= g_log_level) THEN
162027             trace
162028                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
162029                ,p_level    => C_LEVEL_EVENT
162030                ,p_module   => l_log_module);
162031   END IF;
162032   --
162033   EXIT WHEN l_array_entity_id.count = 0;
162034 
162035   XLA_AE_LINES_PKG.g_rec_lines := null;
162036 
162037 --
162038 -- Bug 4458708
162039 --
162040 XLA_AE_LINES_PKG.g_LineNumber := 0;
162041 --
162042 --
162043 
162044 FOR Idx IN 1..l_array_event_id.count LOOP
162045    --
162046    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
162047    --
162048    l_event_id := l_array_event_id(idx);  -- 5648433
162049 
162050    --
162051    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
162052    --
162053 
162054    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
162055              (g_array_event(l_event_id).array_value_num('header_index'))
162056          ,'N'
162057          ) <> 'Y'
162058    THEN
162059       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162060          trace
162061             (p_msg      => 'Trancaction revesal option is not Y '
162062             ,p_level    => C_LEVEL_STATEMENT
162063             ,p_module   => l_log_module);
162064       END IF;
162065 
162066 --
162067 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
162068 --
162069 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
162070 --
162071 -- set event info as cache for other routines to refer event attributes
162072 --
162073 
162074 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
162075    l_previous_event_id := l_event_id;
162076 
162077    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
162078       (p_application_id           => p_application_id
162079       ,p_primary_ledger_id        => p_primary_ledger_id
162080       ,p_base_ledger_id           => p_base_ledger_id
162081       ,p_target_ledger_id         => p_target_ledger_id
162082       ,p_entity_id                => l_array_entity_id(Idx)
162083       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
162084       ,p_entity_code              => l_array_entity_code(Idx)
162085       ,p_transaction_num          => l_array_transaction_num(Idx)
162086       ,p_event_id                 => l_array_event_id(Idx)
162087       ,p_event_class_code         => l_array_class_code(Idx)
162088       ,p_event_type_code          => l_array_event_type(Idx)
162092       ,p_reference_num_1          => l_array_reference_num_1(Idx)
162089       ,p_event_number             => l_array_event_number(Idx)
162090       ,p_event_date               => l_array_event_date(Idx)
162091       ,p_transaction_date         => l_array_transaction_date(Idx)
162093       ,p_reference_num_2          => l_array_reference_num_2(Idx)
162094       ,p_reference_num_3          => l_array_reference_num_3(Idx)
162095       ,p_reference_num_4          => l_array_reference_num_4(Idx)
162096       ,p_reference_char_1         => l_array_reference_char_1(Idx)
162097       ,p_reference_char_2         => l_array_reference_char_2(Idx)
162098       ,p_reference_char_3         => l_array_reference_char_3(Idx)
162099       ,p_reference_char_4         => l_array_reference_char_4(Idx)
162100       ,p_reference_date_1         => l_array_reference_date_1(Idx)
162101       ,p_reference_date_2         => l_array_reference_date_2(Idx)
162102       ,p_reference_date_3         => l_array_reference_date_3(Idx)
162103       ,p_reference_date_4         => l_array_reference_date_4(Idx)
162104       ,p_event_created_by         => l_array_event_created_by(Idx)
162105       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
162106        --
162107 END IF;
162108 
162109 
162110 
162111 --
162112 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
162113 
162114 l_acct_reversal_source := SUBSTR(NULL, 1,30);
162115 
162116 IF l_continue_with_lines THEN
162117    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
162118       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
162119 
162120       xla_accounting_err_pkg.build_message
162121          (p_appli_s_name            => 'XLA'
162122          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
162123          ,p_token_1                 => 'LINE_NUMBER'
162124          ,p_value_1                 => l_array_extract_line_num(Idx)
162125          ,p_token_2                 => 'PRODUCT_NAME'
162126          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
162127          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
162128          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
162129          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
162130 
162131    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
162132       --
162133       -- following sets the accounting attributes needed to reverse
162134       -- accounting for a distributeion
162135       --
162136 
162137       --
162138       -- 5217187
162139       --
162140       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
162141       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
162142                                        g_array_event(l_event_id).array_value_num('header_index'));
162143       --
162144       --
162145 
162146       -- No reversal code generated
162147 
162148       xla_ae_lines_pkg.SetAcctReversalAttrs
162149          (p_event_id             => l_event_id
162150          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
162151          ,p_calculate_acctd_flag => l_calculate_acctd_flag
162152          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
162153    END IF;
162154 
162155    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
162156        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
162157 
162158 --
162159 AcctLineType_92 (
162160  p_application_id  => p_application_id
162161  ,p_event_id     => l_event_id
162162  ,p_calculate_acctd_flag => l_calculate_acctd_flag
162163  ,p_calculate_g_l_flag => l_calculate_g_l_flag
162164  ,p_actual_flag => l_actual_flag
162165  ,p_balance_type_code => l_balance_type_code
162166  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
162167  
162168  , p_source_1 => l_array_source_1(Idx)
162169  , p_source_2 => l_array_source_2(Idx)
162170  , p_source_3 => l_array_source_3(Idx)
162171  , p_source_5 => l_array_source_5(Idx)
162172  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
162173  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
162174  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
162175  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
162176  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
162177  , p_source_11 => l_array_source_11(Idx)
162178  );
162179 If(l_balance_type_code = 'A') THEN
162180   l_actual_gain_loss_ref := l_gain_or_loss_ref;
162181 END IF;
162182 
162183 --
162184 
162185 
162186 --
162187 AcctLineType_124 (
162188  p_application_id  => p_application_id
162189  ,p_event_id     => l_event_id
162190  ,p_calculate_acctd_flag => l_calculate_acctd_flag
162191  ,p_calculate_g_l_flag => l_calculate_g_l_flag
162192  ,p_actual_flag => l_actual_flag
162193  ,p_balance_type_code => l_balance_type_code
162194  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
162195  
162196  , p_source_1 => l_array_source_1(Idx)
162197  , p_source_2 => l_array_source_2(Idx)
162198  , p_source_3 => l_array_source_3(Idx)
162199  , p_source_5 => l_array_source_5(Idx)
162200  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
162201  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
162202  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
162203  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
162204  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
162208   l_actual_gain_loss_ref := l_gain_or_loss_ref;
162205  , p_source_11 => l_array_source_11(Idx)
162206  );
162207 If(l_balance_type_code = 'A') THEN
162209 END IF;
162210 
162211 --
162212 
162213 
162214 --
162215 AcctLineType_136 (
162216  p_application_id  => p_application_id
162217  ,p_event_id     => l_event_id
162218  ,p_calculate_acctd_flag => l_calculate_acctd_flag
162219  ,p_calculate_g_l_flag => l_calculate_g_l_flag
162220  ,p_actual_flag => l_actual_flag
162221  ,p_balance_type_code => l_balance_type_code
162222  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
162223  
162224  , p_source_1 => l_array_source_1(Idx)
162225  , p_source_2 => l_array_source_2(Idx)
162226  , p_source_3 => l_array_source_3(Idx)
162227  , p_source_5 => l_array_source_5(Idx)
162228  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
162229  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
162230  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
162231  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
162232  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
162233  , p_source_11 => l_array_source_11(Idx)
162234  );
162235 If(l_balance_type_code = 'A') THEN
162236   l_actual_gain_loss_ref := l_gain_or_loss_ref;
162237 END IF;
162238 
162239 --
162240 
162241       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
162242       -- or secondary ledger that has different currency with primary
162243       -- or alc that is calculated by sla
162244       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
162245             (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'))
162246 
162247 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
162248 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
162249           AND (l_actual_flag = 'A')) THEN
162250         XLA_AE_LINES_PKG.CreateGainOrLossLines(
162251           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
162252          ,p_application_id   => p_application_id
162253          ,p_amb_context_code => 'DEFAULT'
162254          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
162255          ,p_event_class_code => C_EVENT_CLASS_CODE
162256          ,p_event_type_code  => C_EVENT_TYPE_CODE
162257          
162258          ,p_gain_ccid        => -1
162259          ,p_loss_ccid        => -1
162260 
162261          ,p_actual_flag      => l_actual_flag
162262          ,p_enc_flag         => null
162263          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
162264          ,p_enc_g_l_ref      => null
162265          );
162266       END IF;
162267    END IF;
162268 END IF;
162269 
162270    ELSE
162271       --
162272       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
162273       --
162274       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162275          trace
162276             (p_msg      => 'Trancaction revesal option is Y'
162277             ,p_level    => C_LEVEL_STATEMENT
162278             ,p_module   => l_log_module);
162279       END IF;
162280    END IF;
162281 
162282 END LOOP;
162283 l_result := XLA_AE_LINES_PKG.InsertLines ;
162284 end loop;
162285 close line_cur;
162286 
162287 
162288 --
162289 -- insert headers into xla_ae_headers_gt table
162290 --
162291 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
162292 
162293 -- insert into errors table here.
162294 
162295 END LOOP;
162296 
162297 --
162298 -- 4865292
162299 --
162300 -- Compare g_hdr_extract_count with event count in
162301 -- CreateHeadersAndLines.
162302 --
162303 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
162304 
162305 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162306    trace (p_msg     => '# rows extracted from header extract objects '
162307                     || ' (running total): '
162308                     || g_hdr_extract_count
162309          ,p_level   => C_LEVEL_STATEMENT
162310          ,p_module  => l_log_module);
162311 END IF;
162312 
162313 CLOSE header_cur;
162314 --
162315 
162316 --
162317 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162318    trace
162319       (p_msg      => 'END of EventType_282'
162320       ,p_level    => C_LEVEL_PROCEDURE
162321       ,p_module   => l_log_module);
162322 END IF;
162323 --
162324 RETURN l_result;
162325 EXCEPTION
162326 WHEN xla_exceptions_pkg.application_exception THEN
162327    
162328 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
162329 
162330    
162331 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
162332 
162333    RAISE;
162334 
162335 WHEN NO_DATA_FOUND THEN
162336 
162337 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
162338 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
162339 
162340 FOR header_record IN header_cur
162341 LOOP
162342     l_array_header_events(header_record.event_id) := header_record.event_id;
162343 END LOOP;
162344 
162345 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
162346 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
162347 
162348 fnd_file.put_line(fnd_file.LOG, '                    ');
162352 
162349 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
162350 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
162351 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
162353 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
162354 LOOP
162355 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
162356 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
162357         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
162358 	END IF;
162359 END LOOP;
162360 
162361 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
162362 fnd_file.put_line(fnd_file.LOG, '                    ');
162363 
162364 
162365 xla_exceptions_pkg.raise_message
162366       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_282');
162367 
162368 
162369 WHEN OTHERS THEN
162370    xla_exceptions_pkg.raise_message
162371       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_282');
162372 END EventType_282;
162373 --
162374 
162375 ---------------------------------------
162376 --
162377 -- PRIVATE PROCEDURE
162378 --         insert_sources_283
162379 --
162380 ----------------------------------------
162381 --
162382 PROCEDURE insert_sources_283(
162383                                 p_target_ledger_id       IN NUMBER
162384                               , p_language               IN VARCHAR2
162385                               , p_sla_ledger_id          IN NUMBER
162386                               , p_pad_start_date         IN DATE
162387                               , p_pad_end_date           IN DATE
162388                          )
162389 IS
162390 
162391 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_IC_SALES_RETURN';
162392 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
162393 p_apps_owner                   VARCHAR2(30);
162394 l_log_module                   VARCHAR2(240);
162395 BEGIN
162396 IF g_log_enabled THEN
162397       l_log_module := C_DEFAULT_MODULE||'.insert_sources_283';
162398 END IF;
162399 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162400 
162401       trace
162402          (p_msg      => 'BEGIN of insert_sources_283'
162403          ,p_level    => C_LEVEL_PROCEDURE
162404          ,p_module   => l_log_module);
162405 
162406 END IF;
162407 
162408 -- select APPS owner
162409 SELECT oracle_username
162410   INTO p_apps_owner
162411   FROM fnd_oracle_userid
162412  WHERE read_only_flag = 'U'
162413 ;
162414 
162415 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162416       trace
162417          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
162418                         ' - p_language = '||p_language||
162419                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
162420                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
162421                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
162422                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
162423          ,p_level    => C_LEVEL_STATEMENT
162424          ,p_module   => l_log_module);
162425 END IF;
162426 
162427 
162428 --
162429 INSERT INTO xla_diag_sources --hdr1
162430 (
162431         event_id
162432       , ledger_id
162433       , sla_ledger_id
162434       , description_language
162435       , object_name
162436       , object_type_code
162437       , line_number
162438       , source_application_id
162439       , source_type_code
162440       , source_code
162441       , source_value
162442       , source_meaning
162443       , created_by
162444       , creation_date
162445       , last_update_date
162446       , last_updated_by
162447       , last_update_login
162448       , program_update_date
162449       , program_application_id
162450       , program_id
162451       , request_id
162452 )
162453 SELECT
162454         event_id
162455       , p_target_ledger_id
162456       , p_sla_ledger_id
162457       , p_language
162458       , object_name
162459       , object_type_code
162460       , line_number
162461       , source_application_id
162462       , source_type_code
162463       , source_code
162464       , SUBSTR(source_value ,1,1996)
162465       , SUBSTR(source_meaning,1,200)
162466       , xla_environment_pkg.g_Usr_Id
162467       , TRUNC(SYSDATE)
162468       , TRUNC(SYSDATE)
162469       , xla_environment_pkg.g_Usr_Id
162470       , xla_environment_pkg.g_Login_Id
162471       , TRUNC(SYSDATE)
162472       , xla_environment_pkg.g_Prog_Appl_Id
162473       , xla_environment_pkg.g_Prog_Id
162474       , xla_environment_pkg.g_Req_Id
162475   FROM (
162476        SELECT xet.event_id                  event_id
162477             , 0                             line_number
162478             , CASE r
162479                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
162480                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
162481                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
162482                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
162483                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
162484                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
162485                 
162486                ELSE null
162487               END                           object_name
162491                 WHEN 3 THEN 'HEADER' 
162488             , CASE r
162489                 WHEN 1 THEN 'HEADER' 
162490                 WHEN 2 THEN 'HEADER' 
162492                 WHEN 4 THEN 'HEADER' 
162493                 WHEN 5 THEN 'HEADER' 
162494                 WHEN 6 THEN 'HEADER' 
162495                 
162496                 ELSE null
162497               END                           object_type_code
162498             , CASE r
162499                 WHEN 1 THEN '555' 
162500                 WHEN 2 THEN '555' 
162501                 WHEN 3 THEN '555' 
162502                 WHEN 4 THEN '555' 
162503                 WHEN 5 THEN '555' 
162504                 WHEN 6 THEN '555' 
162505                 
162506                 ELSE null
162507               END                           source_application_id
162508             , 'S'             source_type_code
162509             , CASE r
162510                 WHEN 1 THEN 'ENTITY_CODE' 
162511                 WHEN 2 THEN 'CURRENCY_CODE' 
162512                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
162513                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
162514                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
162515                 WHEN 6 THEN 'TRANSACTION_DATE' 
162516                 
162517                 ELSE null
162518               END                           source_code
162519             , CASE r
162520                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
162521                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
162522                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
162523                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
162524                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
162525                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
162526                 
162527                 ELSE null
162528               END                           source_value
162529             , CASE r
162530                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
162531                           1010186
162532                          ,TO_CHAR(h1.CURRENCY_CODE)
162533                          ,'CURRENCY_CODE'
162534                          ,'S'
162535                          ,555)
162536                 
162537                 ELSE null
162538               END               source_meaning
162539         FROM xla_events_gt     xet  
162540       , GMF_XLA_EXTRACT_HEADERS  h1
162541             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
162542        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
162543          AND xet.event_type_code = C_EVENT_TYPE_CODE
162544             AND h1.event_id = xet.event_id
162545 
162546 )
162547 ;
162548 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162549 
162550       trace
162551          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
162552          ,p_level    => C_LEVEL_STATEMENT
162553          ,p_module   => l_log_module);
162554 
162555 END IF;
162556 --
162557 
162558 
162559 
162560 --
162561 INSERT INTO xla_diag_sources --line1
162562 (
162563         event_id
162564       , ledger_id
162565       , sla_ledger_id
162566       , description_language
162567       , object_name
162568       , object_type_code
162569       , line_number
162570       , source_application_id
162571       , source_type_code
162572       , source_code
162573       , source_value
162574       , source_meaning
162575       , created_by
162576       , creation_date
162577       , last_update_date
162578       , last_updated_by
162579       , last_update_login
162580       , program_update_date
162581       , program_application_id
162582       , program_id
162583       , request_id
162584 )
162585 SELECT  event_id
162586       , p_target_ledger_id
162587       , p_sla_ledger_id
162588       , p_language
162589       , object_name
162590       , object_type_code
162591       , line_number
162592       , source_application_id
162593       , source_type_code
162594       , source_code
162595       , SUBSTR(source_value,1,1996)
162596       , SUBSTR(source_meaning,1,200)
162597       , xla_environment_pkg.g_Usr_Id
162598       , TRUNC(SYSDATE)
162599       , TRUNC(SYSDATE)
162600       , xla_environment_pkg.g_Usr_Id
162601       , xla_environment_pkg.g_Login_Id
162602       , TRUNC(SYSDATE)
162603       , xla_environment_pkg.g_Prog_Appl_Id
162604       , xla_environment_pkg.g_Prog_Id
162605       , xla_environment_pkg.g_Req_Id
162606   FROM (
162607        SELECT xet.event_id                  event_id
162608             , l2.line_number                 line_number
162609             , CASE r
162610                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
162611                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
162612                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
162613                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
162614                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
162615                 
162616                ELSE null
162617               END                           object_name
162618             , CASE r
162619                 WHEN 1 THEN 'LINE' 
162620                 WHEN 2 THEN 'LINE' 
162621                 WHEN 3 THEN 'LINE' 
162622                 WHEN 4 THEN 'LINE' 
162623                 WHEN 5 THEN 'LINE' 
162624                 
162625                 ELSE null
162626               END                           object_type_code
162627             , CASE r
162628                 WHEN 1 THEN '555' 
162629                 WHEN 2 THEN '555' 
162633                 
162630                 WHEN 3 THEN '555' 
162631                 WHEN 4 THEN '555' 
162632                 WHEN 5 THEN '555' 
162634                 ELSE null
162635               END                           source_application_id
162636             , 'S'             source_type_code
162637             , CASE r
162638                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
162639                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
162640                 WHEN 3 THEN 'ENTERED_AMOUNT' 
162641                 WHEN 4 THEN 'LINE_ID' 
162642                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
162643                 
162644                 ELSE null
162645               END                           source_code
162646             , CASE r
162647                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
162648                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
162649                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
162650                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
162651                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
162652                 
162653                 ELSE null
162654               END                           source_value
162655             , null              source_meaning
162656          FROM  xla_events_gt     xet  
162657         , GMF_XLA_EXTRACT_LINES  l2
162658             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
162659         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
162660           AND xet.event_type_code = C_EVENT_TYPE_CODE
162661             AND l2.event_id          = xet.event_id
162662 
162663 )
162664 ;
162665 --
162666 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162667 
162668       trace
162669          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
162670          ,p_level    => C_LEVEL_STATEMENT
162671          ,p_module   => l_log_module);
162672 
162673 END IF;
162674 
162675 
162676 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162677       trace
162678          (p_msg      => 'END of insert_sources_283'
162679          ,p_level    => C_LEVEL_PROCEDURE
162680          ,p_module   => l_log_module);
162681 END IF;
162682 EXCEPTION
162683   WHEN xla_exceptions_pkg.application_exception THEN
162684       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
162685             trace
162686                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
162687                ,p_level    => C_LEVEL_EXCEPTION
162688                ,p_module   => l_log_module);
162689       END IF;
162690       RAISE;
162691   WHEN OTHERS THEN
162692       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
162693             trace
162694                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
162695                ,p_level    => C_LEVEL_EXCEPTION
162696                ,p_module   => l_log_module);
162697        END IF;
162698        xla_exceptions_pkg.raise_message
162699            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_283');
162700 END insert_sources_283;
162701 --
162702 
162703 ---------------------------------------
162704 --
162705 -- PRIVATE FUNCTION
162706 --         EventType_283
162707 --
162708 ----------------------------------------
162709 --
162710 FUNCTION EventType_283
162711        (p_application_id         IN NUMBER
162712        ,p_base_ledger_id         IN NUMBER
162713        ,p_target_ledger_id       IN NUMBER
162714        ,p_language               IN VARCHAR2
162715        ,p_currency_code          IN VARCHAR2
162716        ,p_sla_ledger_id          IN NUMBER
162717        ,p_pad_start_date         IN DATE
162718        ,p_pad_end_date           IN DATE
162719        ,p_primary_ledger_id      IN NUMBER)
162720 RETURN BOOLEAN IS
162721 --
162722 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_IC_SALES_RETURN';
162723 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
162724 
162725 l_calculate_acctd_flag   VARCHAR2(1) :='N';
162726 l_calculate_g_l_flag     VARCHAR2(1) :='N';
162727 --
162728 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162729 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162730 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162731 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162732 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162733 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162734 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162735 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162736 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162737 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162738 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162739 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162740 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162741 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162742 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162743 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162744 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162745 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162746 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162747 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162751 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162748 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162749 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162750 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
162752 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
162753 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
162754 
162755 l_event_id                             NUMBER;
162756 l_previous_event_id                    NUMBER;
162757 l_first_event_id                       NUMBER;
162758 l_last_event_id                        NUMBER;
162759 
162760 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
162761 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
162762 --
162763 --
162764 l_result                    BOOLEAN := TRUE;
162765 l_rows                      NUMBER  := 1000;
162766 l_event_type_name           VARCHAR2(80) := 'Logical InterCompany Sales Return';
162767 l_event_class_name          VARCHAR2(80) := 'Logical Intercompany';
162768 l_description               VARCHAR2(4000);
162769 l_transaction_reversal      NUMBER;
162770 l_ae_header_id              NUMBER;
162771 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
162772 l_log_module                VARCHAR2(240);
162773 --
162774 l_acct_reversal_source      VARCHAR2(30);
162775 l_trx_reversal_source       VARCHAR2(30);
162776 
162777 l_continue_with_lines       BOOLEAN := TRUE;
162778 --
162779 l_acc_rev_gl_date_source    DATE;                      -- 4262811
162780 --
162781 type t_array_event_id is table of number index by binary_integer;
162782 
162783 l_rec_array_event                    t_rec_array_event;
162784 l_null_rec_array_event               t_rec_array_event;
162785 l_array_ae_header_id                 xla_number_array_type;
162786 l_actual_flag                        VARCHAR2(1) := NULL;
162787 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
162788 l_balance_type_code                  VARCHAR2(1) :=NULL;
162789 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
162790 
162791 --
162792 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
162793 --
162794 
162795 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
162796 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
162797 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
162798 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
162799 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
162800 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
162801 
162802 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
162803 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
162804 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
162805 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
162806 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
162807 
162808 l_array_source_6              t_array_source_6;
162809 l_array_source_7              t_array_source_7;
162810 l_array_source_8              t_array_source_8;
162811 l_array_source_9              t_array_source_9;
162812 l_array_source_10              t_array_source_10;
162813 l_array_source_12              t_array_source_12;
162814 
162815 l_array_source_1      t_array_source_1;
162816 l_array_source_2      t_array_source_2;
162817 l_array_source_3      t_array_source_3;
162818 l_array_source_5      t_array_source_5;
162819 l_array_source_11      t_array_source_11;
162820 
162821 --
162822 CURSOR header_cur
162823 IS
162824 SELECT /*+ leading(xet) cardinality(xet,1) */
162825 -- Event Type Code: LOG_IC_SALES_RETURN
162826 -- Event Class Code: LOG_INTERCOMPANY
162827     xet.entity_id
162828   , xet.legal_entity_id
162829   , xet.entity_code
162830   , xet.transaction_number
162831   , xet.event_id
162832   , xet.event_class_code
162833   , xet.event_type_code
162834   , xet.event_number
162835   , xet.event_date
162836   , xet.transaction_date
162837   , xet.reference_num_1
162838   , xet.reference_num_2
162839   , xet.reference_num_3
162840   , xet.reference_num_4
162841   , xet.reference_char_1
162842   , xet.reference_char_2
162843   , xet.reference_char_3
162844   , xet.reference_char_4
162845   , xet.reference_date_1
162846   , xet.reference_date_2
162847   , xet.reference_date_3
162848   , xet.reference_date_4
162849   , xet.event_created_by
162850   , xet.budgetary_control_flag 
162851   , h1.ENTITY_CODE    source_6
162852   , h1.CURRENCY_CODE    source_7
162853   , h1.CURRENCY_CONVERSION_DATE    source_8
162854   , h1.CURRENCY_CONVERSION_RATE    source_9
162855   , h1.CURRENCY_CONVERSION_TYPE    source_10
162856   , h1.TRANSACTION_DATE    source_12
162857   FROM xla_events_gt     xet 
162858   , GMF_XLA_EXTRACT_HEADERS  h1
162859  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
162860    and xet.event_type_code = C_EVENT_TYPE_CODE
162864 ;
162861    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
162862 
162863  ORDER BY event_id
162865 
162866 
162867 --
162868 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
162869 IS
162870 SELECT /*+ leading(xet) cardinality(xet,1) */
162871 -- Event Type Code: LOG_IC_SALES_RETURN
162872 -- Event Class Code: LOG_INTERCOMPANY
162873     xet.entity_id
162874    ,xet.legal_entity_id
162875    ,xet.entity_code
162876    ,xet.transaction_number
162877    ,xet.event_id
162878    ,xet.event_class_code
162879    ,xet.event_type_code
162880    ,xet.event_number
162881    ,xet.event_date
162882    ,xet.transaction_date
162883    ,xet.reference_num_1
162884    ,xet.reference_num_2
162885    ,xet.reference_num_3
162886    ,xet.reference_num_4
162887    ,xet.reference_char_1
162888    ,xet.reference_char_2
162889    ,xet.reference_char_3
162890    ,xet.reference_char_4
162891    ,xet.reference_date_1
162892    ,xet.reference_date_2
162893    ,xet.reference_date_3
162894    ,xet.reference_date_4
162895    ,xet.event_created_by
162896    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
162897   , l2.TRANSACTION_ACCOUNT_ID    source_1
162898   , l2.JOURNAL_LINE_TYPE    source_2
162899   , l2.ENTERED_AMOUNT    source_3
162900   , l2.LINE_ID    source_5
162901   , l2.ACCOUNTED_AMOUNT    source_11
162902   FROM xla_events_gt     xet 
162903   , GMF_XLA_EXTRACT_LINES  l2
162904  WHERE xet.event_id between x_first_event_id and x_last_event_id
162905    and xet.event_date between p_pad_start_date and p_pad_end_date
162906    and xet.event_type_code = C_EVENT_TYPE_CODE
162907    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
162908 ;
162909 
162910 --
162911 BEGIN
162912 IF g_log_enabled THEN
162913    l_log_module := C_DEFAULT_MODULE||'.EventType_283';
162914 END IF;
162915 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162916    trace
162917       (p_msg      => 'BEGIN of EventType_283'
162918       ,p_level    => C_LEVEL_PROCEDURE
162919       ,p_module   => l_log_module);
162920 END IF;
162921 
162922 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162923    trace
162924       (p_msg      => 'p_application_id = '||p_application_id||
162925                      ' - p_base_ledger_id = '||p_base_ledger_id||
162926                      ' - p_target_ledger_id  = '||p_target_ledger_id||
162927                      ' - p_language = '||p_language||
162928                      ' - p_currency_code = '||p_currency_code||
162929                      ' - p_sla_ledger_id = '||p_sla_ledger_id
162930       ,p_level    => C_LEVEL_STATEMENT
162931       ,p_module   => l_log_module);
162932 END IF;
162933 --
162934 -- initialze arrays
162935 --
162936 g_array_event.DELETE;
162937 l_rec_array_event := l_null_rec_array_event;
162938 --
162939 --------------------------------------
162940 -- 4262811 Initialze MPA Line Number
162941 --------------------------------------
162942 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
162943 
162944 --
162945 
162946 --
162947 OPEN header_cur;
162948 --
162949 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162950    trace
162951    (p_msg      => 'SQL - FETCH header_cur'
162952    ,p_level    => C_LEVEL_STATEMENT
162953    ,p_module   => l_log_module);
162954 END IF;
162955 --
162956 LOOP
162957 FETCH header_cur BULK COLLECT INTO
162958         l_array_entity_id
162959       , l_array_legal_entity_id
162960       , l_array_entity_code
162961       , l_array_transaction_num
162962       , l_array_event_id
162963       , l_array_class_code
162964       , l_array_event_type
162965       , l_array_event_number
162966       , l_array_event_date
162967       , l_array_transaction_date
162968       , l_array_reference_num_1
162969       , l_array_reference_num_2
162970       , l_array_reference_num_3
162971       , l_array_reference_num_4
162972       , l_array_reference_char_1
162973       , l_array_reference_char_2
162974       , l_array_reference_char_3
162975       , l_array_reference_char_4
162976       , l_array_reference_date_1
162977       , l_array_reference_date_2
162978       , l_array_reference_date_3
162979       , l_array_reference_date_4
162980       , l_array_event_created_by
162981       , l_array_budgetary_control_flag 
162982       , l_array_source_6
162983       , l_array_source_7
162984       , l_array_source_8
162985       , l_array_source_9
162986       , l_array_source_10
162987       , l_array_source_12
162988       LIMIT l_rows;
162989 --
162990 IF (C_LEVEL_EVENT >= g_log_level) THEN
162991    trace
162992    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
162993    ,p_level    => C_LEVEL_EVENT
162994    ,p_module   => l_log_module);
162995 END IF;
162996 --
162997 EXIT WHEN l_array_entity_id.COUNT = 0;
162998 
162999 -- initialize arrays
163000 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
163001 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
163002 
163003 --
163004 -- Bug 4458708
163005 --
163006 XLA_AE_LINES_PKG.g_LineNumber := 0;
163007 
163008 
163009 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
163010 g_last_hdr_idx := l_array_event_id.LAST;
163011 --
163012 -- loop for the headers. Each iteration is for each header extract row
163013 -- fetched in header cursor
163014 --
163018 -- set event info as cache for other routines to refer event attributes
163015 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
163016 
163017 --
163019 --
163020 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
163021    (p_application_id           => p_application_id
163022    ,p_primary_ledger_id        => p_primary_ledger_id
163023    ,p_base_ledger_id           => p_base_ledger_id
163024    ,p_target_ledger_id         => p_target_ledger_id
163025    ,p_entity_id                => l_array_entity_id(hdr_idx)
163026    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
163027    ,p_entity_code              => l_array_entity_code(hdr_idx)
163028    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
163029    ,p_event_id                 => l_array_event_id(hdr_idx)
163030    ,p_event_class_code         => l_array_class_code(hdr_idx)
163031    ,p_event_type_code          => l_array_event_type(hdr_idx)
163032    ,p_event_number             => l_array_event_number(hdr_idx)
163033    ,p_event_date               => l_array_event_date(hdr_idx)
163034    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
163035    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
163036    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
163037    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
163038    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
163039    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
163040    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
163041    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
163042    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
163043    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
163044    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
163045    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
163046    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
163047    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
163048    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
163049 
163050 --
163051 -- set the status of entry to C_VALID (0)
163052 --
163053 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
163054 
163055 --
163056 -- initialize a row for ae header
163057 --
163058 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
163059 
163060 l_event_id := l_array_event_id(hdr_idx);
163061 
163062 --
163063 -- storing the hdr_idx for event. May be used by line cursor.
163064 --
163065 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
163066 
163067 --
163068 -- store sources from header extract. This can be improved to
163069 -- store only those sources from header extract that may be used in lines
163070 --
163071 
163072 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
163073 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
163074 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
163075 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
163076 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
163077 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
163078 
163079 --
163080 -- initilaize the status of ae headers for diffrent balance types
163081 -- the status is initialised to C_NOT_CREATED (2)
163082 --
163083 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
163084 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
163085 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
163086 
163087 --
163088 -- call api to validate and store accounting attributes for header
163089 --
163090 
163091 ------------------------------------------------------------
163092 -- Accrual Reversal : to get date for Standard Source (NONE)
163093 ------------------------------------------------------------
163094 l_acc_rev_gl_date_source := NULL;
163095 
163096      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
163097       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
163098 
163099 
163100 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
163101 
163102 XLA_AE_HEADER_PKG.SetJeCategoryName;
163103 
163104 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
163105 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
163106 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
163107 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
163108 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
163109 
163110 
163111 -- No header level analytical criteria
163112 
163113 --
163114 --accounting attribute enhancement, bug 3612931
163115 --
163116 l_trx_reversal_source := SUBSTR(NULL, 1,30);
163117 
163118 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
163119    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
163120 
163121    xla_accounting_err_pkg.build_message
163122       (p_appli_s_name            => 'XLA'
163123       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
163127       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
163124       ,p_token_1                 => 'ACCT_ATTR_NAME'
163125       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
163126       ,p_token_2                 => 'PRODUCT_NAME'
163128       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
163129       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
163130       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
163131 
163132 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
163133    --
163134    -- following sets the accounting attributes needed to reverse
163135    -- accounting for a distributeion
163136    --
163137    xla_ae_lines_pkg.SetTrxReversalAttrs
163138       (p_event_id              => l_event_id
163139       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
163140       ,p_trx_reversal_source   => l_trx_reversal_source);
163141 
163142 END IF;
163143 
163144 
163145 ----------------------------------------------------------------
163146 -- 4262811 -  update the header statuses to invalid in need be
163147 ----------------------------------------------------------------
163148 --
163149 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
163150 
163151 
163152   -----------------------------------------------
163153   -- No accrual reversal for the event class/type
163154   -----------------------------------------------
163155 ----------------------------------------------------------------
163156 
163157 --
163158 -- this ends the header loop iteration for one bulk fetch
163159 --
163160 END LOOP;
163161 
163162 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
163163 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
163164 
163165 --
163166 -- insert dummy rows into lines gt table that were created due to
163167 -- transaction reversals
163168 --
163169 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
163170    l_result := XLA_AE_LINES_PKG.InsertLines;
163171 END IF;
163172 
163173 --
163174 -- reset the temp_line_num for each set of events fetched from header
163175 -- cursor rather than doing it for each new event in line cursor
163176 -- Bug 3939231
163177 --
163178 xla_ae_lines_pkg.g_temp_line_num := 0;
163179 
163180 
163181 
163182 --
163183 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
163184 --
163185 --
163186 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163187 
163188       trace
163189          (p_msg      => 'SQL - FETCH line_cur'
163190          ,p_level    => C_LEVEL_STATEMENT
163191          ,p_module   => l_log_module);
163192 
163193 END IF;
163194 --
163195 --
163196 LOOP
163197   --
163198   FETCH line_cur BULK COLLECT INTO
163199         l_array_entity_id
163200       , l_array_legal_entity_id
163201       , l_array_entity_code
163202       , l_array_transaction_num
163203       , l_array_event_id
163204       , l_array_class_code
163205       , l_array_event_type
163206       , l_array_event_number
163207       , l_array_event_date
163208       , l_array_transaction_date
163209       , l_array_reference_num_1
163210       , l_array_reference_num_2
163211       , l_array_reference_num_3
163212       , l_array_reference_num_4
163213       , l_array_reference_char_1
163214       , l_array_reference_char_2
163215       , l_array_reference_char_3
163216       , l_array_reference_char_4
163217       , l_array_reference_date_1
163218       , l_array_reference_date_2
163219       , l_array_reference_date_3
163220       , l_array_reference_date_4
163221       , l_array_event_created_by
163222       , l_array_budgetary_control_flag
163223       , l_array_extract_line_num 
163224       , l_array_source_1
163225       , l_array_source_2
163226       , l_array_source_3
163227       , l_array_source_5
163228       , l_array_source_11
163229       LIMIT l_rows;
163230 
163231   --
163232   IF (C_LEVEL_EVENT >= g_log_level) THEN
163233             trace
163234                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
163235                ,p_level    => C_LEVEL_EVENT
163236                ,p_module   => l_log_module);
163237   END IF;
163238   --
163239   EXIT WHEN l_array_entity_id.count = 0;
163240 
163241   XLA_AE_LINES_PKG.g_rec_lines := null;
163242 
163243 --
163244 -- Bug 4458708
163245 --
163246 XLA_AE_LINES_PKG.g_LineNumber := 0;
163247 --
163248 --
163249 
163250 FOR Idx IN 1..l_array_event_id.count LOOP
163251    --
163252    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
163253    --
163254    l_event_id := l_array_event_id(idx);  -- 5648433
163255 
163256    --
163257    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
163258    --
163259 
163260    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
163261              (g_array_event(l_event_id).array_value_num('header_index'))
163262          ,'N'
163263          ) <> 'Y'
163264    THEN
163265       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163266          trace
163267             (p_msg      => 'Trancaction revesal option is not Y '
163268             ,p_level    => C_LEVEL_STATEMENT
163269             ,p_module   => l_log_module);
163270       END IF;
163271 
163275 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
163272 --
163273 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
163274 --
163276 --
163277 -- set event info as cache for other routines to refer event attributes
163278 --
163279 
163280 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
163281    l_previous_event_id := l_event_id;
163282 
163283    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
163284       (p_application_id           => p_application_id
163285       ,p_primary_ledger_id        => p_primary_ledger_id
163286       ,p_base_ledger_id           => p_base_ledger_id
163287       ,p_target_ledger_id         => p_target_ledger_id
163288       ,p_entity_id                => l_array_entity_id(Idx)
163289       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
163290       ,p_entity_code              => l_array_entity_code(Idx)
163291       ,p_transaction_num          => l_array_transaction_num(Idx)
163292       ,p_event_id                 => l_array_event_id(Idx)
163293       ,p_event_class_code         => l_array_class_code(Idx)
163294       ,p_event_type_code          => l_array_event_type(Idx)
163295       ,p_event_number             => l_array_event_number(Idx)
163296       ,p_event_date               => l_array_event_date(Idx)
163297       ,p_transaction_date         => l_array_transaction_date(Idx)
163298       ,p_reference_num_1          => l_array_reference_num_1(Idx)
163299       ,p_reference_num_2          => l_array_reference_num_2(Idx)
163300       ,p_reference_num_3          => l_array_reference_num_3(Idx)
163301       ,p_reference_num_4          => l_array_reference_num_4(Idx)
163302       ,p_reference_char_1         => l_array_reference_char_1(Idx)
163303       ,p_reference_char_2         => l_array_reference_char_2(Idx)
163304       ,p_reference_char_3         => l_array_reference_char_3(Idx)
163305       ,p_reference_char_4         => l_array_reference_char_4(Idx)
163306       ,p_reference_date_1         => l_array_reference_date_1(Idx)
163307       ,p_reference_date_2         => l_array_reference_date_2(Idx)
163308       ,p_reference_date_3         => l_array_reference_date_3(Idx)
163309       ,p_reference_date_4         => l_array_reference_date_4(Idx)
163310       ,p_event_created_by         => l_array_event_created_by(Idx)
163311       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
163312        --
163313 END IF;
163314 
163315 
163316 
163317 --
163318 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
163319 
163320 l_acct_reversal_source := SUBSTR(NULL, 1,30);
163321 
163322 IF l_continue_with_lines THEN
163323    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
163324       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
163325 
163326       xla_accounting_err_pkg.build_message
163327          (p_appli_s_name            => 'XLA'
163328          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
163329          ,p_token_1                 => 'LINE_NUMBER'
163330          ,p_value_1                 => l_array_extract_line_num(Idx)
163331          ,p_token_2                 => 'PRODUCT_NAME'
163332          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
163333          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
163334          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
163335          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
163336 
163337    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
163338       --
163339       -- following sets the accounting attributes needed to reverse
163340       -- accounting for a distributeion
163341       --
163342 
163343       --
163344       -- 5217187
163345       --
163346       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
163347       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
163348                                        g_array_event(l_event_id).array_value_num('header_index'));
163349       --
163350       --
163351 
163352       -- No reversal code generated
163353 
163354       xla_ae_lines_pkg.SetAcctReversalAttrs
163355          (p_event_id             => l_event_id
163356          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
163357          ,p_calculate_acctd_flag => l_calculate_acctd_flag
163358          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
163359    END IF;
163360 
163361    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
163362        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
163363 
163364 --
163365 AcctLineType_108 (
163366  p_application_id  => p_application_id
163367  ,p_event_id     => l_event_id
163368  ,p_calculate_acctd_flag => l_calculate_acctd_flag
163369  ,p_calculate_g_l_flag => l_calculate_g_l_flag
163370  ,p_actual_flag => l_actual_flag
163371  ,p_balance_type_code => l_balance_type_code
163372  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163373  
163374  , p_source_1 => l_array_source_1(Idx)
163375  , p_source_2 => l_array_source_2(Idx)
163376  , p_source_3 => l_array_source_3(Idx)
163377  , p_source_5 => l_array_source_5(Idx)
163378  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
163379  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
163380  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
163381  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
163385 If(l_balance_type_code = 'A') THEN
163382  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
163383  , p_source_11 => l_array_source_11(Idx)
163384  );
163386   l_actual_gain_loss_ref := l_gain_or_loss_ref;
163387 END IF;
163388 
163389 --
163390 
163391 
163392 --
163393 AcctLineType_125 (
163394  p_application_id  => p_application_id
163395  ,p_event_id     => l_event_id
163396  ,p_calculate_acctd_flag => l_calculate_acctd_flag
163397  ,p_calculate_g_l_flag => l_calculate_g_l_flag
163398  ,p_actual_flag => l_actual_flag
163399  ,p_balance_type_code => l_balance_type_code
163400  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163401  
163402  , p_source_1 => l_array_source_1(Idx)
163403  , p_source_2 => l_array_source_2(Idx)
163404  , p_source_3 => l_array_source_3(Idx)
163405  , p_source_5 => l_array_source_5(Idx)
163406  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
163407  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
163408  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
163409  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
163410  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
163411  , p_source_11 => l_array_source_11(Idx)
163412  );
163413 If(l_balance_type_code = 'A') THEN
163414   l_actual_gain_loss_ref := l_gain_or_loss_ref;
163415 END IF;
163416 
163417 --
163418 
163419 
163420 --
163421 AcctLineType_152 (
163422  p_application_id  => p_application_id
163423  ,p_event_id     => l_event_id
163424  ,p_calculate_acctd_flag => l_calculate_acctd_flag
163425  ,p_calculate_g_l_flag => l_calculate_g_l_flag
163426  ,p_actual_flag => l_actual_flag
163427  ,p_balance_type_code => l_balance_type_code
163428  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163429  
163430  , p_source_1 => l_array_source_1(Idx)
163431  , p_source_2 => l_array_source_2(Idx)
163432  , p_source_3 => l_array_source_3(Idx)
163433  , p_source_5 => l_array_source_5(Idx)
163434  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
163435  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
163436  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
163437  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
163438  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
163439  , p_source_11 => l_array_source_11(Idx)
163440  );
163441 If(l_balance_type_code = 'A') THEN
163442   l_actual_gain_loss_ref := l_gain_or_loss_ref;
163443 END IF;
163444 
163445 --
163446 
163447       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
163448       -- or secondary ledger that has different currency with primary
163449       -- or alc that is calculated by sla
163450       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
163451             (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'))
163452 
163453 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
163454 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
163455           AND (l_actual_flag = 'A')) THEN
163456         XLA_AE_LINES_PKG.CreateGainOrLossLines(
163457           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
163458          ,p_application_id   => p_application_id
163459          ,p_amb_context_code => 'DEFAULT'
163460          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
163461          ,p_event_class_code => C_EVENT_CLASS_CODE
163462          ,p_event_type_code  => C_EVENT_TYPE_CODE
163463          
163464          ,p_gain_ccid        => -1
163465          ,p_loss_ccid        => -1
163466 
163467          ,p_actual_flag      => l_actual_flag
163468          ,p_enc_flag         => null
163469          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
163470          ,p_enc_g_l_ref      => null
163471          );
163472       END IF;
163473    END IF;
163474 END IF;
163475 
163476    ELSE
163477       --
163478       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
163479       --
163480       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163481          trace
163482             (p_msg      => 'Trancaction revesal option is Y'
163483             ,p_level    => C_LEVEL_STATEMENT
163484             ,p_module   => l_log_module);
163485       END IF;
163486    END IF;
163487 
163488 END LOOP;
163489 l_result := XLA_AE_LINES_PKG.InsertLines ;
163490 end loop;
163491 close line_cur;
163492 
163493 
163494 --
163495 -- insert headers into xla_ae_headers_gt table
163496 --
163497 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
163498 
163499 -- insert into errors table here.
163500 
163501 END LOOP;
163502 
163503 --
163504 -- 4865292
163505 --
163506 -- Compare g_hdr_extract_count with event count in
163507 -- CreateHeadersAndLines.
163508 --
163509 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
163510 
163511 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163512    trace (p_msg     => '# rows extracted from header extract objects '
163513                     || ' (running total): '
163514                     || g_hdr_extract_count
163515          ,p_level   => C_LEVEL_STATEMENT
163516          ,p_module  => l_log_module);
163517 END IF;
163521 
163518 
163519 CLOSE header_cur;
163520 --
163522 --
163523 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163524    trace
163525       (p_msg      => 'END of EventType_283'
163526       ,p_level    => C_LEVEL_PROCEDURE
163527       ,p_module   => l_log_module);
163528 END IF;
163529 --
163530 RETURN l_result;
163531 EXCEPTION
163532 WHEN xla_exceptions_pkg.application_exception THEN
163533    
163534 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
163535 
163536    
163537 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
163538 
163539    RAISE;
163540 
163541 WHEN NO_DATA_FOUND THEN
163542 
163543 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
163544 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
163545 
163546 FOR header_record IN header_cur
163547 LOOP
163548     l_array_header_events(header_record.event_id) := header_record.event_id;
163549 END LOOP;
163550 
163551 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
163552 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
163553 
163554 fnd_file.put_line(fnd_file.LOG, '                    ');
163555 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
163556 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
163557 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
163558 
163559 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
163560 LOOP
163561 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
163562 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
163563         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
163564 	END IF;
163565 END LOOP;
163566 
163567 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
163568 fnd_file.put_line(fnd_file.LOG, '                    ');
163569 
163570 
163571 xla_exceptions_pkg.raise_message
163572       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_283');
163573 
163574 
163575 WHEN OTHERS THEN
163576    xla_exceptions_pkg.raise_message
163577       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_283');
163578 END EventType_283;
163579 --
163580 
163581 ---------------------------------------
163582 --
163583 -- PRIVATE PROCEDURE
163584 --         insert_sources_284
163585 --
163586 ----------------------------------------
163587 --
163588 PROCEDURE insert_sources_284(
163589                                 p_target_ledger_id       IN NUMBER
163590                               , p_language               IN VARCHAR2
163591                               , p_sla_ledger_id          IN NUMBER
163592                               , p_pad_start_date         IN DATE
163593                               , p_pad_end_date           IN DATE
163594                          )
163595 IS
163596 
163597 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_IC_SHIPMENT_RCPT';
163598 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
163599 p_apps_owner                   VARCHAR2(30);
163600 l_log_module                   VARCHAR2(240);
163601 BEGIN
163602 IF g_log_enabled THEN
163603       l_log_module := C_DEFAULT_MODULE||'.insert_sources_284';
163604 END IF;
163605 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163606 
163607       trace
163608          (p_msg      => 'BEGIN of insert_sources_284'
163609          ,p_level    => C_LEVEL_PROCEDURE
163610          ,p_module   => l_log_module);
163611 
163612 END IF;
163613 
163614 -- select APPS owner
163615 SELECT oracle_username
163616   INTO p_apps_owner
163617   FROM fnd_oracle_userid
163618  WHERE read_only_flag = 'U'
163619 ;
163620 
163621 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163622       trace
163623          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
163624                         ' - p_language = '||p_language||
163625                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
163626                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
163627                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
163628                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
163629          ,p_level    => C_LEVEL_STATEMENT
163630          ,p_module   => l_log_module);
163631 END IF;
163632 
163633 
163634 --
163635 INSERT INTO xla_diag_sources --hdr1
163636 (
163637         event_id
163638       , ledger_id
163639       , sla_ledger_id
163640       , description_language
163641       , object_name
163642       , object_type_code
163643       , line_number
163644       , source_application_id
163645       , source_type_code
163646       , source_code
163647       , source_value
163648       , source_meaning
163649       , created_by
163650       , creation_date
163651       , last_update_date
163652       , last_updated_by
163653       , last_update_login
163654       , program_update_date
163655       , program_application_id
163656       , program_id
163657       , request_id
163658 )
163659 SELECT
163660         event_id
163661       , p_target_ledger_id
163662       , p_sla_ledger_id
163663       , p_language
163664       , object_name
163665       , object_type_code
163666       , line_number
163670       , SUBSTR(source_value ,1,1996)
163667       , source_application_id
163668       , source_type_code
163669       , source_code
163671       , SUBSTR(source_meaning,1,200)
163672       , xla_environment_pkg.g_Usr_Id
163673       , TRUNC(SYSDATE)
163674       , TRUNC(SYSDATE)
163675       , xla_environment_pkg.g_Usr_Id
163676       , xla_environment_pkg.g_Login_Id
163677       , TRUNC(SYSDATE)
163678       , xla_environment_pkg.g_Prog_Appl_Id
163679       , xla_environment_pkg.g_Prog_Id
163680       , xla_environment_pkg.g_Req_Id
163681   FROM (
163682        SELECT xet.event_id                  event_id
163683             , 0                             line_number
163684             , CASE r
163685                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
163686                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
163687                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
163688                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
163689                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
163690                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
163691                 
163692                ELSE null
163693               END                           object_name
163694             , CASE r
163695                 WHEN 1 THEN 'HEADER' 
163696                 WHEN 2 THEN 'HEADER' 
163697                 WHEN 3 THEN 'HEADER' 
163698                 WHEN 4 THEN 'HEADER' 
163699                 WHEN 5 THEN 'HEADER' 
163700                 WHEN 6 THEN 'HEADER' 
163701                 
163702                 ELSE null
163703               END                           object_type_code
163704             , CASE r
163705                 WHEN 1 THEN '555' 
163706                 WHEN 2 THEN '555' 
163707                 WHEN 3 THEN '555' 
163708                 WHEN 4 THEN '555' 
163709                 WHEN 5 THEN '555' 
163710                 WHEN 6 THEN '555' 
163711                 
163712                 ELSE null
163713               END                           source_application_id
163714             , 'S'             source_type_code
163715             , CASE r
163716                 WHEN 1 THEN 'ENTITY_CODE' 
163717                 WHEN 2 THEN 'CURRENCY_CODE' 
163718                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
163719                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
163720                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
163721                 WHEN 6 THEN 'TRANSACTION_DATE' 
163722                 
163723                 ELSE null
163724               END                           source_code
163725             , CASE r
163726                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
163727                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
163728                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
163729                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
163730                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
163731                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
163732                 
163733                 ELSE null
163734               END                           source_value
163735             , CASE r
163736                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
163737                           1010186
163738                          ,TO_CHAR(h1.CURRENCY_CODE)
163739                          ,'CURRENCY_CODE'
163740                          ,'S'
163741                          ,555)
163742                 
163743                 ELSE null
163744               END               source_meaning
163745         FROM xla_events_gt     xet  
163746       , GMF_XLA_EXTRACT_HEADERS  h1
163747             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
163748        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
163749          AND xet.event_type_code = C_EVENT_TYPE_CODE
163750             AND h1.event_id = xet.event_id
163751 
163752 )
163753 ;
163754 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163755 
163756       trace
163757          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
163758          ,p_level    => C_LEVEL_STATEMENT
163759          ,p_module   => l_log_module);
163760 
163761 END IF;
163762 --
163763 
163764 
163765 
163766 --
163767 INSERT INTO xla_diag_sources --line1
163768 (
163769         event_id
163770       , ledger_id
163771       , sla_ledger_id
163772       , description_language
163773       , object_name
163774       , object_type_code
163775       , line_number
163776       , source_application_id
163777       , source_type_code
163778       , source_code
163779       , source_value
163780       , source_meaning
163781       , created_by
163782       , creation_date
163783       , last_update_date
163784       , last_updated_by
163785       , last_update_login
163786       , program_update_date
163787       , program_application_id
163788       , program_id
163789       , request_id
163790 )
163791 SELECT  event_id
163792       , p_target_ledger_id
163793       , p_sla_ledger_id
163794       , p_language
163795       , object_name
163796       , object_type_code
163797       , line_number
163798       , source_application_id
163799       , source_type_code
163800       , source_code
163801       , SUBSTR(source_value,1,1996)
163802       , SUBSTR(source_meaning,1,200)
163803       , xla_environment_pkg.g_Usr_Id
163804       , TRUNC(SYSDATE)
163805       , TRUNC(SYSDATE)
163806       , xla_environment_pkg.g_Usr_Id
163807       , xla_environment_pkg.g_Login_Id
163808       , TRUNC(SYSDATE)
163812   FROM (
163809       , xla_environment_pkg.g_Prog_Appl_Id
163810       , xla_environment_pkg.g_Prog_Id
163811       , xla_environment_pkg.g_Req_Id
163813        SELECT xet.event_id                  event_id
163814             , l2.line_number                 line_number
163815             , CASE r
163816                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
163817                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
163818                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
163819                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
163820                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
163821                 
163822                ELSE null
163823               END                           object_name
163824             , CASE r
163825                 WHEN 1 THEN 'LINE' 
163826                 WHEN 2 THEN 'LINE' 
163827                 WHEN 3 THEN 'LINE' 
163828                 WHEN 4 THEN 'LINE' 
163829                 WHEN 5 THEN 'LINE' 
163830                 
163831                 ELSE null
163832               END                           object_type_code
163833             , CASE r
163834                 WHEN 1 THEN '555' 
163835                 WHEN 2 THEN '555' 
163836                 WHEN 3 THEN '555' 
163837                 WHEN 4 THEN '555' 
163838                 WHEN 5 THEN '555' 
163839                 
163840                 ELSE null
163841               END                           source_application_id
163842             , 'S'             source_type_code
163843             , CASE r
163844                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
163845                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
163846                 WHEN 3 THEN 'ENTERED_AMOUNT' 
163847                 WHEN 4 THEN 'LINE_ID' 
163848                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
163849                 
163850                 ELSE null
163851               END                           source_code
163852             , CASE r
163853                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
163854                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
163855                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
163856                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
163857                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
163858                 
163859                 ELSE null
163860               END                           source_value
163861             , null              source_meaning
163862          FROM  xla_events_gt     xet  
163863         , GMF_XLA_EXTRACT_LINES  l2
163864             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
163865         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
163866           AND xet.event_type_code = C_EVENT_TYPE_CODE
163867             AND l2.event_id          = xet.event_id
163868 
163869 )
163870 ;
163871 --
163872 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163873 
163874       trace
163875          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
163876          ,p_level    => C_LEVEL_STATEMENT
163877          ,p_module   => l_log_module);
163878 
163879 END IF;
163880 
163881 
163882 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163883       trace
163884          (p_msg      => 'END of insert_sources_284'
163885          ,p_level    => C_LEVEL_PROCEDURE
163886          ,p_module   => l_log_module);
163887 END IF;
163888 EXCEPTION
163889   WHEN xla_exceptions_pkg.application_exception THEN
163890       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
163891             trace
163892                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
163893                ,p_level    => C_LEVEL_EXCEPTION
163894                ,p_module   => l_log_module);
163895       END IF;
163896       RAISE;
163897   WHEN OTHERS THEN
163898       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
163899             trace
163900                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
163901                ,p_level    => C_LEVEL_EXCEPTION
163902                ,p_module   => l_log_module);
163903        END IF;
163904        xla_exceptions_pkg.raise_message
163905            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_284');
163906 END insert_sources_284;
163907 --
163908 
163909 ---------------------------------------
163910 --
163911 -- PRIVATE FUNCTION
163912 --         EventType_284
163913 --
163914 ----------------------------------------
163915 --
163916 FUNCTION EventType_284
163917        (p_application_id         IN NUMBER
163918        ,p_base_ledger_id         IN NUMBER
163919        ,p_target_ledger_id       IN NUMBER
163920        ,p_language               IN VARCHAR2
163921        ,p_currency_code          IN VARCHAR2
163922        ,p_sla_ledger_id          IN NUMBER
163923        ,p_pad_start_date         IN DATE
163924        ,p_pad_end_date           IN DATE
163925        ,p_primary_ledger_id      IN NUMBER)
163926 RETURN BOOLEAN IS
163927 --
163928 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_IC_SHIPMENT_RCPT';
163929 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
163930 
163931 l_calculate_acctd_flag   VARCHAR2(1) :='N';
163932 l_calculate_g_l_flag     VARCHAR2(1) :='N';
163933 --
163934 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163935 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163936 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163940 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163937 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163938 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163939 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163941 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163942 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163943 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163944 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163945 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163946 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163947 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163948 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163949 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163950 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163951 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163952 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163953 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163954 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163955 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163956 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
163957 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163958 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
163959 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
163960 
163961 l_event_id                             NUMBER;
163962 l_previous_event_id                    NUMBER;
163963 l_first_event_id                       NUMBER;
163964 l_last_event_id                        NUMBER;
163965 
163966 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
163967 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
163968 --
163969 --
163970 l_result                    BOOLEAN := TRUE;
163971 l_rows                      NUMBER  := 1000;
163972 l_event_type_name           VARCHAR2(80) := 'Logical InterCompany Receipt';
163973 l_event_class_name          VARCHAR2(80) := 'Logical Intercompany';
163974 l_description               VARCHAR2(4000);
163975 l_transaction_reversal      NUMBER;
163976 l_ae_header_id              NUMBER;
163977 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
163978 l_log_module                VARCHAR2(240);
163979 --
163980 l_acct_reversal_source      VARCHAR2(30);
163981 l_trx_reversal_source       VARCHAR2(30);
163982 
163983 l_continue_with_lines       BOOLEAN := TRUE;
163984 --
163985 l_acc_rev_gl_date_source    DATE;                      -- 4262811
163986 --
163987 type t_array_event_id is table of number index by binary_integer;
163988 
163989 l_rec_array_event                    t_rec_array_event;
163990 l_null_rec_array_event               t_rec_array_event;
163991 l_array_ae_header_id                 xla_number_array_type;
163992 l_actual_flag                        VARCHAR2(1) := NULL;
163993 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
163994 l_balance_type_code                  VARCHAR2(1) :=NULL;
163995 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
163996 
163997 --
163998 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
163999 --
164000 
164001 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
164002 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
164003 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
164004 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
164005 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
164006 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
164007 
164008 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
164009 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
164010 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
164011 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
164012 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
164013 
164014 l_array_source_6              t_array_source_6;
164015 l_array_source_7              t_array_source_7;
164016 l_array_source_8              t_array_source_8;
164017 l_array_source_9              t_array_source_9;
164018 l_array_source_10              t_array_source_10;
164019 l_array_source_12              t_array_source_12;
164020 
164021 l_array_source_1      t_array_source_1;
164022 l_array_source_2      t_array_source_2;
164023 l_array_source_3      t_array_source_3;
164024 l_array_source_5      t_array_source_5;
164025 l_array_source_11      t_array_source_11;
164026 
164027 --
164028 CURSOR header_cur
164029 IS
164030 SELECT /*+ leading(xet) cardinality(xet,1) */
164034   , xet.legal_entity_id
164031 -- Event Type Code: LOG_IC_SHIPMENT_RCPT
164032 -- Event Class Code: LOG_INTERCOMPANY
164033     xet.entity_id
164035   , xet.entity_code
164036   , xet.transaction_number
164037   , xet.event_id
164038   , xet.event_class_code
164039   , xet.event_type_code
164040   , xet.event_number
164041   , xet.event_date
164042   , xet.transaction_date
164043   , xet.reference_num_1
164044   , xet.reference_num_2
164045   , xet.reference_num_3
164046   , xet.reference_num_4
164047   , xet.reference_char_1
164048   , xet.reference_char_2
164049   , xet.reference_char_3
164050   , xet.reference_char_4
164051   , xet.reference_date_1
164052   , xet.reference_date_2
164053   , xet.reference_date_3
164054   , xet.reference_date_4
164055   , xet.event_created_by
164056   , xet.budgetary_control_flag 
164057   , h1.ENTITY_CODE    source_6
164058   , h1.CURRENCY_CODE    source_7
164059   , h1.CURRENCY_CONVERSION_DATE    source_8
164060   , h1.CURRENCY_CONVERSION_RATE    source_9
164061   , h1.CURRENCY_CONVERSION_TYPE    source_10
164062   , h1.TRANSACTION_DATE    source_12
164063   FROM xla_events_gt     xet 
164064   , GMF_XLA_EXTRACT_HEADERS  h1
164065  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
164066    and xet.event_type_code = C_EVENT_TYPE_CODE
164067    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
164068 
164069  ORDER BY event_id
164070 ;
164071 
164072 
164073 --
164074 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
164075 IS
164076 SELECT /*+ leading(xet) cardinality(xet,1) */
164077 -- Event Type Code: LOG_IC_SHIPMENT_RCPT
164078 -- Event Class Code: LOG_INTERCOMPANY
164079     xet.entity_id
164080    ,xet.legal_entity_id
164081    ,xet.entity_code
164082    ,xet.transaction_number
164083    ,xet.event_id
164084    ,xet.event_class_code
164085    ,xet.event_type_code
164086    ,xet.event_number
164087    ,xet.event_date
164088    ,xet.transaction_date
164089    ,xet.reference_num_1
164090    ,xet.reference_num_2
164091    ,xet.reference_num_3
164092    ,xet.reference_num_4
164093    ,xet.reference_char_1
164094    ,xet.reference_char_2
164095    ,xet.reference_char_3
164096    ,xet.reference_char_4
164097    ,xet.reference_date_1
164098    ,xet.reference_date_2
164099    ,xet.reference_date_3
164100    ,xet.reference_date_4
164101    ,xet.event_created_by
164102    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
164103   , l2.TRANSACTION_ACCOUNT_ID    source_1
164104   , l2.JOURNAL_LINE_TYPE    source_2
164105   , l2.ENTERED_AMOUNT    source_3
164106   , l2.LINE_ID    source_5
164107   , l2.ACCOUNTED_AMOUNT    source_11
164108   FROM xla_events_gt     xet 
164109   , GMF_XLA_EXTRACT_LINES  l2
164110  WHERE xet.event_id between x_first_event_id and x_last_event_id
164111    and xet.event_date between p_pad_start_date and p_pad_end_date
164112    and xet.event_type_code = C_EVENT_TYPE_CODE
164113    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
164114 ;
164115 
164116 --
164117 BEGIN
164118 IF g_log_enabled THEN
164119    l_log_module := C_DEFAULT_MODULE||'.EventType_284';
164120 END IF;
164121 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164122    trace
164123       (p_msg      => 'BEGIN of EventType_284'
164124       ,p_level    => C_LEVEL_PROCEDURE
164125       ,p_module   => l_log_module);
164126 END IF;
164127 
164128 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164129    trace
164130       (p_msg      => 'p_application_id = '||p_application_id||
164131                      ' - p_base_ledger_id = '||p_base_ledger_id||
164132                      ' - p_target_ledger_id  = '||p_target_ledger_id||
164133                      ' - p_language = '||p_language||
164134                      ' - p_currency_code = '||p_currency_code||
164135                      ' - p_sla_ledger_id = '||p_sla_ledger_id
164136       ,p_level    => C_LEVEL_STATEMENT
164137       ,p_module   => l_log_module);
164138 END IF;
164139 --
164140 -- initialze arrays
164141 --
164142 g_array_event.DELETE;
164143 l_rec_array_event := l_null_rec_array_event;
164144 --
164145 --------------------------------------
164146 -- 4262811 Initialze MPA Line Number
164147 --------------------------------------
164148 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
164149 
164150 --
164151 
164152 --
164153 OPEN header_cur;
164154 --
164155 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164156    trace
164157    (p_msg      => 'SQL - FETCH header_cur'
164158    ,p_level    => C_LEVEL_STATEMENT
164159    ,p_module   => l_log_module);
164160 END IF;
164161 --
164162 LOOP
164163 FETCH header_cur BULK COLLECT INTO
164164         l_array_entity_id
164165       , l_array_legal_entity_id
164166       , l_array_entity_code
164167       , l_array_transaction_num
164168       , l_array_event_id
164169       , l_array_class_code
164170       , l_array_event_type
164171       , l_array_event_number
164172       , l_array_event_date
164173       , l_array_transaction_date
164174       , l_array_reference_num_1
164175       , l_array_reference_num_2
164176       , l_array_reference_num_3
164177       , l_array_reference_num_4
164178       , l_array_reference_char_1
164179       , l_array_reference_char_2
164180       , l_array_reference_char_3
164181       , l_array_reference_char_4
164182       , l_array_reference_date_1
164186       , l_array_event_created_by
164183       , l_array_reference_date_2
164184       , l_array_reference_date_3
164185       , l_array_reference_date_4
164187       , l_array_budgetary_control_flag 
164188       , l_array_source_6
164189       , l_array_source_7
164190       , l_array_source_8
164191       , l_array_source_9
164192       , l_array_source_10
164193       , l_array_source_12
164194       LIMIT l_rows;
164195 --
164196 IF (C_LEVEL_EVENT >= g_log_level) THEN
164197    trace
164198    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
164199    ,p_level    => C_LEVEL_EVENT
164200    ,p_module   => l_log_module);
164201 END IF;
164202 --
164203 EXIT WHEN l_array_entity_id.COUNT = 0;
164204 
164205 -- initialize arrays
164206 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
164207 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
164208 
164209 --
164210 -- Bug 4458708
164211 --
164212 XLA_AE_LINES_PKG.g_LineNumber := 0;
164213 
164214 
164215 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
164216 g_last_hdr_idx := l_array_event_id.LAST;
164217 --
164218 -- loop for the headers. Each iteration is for each header extract row
164219 -- fetched in header cursor
164220 --
164221 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
164222 
164223 --
164224 -- set event info as cache for other routines to refer event attributes
164225 --
164226 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
164227    (p_application_id           => p_application_id
164228    ,p_primary_ledger_id        => p_primary_ledger_id
164229    ,p_base_ledger_id           => p_base_ledger_id
164230    ,p_target_ledger_id         => p_target_ledger_id
164231    ,p_entity_id                => l_array_entity_id(hdr_idx)
164232    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
164233    ,p_entity_code              => l_array_entity_code(hdr_idx)
164234    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
164235    ,p_event_id                 => l_array_event_id(hdr_idx)
164236    ,p_event_class_code         => l_array_class_code(hdr_idx)
164237    ,p_event_type_code          => l_array_event_type(hdr_idx)
164238    ,p_event_number             => l_array_event_number(hdr_idx)
164239    ,p_event_date               => l_array_event_date(hdr_idx)
164240    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
164241    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
164242    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
164243    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
164244    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
164245    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
164246    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
164247    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
164248    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
164249    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
164250    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
164251    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
164252    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
164253    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
164254    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
164255 
164256 --
164257 -- set the status of entry to C_VALID (0)
164258 --
164259 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
164260 
164261 --
164262 -- initialize a row for ae header
164263 --
164264 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
164265 
164266 l_event_id := l_array_event_id(hdr_idx);
164267 
164268 --
164269 -- storing the hdr_idx for event. May be used by line cursor.
164270 --
164271 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
164272 
164273 --
164274 -- store sources from header extract. This can be improved to
164275 -- store only those sources from header extract that may be used in lines
164276 --
164277 
164278 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
164279 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
164280 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
164281 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
164282 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
164283 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
164284 
164285 --
164286 -- initilaize the status of ae headers for diffrent balance types
164287 -- the status is initialised to C_NOT_CREATED (2)
164288 --
164289 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
164290 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
164291 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
164292 
164293 --
164294 -- call api to validate and store accounting attributes for header
164295 --
164296 
164297 ------------------------------------------------------------
164298 -- Accrual Reversal : to get date for Standard Source (NONE)
164299 ------------------------------------------------------------
164300 l_acc_rev_gl_date_source := NULL;
164301 
164302      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
164306 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
164303       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
164304 
164305 
164307 
164308 XLA_AE_HEADER_PKG.SetJeCategoryName;
164309 
164310 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
164311 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
164312 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
164313 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
164314 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
164315 
164316 
164317 -- No header level analytical criteria
164318 
164319 --
164320 --accounting attribute enhancement, bug 3612931
164321 --
164322 l_trx_reversal_source := SUBSTR(NULL, 1,30);
164323 
164324 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
164325    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
164326 
164327    xla_accounting_err_pkg.build_message
164328       (p_appli_s_name            => 'XLA'
164329       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
164330       ,p_token_1                 => 'ACCT_ATTR_NAME'
164331       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
164332       ,p_token_2                 => 'PRODUCT_NAME'
164333       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
164334       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
164335       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
164336       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
164337 
164338 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
164339    --
164340    -- following sets the accounting attributes needed to reverse
164341    -- accounting for a distributeion
164342    --
164343    xla_ae_lines_pkg.SetTrxReversalAttrs
164344       (p_event_id              => l_event_id
164345       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
164346       ,p_trx_reversal_source   => l_trx_reversal_source);
164347 
164348 END IF;
164349 
164350 
164351 ----------------------------------------------------------------
164352 -- 4262811 -  update the header statuses to invalid in need be
164353 ----------------------------------------------------------------
164354 --
164355 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
164356 
164357 
164358   -----------------------------------------------
164359   -- No accrual reversal for the event class/type
164360   -----------------------------------------------
164361 ----------------------------------------------------------------
164362 
164363 --
164364 -- this ends the header loop iteration for one bulk fetch
164365 --
164366 END LOOP;
164367 
164368 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
164369 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
164370 
164371 --
164372 -- insert dummy rows into lines gt table that were created due to
164373 -- transaction reversals
164374 --
164375 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
164376    l_result := XLA_AE_LINES_PKG.InsertLines;
164377 END IF;
164378 
164379 --
164380 -- reset the temp_line_num for each set of events fetched from header
164381 -- cursor rather than doing it for each new event in line cursor
164382 -- Bug 3939231
164383 --
164384 xla_ae_lines_pkg.g_temp_line_num := 0;
164385 
164386 
164387 
164388 --
164389 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
164390 --
164391 --
164392 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164393 
164394       trace
164395          (p_msg      => 'SQL - FETCH line_cur'
164396          ,p_level    => C_LEVEL_STATEMENT
164397          ,p_module   => l_log_module);
164398 
164399 END IF;
164400 --
164401 --
164402 LOOP
164403   --
164404   FETCH line_cur BULK COLLECT INTO
164405         l_array_entity_id
164406       , l_array_legal_entity_id
164407       , l_array_entity_code
164408       , l_array_transaction_num
164409       , l_array_event_id
164410       , l_array_class_code
164411       , l_array_event_type
164412       , l_array_event_number
164413       , l_array_event_date
164414       , l_array_transaction_date
164415       , l_array_reference_num_1
164416       , l_array_reference_num_2
164417       , l_array_reference_num_3
164418       , l_array_reference_num_4
164419       , l_array_reference_char_1
164420       , l_array_reference_char_2
164421       , l_array_reference_char_3
164422       , l_array_reference_char_4
164423       , l_array_reference_date_1
164424       , l_array_reference_date_2
164425       , l_array_reference_date_3
164426       , l_array_reference_date_4
164427       , l_array_event_created_by
164428       , l_array_budgetary_control_flag
164429       , l_array_extract_line_num 
164430       , l_array_source_1
164431       , l_array_source_2
164432       , l_array_source_3
164433       , l_array_source_5
164434       , l_array_source_11
164435       LIMIT l_rows;
164436 
164437   --
164438   IF (C_LEVEL_EVENT >= g_log_level) THEN
164439             trace
164443   END IF;
164440                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
164441                ,p_level    => C_LEVEL_EVENT
164442                ,p_module   => l_log_module);
164444   --
164445   EXIT WHEN l_array_entity_id.count = 0;
164446 
164447   XLA_AE_LINES_PKG.g_rec_lines := null;
164448 
164449 --
164450 -- Bug 4458708
164451 --
164452 XLA_AE_LINES_PKG.g_LineNumber := 0;
164453 --
164454 --
164455 
164456 FOR Idx IN 1..l_array_event_id.count LOOP
164457    --
164458    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
164459    --
164460    l_event_id := l_array_event_id(idx);  -- 5648433
164461 
164462    --
164463    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
164464    --
164465 
164466    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
164467              (g_array_event(l_event_id).array_value_num('header_index'))
164468          ,'N'
164469          ) <> 'Y'
164470    THEN
164471       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164472          trace
164473             (p_msg      => 'Trancaction revesal option is not Y '
164474             ,p_level    => C_LEVEL_STATEMENT
164475             ,p_module   => l_log_module);
164476       END IF;
164477 
164478 --
164479 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
164480 --
164481 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
164482 --
164483 -- set event info as cache for other routines to refer event attributes
164484 --
164485 
164486 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
164487    l_previous_event_id := l_event_id;
164488 
164489    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
164490       (p_application_id           => p_application_id
164491       ,p_primary_ledger_id        => p_primary_ledger_id
164492       ,p_base_ledger_id           => p_base_ledger_id
164493       ,p_target_ledger_id         => p_target_ledger_id
164494       ,p_entity_id                => l_array_entity_id(Idx)
164495       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
164496       ,p_entity_code              => l_array_entity_code(Idx)
164497       ,p_transaction_num          => l_array_transaction_num(Idx)
164498       ,p_event_id                 => l_array_event_id(Idx)
164499       ,p_event_class_code         => l_array_class_code(Idx)
164500       ,p_event_type_code          => l_array_event_type(Idx)
164501       ,p_event_number             => l_array_event_number(Idx)
164502       ,p_event_date               => l_array_event_date(Idx)
164503       ,p_transaction_date         => l_array_transaction_date(Idx)
164504       ,p_reference_num_1          => l_array_reference_num_1(Idx)
164505       ,p_reference_num_2          => l_array_reference_num_2(Idx)
164506       ,p_reference_num_3          => l_array_reference_num_3(Idx)
164507       ,p_reference_num_4          => l_array_reference_num_4(Idx)
164508       ,p_reference_char_1         => l_array_reference_char_1(Idx)
164509       ,p_reference_char_2         => l_array_reference_char_2(Idx)
164510       ,p_reference_char_3         => l_array_reference_char_3(Idx)
164511       ,p_reference_char_4         => l_array_reference_char_4(Idx)
164512       ,p_reference_date_1         => l_array_reference_date_1(Idx)
164513       ,p_reference_date_2         => l_array_reference_date_2(Idx)
164514       ,p_reference_date_3         => l_array_reference_date_3(Idx)
164515       ,p_reference_date_4         => l_array_reference_date_4(Idx)
164516       ,p_event_created_by         => l_array_event_created_by(Idx)
164517       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
164518        --
164519 END IF;
164520 
164521 
164522 
164523 --
164524 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
164525 
164526 l_acct_reversal_source := SUBSTR(NULL, 1,30);
164527 
164528 IF l_continue_with_lines THEN
164529    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
164530       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
164531 
164532       xla_accounting_err_pkg.build_message
164533          (p_appli_s_name            => 'XLA'
164534          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
164535          ,p_token_1                 => 'LINE_NUMBER'
164536          ,p_value_1                 => l_array_extract_line_num(Idx)
164537          ,p_token_2                 => 'PRODUCT_NAME'
164538          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
164539          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
164540          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
164541          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
164542 
164543    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
164544       --
164545       -- following sets the accounting attributes needed to reverse
164546       -- accounting for a distributeion
164547       --
164548 
164549       --
164550       -- 5217187
164551       --
164552       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
164553       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
164554                                        g_array_event(l_event_id).array_value_num('header_index'));
164555       --
164556       --
164557 
164558       -- No reversal code generated
164559 
164560       xla_ae_lines_pkg.SetAcctReversalAttrs
164564          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
164561          (p_event_id             => l_event_id
164562          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
164563          ,p_calculate_acctd_flag => l_calculate_acctd_flag
164565    END IF;
164566 
164567    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
164568        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
164569 
164570 --
164571 AcctLineType_93 (
164572  p_application_id  => p_application_id
164573  ,p_event_id     => l_event_id
164574  ,p_calculate_acctd_flag => l_calculate_acctd_flag
164575  ,p_calculate_g_l_flag => l_calculate_g_l_flag
164576  ,p_actual_flag => l_actual_flag
164577  ,p_balance_type_code => l_balance_type_code
164578  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
164579  
164580  , p_source_1 => l_array_source_1(Idx)
164581  , p_source_2 => l_array_source_2(Idx)
164582  , p_source_3 => l_array_source_3(Idx)
164583  , p_source_5 => l_array_source_5(Idx)
164584  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
164585  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
164586  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
164587  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
164588  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
164589  , p_source_11 => l_array_source_11(Idx)
164590  );
164591 If(l_balance_type_code = 'A') THEN
164592   l_actual_gain_loss_ref := l_gain_or_loss_ref;
164593 END IF;
164594 
164595 --
164596 
164597 
164598 --
164599 AcctLineType_119 (
164600  p_application_id  => p_application_id
164601  ,p_event_id     => l_event_id
164602  ,p_calculate_acctd_flag => l_calculate_acctd_flag
164603  ,p_calculate_g_l_flag => l_calculate_g_l_flag
164604  ,p_actual_flag => l_actual_flag
164605  ,p_balance_type_code => l_balance_type_code
164606  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
164607  
164608  , p_source_1 => l_array_source_1(Idx)
164609  , p_source_2 => l_array_source_2(Idx)
164610  , p_source_3 => l_array_source_3(Idx)
164611  , p_source_5 => l_array_source_5(Idx)
164612  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
164613  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
164614  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
164615  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
164616  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
164617  , p_source_11 => l_array_source_11(Idx)
164618  );
164619 If(l_balance_type_code = 'A') THEN
164620   l_actual_gain_loss_ref := l_gain_or_loss_ref;
164621 END IF;
164622 
164623 --
164624 
164625 
164626 --
164627 AcctLineType_145 (
164628  p_application_id  => p_application_id
164629  ,p_event_id     => l_event_id
164630  ,p_calculate_acctd_flag => l_calculate_acctd_flag
164631  ,p_calculate_g_l_flag => l_calculate_g_l_flag
164632  ,p_actual_flag => l_actual_flag
164633  ,p_balance_type_code => l_balance_type_code
164634  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
164635  
164636  , p_source_1 => l_array_source_1(Idx)
164637  , p_source_2 => l_array_source_2(Idx)
164638  , p_source_3 => l_array_source_3(Idx)
164639  , p_source_5 => l_array_source_5(Idx)
164640  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
164641  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
164642  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
164643  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
164644  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
164645  , p_source_11 => l_array_source_11(Idx)
164646  );
164647 If(l_balance_type_code = 'A') THEN
164648   l_actual_gain_loss_ref := l_gain_or_loss_ref;
164649 END IF;
164650 
164651 --
164652 
164653       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
164654       -- or secondary ledger that has different currency with primary
164655       -- or alc that is calculated by sla
164656       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
164657             (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'))
164658 
164659 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
164660 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
164661           AND (l_actual_flag = 'A')) THEN
164662         XLA_AE_LINES_PKG.CreateGainOrLossLines(
164663           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
164664          ,p_application_id   => p_application_id
164665          ,p_amb_context_code => 'DEFAULT'
164666          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
164667          ,p_event_class_code => C_EVENT_CLASS_CODE
164668          ,p_event_type_code  => C_EVENT_TYPE_CODE
164669          
164670          ,p_gain_ccid        => -1
164671          ,p_loss_ccid        => -1
164672 
164673          ,p_actual_flag      => l_actual_flag
164674          ,p_enc_flag         => null
164675          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
164676          ,p_enc_g_l_ref      => null
164677          );
164678       END IF;
164679    END IF;
164680 END IF;
164681 
164682    ELSE
164683       --
164687          trace
164684       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
164685       --
164686       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164688             (p_msg      => 'Trancaction revesal option is Y'
164689             ,p_level    => C_LEVEL_STATEMENT
164690             ,p_module   => l_log_module);
164691       END IF;
164692    END IF;
164693 
164694 END LOOP;
164695 l_result := XLA_AE_LINES_PKG.InsertLines ;
164696 end loop;
164697 close line_cur;
164698 
164699 
164700 --
164701 -- insert headers into xla_ae_headers_gt table
164702 --
164703 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
164704 
164705 -- insert into errors table here.
164706 
164707 END LOOP;
164708 
164709 --
164710 -- 4865292
164711 --
164712 -- Compare g_hdr_extract_count with event count in
164713 -- CreateHeadersAndLines.
164714 --
164715 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
164716 
164717 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164718    trace (p_msg     => '# rows extracted from header extract objects '
164719                     || ' (running total): '
164720                     || g_hdr_extract_count
164721          ,p_level   => C_LEVEL_STATEMENT
164722          ,p_module  => l_log_module);
164723 END IF;
164724 
164725 CLOSE header_cur;
164726 --
164727 
164728 --
164729 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164730    trace
164731       (p_msg      => 'END of EventType_284'
164732       ,p_level    => C_LEVEL_PROCEDURE
164733       ,p_module   => l_log_module);
164734 END IF;
164735 --
164736 RETURN l_result;
164737 EXCEPTION
164738 WHEN xla_exceptions_pkg.application_exception THEN
164739    
164740 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
164741 
164742    
164743 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
164744 
164745    RAISE;
164746 
164747 WHEN NO_DATA_FOUND THEN
164748 
164749 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
164750 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
164751 
164752 FOR header_record IN header_cur
164753 LOOP
164754     l_array_header_events(header_record.event_id) := header_record.event_id;
164755 END LOOP;
164756 
164757 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
164758 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
164759 
164760 fnd_file.put_line(fnd_file.LOG, '                    ');
164761 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
164762 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
164763 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
164764 
164765 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
164766 LOOP
164767 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
164768 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
164769         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
164770 	END IF;
164771 END LOOP;
164772 
164773 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
164774 fnd_file.put_line(fnd_file.LOG, '                    ');
164775 
164776 
164777 xla_exceptions_pkg.raise_message
164778       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_284');
164779 
164780 
164781 WHEN OTHERS THEN
164782    xla_exceptions_pkg.raise_message
164783       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_284');
164784 END EventType_284;
164785 --
164786 
164787 ---------------------------------------
164788 --
164789 -- PRIVATE PROCEDURE
164790 --         insert_sources_285
164791 --
164792 ----------------------------------------
164793 --
164794 PROCEDURE insert_sources_285(
164795                                 p_target_ledger_id       IN NUMBER
164796                               , p_language               IN VARCHAR2
164797                               , p_sla_ledger_id          IN NUMBER
164798                               , p_pad_start_date         IN DATE
164799                               , p_pad_end_date           IN DATE
164800                          )
164801 IS
164802 
164803 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_PO_RCV_ADJ';
164804 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DELIVER';
164805 p_apps_owner                   VARCHAR2(30);
164806 l_log_module                   VARCHAR2(240);
164807 BEGIN
164808 IF g_log_enabled THEN
164809       l_log_module := C_DEFAULT_MODULE||'.insert_sources_285';
164810 END IF;
164811 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164812 
164813       trace
164814          (p_msg      => 'BEGIN of insert_sources_285'
164815          ,p_level    => C_LEVEL_PROCEDURE
164816          ,p_module   => l_log_module);
164817 
164818 END IF;
164819 
164820 -- select APPS owner
164821 SELECT oracle_username
164822   INTO p_apps_owner
164823   FROM fnd_oracle_userid
164824  WHERE read_only_flag = 'U'
164825 ;
164826 
164827 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164828       trace
164829          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
164830                         ' - p_language = '||p_language||
164831                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
164835          ,p_level    => C_LEVEL_STATEMENT
164832                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
164833                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
164834                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
164836          ,p_module   => l_log_module);
164837 END IF;
164838 
164839 
164840 --
164841 INSERT INTO xla_diag_sources --hdr1
164842 (
164843         event_id
164844       , ledger_id
164845       , sla_ledger_id
164846       , description_language
164847       , object_name
164848       , object_type_code
164849       , line_number
164850       , source_application_id
164851       , source_type_code
164852       , source_code
164853       , source_value
164854       , source_meaning
164855       , created_by
164856       , creation_date
164857       , last_update_date
164858       , last_updated_by
164859       , last_update_login
164860       , program_update_date
164861       , program_application_id
164862       , program_id
164863       , request_id
164864 )
164865 SELECT
164866         event_id
164867       , p_target_ledger_id
164868       , p_sla_ledger_id
164869       , p_language
164870       , object_name
164871       , object_type_code
164872       , line_number
164873       , source_application_id
164874       , source_type_code
164875       , source_code
164876       , SUBSTR(source_value ,1,1996)
164877       , SUBSTR(source_meaning,1,200)
164878       , xla_environment_pkg.g_Usr_Id
164879       , TRUNC(SYSDATE)
164880       , TRUNC(SYSDATE)
164881       , xla_environment_pkg.g_Usr_Id
164882       , xla_environment_pkg.g_Login_Id
164883       , TRUNC(SYSDATE)
164884       , xla_environment_pkg.g_Prog_Appl_Id
164885       , xla_environment_pkg.g_Prog_Id
164886       , xla_environment_pkg.g_Req_Id
164887   FROM (
164888        SELECT xet.event_id                  event_id
164889             , 0                             line_number
164890             , CASE r
164891                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
164892                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
164893                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
164894                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
164895                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
164896                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
164897                 
164898                ELSE null
164899               END                           object_name
164900             , CASE r
164901                 WHEN 1 THEN 'HEADER' 
164902                 WHEN 2 THEN 'HEADER' 
164903                 WHEN 3 THEN 'HEADER' 
164904                 WHEN 4 THEN 'HEADER' 
164905                 WHEN 5 THEN 'HEADER' 
164906                 WHEN 6 THEN 'HEADER' 
164907                 
164908                 ELSE null
164909               END                           object_type_code
164910             , CASE r
164911                 WHEN 1 THEN '555' 
164912                 WHEN 2 THEN '555' 
164913                 WHEN 3 THEN '555' 
164914                 WHEN 4 THEN '555' 
164915                 WHEN 5 THEN '555' 
164916                 WHEN 6 THEN '555' 
164917                 
164918                 ELSE null
164919               END                           source_application_id
164920             , 'S'             source_type_code
164921             , CASE r
164922                 WHEN 1 THEN 'ENTITY_CODE' 
164923                 WHEN 2 THEN 'CURRENCY_CODE' 
164924                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
164925                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
164926                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
164927                 WHEN 6 THEN 'TRANSACTION_DATE' 
164928                 
164929                 ELSE null
164930               END                           source_code
164931             , CASE r
164932                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
164933                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
164934                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
164935                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
164936                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
164937                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
164938                 
164939                 ELSE null
164940               END                           source_value
164941             , CASE r
164942                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
164943                           1010186
164944                          ,TO_CHAR(h1.CURRENCY_CODE)
164945                          ,'CURRENCY_CODE'
164946                          ,'S'
164947                          ,555)
164948                 
164949                 ELSE null
164950               END               source_meaning
164951         FROM xla_events_gt     xet  
164952       , GMF_XLA_EXTRACT_HEADERS  h1
164953             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
164954        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
164955          AND xet.event_type_code = C_EVENT_TYPE_CODE
164956             AND h1.event_id = xet.event_id
164957 
164958 )
164959 ;
164960 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164961 
164962       trace
164963          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
164964          ,p_level    => C_LEVEL_STATEMENT
164965          ,p_module   => l_log_module);
164966 
164967 END IF;
164968 --
164969 
164970 
164971 
164972 --
164973 INSERT INTO xla_diag_sources --line1
164977       , sla_ledger_id
164974 (
164975         event_id
164976       , ledger_id
164978       , description_language
164979       , object_name
164980       , object_type_code
164981       , line_number
164982       , source_application_id
164983       , source_type_code
164984       , source_code
164985       , source_value
164986       , source_meaning
164987       , created_by
164988       , creation_date
164989       , last_update_date
164990       , last_updated_by
164991       , last_update_login
164992       , program_update_date
164993       , program_application_id
164994       , program_id
164995       , request_id
164996 )
164997 SELECT  event_id
164998       , p_target_ledger_id
164999       , p_sla_ledger_id
165000       , p_language
165001       , object_name
165002       , object_type_code
165003       , line_number
165004       , source_application_id
165005       , source_type_code
165006       , source_code
165007       , SUBSTR(source_value,1,1996)
165008       , SUBSTR(source_meaning,1,200)
165009       , xla_environment_pkg.g_Usr_Id
165010       , TRUNC(SYSDATE)
165011       , TRUNC(SYSDATE)
165012       , xla_environment_pkg.g_Usr_Id
165013       , xla_environment_pkg.g_Login_Id
165014       , TRUNC(SYSDATE)
165015       , xla_environment_pkg.g_Prog_Appl_Id
165016       , xla_environment_pkg.g_Prog_Id
165017       , xla_environment_pkg.g_Req_Id
165018   FROM (
165019        SELECT xet.event_id                  event_id
165020             , l2.line_number                 line_number
165021             , CASE r
165022                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
165023                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
165024                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
165025                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
165026                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
165027                 
165028                ELSE null
165029               END                           object_name
165030             , CASE r
165031                 WHEN 1 THEN 'LINE' 
165032                 WHEN 2 THEN 'LINE' 
165033                 WHEN 3 THEN 'LINE' 
165034                 WHEN 4 THEN 'LINE' 
165035                 WHEN 5 THEN 'LINE' 
165036                 
165037                 ELSE null
165038               END                           object_type_code
165039             , CASE r
165040                 WHEN 1 THEN '555' 
165041                 WHEN 2 THEN '555' 
165042                 WHEN 3 THEN '555' 
165043                 WHEN 4 THEN '555' 
165044                 WHEN 5 THEN '555' 
165045                 
165046                 ELSE null
165047               END                           source_application_id
165048             , 'S'             source_type_code
165049             , CASE r
165050                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
165051                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
165052                 WHEN 3 THEN 'ENTERED_AMOUNT' 
165053                 WHEN 4 THEN 'LINE_ID' 
165054                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
165055                 
165056                 ELSE null
165057               END                           source_code
165058             , CASE r
165059                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
165060                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
165061                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
165062                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
165063                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
165064                 
165065                 ELSE null
165066               END                           source_value
165067             , null              source_meaning
165068          FROM  xla_events_gt     xet  
165069         , GMF_XLA_EXTRACT_LINES  l2
165070             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
165071         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
165072           AND xet.event_type_code = C_EVENT_TYPE_CODE
165073             AND l2.event_id          = xet.event_id
165074 
165075 )
165076 ;
165077 --
165078 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165079 
165080       trace
165081          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
165082          ,p_level    => C_LEVEL_STATEMENT
165083          ,p_module   => l_log_module);
165084 
165085 END IF;
165086 
165087 
165088 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
165089       trace
165090          (p_msg      => 'END of insert_sources_285'
165091          ,p_level    => C_LEVEL_PROCEDURE
165092          ,p_module   => l_log_module);
165093 END IF;
165094 EXCEPTION
165095   WHEN xla_exceptions_pkg.application_exception THEN
165096       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
165097             trace
165098                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
165099                ,p_level    => C_LEVEL_EXCEPTION
165100                ,p_module   => l_log_module);
165101       END IF;
165102       RAISE;
165103   WHEN OTHERS THEN
165104       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
165105             trace
165106                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
165107                ,p_level    => C_LEVEL_EXCEPTION
165108                ,p_module   => l_log_module);
165109        END IF;
165110        xla_exceptions_pkg.raise_message
165111            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_285');
165112 END insert_sources_285;
165113 --
165117 -- PRIVATE FUNCTION
165114 
165115 ---------------------------------------
165116 --
165118 --         EventType_285
165119 --
165120 ----------------------------------------
165121 --
165122 FUNCTION EventType_285
165123        (p_application_id         IN NUMBER
165124        ,p_base_ledger_id         IN NUMBER
165125        ,p_target_ledger_id       IN NUMBER
165126        ,p_language               IN VARCHAR2
165127        ,p_currency_code          IN VARCHAR2
165128        ,p_sla_ledger_id          IN NUMBER
165129        ,p_pad_start_date         IN DATE
165130        ,p_pad_end_date           IN DATE
165131        ,p_primary_ledger_id      IN NUMBER)
165132 RETURN BOOLEAN IS
165133 --
165134 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_PO_RCV_ADJ';
165135 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DELIVER';
165136 
165137 l_calculate_acctd_flag   VARCHAR2(1) :='N';
165138 l_calculate_g_l_flag     VARCHAR2(1) :='N';
165139 --
165140 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165141 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165142 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
165143 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165144 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165145 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
165146 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
165147 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165148 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165149 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165150 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165151 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165152 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165153 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165154 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165155 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165156 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165157 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165158 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165159 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165160 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165161 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165162 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
165163 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
165164 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
165165 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
165166 
165167 l_event_id                             NUMBER;
165168 l_previous_event_id                    NUMBER;
165169 l_first_event_id                       NUMBER;
165170 l_last_event_id                        NUMBER;
165171 
165172 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
165173 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
165174 --
165175 --
165176 l_result                    BOOLEAN := TRUE;
165177 l_rows                      NUMBER  := 1000;
165178 l_event_type_name           VARCHAR2(80) := 'Logical PO Receipt Adjustment';
165179 l_event_class_name          VARCHAR2(80) := 'Deliver to or Return from Inventory';
165180 l_description               VARCHAR2(4000);
165181 l_transaction_reversal      NUMBER;
165182 l_ae_header_id              NUMBER;
165183 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
165184 l_log_module                VARCHAR2(240);
165185 --
165186 l_acct_reversal_source      VARCHAR2(30);
165187 l_trx_reversal_source       VARCHAR2(30);
165188 
165189 l_continue_with_lines       BOOLEAN := TRUE;
165190 --
165191 l_acc_rev_gl_date_source    DATE;                      -- 4262811
165192 --
165193 type t_array_event_id is table of number index by binary_integer;
165194 
165195 l_rec_array_event                    t_rec_array_event;
165196 l_null_rec_array_event               t_rec_array_event;
165197 l_array_ae_header_id                 xla_number_array_type;
165198 l_actual_flag                        VARCHAR2(1) := NULL;
165199 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
165200 l_balance_type_code                  VARCHAR2(1) :=NULL;
165201 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
165202 
165203 --
165204 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
165205 --
165206 
165207 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
165208 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
165209 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
165210 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
165211 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
165215 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
165212 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
165213 
165214 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
165216 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
165217 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
165218 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
165219 
165220 l_array_source_6              t_array_source_6;
165221 l_array_source_7              t_array_source_7;
165222 l_array_source_8              t_array_source_8;
165223 l_array_source_9              t_array_source_9;
165224 l_array_source_10              t_array_source_10;
165225 l_array_source_12              t_array_source_12;
165226 
165227 l_array_source_1      t_array_source_1;
165228 l_array_source_2      t_array_source_2;
165229 l_array_source_3      t_array_source_3;
165230 l_array_source_5      t_array_source_5;
165231 l_array_source_11      t_array_source_11;
165232 
165233 --
165234 CURSOR header_cur
165235 IS
165236 SELECT /*+ leading(xet) cardinality(xet,1) */
165237 -- Event Type Code: LOG_PO_RCV_ADJ
165238 -- Event Class Code: DELIVER
165239     xet.entity_id
165240   , xet.legal_entity_id
165241   , xet.entity_code
165242   , xet.transaction_number
165243   , xet.event_id
165244   , xet.event_class_code
165245   , xet.event_type_code
165246   , xet.event_number
165247   , xet.event_date
165248   , xet.transaction_date
165249   , xet.reference_num_1
165250   , xet.reference_num_2
165251   , xet.reference_num_3
165252   , xet.reference_num_4
165253   , xet.reference_char_1
165254   , xet.reference_char_2
165255   , xet.reference_char_3
165256   , xet.reference_char_4
165257   , xet.reference_date_1
165258   , xet.reference_date_2
165259   , xet.reference_date_3
165260   , xet.reference_date_4
165261   , xet.event_created_by
165262   , xet.budgetary_control_flag 
165263   , h1.ENTITY_CODE    source_6
165264   , h1.CURRENCY_CODE    source_7
165265   , h1.CURRENCY_CONVERSION_DATE    source_8
165266   , h1.CURRENCY_CONVERSION_RATE    source_9
165267   , h1.CURRENCY_CONVERSION_TYPE    source_10
165268   , h1.TRANSACTION_DATE    source_12
165269   FROM xla_events_gt     xet 
165270   , GMF_XLA_EXTRACT_HEADERS  h1
165271  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
165272    and xet.event_type_code = C_EVENT_TYPE_CODE
165273    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
165274 
165275  ORDER BY event_id
165276 ;
165277 
165278 
165279 --
165280 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
165281 IS
165282 SELECT /*+ leading(xet) cardinality(xet,1) */
165283 -- Event Type Code: LOG_PO_RCV_ADJ
165284 -- Event Class Code: DELIVER
165285     xet.entity_id
165286    ,xet.legal_entity_id
165287    ,xet.entity_code
165288    ,xet.transaction_number
165289    ,xet.event_id
165290    ,xet.event_class_code
165291    ,xet.event_type_code
165292    ,xet.event_number
165293    ,xet.event_date
165294    ,xet.transaction_date
165295    ,xet.reference_num_1
165296    ,xet.reference_num_2
165297    ,xet.reference_num_3
165298    ,xet.reference_num_4
165299    ,xet.reference_char_1
165300    ,xet.reference_char_2
165301    ,xet.reference_char_3
165302    ,xet.reference_char_4
165303    ,xet.reference_date_1
165304    ,xet.reference_date_2
165305    ,xet.reference_date_3
165306    ,xet.reference_date_4
165307    ,xet.event_created_by
165308    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
165309   , l2.TRANSACTION_ACCOUNT_ID    source_1
165310   , l2.JOURNAL_LINE_TYPE    source_2
165311   , l2.ENTERED_AMOUNT    source_3
165312   , l2.LINE_ID    source_5
165313   , l2.ACCOUNTED_AMOUNT    source_11
165314   FROM xla_events_gt     xet 
165315   , GMF_XLA_EXTRACT_LINES  l2
165316  WHERE xet.event_id between x_first_event_id and x_last_event_id
165317    and xet.event_date between p_pad_start_date and p_pad_end_date
165318    and xet.event_type_code = C_EVENT_TYPE_CODE
165319    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
165320 ;
165321 
165322 --
165323 BEGIN
165324 IF g_log_enabled THEN
165325    l_log_module := C_DEFAULT_MODULE||'.EventType_285';
165326 END IF;
165327 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
165328    trace
165329       (p_msg      => 'BEGIN of EventType_285'
165330       ,p_level    => C_LEVEL_PROCEDURE
165331       ,p_module   => l_log_module);
165332 END IF;
165333 
165334 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165335    trace
165336       (p_msg      => 'p_application_id = '||p_application_id||
165337                      ' - p_base_ledger_id = '||p_base_ledger_id||
165338                      ' - p_target_ledger_id  = '||p_target_ledger_id||
165339                      ' - p_language = '||p_language||
165340                      ' - p_currency_code = '||p_currency_code||
165341                      ' - p_sla_ledger_id = '||p_sla_ledger_id
165342       ,p_level    => C_LEVEL_STATEMENT
165343       ,p_module   => l_log_module);
165344 END IF;
165345 --
165346 -- initialze arrays
165347 --
165348 g_array_event.DELETE;
165349 l_rec_array_event := l_null_rec_array_event;
165350 --
165354 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
165351 --------------------------------------
165352 -- 4262811 Initialze MPA Line Number
165353 --------------------------------------
165355 
165356 --
165357 
165358 --
165359 OPEN header_cur;
165360 --
165361 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165362    trace
165363    (p_msg      => 'SQL - FETCH header_cur'
165364    ,p_level    => C_LEVEL_STATEMENT
165365    ,p_module   => l_log_module);
165366 END IF;
165367 --
165368 LOOP
165369 FETCH header_cur BULK COLLECT INTO
165370         l_array_entity_id
165371       , l_array_legal_entity_id
165372       , l_array_entity_code
165373       , l_array_transaction_num
165374       , l_array_event_id
165375       , l_array_class_code
165376       , l_array_event_type
165377       , l_array_event_number
165378       , l_array_event_date
165379       , l_array_transaction_date
165380       , l_array_reference_num_1
165381       , l_array_reference_num_2
165382       , l_array_reference_num_3
165383       , l_array_reference_num_4
165384       , l_array_reference_char_1
165385       , l_array_reference_char_2
165386       , l_array_reference_char_3
165387       , l_array_reference_char_4
165388       , l_array_reference_date_1
165389       , l_array_reference_date_2
165390       , l_array_reference_date_3
165391       , l_array_reference_date_4
165392       , l_array_event_created_by
165393       , l_array_budgetary_control_flag 
165394       , l_array_source_6
165395       , l_array_source_7
165396       , l_array_source_8
165397       , l_array_source_9
165398       , l_array_source_10
165399       , l_array_source_12
165400       LIMIT l_rows;
165401 --
165402 IF (C_LEVEL_EVENT >= g_log_level) THEN
165403    trace
165404    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
165405    ,p_level    => C_LEVEL_EVENT
165406    ,p_module   => l_log_module);
165407 END IF;
165408 --
165409 EXIT WHEN l_array_entity_id.COUNT = 0;
165410 
165411 -- initialize arrays
165412 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
165413 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
165414 
165415 --
165416 -- Bug 4458708
165417 --
165418 XLA_AE_LINES_PKG.g_LineNumber := 0;
165419 
165420 
165421 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
165422 g_last_hdr_idx := l_array_event_id.LAST;
165423 --
165424 -- loop for the headers. Each iteration is for each header extract row
165425 -- fetched in header cursor
165426 --
165427 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
165428 
165429 --
165430 -- set event info as cache for other routines to refer event attributes
165431 --
165432 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
165433    (p_application_id           => p_application_id
165434    ,p_primary_ledger_id        => p_primary_ledger_id
165435    ,p_base_ledger_id           => p_base_ledger_id
165436    ,p_target_ledger_id         => p_target_ledger_id
165437    ,p_entity_id                => l_array_entity_id(hdr_idx)
165438    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
165439    ,p_entity_code              => l_array_entity_code(hdr_idx)
165440    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
165441    ,p_event_id                 => l_array_event_id(hdr_idx)
165442    ,p_event_class_code         => l_array_class_code(hdr_idx)
165443    ,p_event_type_code          => l_array_event_type(hdr_idx)
165444    ,p_event_number             => l_array_event_number(hdr_idx)
165445    ,p_event_date               => l_array_event_date(hdr_idx)
165446    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
165447    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
165448    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
165449    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
165450    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
165451    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
165452    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
165453    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
165454    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
165455    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
165456    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
165457    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
165458    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
165459    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
165460    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
165461 
165462 --
165463 -- set the status of entry to C_VALID (0)
165464 --
165465 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
165466 
165467 --
165468 -- initialize a row for ae header
165469 --
165470 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
165471 
165472 l_event_id := l_array_event_id(hdr_idx);
165473 
165474 --
165475 -- storing the hdr_idx for event. May be used by line cursor.
165476 --
165477 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
165478 
165479 --
165480 -- store sources from header extract. This can be improved to
165481 -- store only those sources from header extract that may be used in lines
165482 --
165483 
165484 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
165485 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
165489 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
165486 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
165487 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
165488 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
165490 
165491 --
165492 -- initilaize the status of ae headers for diffrent balance types
165493 -- the status is initialised to C_NOT_CREATED (2)
165494 --
165495 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
165496 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
165497 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
165498 
165499 --
165500 -- call api to validate and store accounting attributes for header
165501 --
165502 
165503 ------------------------------------------------------------
165504 -- Accrual Reversal : to get date for Standard Source (NONE)
165505 ------------------------------------------------------------
165506 l_acc_rev_gl_date_source := NULL;
165507 
165508      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
165509       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
165510 
165511 
165512 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
165513 
165514 XLA_AE_HEADER_PKG.SetJeCategoryName;
165515 
165516 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
165517 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
165518 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
165519 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
165520 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
165521 
165522 
165523 -- No header level analytical criteria
165524 
165525 --
165526 --accounting attribute enhancement, bug 3612931
165527 --
165528 l_trx_reversal_source := SUBSTR(NULL, 1,30);
165529 
165530 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
165531    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
165532 
165533    xla_accounting_err_pkg.build_message
165534       (p_appli_s_name            => 'XLA'
165535       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
165536       ,p_token_1                 => 'ACCT_ATTR_NAME'
165537       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
165538       ,p_token_2                 => 'PRODUCT_NAME'
165539       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
165540       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
165541       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
165542       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
165543 
165544 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
165545    --
165546    -- following sets the accounting attributes needed to reverse
165547    -- accounting for a distributeion
165548    --
165549    xla_ae_lines_pkg.SetTrxReversalAttrs
165550       (p_event_id              => l_event_id
165551       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
165552       ,p_trx_reversal_source   => l_trx_reversal_source);
165553 
165554 END IF;
165555 
165556 
165557 ----------------------------------------------------------------
165558 -- 4262811 -  update the header statuses to invalid in need be
165559 ----------------------------------------------------------------
165560 --
165561 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
165562 
165563 
165564   -----------------------------------------------
165565   -- No accrual reversal for the event class/type
165566   -----------------------------------------------
165567 ----------------------------------------------------------------
165568 
165569 --
165570 -- this ends the header loop iteration for one bulk fetch
165571 --
165572 END LOOP;
165573 
165574 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
165575 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
165576 
165577 --
165578 -- insert dummy rows into lines gt table that were created due to
165579 -- transaction reversals
165580 --
165581 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
165582    l_result := XLA_AE_LINES_PKG.InsertLines;
165583 END IF;
165584 
165585 --
165586 -- reset the temp_line_num for each set of events fetched from header
165587 -- cursor rather than doing it for each new event in line cursor
165588 -- Bug 3939231
165589 --
165590 xla_ae_lines_pkg.g_temp_line_num := 0;
165591 
165592 
165593 
165594 --
165595 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
165596 --
165597 --
165598 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165599 
165600       trace
165601          (p_msg      => 'SQL - FETCH line_cur'
165602          ,p_level    => C_LEVEL_STATEMENT
165603          ,p_module   => l_log_module);
165604 
165605 END IF;
165606 --
165607 --
165608 LOOP
165609   --
165610   FETCH line_cur BULK COLLECT INTO
165611         l_array_entity_id
165615       , l_array_event_id
165612       , l_array_legal_entity_id
165613       , l_array_entity_code
165614       , l_array_transaction_num
165616       , l_array_class_code
165617       , l_array_event_type
165618       , l_array_event_number
165619       , l_array_event_date
165620       , l_array_transaction_date
165621       , l_array_reference_num_1
165622       , l_array_reference_num_2
165623       , l_array_reference_num_3
165624       , l_array_reference_num_4
165625       , l_array_reference_char_1
165626       , l_array_reference_char_2
165627       , l_array_reference_char_3
165628       , l_array_reference_char_4
165629       , l_array_reference_date_1
165630       , l_array_reference_date_2
165631       , l_array_reference_date_3
165632       , l_array_reference_date_4
165633       , l_array_event_created_by
165634       , l_array_budgetary_control_flag
165635       , l_array_extract_line_num 
165636       , l_array_source_1
165637       , l_array_source_2
165638       , l_array_source_3
165639       , l_array_source_5
165640       , l_array_source_11
165641       LIMIT l_rows;
165642 
165643   --
165644   IF (C_LEVEL_EVENT >= g_log_level) THEN
165645             trace
165646                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
165647                ,p_level    => C_LEVEL_EVENT
165648                ,p_module   => l_log_module);
165649   END IF;
165650   --
165651   EXIT WHEN l_array_entity_id.count = 0;
165652 
165653   XLA_AE_LINES_PKG.g_rec_lines := null;
165654 
165655 --
165656 -- Bug 4458708
165657 --
165658 XLA_AE_LINES_PKG.g_LineNumber := 0;
165659 --
165660 --
165661 
165662 FOR Idx IN 1..l_array_event_id.count LOOP
165663    --
165664    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
165665    --
165666    l_event_id := l_array_event_id(idx);  -- 5648433
165667 
165668    --
165669    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
165670    --
165671 
165672    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
165673              (g_array_event(l_event_id).array_value_num('header_index'))
165674          ,'N'
165675          ) <> 'Y'
165676    THEN
165677       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165678          trace
165679             (p_msg      => 'Trancaction revesal option is not Y '
165680             ,p_level    => C_LEVEL_STATEMENT
165681             ,p_module   => l_log_module);
165682       END IF;
165683 
165684 --
165685 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
165686 --
165687 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
165688 --
165689 -- set event info as cache for other routines to refer event attributes
165690 --
165691 
165692 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
165693    l_previous_event_id := l_event_id;
165694 
165695    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
165696       (p_application_id           => p_application_id
165697       ,p_primary_ledger_id        => p_primary_ledger_id
165698       ,p_base_ledger_id           => p_base_ledger_id
165699       ,p_target_ledger_id         => p_target_ledger_id
165700       ,p_entity_id                => l_array_entity_id(Idx)
165701       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
165702       ,p_entity_code              => l_array_entity_code(Idx)
165703       ,p_transaction_num          => l_array_transaction_num(Idx)
165704       ,p_event_id                 => l_array_event_id(Idx)
165705       ,p_event_class_code         => l_array_class_code(Idx)
165706       ,p_event_type_code          => l_array_event_type(Idx)
165707       ,p_event_number             => l_array_event_number(Idx)
165708       ,p_event_date               => l_array_event_date(Idx)
165709       ,p_transaction_date         => l_array_transaction_date(Idx)
165710       ,p_reference_num_1          => l_array_reference_num_1(Idx)
165711       ,p_reference_num_2          => l_array_reference_num_2(Idx)
165712       ,p_reference_num_3          => l_array_reference_num_3(Idx)
165713       ,p_reference_num_4          => l_array_reference_num_4(Idx)
165714       ,p_reference_char_1         => l_array_reference_char_1(Idx)
165715       ,p_reference_char_2         => l_array_reference_char_2(Idx)
165716       ,p_reference_char_3         => l_array_reference_char_3(Idx)
165717       ,p_reference_char_4         => l_array_reference_char_4(Idx)
165718       ,p_reference_date_1         => l_array_reference_date_1(Idx)
165719       ,p_reference_date_2         => l_array_reference_date_2(Idx)
165720       ,p_reference_date_3         => l_array_reference_date_3(Idx)
165721       ,p_reference_date_4         => l_array_reference_date_4(Idx)
165722       ,p_event_created_by         => l_array_event_created_by(Idx)
165723       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
165724        --
165725 END IF;
165726 
165727 
165728 
165729 --
165730 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
165731 
165732 l_acct_reversal_source := SUBSTR(NULL, 1,30);
165733 
165734 IF l_continue_with_lines THEN
165735    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
165736       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
165737 
165738       xla_accounting_err_pkg.build_message
165739          (p_appli_s_name            => 'XLA'
165740          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
165744          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
165741          ,p_token_1                 => 'LINE_NUMBER'
165742          ,p_value_1                 => l_array_extract_line_num(Idx)
165743          ,p_token_2                 => 'PRODUCT_NAME'
165745          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
165746          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
165747          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
165748 
165749    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
165750       --
165751       -- following sets the accounting attributes needed to reverse
165752       -- accounting for a distributeion
165753       --
165754 
165755       --
165756       -- 5217187
165757       --
165758       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
165759       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
165760                                        g_array_event(l_event_id).array_value_num('header_index'));
165761       --
165762       --
165763 
165764       -- No reversal code generated
165765 
165766       xla_ae_lines_pkg.SetAcctReversalAttrs
165767          (p_event_id             => l_event_id
165768          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
165769          ,p_calculate_acctd_flag => l_calculate_acctd_flag
165770          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
165771    END IF;
165772 
165773    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
165774        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
165775 
165776 --
165777 AcctLineType_67 (
165778  p_application_id  => p_application_id
165779  ,p_event_id     => l_event_id
165780  ,p_calculate_acctd_flag => l_calculate_acctd_flag
165781  ,p_calculate_g_l_flag => l_calculate_g_l_flag
165782  ,p_actual_flag => l_actual_flag
165783  ,p_balance_type_code => l_balance_type_code
165784  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
165785  
165786  , p_source_1 => l_array_source_1(Idx)
165787  , p_source_2 => l_array_source_2(Idx)
165788  , p_source_3 => l_array_source_3(Idx)
165789  , p_source_5 => l_array_source_5(Idx)
165790  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
165791  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
165792  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
165793  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
165794  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
165795  , p_source_11 => l_array_source_11(Idx)
165796  );
165797 If(l_balance_type_code = 'A') THEN
165798   l_actual_gain_loss_ref := l_gain_or_loss_ref;
165799 END IF;
165800 
165801 --
165802 
165803 
165804 --
165805 AcctLineType_101 (
165806  p_application_id  => p_application_id
165807  ,p_event_id     => l_event_id
165808  ,p_calculate_acctd_flag => l_calculate_acctd_flag
165809  ,p_calculate_g_l_flag => l_calculate_g_l_flag
165810  ,p_actual_flag => l_actual_flag
165811  ,p_balance_type_code => l_balance_type_code
165812  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
165813  
165814  , p_source_1 => l_array_source_1(Idx)
165815  , p_source_2 => l_array_source_2(Idx)
165816  , p_source_3 => l_array_source_3(Idx)
165817  , p_source_5 => l_array_source_5(Idx)
165818  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
165819  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
165820  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
165821  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
165822  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
165823  , p_source_11 => l_array_source_11(Idx)
165824  );
165825 If(l_balance_type_code = 'A') THEN
165826   l_actual_gain_loss_ref := l_gain_or_loss_ref;
165827 END IF;
165828 
165829 --
165830 
165831 
165832 --
165833 AcctLineType_162 (
165834  p_application_id  => p_application_id
165835  ,p_event_id     => l_event_id
165836  ,p_calculate_acctd_flag => l_calculate_acctd_flag
165837  ,p_calculate_g_l_flag => l_calculate_g_l_flag
165838  ,p_actual_flag => l_actual_flag
165839  ,p_balance_type_code => l_balance_type_code
165840  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
165841  
165842  , p_source_1 => l_array_source_1(Idx)
165843  , p_source_2 => l_array_source_2(Idx)
165844  , p_source_3 => l_array_source_3(Idx)
165845  , p_source_5 => l_array_source_5(Idx)
165846  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
165847  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
165848  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
165849  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
165850  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
165851  , p_source_11 => l_array_source_11(Idx)
165852  );
165853 If(l_balance_type_code = 'A') THEN
165854   l_actual_gain_loss_ref := l_gain_or_loss_ref;
165855 END IF;
165856 
165857 --
165858 
165859       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
165860       -- or secondary ledger that has different currency with primary
165861       -- or alc that is calculated by sla
165865 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
165862       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
165863             (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'))
165864 
165866 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
165867           AND (l_actual_flag = 'A')) THEN
165868         XLA_AE_LINES_PKG.CreateGainOrLossLines(
165869           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
165870          ,p_application_id   => p_application_id
165871          ,p_amb_context_code => 'DEFAULT'
165872          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
165873          ,p_event_class_code => C_EVENT_CLASS_CODE
165874          ,p_event_type_code  => C_EVENT_TYPE_CODE
165875          
165876          ,p_gain_ccid        => -1
165877          ,p_loss_ccid        => -1
165878 
165879          ,p_actual_flag      => l_actual_flag
165880          ,p_enc_flag         => null
165881          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
165882          ,p_enc_g_l_ref      => null
165883          );
165884       END IF;
165885    END IF;
165886 END IF;
165887 
165888    ELSE
165889       --
165890       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
165891       --
165892       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165893          trace
165894             (p_msg      => 'Trancaction revesal option is Y'
165895             ,p_level    => C_LEVEL_STATEMENT
165896             ,p_module   => l_log_module);
165897       END IF;
165898    END IF;
165899 
165900 END LOOP;
165901 l_result := XLA_AE_LINES_PKG.InsertLines ;
165902 end loop;
165903 close line_cur;
165904 
165905 
165906 --
165907 -- insert headers into xla_ae_headers_gt table
165908 --
165909 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
165910 
165911 -- insert into errors table here.
165912 
165913 END LOOP;
165914 
165915 --
165916 -- 4865292
165917 --
165918 -- Compare g_hdr_extract_count with event count in
165919 -- CreateHeadersAndLines.
165920 --
165921 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
165922 
165923 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165924    trace (p_msg     => '# rows extracted from header extract objects '
165925                     || ' (running total): '
165926                     || g_hdr_extract_count
165927          ,p_level   => C_LEVEL_STATEMENT
165928          ,p_module  => l_log_module);
165929 END IF;
165930 
165931 CLOSE header_cur;
165932 --
165933 
165934 --
165935 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
165936    trace
165937       (p_msg      => 'END of EventType_285'
165938       ,p_level    => C_LEVEL_PROCEDURE
165939       ,p_module   => l_log_module);
165940 END IF;
165941 --
165942 RETURN l_result;
165943 EXCEPTION
165944 WHEN xla_exceptions_pkg.application_exception THEN
165945    
165946 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
165947 
165948    
165949 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
165950 
165951    RAISE;
165952 
165953 WHEN NO_DATA_FOUND THEN
165954 
165955 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
165956 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
165957 
165958 FOR header_record IN header_cur
165959 LOOP
165960     l_array_header_events(header_record.event_id) := header_record.event_id;
165961 END LOOP;
165962 
165963 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
165964 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
165965 
165966 fnd_file.put_line(fnd_file.LOG, '                    ');
165967 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
165968 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
165969 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
165970 
165971 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
165972 LOOP
165973 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
165974 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
165975         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
165976 	END IF;
165977 END LOOP;
165978 
165979 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
165980 fnd_file.put_line(fnd_file.LOG, '                    ');
165981 
165982 
165983 xla_exceptions_pkg.raise_message
165984       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_285');
165985 
165986 
165987 WHEN OTHERS THEN
165988    xla_exceptions_pkg.raise_message
165989       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_285');
165990 END EventType_285;
165991 --
165992 
165993 ---------------------------------------
165994 --
165995 -- PRIVATE PROCEDURE
165996 --         insert_sources_286
165997 --
165998 ----------------------------------------
165999 --
166000 PROCEDURE insert_sources_286(
166001                                 p_target_ledger_id       IN NUMBER
166002                               , p_language               IN VARCHAR2
166003                               , p_sla_ledger_id          IN NUMBER
166007 IS
166004                               , p_pad_start_date         IN DATE
166005                               , p_pad_end_date           IN DATE
166006                          )
166008 
166009 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_PO_RECEIPT';
166010 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DELIVER';
166011 p_apps_owner                   VARCHAR2(30);
166012 l_log_module                   VARCHAR2(240);
166013 BEGIN
166014 IF g_log_enabled THEN
166015       l_log_module := C_DEFAULT_MODULE||'.insert_sources_286';
166016 END IF;
166017 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166018 
166019       trace
166020          (p_msg      => 'BEGIN of insert_sources_286'
166021          ,p_level    => C_LEVEL_PROCEDURE
166022          ,p_module   => l_log_module);
166023 
166024 END IF;
166025 
166026 -- select APPS owner
166027 SELECT oracle_username
166028   INTO p_apps_owner
166029   FROM fnd_oracle_userid
166030  WHERE read_only_flag = 'U'
166031 ;
166032 
166033 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166034       trace
166035          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
166036                         ' - p_language = '||p_language||
166037                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
166038                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
166039                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
166040                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
166041          ,p_level    => C_LEVEL_STATEMENT
166042          ,p_module   => l_log_module);
166043 END IF;
166044 
166045 
166046 --
166047 INSERT INTO xla_diag_sources --hdr1
166048 (
166049         event_id
166050       , ledger_id
166051       , sla_ledger_id
166052       , description_language
166053       , object_name
166054       , object_type_code
166055       , line_number
166056       , source_application_id
166057       , source_type_code
166058       , source_code
166059       , source_value
166060       , source_meaning
166061       , created_by
166062       , creation_date
166063       , last_update_date
166064       , last_updated_by
166065       , last_update_login
166066       , program_update_date
166067       , program_application_id
166068       , program_id
166069       , request_id
166070 )
166071 SELECT
166072         event_id
166073       , p_target_ledger_id
166074       , p_sla_ledger_id
166075       , p_language
166076       , object_name
166077       , object_type_code
166078       , line_number
166079       , source_application_id
166080       , source_type_code
166081       , source_code
166082       , SUBSTR(source_value ,1,1996)
166083       , SUBSTR(source_meaning,1,200)
166084       , xla_environment_pkg.g_Usr_Id
166085       , TRUNC(SYSDATE)
166086       , TRUNC(SYSDATE)
166087       , xla_environment_pkg.g_Usr_Id
166088       , xla_environment_pkg.g_Login_Id
166089       , TRUNC(SYSDATE)
166090       , xla_environment_pkg.g_Prog_Appl_Id
166091       , xla_environment_pkg.g_Prog_Id
166092       , xla_environment_pkg.g_Req_Id
166093   FROM (
166094        SELECT xet.event_id                  event_id
166095             , 0                             line_number
166096             , CASE r
166097                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
166098                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
166099                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
166100                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
166101                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
166102                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
166103                 
166104                ELSE null
166105               END                           object_name
166106             , CASE r
166107                 WHEN 1 THEN 'HEADER' 
166108                 WHEN 2 THEN 'HEADER' 
166109                 WHEN 3 THEN 'HEADER' 
166110                 WHEN 4 THEN 'HEADER' 
166111                 WHEN 5 THEN 'HEADER' 
166112                 WHEN 6 THEN 'HEADER' 
166113                 
166114                 ELSE null
166115               END                           object_type_code
166116             , CASE r
166117                 WHEN 1 THEN '555' 
166118                 WHEN 2 THEN '555' 
166119                 WHEN 3 THEN '555' 
166120                 WHEN 4 THEN '555' 
166121                 WHEN 5 THEN '555' 
166122                 WHEN 6 THEN '555' 
166123                 
166124                 ELSE null
166125               END                           source_application_id
166126             , 'S'             source_type_code
166127             , CASE r
166128                 WHEN 1 THEN 'ENTITY_CODE' 
166129                 WHEN 2 THEN 'CURRENCY_CODE' 
166130                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
166131                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
166132                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
166133                 WHEN 6 THEN 'TRANSACTION_DATE' 
166134                 
166135                 ELSE null
166136               END                           source_code
166137             , CASE r
166138                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
166139                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
166140                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
166141                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
166142                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
166146               END                           source_value
166143                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
166144                 
166145                 ELSE null
166147             , CASE r
166148                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
166149                           1010186
166150                          ,TO_CHAR(h1.CURRENCY_CODE)
166151                          ,'CURRENCY_CODE'
166152                          ,'S'
166153                          ,555)
166154                 
166155                 ELSE null
166156               END               source_meaning
166157         FROM xla_events_gt     xet  
166158       , GMF_XLA_EXTRACT_HEADERS  h1
166159             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
166160        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
166161          AND xet.event_type_code = C_EVENT_TYPE_CODE
166162             AND h1.event_id = xet.event_id
166163 
166164 )
166165 ;
166166 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166167 
166168       trace
166169          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
166170          ,p_level    => C_LEVEL_STATEMENT
166171          ,p_module   => l_log_module);
166172 
166173 END IF;
166174 --
166175 
166176 
166177 
166178 --
166179 INSERT INTO xla_diag_sources --line1
166180 (
166181         event_id
166182       , ledger_id
166183       , sla_ledger_id
166184       , description_language
166185       , object_name
166186       , object_type_code
166187       , line_number
166188       , source_application_id
166189       , source_type_code
166190       , source_code
166191       , source_value
166192       , source_meaning
166193       , created_by
166194       , creation_date
166195       , last_update_date
166196       , last_updated_by
166197       , last_update_login
166198       , program_update_date
166199       , program_application_id
166200       , program_id
166201       , request_id
166202 )
166203 SELECT  event_id
166204       , p_target_ledger_id
166205       , p_sla_ledger_id
166206       , p_language
166207       , object_name
166208       , object_type_code
166209       , line_number
166210       , source_application_id
166211       , source_type_code
166212       , source_code
166213       , SUBSTR(source_value,1,1996)
166214       , SUBSTR(source_meaning,1,200)
166215       , xla_environment_pkg.g_Usr_Id
166216       , TRUNC(SYSDATE)
166217       , TRUNC(SYSDATE)
166218       , xla_environment_pkg.g_Usr_Id
166219       , xla_environment_pkg.g_Login_Id
166220       , TRUNC(SYSDATE)
166221       , xla_environment_pkg.g_Prog_Appl_Id
166222       , xla_environment_pkg.g_Prog_Id
166223       , xla_environment_pkg.g_Req_Id
166224   FROM (
166225        SELECT xet.event_id                  event_id
166226             , l2.line_number                 line_number
166227             , CASE r
166228                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
166229                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
166230                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
166231                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
166232                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
166233                 
166234                ELSE null
166235               END                           object_name
166236             , CASE r
166237                 WHEN 1 THEN 'LINE' 
166238                 WHEN 2 THEN 'LINE' 
166239                 WHEN 3 THEN 'LINE' 
166240                 WHEN 4 THEN 'LINE' 
166241                 WHEN 5 THEN 'LINE' 
166242                 
166243                 ELSE null
166244               END                           object_type_code
166245             , CASE r
166246                 WHEN 1 THEN '555' 
166247                 WHEN 2 THEN '555' 
166248                 WHEN 3 THEN '555' 
166249                 WHEN 4 THEN '555' 
166250                 WHEN 5 THEN '555' 
166251                 
166252                 ELSE null
166253               END                           source_application_id
166254             , 'S'             source_type_code
166255             , CASE r
166256                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
166257                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
166258                 WHEN 3 THEN 'ENTERED_AMOUNT' 
166259                 WHEN 4 THEN 'LINE_ID' 
166260                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
166261                 
166262                 ELSE null
166263               END                           source_code
166264             , CASE r
166265                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
166266                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
166267                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
166268                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
166269                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
166270                 
166271                 ELSE null
166272               END                           source_value
166273             , null              source_meaning
166274          FROM  xla_events_gt     xet  
166275         , GMF_XLA_EXTRACT_LINES  l2
166276             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
166277         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
166278           AND xet.event_type_code = C_EVENT_TYPE_CODE
166279             AND l2.event_id          = xet.event_id
166280 
166281 )
166282 ;
166283 --
166287          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
166284 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166285 
166286       trace
166288          ,p_level    => C_LEVEL_STATEMENT
166289          ,p_module   => l_log_module);
166290 
166291 END IF;
166292 
166293 
166294 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166295       trace
166296          (p_msg      => 'END of insert_sources_286'
166297          ,p_level    => C_LEVEL_PROCEDURE
166298          ,p_module   => l_log_module);
166299 END IF;
166300 EXCEPTION
166301   WHEN xla_exceptions_pkg.application_exception THEN
166302       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
166303             trace
166304                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
166305                ,p_level    => C_LEVEL_EXCEPTION
166306                ,p_module   => l_log_module);
166307       END IF;
166308       RAISE;
166309   WHEN OTHERS THEN
166310       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
166311             trace
166312                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
166313                ,p_level    => C_LEVEL_EXCEPTION
166314                ,p_module   => l_log_module);
166315        END IF;
166316        xla_exceptions_pkg.raise_message
166317            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_286');
166318 END insert_sources_286;
166319 --
166320 
166321 ---------------------------------------
166322 --
166323 -- PRIVATE FUNCTION
166324 --         EventType_286
166325 --
166326 ----------------------------------------
166327 --
166328 FUNCTION EventType_286
166329        (p_application_id         IN NUMBER
166330        ,p_base_ledger_id         IN NUMBER
166331        ,p_target_ledger_id       IN NUMBER
166332        ,p_language               IN VARCHAR2
166333        ,p_currency_code          IN VARCHAR2
166334        ,p_sla_ledger_id          IN NUMBER
166335        ,p_pad_start_date         IN DATE
166336        ,p_pad_end_date           IN DATE
166337        ,p_primary_ledger_id      IN NUMBER)
166338 RETURN BOOLEAN IS
166339 --
166340 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_PO_RECEIPT';
166341 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DELIVER';
166342 
166343 l_calculate_acctd_flag   VARCHAR2(1) :='N';
166344 l_calculate_g_l_flag     VARCHAR2(1) :='N';
166345 --
166346 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166347 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166348 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166349 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166350 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166351 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166352 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166353 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166354 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166355 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166356 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166357 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166358 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166359 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166360 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166361 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166362 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166363 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166364 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166365 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166366 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166367 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166368 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
166369 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166370 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
166371 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
166372 
166373 l_event_id                             NUMBER;
166374 l_previous_event_id                    NUMBER;
166375 l_first_event_id                       NUMBER;
166376 l_last_event_id                        NUMBER;
166377 
166378 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
166379 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
166380 --
166381 --
166382 l_result                    BOOLEAN := TRUE;
166383 l_rows                      NUMBER  := 1000;
166384 l_event_type_name           VARCHAR2(80) := 'Logical PO Receipt';
166385 l_event_class_name          VARCHAR2(80) := 'Deliver to or Return from Inventory';
166386 l_description               VARCHAR2(4000);
166387 l_transaction_reversal      NUMBER;
166388 l_ae_header_id              NUMBER;
166389 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
166390 l_log_module                VARCHAR2(240);
166391 --
166392 l_acct_reversal_source      VARCHAR2(30);
166393 l_trx_reversal_source       VARCHAR2(30);
166394 
166398 --
166395 l_continue_with_lines       BOOLEAN := TRUE;
166396 --
166397 l_acc_rev_gl_date_source    DATE;                      -- 4262811
166399 type t_array_event_id is table of number index by binary_integer;
166400 
166401 l_rec_array_event                    t_rec_array_event;
166402 l_null_rec_array_event               t_rec_array_event;
166403 l_array_ae_header_id                 xla_number_array_type;
166404 l_actual_flag                        VARCHAR2(1) := NULL;
166405 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
166406 l_balance_type_code                  VARCHAR2(1) :=NULL;
166407 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
166408 
166409 --
166410 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
166411 --
166412 
166413 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
166414 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
166415 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
166416 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
166417 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
166418 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
166419 
166420 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
166421 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
166422 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
166423 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
166424 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
166425 
166426 l_array_source_6              t_array_source_6;
166427 l_array_source_7              t_array_source_7;
166428 l_array_source_8              t_array_source_8;
166429 l_array_source_9              t_array_source_9;
166430 l_array_source_10              t_array_source_10;
166431 l_array_source_12              t_array_source_12;
166432 
166433 l_array_source_1      t_array_source_1;
166434 l_array_source_2      t_array_source_2;
166435 l_array_source_3      t_array_source_3;
166436 l_array_source_5      t_array_source_5;
166437 l_array_source_11      t_array_source_11;
166438 
166439 --
166440 CURSOR header_cur
166441 IS
166442 SELECT /*+ leading(xet) cardinality(xet,1) */
166443 -- Event Type Code: LOG_PO_RECEIPT
166444 -- Event Class Code: DELIVER
166445     xet.entity_id
166446   , xet.legal_entity_id
166447   , xet.entity_code
166448   , xet.transaction_number
166449   , xet.event_id
166450   , xet.event_class_code
166451   , xet.event_type_code
166452   , xet.event_number
166453   , xet.event_date
166454   , xet.transaction_date
166455   , xet.reference_num_1
166456   , xet.reference_num_2
166457   , xet.reference_num_3
166458   , xet.reference_num_4
166459   , xet.reference_char_1
166460   , xet.reference_char_2
166461   , xet.reference_char_3
166462   , xet.reference_char_4
166463   , xet.reference_date_1
166464   , xet.reference_date_2
166465   , xet.reference_date_3
166466   , xet.reference_date_4
166467   , xet.event_created_by
166468   , xet.budgetary_control_flag 
166469   , h1.ENTITY_CODE    source_6
166470   , h1.CURRENCY_CODE    source_7
166471   , h1.CURRENCY_CONVERSION_DATE    source_8
166472   , h1.CURRENCY_CONVERSION_RATE    source_9
166473   , h1.CURRENCY_CONVERSION_TYPE    source_10
166474   , h1.TRANSACTION_DATE    source_12
166475   FROM xla_events_gt     xet 
166476   , GMF_XLA_EXTRACT_HEADERS  h1
166477  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
166478    and xet.event_type_code = C_EVENT_TYPE_CODE
166479    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
166480 
166481  ORDER BY event_id
166482 ;
166483 
166484 
166485 --
166486 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
166487 IS
166488 SELECT /*+ leading(xet) cardinality(xet,1) */
166489 -- Event Type Code: LOG_PO_RECEIPT
166490 -- Event Class Code: DELIVER
166491     xet.entity_id
166492    ,xet.legal_entity_id
166493    ,xet.entity_code
166494    ,xet.transaction_number
166495    ,xet.event_id
166496    ,xet.event_class_code
166497    ,xet.event_type_code
166498    ,xet.event_number
166499    ,xet.event_date
166500    ,xet.transaction_date
166501    ,xet.reference_num_1
166502    ,xet.reference_num_2
166503    ,xet.reference_num_3
166504    ,xet.reference_num_4
166505    ,xet.reference_char_1
166506    ,xet.reference_char_2
166507    ,xet.reference_char_3
166508    ,xet.reference_char_4
166509    ,xet.reference_date_1
166510    ,xet.reference_date_2
166511    ,xet.reference_date_3
166512    ,xet.reference_date_4
166513    ,xet.event_created_by
166514    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
166515   , l2.TRANSACTION_ACCOUNT_ID    source_1
166516   , l2.JOURNAL_LINE_TYPE    source_2
166517   , l2.ENTERED_AMOUNT    source_3
166518   , l2.LINE_ID    source_5
166519   , l2.ACCOUNTED_AMOUNT    source_11
166520   FROM xla_events_gt     xet 
166521   , GMF_XLA_EXTRACT_LINES  l2
166522  WHERE xet.event_id between x_first_event_id and x_last_event_id
166523    and xet.event_date between p_pad_start_date and p_pad_end_date
166527 
166524    and xet.event_type_code = C_EVENT_TYPE_CODE
166525    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
166526 ;
166528 --
166529 BEGIN
166530 IF g_log_enabled THEN
166531    l_log_module := C_DEFAULT_MODULE||'.EventType_286';
166532 END IF;
166533 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166534    trace
166535       (p_msg      => 'BEGIN of EventType_286'
166536       ,p_level    => C_LEVEL_PROCEDURE
166537       ,p_module   => l_log_module);
166538 END IF;
166539 
166540 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166541    trace
166542       (p_msg      => 'p_application_id = '||p_application_id||
166543                      ' - p_base_ledger_id = '||p_base_ledger_id||
166544                      ' - p_target_ledger_id  = '||p_target_ledger_id||
166545                      ' - p_language = '||p_language||
166546                      ' - p_currency_code = '||p_currency_code||
166547                      ' - p_sla_ledger_id = '||p_sla_ledger_id
166548       ,p_level    => C_LEVEL_STATEMENT
166549       ,p_module   => l_log_module);
166550 END IF;
166551 --
166552 -- initialze arrays
166553 --
166554 g_array_event.DELETE;
166555 l_rec_array_event := l_null_rec_array_event;
166556 --
166557 --------------------------------------
166558 -- 4262811 Initialze MPA Line Number
166559 --------------------------------------
166560 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
166561 
166562 --
166563 
166564 --
166565 OPEN header_cur;
166566 --
166567 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166568    trace
166569    (p_msg      => 'SQL - FETCH header_cur'
166570    ,p_level    => C_LEVEL_STATEMENT
166571    ,p_module   => l_log_module);
166572 END IF;
166573 --
166574 LOOP
166575 FETCH header_cur BULK COLLECT INTO
166576         l_array_entity_id
166577       , l_array_legal_entity_id
166578       , l_array_entity_code
166579       , l_array_transaction_num
166580       , l_array_event_id
166581       , l_array_class_code
166582       , l_array_event_type
166583       , l_array_event_number
166584       , l_array_event_date
166585       , l_array_transaction_date
166586       , l_array_reference_num_1
166587       , l_array_reference_num_2
166588       , l_array_reference_num_3
166589       , l_array_reference_num_4
166590       , l_array_reference_char_1
166591       , l_array_reference_char_2
166592       , l_array_reference_char_3
166593       , l_array_reference_char_4
166594       , l_array_reference_date_1
166595       , l_array_reference_date_2
166596       , l_array_reference_date_3
166597       , l_array_reference_date_4
166598       , l_array_event_created_by
166599       , l_array_budgetary_control_flag 
166600       , l_array_source_6
166601       , l_array_source_7
166602       , l_array_source_8
166603       , l_array_source_9
166604       , l_array_source_10
166605       , l_array_source_12
166606       LIMIT l_rows;
166607 --
166608 IF (C_LEVEL_EVENT >= g_log_level) THEN
166609    trace
166610    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
166611    ,p_level    => C_LEVEL_EVENT
166612    ,p_module   => l_log_module);
166613 END IF;
166614 --
166615 EXIT WHEN l_array_entity_id.COUNT = 0;
166616 
166617 -- initialize arrays
166618 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
166619 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
166620 
166621 --
166622 -- Bug 4458708
166623 --
166624 XLA_AE_LINES_PKG.g_LineNumber := 0;
166625 
166626 
166627 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
166628 g_last_hdr_idx := l_array_event_id.LAST;
166629 --
166630 -- loop for the headers. Each iteration is for each header extract row
166631 -- fetched in header cursor
166632 --
166633 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
166634 
166635 --
166636 -- set event info as cache for other routines to refer event attributes
166637 --
166638 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
166639    (p_application_id           => p_application_id
166640    ,p_primary_ledger_id        => p_primary_ledger_id
166641    ,p_base_ledger_id           => p_base_ledger_id
166642    ,p_target_ledger_id         => p_target_ledger_id
166643    ,p_entity_id                => l_array_entity_id(hdr_idx)
166644    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
166645    ,p_entity_code              => l_array_entity_code(hdr_idx)
166646    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
166647    ,p_event_id                 => l_array_event_id(hdr_idx)
166648    ,p_event_class_code         => l_array_class_code(hdr_idx)
166649    ,p_event_type_code          => l_array_event_type(hdr_idx)
166650    ,p_event_number             => l_array_event_number(hdr_idx)
166651    ,p_event_date               => l_array_event_date(hdr_idx)
166652    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
166653    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
166654    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
166655    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
166656    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
166657    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
166658    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
166659    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
166660    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
166664    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
166661    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
166662    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
166663    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
166665    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
166666    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
166667 
166668 --
166669 -- set the status of entry to C_VALID (0)
166670 --
166671 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
166672 
166673 --
166674 -- initialize a row for ae header
166675 --
166676 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
166677 
166678 l_event_id := l_array_event_id(hdr_idx);
166679 
166680 --
166681 -- storing the hdr_idx for event. May be used by line cursor.
166682 --
166683 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
166684 
166685 --
166686 -- store sources from header extract. This can be improved to
166687 -- store only those sources from header extract that may be used in lines
166688 --
166689 
166690 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
166691 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
166692 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
166693 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
166694 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
166695 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
166696 
166697 --
166698 -- initilaize the status of ae headers for diffrent balance types
166699 -- the status is initialised to C_NOT_CREATED (2)
166700 --
166701 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
166702 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
166703 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
166704 
166705 --
166706 -- call api to validate and store accounting attributes for header
166707 --
166708 
166709 ------------------------------------------------------------
166710 -- Accrual Reversal : to get date for Standard Source (NONE)
166711 ------------------------------------------------------------
166712 l_acc_rev_gl_date_source := NULL;
166713 
166714      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
166715       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
166716 
166717 
166718 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
166719 
166720 XLA_AE_HEADER_PKG.SetJeCategoryName;
166721 
166722 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
166723 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
166724 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
166725 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
166726 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
166727 
166728 
166729 -- No header level analytical criteria
166730 
166731 --
166732 --accounting attribute enhancement, bug 3612931
166733 --
166734 l_trx_reversal_source := SUBSTR(NULL, 1,30);
166735 
166736 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
166737    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
166738 
166739    xla_accounting_err_pkg.build_message
166740       (p_appli_s_name            => 'XLA'
166741       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
166742       ,p_token_1                 => 'ACCT_ATTR_NAME'
166743       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
166744       ,p_token_2                 => 'PRODUCT_NAME'
166745       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
166746       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
166747       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
166748       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
166749 
166750 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
166751    --
166752    -- following sets the accounting attributes needed to reverse
166753    -- accounting for a distributeion
166754    --
166755    xla_ae_lines_pkg.SetTrxReversalAttrs
166756       (p_event_id              => l_event_id
166757       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
166758       ,p_trx_reversal_source   => l_trx_reversal_source);
166759 
166760 END IF;
166761 
166762 
166763 ----------------------------------------------------------------
166764 -- 4262811 -  update the header statuses to invalid in need be
166765 ----------------------------------------------------------------
166766 --
166767 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
166768 
166769 
166770   -----------------------------------------------
166771   -- No accrual reversal for the event class/type
166772   -----------------------------------------------
166773 ----------------------------------------------------------------
166774 
166775 --
166776 -- this ends the header loop iteration for one bulk fetch
166777 --
166781 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
166778 END LOOP;
166779 
166780 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
166782 
166783 --
166784 -- insert dummy rows into lines gt table that were created due to
166785 -- transaction reversals
166786 --
166787 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
166788    l_result := XLA_AE_LINES_PKG.InsertLines;
166789 END IF;
166790 
166791 --
166792 -- reset the temp_line_num for each set of events fetched from header
166793 -- cursor rather than doing it for each new event in line cursor
166794 -- Bug 3939231
166795 --
166796 xla_ae_lines_pkg.g_temp_line_num := 0;
166797 
166798 
166799 
166800 --
166801 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
166802 --
166803 --
166804 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166805 
166806       trace
166807          (p_msg      => 'SQL - FETCH line_cur'
166808          ,p_level    => C_LEVEL_STATEMENT
166809          ,p_module   => l_log_module);
166810 
166811 END IF;
166812 --
166813 --
166814 LOOP
166815   --
166816   FETCH line_cur BULK COLLECT INTO
166817         l_array_entity_id
166818       , l_array_legal_entity_id
166819       , l_array_entity_code
166820       , l_array_transaction_num
166821       , l_array_event_id
166822       , l_array_class_code
166823       , l_array_event_type
166824       , l_array_event_number
166825       , l_array_event_date
166826       , l_array_transaction_date
166827       , l_array_reference_num_1
166828       , l_array_reference_num_2
166829       , l_array_reference_num_3
166830       , l_array_reference_num_4
166831       , l_array_reference_char_1
166832       , l_array_reference_char_2
166833       , l_array_reference_char_3
166834       , l_array_reference_char_4
166835       , l_array_reference_date_1
166836       , l_array_reference_date_2
166837       , l_array_reference_date_3
166838       , l_array_reference_date_4
166839       , l_array_event_created_by
166840       , l_array_budgetary_control_flag
166841       , l_array_extract_line_num 
166842       , l_array_source_1
166843       , l_array_source_2
166844       , l_array_source_3
166845       , l_array_source_5
166846       , l_array_source_11
166847       LIMIT l_rows;
166848 
166849   --
166850   IF (C_LEVEL_EVENT >= g_log_level) THEN
166851             trace
166852                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
166853                ,p_level    => C_LEVEL_EVENT
166854                ,p_module   => l_log_module);
166855   END IF;
166856   --
166857   EXIT WHEN l_array_entity_id.count = 0;
166858 
166859   XLA_AE_LINES_PKG.g_rec_lines := null;
166860 
166861 --
166862 -- Bug 4458708
166863 --
166864 XLA_AE_LINES_PKG.g_LineNumber := 0;
166865 --
166866 --
166867 
166868 FOR Idx IN 1..l_array_event_id.count LOOP
166869    --
166870    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
166871    --
166872    l_event_id := l_array_event_id(idx);  -- 5648433
166873 
166874    --
166875    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
166876    --
166877 
166878    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
166879              (g_array_event(l_event_id).array_value_num('header_index'))
166880          ,'N'
166881          ) <> 'Y'
166882    THEN
166883       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166884          trace
166885             (p_msg      => 'Trancaction revesal option is not Y '
166886             ,p_level    => C_LEVEL_STATEMENT
166887             ,p_module   => l_log_module);
166888       END IF;
166889 
166890 --
166891 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
166892 --
166893 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
166894 --
166895 -- set event info as cache for other routines to refer event attributes
166896 --
166897 
166898 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
166899    l_previous_event_id := l_event_id;
166900 
166901    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
166902       (p_application_id           => p_application_id
166903       ,p_primary_ledger_id        => p_primary_ledger_id
166904       ,p_base_ledger_id           => p_base_ledger_id
166905       ,p_target_ledger_id         => p_target_ledger_id
166906       ,p_entity_id                => l_array_entity_id(Idx)
166907       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
166908       ,p_entity_code              => l_array_entity_code(Idx)
166909       ,p_transaction_num          => l_array_transaction_num(Idx)
166910       ,p_event_id                 => l_array_event_id(Idx)
166911       ,p_event_class_code         => l_array_class_code(Idx)
166912       ,p_event_type_code          => l_array_event_type(Idx)
166913       ,p_event_number             => l_array_event_number(Idx)
166914       ,p_event_date               => l_array_event_date(Idx)
166915       ,p_transaction_date         => l_array_transaction_date(Idx)
166916       ,p_reference_num_1          => l_array_reference_num_1(Idx)
166917       ,p_reference_num_2          => l_array_reference_num_2(Idx)
166918       ,p_reference_num_3          => l_array_reference_num_3(Idx)
166919       ,p_reference_num_4          => l_array_reference_num_4(Idx)
166923       ,p_reference_char_4         => l_array_reference_char_4(Idx)
166920       ,p_reference_char_1         => l_array_reference_char_1(Idx)
166921       ,p_reference_char_2         => l_array_reference_char_2(Idx)
166922       ,p_reference_char_3         => l_array_reference_char_3(Idx)
166924       ,p_reference_date_1         => l_array_reference_date_1(Idx)
166925       ,p_reference_date_2         => l_array_reference_date_2(Idx)
166926       ,p_reference_date_3         => l_array_reference_date_3(Idx)
166927       ,p_reference_date_4         => l_array_reference_date_4(Idx)
166928       ,p_event_created_by         => l_array_event_created_by(Idx)
166929       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
166930        --
166931 END IF;
166932 
166933 
166934 
166935 --
166936 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
166937 
166938 l_acct_reversal_source := SUBSTR(NULL, 1,30);
166939 
166940 IF l_continue_with_lines THEN
166941    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
166942       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
166943 
166944       xla_accounting_err_pkg.build_message
166945          (p_appli_s_name            => 'XLA'
166946          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
166947          ,p_token_1                 => 'LINE_NUMBER'
166948          ,p_value_1                 => l_array_extract_line_num(Idx)
166949          ,p_token_2                 => 'PRODUCT_NAME'
166950          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
166951          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
166952          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
166953          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
166954 
166955    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
166956       --
166957       -- following sets the accounting attributes needed to reverse
166958       -- accounting for a distributeion
166959       --
166960 
166961       --
166962       -- 5217187
166963       --
166964       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
166965       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
166966                                        g_array_event(l_event_id).array_value_num('header_index'));
166967       --
166968       --
166969 
166970       -- No reversal code generated
166971 
166972       xla_ae_lines_pkg.SetAcctReversalAttrs
166973          (p_event_id             => l_event_id
166974          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
166975          ,p_calculate_acctd_flag => l_calculate_acctd_flag
166976          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
166977    END IF;
166978 
166979    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
166980        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
166981 
166982 --
166983 AcctLineType_63 (
166984  p_application_id  => p_application_id
166985  ,p_event_id     => l_event_id
166986  ,p_calculate_acctd_flag => l_calculate_acctd_flag
166987  ,p_calculate_g_l_flag => l_calculate_g_l_flag
166988  ,p_actual_flag => l_actual_flag
166989  ,p_balance_type_code => l_balance_type_code
166990  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166991  
166992  , p_source_1 => l_array_source_1(Idx)
166993  , p_source_2 => l_array_source_2(Idx)
166994  , p_source_3 => l_array_source_3(Idx)
166995  , p_source_5 => l_array_source_5(Idx)
166996  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
166997  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
166998  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
166999  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
167000  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
167001  , p_source_11 => l_array_source_11(Idx)
167002  );
167003 If(l_balance_type_code = 'A') THEN
167004   l_actual_gain_loss_ref := l_gain_or_loss_ref;
167005 END IF;
167006 
167007 --
167008 
167009 
167010 --
167011 AcctLineType_89 (
167012  p_application_id  => p_application_id
167013  ,p_event_id     => l_event_id
167014  ,p_calculate_acctd_flag => l_calculate_acctd_flag
167015  ,p_calculate_g_l_flag => l_calculate_g_l_flag
167016  ,p_actual_flag => l_actual_flag
167017  ,p_balance_type_code => l_balance_type_code
167018  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
167019  
167020  , p_source_1 => l_array_source_1(Idx)
167021  , p_source_2 => l_array_source_2(Idx)
167022  , p_source_3 => l_array_source_3(Idx)
167023  , p_source_5 => l_array_source_5(Idx)
167024  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
167025  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
167026  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
167027  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
167028  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
167029  , p_source_11 => l_array_source_11(Idx)
167030  );
167031 If(l_balance_type_code = 'A') THEN
167032   l_actual_gain_loss_ref := l_gain_or_loss_ref;
167033 END IF;
167034 
167035 --
167036 
167037 
167038 --
167039 AcctLineType_137 (
167040  p_application_id  => p_application_id
167041  ,p_event_id     => l_event_id
167042  ,p_calculate_acctd_flag => l_calculate_acctd_flag
167046  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
167043  ,p_calculate_g_l_flag => l_calculate_g_l_flag
167044  ,p_actual_flag => l_actual_flag
167045  ,p_balance_type_code => l_balance_type_code
167047  
167048  , p_source_1 => l_array_source_1(Idx)
167049  , p_source_2 => l_array_source_2(Idx)
167050  , p_source_3 => l_array_source_3(Idx)
167051  , p_source_5 => l_array_source_5(Idx)
167052  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
167053  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
167054  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
167055  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
167056  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
167057  , p_source_11 => l_array_source_11(Idx)
167058  );
167059 If(l_balance_type_code = 'A') THEN
167060   l_actual_gain_loss_ref := l_gain_or_loss_ref;
167061 END IF;
167062 
167063 --
167064 
167065       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
167066       -- or secondary ledger that has different currency with primary
167067       -- or alc that is calculated by sla
167068       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
167069             (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'))
167070 
167071 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
167072 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
167073           AND (l_actual_flag = 'A')) THEN
167074         XLA_AE_LINES_PKG.CreateGainOrLossLines(
167075           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
167076          ,p_application_id   => p_application_id
167077          ,p_amb_context_code => 'DEFAULT'
167078          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
167079          ,p_event_class_code => C_EVENT_CLASS_CODE
167080          ,p_event_type_code  => C_EVENT_TYPE_CODE
167081          
167082          ,p_gain_ccid        => -1
167083          ,p_loss_ccid        => -1
167084 
167085          ,p_actual_flag      => l_actual_flag
167086          ,p_enc_flag         => null
167087          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
167088          ,p_enc_g_l_ref      => null
167089          );
167090       END IF;
167091    END IF;
167092 END IF;
167093 
167094    ELSE
167095       --
167096       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
167097       --
167098       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167099          trace
167100             (p_msg      => 'Trancaction revesal option is Y'
167101             ,p_level    => C_LEVEL_STATEMENT
167102             ,p_module   => l_log_module);
167103       END IF;
167104    END IF;
167105 
167106 END LOOP;
167107 l_result := XLA_AE_LINES_PKG.InsertLines ;
167108 end loop;
167109 close line_cur;
167110 
167111 
167112 --
167113 -- insert headers into xla_ae_headers_gt table
167114 --
167115 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
167116 
167117 -- insert into errors table here.
167118 
167119 END LOOP;
167120 
167121 --
167122 -- 4865292
167123 --
167124 -- Compare g_hdr_extract_count with event count in
167125 -- CreateHeadersAndLines.
167126 --
167127 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
167128 
167129 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167130    trace (p_msg     => '# rows extracted from header extract objects '
167131                     || ' (running total): '
167132                     || g_hdr_extract_count
167133          ,p_level   => C_LEVEL_STATEMENT
167134          ,p_module  => l_log_module);
167135 END IF;
167136 
167137 CLOSE header_cur;
167138 --
167139 
167140 --
167141 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167142    trace
167143       (p_msg      => 'END of EventType_286'
167144       ,p_level    => C_LEVEL_PROCEDURE
167145       ,p_module   => l_log_module);
167146 END IF;
167147 --
167148 RETURN l_result;
167149 EXCEPTION
167150 WHEN xla_exceptions_pkg.application_exception THEN
167151    
167152 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
167153 
167154    
167155 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
167156 
167157    RAISE;
167158 
167159 WHEN NO_DATA_FOUND THEN
167160 
167161 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
167162 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
167163 
167164 FOR header_record IN header_cur
167165 LOOP
167166     l_array_header_events(header_record.event_id) := header_record.event_id;
167167 END LOOP;
167168 
167169 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
167170 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
167171 
167172 fnd_file.put_line(fnd_file.LOG, '                    ');
167173 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
167174 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
167175 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
167176 
167177 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
167178 LOOP
167179 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
167183 END LOOP;
167180 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
167181         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
167182 	END IF;
167184 
167185 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
167186 fnd_file.put_line(fnd_file.LOG, '                    ');
167187 
167188 
167189 xla_exceptions_pkg.raise_message
167190       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_286');
167191 
167192 
167193 WHEN OTHERS THEN
167194    xla_exceptions_pkg.raise_message
167195       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_286');
167196 END EventType_286;
167197 --
167198 
167199 ---------------------------------------
167200 --
167201 -- PRIVATE PROCEDURE
167202 --         insert_sources_287
167203 --
167204 ----------------------------------------
167205 --
167206 PROCEDURE insert_sources_287(
167207                                 p_target_ledger_id       IN NUMBER
167208                               , p_language               IN VARCHAR2
167209                               , p_sla_ledger_id          IN NUMBER
167210                               , p_pad_start_date         IN DATE
167211                               , p_pad_end_date           IN DATE
167212                          )
167213 IS
167214 
167215 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_RECEIVE';
167216 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RECEIVE';
167217 p_apps_owner                   VARCHAR2(30);
167218 l_log_module                   VARCHAR2(240);
167219 BEGIN
167220 IF g_log_enabled THEN
167221       l_log_module := C_DEFAULT_MODULE||'.insert_sources_287';
167222 END IF;
167223 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167224 
167225       trace
167226          (p_msg      => 'BEGIN of insert_sources_287'
167227          ,p_level    => C_LEVEL_PROCEDURE
167228          ,p_module   => l_log_module);
167229 
167230 END IF;
167231 
167232 -- select APPS owner
167233 SELECT oracle_username
167234   INTO p_apps_owner
167235   FROM fnd_oracle_userid
167236  WHERE read_only_flag = 'U'
167237 ;
167238 
167239 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167240       trace
167241          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
167242                         ' - p_language = '||p_language||
167243                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
167244                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
167245                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
167246                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
167247          ,p_level    => C_LEVEL_STATEMENT
167248          ,p_module   => l_log_module);
167249 END IF;
167250 
167251 
167252 --
167253 INSERT INTO xla_diag_sources --hdr1
167254 (
167255         event_id
167256       , ledger_id
167257       , sla_ledger_id
167258       , description_language
167259       , object_name
167260       , object_type_code
167261       , line_number
167262       , source_application_id
167263       , source_type_code
167264       , source_code
167265       , source_value
167266       , source_meaning
167267       , created_by
167268       , creation_date
167269       , last_update_date
167270       , last_updated_by
167271       , last_update_login
167272       , program_update_date
167273       , program_application_id
167274       , program_id
167275       , request_id
167276 )
167277 SELECT
167278         event_id
167279       , p_target_ledger_id
167280       , p_sla_ledger_id
167281       , p_language
167282       , object_name
167283       , object_type_code
167284       , line_number
167285       , source_application_id
167286       , source_type_code
167287       , source_code
167288       , SUBSTR(source_value ,1,1996)
167289       , SUBSTR(source_meaning,1,200)
167290       , xla_environment_pkg.g_Usr_Id
167291       , TRUNC(SYSDATE)
167292       , TRUNC(SYSDATE)
167293       , xla_environment_pkg.g_Usr_Id
167294       , xla_environment_pkg.g_Login_Id
167295       , TRUNC(SYSDATE)
167296       , xla_environment_pkg.g_Prog_Appl_Id
167297       , xla_environment_pkg.g_Prog_Id
167298       , xla_environment_pkg.g_Req_Id
167299   FROM (
167300        SELECT xet.event_id                  event_id
167301             , 0                             line_number
167302             , CASE r
167303                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
167304                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
167305                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
167306                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
167307                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
167308                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
167309                 
167310                ELSE null
167311               END                           object_name
167312             , CASE r
167313                 WHEN 1 THEN 'HEADER' 
167314                 WHEN 2 THEN 'HEADER' 
167315                 WHEN 3 THEN 'HEADER' 
167316                 WHEN 4 THEN 'HEADER' 
167317                 WHEN 5 THEN 'HEADER' 
167318                 WHEN 6 THEN 'HEADER' 
167319                 
167320                 ELSE null
167321               END                           object_type_code
167322             , CASE r
167323                 WHEN 1 THEN '555' 
167324                 WHEN 2 THEN '555' 
167328                 WHEN 6 THEN '555' 
167325                 WHEN 3 THEN '555' 
167326                 WHEN 4 THEN '555' 
167327                 WHEN 5 THEN '555' 
167329                 
167330                 ELSE null
167331               END                           source_application_id
167332             , 'S'             source_type_code
167333             , CASE r
167334                 WHEN 1 THEN 'ENTITY_CODE' 
167335                 WHEN 2 THEN 'CURRENCY_CODE' 
167336                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
167337                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
167338                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
167339                 WHEN 6 THEN 'TRANSACTION_DATE' 
167340                 
167341                 ELSE null
167342               END                           source_code
167343             , CASE r
167344                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
167345                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
167346                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
167347                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
167348                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
167349                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
167350                 
167351                 ELSE null
167352               END                           source_value
167353             , CASE r
167354                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
167355                           1010186
167356                          ,TO_CHAR(h1.CURRENCY_CODE)
167357                          ,'CURRENCY_CODE'
167358                          ,'S'
167359                          ,555)
167360                 
167361                 ELSE null
167362               END               source_meaning
167363         FROM xla_events_gt     xet  
167364       , GMF_XLA_EXTRACT_HEADERS  h1
167365             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
167366        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
167367          AND xet.event_type_code = C_EVENT_TYPE_CODE
167368             AND h1.event_id = xet.event_id
167369 
167370 )
167371 ;
167372 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167373 
167374       trace
167375          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
167376          ,p_level    => C_LEVEL_STATEMENT
167377          ,p_module   => l_log_module);
167378 
167379 END IF;
167380 --
167381 
167382 
167383 
167384 --
167385 INSERT INTO xla_diag_sources --line1
167386 (
167387         event_id
167388       , ledger_id
167389       , sla_ledger_id
167390       , description_language
167391       , object_name
167392       , object_type_code
167393       , line_number
167394       , source_application_id
167395       , source_type_code
167396       , source_code
167397       , source_value
167398       , source_meaning
167399       , created_by
167400       , creation_date
167401       , last_update_date
167402       , last_updated_by
167403       , last_update_login
167404       , program_update_date
167405       , program_application_id
167406       , program_id
167407       , request_id
167408 )
167409 SELECT  event_id
167410       , p_target_ledger_id
167411       , p_sla_ledger_id
167412       , p_language
167413       , object_name
167414       , object_type_code
167415       , line_number
167416       , source_application_id
167417       , source_type_code
167418       , source_code
167419       , SUBSTR(source_value,1,1996)
167420       , SUBSTR(source_meaning,1,200)
167421       , xla_environment_pkg.g_Usr_Id
167422       , TRUNC(SYSDATE)
167423       , TRUNC(SYSDATE)
167424       , xla_environment_pkg.g_Usr_Id
167425       , xla_environment_pkg.g_Login_Id
167426       , TRUNC(SYSDATE)
167427       , xla_environment_pkg.g_Prog_Appl_Id
167428       , xla_environment_pkg.g_Prog_Id
167429       , xla_environment_pkg.g_Req_Id
167430   FROM (
167431        SELECT xet.event_id                  event_id
167432             , l2.line_number                 line_number
167433             , CASE r
167434                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
167435                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
167436                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
167437                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
167438                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
167439                 
167440                ELSE null
167441               END                           object_name
167442             , CASE r
167443                 WHEN 1 THEN 'LINE' 
167444                 WHEN 2 THEN 'LINE' 
167445                 WHEN 3 THEN 'LINE' 
167446                 WHEN 4 THEN 'LINE' 
167447                 WHEN 5 THEN 'LINE' 
167448                 
167449                 ELSE null
167450               END                           object_type_code
167451             , CASE r
167452                 WHEN 1 THEN '555' 
167453                 WHEN 2 THEN '555' 
167454                 WHEN 3 THEN '555' 
167455                 WHEN 4 THEN '555' 
167456                 WHEN 5 THEN '555' 
167457                 
167458                 ELSE null
167459               END                           source_application_id
167460             , 'S'             source_type_code
167461             , CASE r
167462                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
167463                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
167467                 
167464                 WHEN 3 THEN 'ENTERED_AMOUNT' 
167465                 WHEN 4 THEN 'LINE_ID' 
167466                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
167468                 ELSE null
167469               END                           source_code
167470             , CASE r
167471                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
167472                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
167473                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
167474                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
167475                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
167476                 
167477                 ELSE null
167478               END                           source_value
167479             , null              source_meaning
167480          FROM  xla_events_gt     xet  
167481         , GMF_XLA_EXTRACT_LINES  l2
167482             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
167483         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
167484           AND xet.event_type_code = C_EVENT_TYPE_CODE
167485             AND l2.event_id          = xet.event_id
167486 
167487 )
167488 ;
167489 --
167490 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167491 
167492       trace
167493          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
167494          ,p_level    => C_LEVEL_STATEMENT
167495          ,p_module   => l_log_module);
167496 
167497 END IF;
167498 
167499 
167500 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167501       trace
167502          (p_msg      => 'END of insert_sources_287'
167503          ,p_level    => C_LEVEL_PROCEDURE
167504          ,p_module   => l_log_module);
167505 END IF;
167506 EXCEPTION
167507   WHEN xla_exceptions_pkg.application_exception THEN
167508       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
167509             trace
167510                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
167511                ,p_level    => C_LEVEL_EXCEPTION
167512                ,p_module   => l_log_module);
167513       END IF;
167514       RAISE;
167515   WHEN OTHERS THEN
167516       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
167517             trace
167518                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
167519                ,p_level    => C_LEVEL_EXCEPTION
167520                ,p_module   => l_log_module);
167521        END IF;
167522        xla_exceptions_pkg.raise_message
167523            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_287');
167524 END insert_sources_287;
167525 --
167526 
167527 ---------------------------------------
167528 --
167529 -- PRIVATE FUNCTION
167530 --         EventType_287
167531 --
167532 ----------------------------------------
167533 --
167534 FUNCTION EventType_287
167535        (p_application_id         IN NUMBER
167536        ,p_base_ledger_id         IN NUMBER
167537        ,p_target_ledger_id       IN NUMBER
167538        ,p_language               IN VARCHAR2
167539        ,p_currency_code          IN VARCHAR2
167540        ,p_sla_ledger_id          IN NUMBER
167541        ,p_pad_start_date         IN DATE
167542        ,p_pad_end_date           IN DATE
167543        ,p_primary_ledger_id      IN NUMBER)
167544 RETURN BOOLEAN IS
167545 --
167546 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_RECEIVE';
167547 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RECEIVE';
167548 
167549 l_calculate_acctd_flag   VARCHAR2(1) :='N';
167550 l_calculate_g_l_flag     VARCHAR2(1) :='N';
167551 --
167552 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167553 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167554 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
167555 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167556 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167557 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
167558 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
167559 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167560 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167561 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167562 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167563 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167564 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167565 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167566 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167567 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167568 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167569 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167570 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167571 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167572 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167573 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167574 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
167575 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
167579 l_event_id                             NUMBER;
167576 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
167577 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
167578 
167580 l_previous_event_id                    NUMBER;
167581 l_first_event_id                       NUMBER;
167582 l_last_event_id                        NUMBER;
167583 
167584 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
167585 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
167586 --
167587 --
167588 l_result                    BOOLEAN := TRUE;
167589 l_rows                      NUMBER  := 1000;
167590 l_event_type_name           VARCHAR2(80) := 'Logical Receiving';
167591 l_event_class_name          VARCHAR2(80) := 'Receiving';
167592 l_description               VARCHAR2(4000);
167593 l_transaction_reversal      NUMBER;
167594 l_ae_header_id              NUMBER;
167595 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
167596 l_log_module                VARCHAR2(240);
167597 --
167598 l_acct_reversal_source      VARCHAR2(30);
167599 l_trx_reversal_source       VARCHAR2(30);
167600 
167601 l_continue_with_lines       BOOLEAN := TRUE;
167602 --
167603 l_acc_rev_gl_date_source    DATE;                      -- 4262811
167604 --
167605 type t_array_event_id is table of number index by binary_integer;
167606 
167607 l_rec_array_event                    t_rec_array_event;
167608 l_null_rec_array_event               t_rec_array_event;
167609 l_array_ae_header_id                 xla_number_array_type;
167610 l_actual_flag                        VARCHAR2(1) := NULL;
167611 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
167612 l_balance_type_code                  VARCHAR2(1) :=NULL;
167613 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
167614 
167615 --
167616 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
167617 --
167618 
167619 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
167620 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
167621 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
167622 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
167623 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
167624 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
167625 
167626 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
167627 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
167628 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
167629 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
167630 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
167631 
167632 l_array_source_6              t_array_source_6;
167633 l_array_source_7              t_array_source_7;
167634 l_array_source_8              t_array_source_8;
167635 l_array_source_9              t_array_source_9;
167636 l_array_source_10              t_array_source_10;
167637 l_array_source_12              t_array_source_12;
167638 
167639 l_array_source_1      t_array_source_1;
167640 l_array_source_2      t_array_source_2;
167641 l_array_source_3      t_array_source_3;
167642 l_array_source_5      t_array_source_5;
167643 l_array_source_11      t_array_source_11;
167644 
167645 --
167646 CURSOR header_cur
167647 IS
167648 SELECT /*+ leading(xet) cardinality(xet,1) */
167649 -- Event Type Code: LOG_RECEIVE
167650 -- Event Class Code: RECEIVE
167651     xet.entity_id
167652   , xet.legal_entity_id
167653   , xet.entity_code
167654   , xet.transaction_number
167655   , xet.event_id
167656   , xet.event_class_code
167657   , xet.event_type_code
167658   , xet.event_number
167659   , xet.event_date
167660   , xet.transaction_date
167661   , xet.reference_num_1
167662   , xet.reference_num_2
167663   , xet.reference_num_3
167664   , xet.reference_num_4
167665   , xet.reference_char_1
167666   , xet.reference_char_2
167667   , xet.reference_char_3
167668   , xet.reference_char_4
167669   , xet.reference_date_1
167670   , xet.reference_date_2
167671   , xet.reference_date_3
167672   , xet.reference_date_4
167673   , xet.event_created_by
167674   , xet.budgetary_control_flag 
167675   , h1.ENTITY_CODE    source_6
167676   , h1.CURRENCY_CODE    source_7
167677   , h1.CURRENCY_CONVERSION_DATE    source_8
167678   , h1.CURRENCY_CONVERSION_RATE    source_9
167679   , h1.CURRENCY_CONVERSION_TYPE    source_10
167680   , h1.TRANSACTION_DATE    source_12
167681   FROM xla_events_gt     xet 
167682   , GMF_XLA_EXTRACT_HEADERS  h1
167683  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
167684    and xet.event_type_code = C_EVENT_TYPE_CODE
167685    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
167686 
167687  ORDER BY event_id
167688 ;
167689 
167690 
167691 --
167692 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
167693 IS
167694 SELECT /*+ leading(xet) cardinality(xet,1) */
167695 -- Event Type Code: LOG_RECEIVE
167696 -- Event Class Code: RECEIVE
167697     xet.entity_id
167698    ,xet.legal_entity_id
167699    ,xet.entity_code
167703    ,xet.event_type_code
167700    ,xet.transaction_number
167701    ,xet.event_id
167702    ,xet.event_class_code
167704    ,xet.event_number
167705    ,xet.event_date
167706    ,xet.transaction_date
167707    ,xet.reference_num_1
167708    ,xet.reference_num_2
167709    ,xet.reference_num_3
167710    ,xet.reference_num_4
167711    ,xet.reference_char_1
167712    ,xet.reference_char_2
167713    ,xet.reference_char_3
167714    ,xet.reference_char_4
167715    ,xet.reference_date_1
167716    ,xet.reference_date_2
167717    ,xet.reference_date_3
167718    ,xet.reference_date_4
167719    ,xet.event_created_by
167720    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
167721   , l2.TRANSACTION_ACCOUNT_ID    source_1
167722   , l2.JOURNAL_LINE_TYPE    source_2
167723   , l2.ENTERED_AMOUNT    source_3
167724   , l2.LINE_ID    source_5
167725   , l2.ACCOUNTED_AMOUNT    source_11
167726   FROM xla_events_gt     xet 
167727   , GMF_XLA_EXTRACT_LINES  l2
167728  WHERE xet.event_id between x_first_event_id and x_last_event_id
167729    and xet.event_date between p_pad_start_date and p_pad_end_date
167730    and xet.event_type_code = C_EVENT_TYPE_CODE
167731    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
167732 ;
167733 
167734 --
167735 BEGIN
167736 IF g_log_enabled THEN
167737    l_log_module := C_DEFAULT_MODULE||'.EventType_287';
167738 END IF;
167739 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167740    trace
167741       (p_msg      => 'BEGIN of EventType_287'
167742       ,p_level    => C_LEVEL_PROCEDURE
167743       ,p_module   => l_log_module);
167744 END IF;
167745 
167746 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167747    trace
167748       (p_msg      => 'p_application_id = '||p_application_id||
167749                      ' - p_base_ledger_id = '||p_base_ledger_id||
167750                      ' - p_target_ledger_id  = '||p_target_ledger_id||
167751                      ' - p_language = '||p_language||
167752                      ' - p_currency_code = '||p_currency_code||
167753                      ' - p_sla_ledger_id = '||p_sla_ledger_id
167754       ,p_level    => C_LEVEL_STATEMENT
167755       ,p_module   => l_log_module);
167756 END IF;
167757 --
167758 -- initialze arrays
167759 --
167760 g_array_event.DELETE;
167761 l_rec_array_event := l_null_rec_array_event;
167762 --
167763 --------------------------------------
167764 -- 4262811 Initialze MPA Line Number
167765 --------------------------------------
167766 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
167767 
167768 --
167769 
167770 --
167771 OPEN header_cur;
167772 --
167773 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167774    trace
167775    (p_msg      => 'SQL - FETCH header_cur'
167776    ,p_level    => C_LEVEL_STATEMENT
167777    ,p_module   => l_log_module);
167778 END IF;
167779 --
167780 LOOP
167781 FETCH header_cur BULK COLLECT INTO
167782         l_array_entity_id
167783       , l_array_legal_entity_id
167784       , l_array_entity_code
167785       , l_array_transaction_num
167786       , l_array_event_id
167787       , l_array_class_code
167788       , l_array_event_type
167789       , l_array_event_number
167790       , l_array_event_date
167791       , l_array_transaction_date
167792       , l_array_reference_num_1
167793       , l_array_reference_num_2
167794       , l_array_reference_num_3
167795       , l_array_reference_num_4
167796       , l_array_reference_char_1
167797       , l_array_reference_char_2
167798       , l_array_reference_char_3
167799       , l_array_reference_char_4
167800       , l_array_reference_date_1
167801       , l_array_reference_date_2
167802       , l_array_reference_date_3
167803       , l_array_reference_date_4
167804       , l_array_event_created_by
167805       , l_array_budgetary_control_flag 
167806       , l_array_source_6
167807       , l_array_source_7
167808       , l_array_source_8
167809       , l_array_source_9
167810       , l_array_source_10
167811       , l_array_source_12
167812       LIMIT l_rows;
167813 --
167814 IF (C_LEVEL_EVENT >= g_log_level) THEN
167815    trace
167816    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
167817    ,p_level    => C_LEVEL_EVENT
167818    ,p_module   => l_log_module);
167819 END IF;
167820 --
167821 EXIT WHEN l_array_entity_id.COUNT = 0;
167822 
167823 -- initialize arrays
167824 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
167825 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
167826 
167827 --
167828 -- Bug 4458708
167829 --
167830 XLA_AE_LINES_PKG.g_LineNumber := 0;
167831 
167832 
167833 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
167834 g_last_hdr_idx := l_array_event_id.LAST;
167835 --
167836 -- loop for the headers. Each iteration is for each header extract row
167837 -- fetched in header cursor
167838 --
167839 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
167840 
167841 --
167842 -- set event info as cache for other routines to refer event attributes
167843 --
167844 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
167845    (p_application_id           => p_application_id
167846    ,p_primary_ledger_id        => p_primary_ledger_id
167847    ,p_base_ledger_id           => p_base_ledger_id
167848    ,p_target_ledger_id         => p_target_ledger_id
167849    ,p_entity_id                => l_array_entity_id(hdr_idx)
167853    ,p_event_id                 => l_array_event_id(hdr_idx)
167850    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
167851    ,p_entity_code              => l_array_entity_code(hdr_idx)
167852    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
167854    ,p_event_class_code         => l_array_class_code(hdr_idx)
167855    ,p_event_type_code          => l_array_event_type(hdr_idx)
167856    ,p_event_number             => l_array_event_number(hdr_idx)
167857    ,p_event_date               => l_array_event_date(hdr_idx)
167858    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
167859    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
167860    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
167861    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
167862    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
167863    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
167864    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
167865    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
167866    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
167867    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
167868    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
167869    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
167870    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
167871    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
167872    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
167873 
167874 --
167875 -- set the status of entry to C_VALID (0)
167876 --
167877 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
167878 
167879 --
167880 -- initialize a row for ae header
167881 --
167882 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
167883 
167884 l_event_id := l_array_event_id(hdr_idx);
167885 
167886 --
167887 -- storing the hdr_idx for event. May be used by line cursor.
167888 --
167889 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
167890 
167891 --
167892 -- store sources from header extract. This can be improved to
167893 -- store only those sources from header extract that may be used in lines
167894 --
167895 
167896 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
167897 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
167898 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
167899 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
167900 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
167901 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
167902 
167903 --
167904 -- initilaize the status of ae headers for diffrent balance types
167905 -- the status is initialised to C_NOT_CREATED (2)
167906 --
167907 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
167908 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
167909 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
167910 
167911 --
167912 -- call api to validate and store accounting attributes for header
167913 --
167914 
167915 ------------------------------------------------------------
167916 -- Accrual Reversal : to get date for Standard Source (NONE)
167917 ------------------------------------------------------------
167918 l_acc_rev_gl_date_source := NULL;
167919 
167920      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
167921       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
167922 
167923 
167924 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
167925 
167926 XLA_AE_HEADER_PKG.SetJeCategoryName;
167927 
167928 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
167929 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
167930 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
167931 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
167932 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
167933 
167934 
167935 -- No header level analytical criteria
167936 
167937 --
167938 --accounting attribute enhancement, bug 3612931
167939 --
167940 l_trx_reversal_source := SUBSTR(NULL, 1,30);
167941 
167942 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
167943    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
167944 
167945    xla_accounting_err_pkg.build_message
167946       (p_appli_s_name            => 'XLA'
167947       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
167948       ,p_token_1                 => 'ACCT_ATTR_NAME'
167949       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
167950       ,p_token_2                 => 'PRODUCT_NAME'
167951       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
167952       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
167953       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
167954       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
167955 
167959    -- accounting for a distributeion
167956 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
167957    --
167958    -- following sets the accounting attributes needed to reverse
167960    --
167961    xla_ae_lines_pkg.SetTrxReversalAttrs
167962       (p_event_id              => l_event_id
167963       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
167964       ,p_trx_reversal_source   => l_trx_reversal_source);
167965 
167966 END IF;
167967 
167968 
167969 ----------------------------------------------------------------
167970 -- 4262811 -  update the header statuses to invalid in need be
167971 ----------------------------------------------------------------
167972 --
167973 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
167974 
167975 
167976   -----------------------------------------------
167977   -- No accrual reversal for the event class/type
167978   -----------------------------------------------
167979 ----------------------------------------------------------------
167980 
167981 --
167982 -- this ends the header loop iteration for one bulk fetch
167983 --
167984 END LOOP;
167985 
167986 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
167987 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
167988 
167989 --
167990 -- insert dummy rows into lines gt table that were created due to
167991 -- transaction reversals
167992 --
167993 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
167994    l_result := XLA_AE_LINES_PKG.InsertLines;
167995 END IF;
167996 
167997 --
167998 -- reset the temp_line_num for each set of events fetched from header
167999 -- cursor rather than doing it for each new event in line cursor
168000 -- Bug 3939231
168001 --
168002 xla_ae_lines_pkg.g_temp_line_num := 0;
168003 
168004 
168005 
168006 --
168007 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
168008 --
168009 --
168010 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168011 
168012       trace
168013          (p_msg      => 'SQL - FETCH line_cur'
168014          ,p_level    => C_LEVEL_STATEMENT
168015          ,p_module   => l_log_module);
168016 
168017 END IF;
168018 --
168019 --
168020 LOOP
168021   --
168022   FETCH line_cur BULK COLLECT INTO
168023         l_array_entity_id
168024       , l_array_legal_entity_id
168025       , l_array_entity_code
168026       , l_array_transaction_num
168027       , l_array_event_id
168028       , l_array_class_code
168029       , l_array_event_type
168030       , l_array_event_number
168031       , l_array_event_date
168032       , l_array_transaction_date
168033       , l_array_reference_num_1
168034       , l_array_reference_num_2
168035       , l_array_reference_num_3
168036       , l_array_reference_num_4
168037       , l_array_reference_char_1
168038       , l_array_reference_char_2
168039       , l_array_reference_char_3
168040       , l_array_reference_char_4
168041       , l_array_reference_date_1
168042       , l_array_reference_date_2
168043       , l_array_reference_date_3
168044       , l_array_reference_date_4
168045       , l_array_event_created_by
168046       , l_array_budgetary_control_flag
168047       , l_array_extract_line_num 
168048       , l_array_source_1
168049       , l_array_source_2
168050       , l_array_source_3
168051       , l_array_source_5
168052       , l_array_source_11
168053       LIMIT l_rows;
168054 
168055   --
168056   IF (C_LEVEL_EVENT >= g_log_level) THEN
168057             trace
168058                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
168059                ,p_level    => C_LEVEL_EVENT
168060                ,p_module   => l_log_module);
168061   END IF;
168062   --
168063   EXIT WHEN l_array_entity_id.count = 0;
168064 
168065   XLA_AE_LINES_PKG.g_rec_lines := null;
168066 
168067 --
168068 -- Bug 4458708
168069 --
168070 XLA_AE_LINES_PKG.g_LineNumber := 0;
168071 --
168072 --
168073 
168074 FOR Idx IN 1..l_array_event_id.count LOOP
168075    --
168076    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
168077    --
168078    l_event_id := l_array_event_id(idx);  -- 5648433
168079 
168080    --
168081    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
168082    --
168083 
168084    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
168085              (g_array_event(l_event_id).array_value_num('header_index'))
168086          ,'N'
168087          ) <> 'Y'
168088    THEN
168089       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168090          trace
168091             (p_msg      => 'Trancaction revesal option is not Y '
168092             ,p_level    => C_LEVEL_STATEMENT
168093             ,p_module   => l_log_module);
168094       END IF;
168095 
168096 --
168097 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
168098 --
168099 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
168100 --
168101 -- set event info as cache for other routines to refer event attributes
168102 --
168103 
168104 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
168105    l_previous_event_id := l_event_id;
168106 
168107    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
168111       ,p_target_ledger_id         => p_target_ledger_id
168108       (p_application_id           => p_application_id
168109       ,p_primary_ledger_id        => p_primary_ledger_id
168110       ,p_base_ledger_id           => p_base_ledger_id
168112       ,p_entity_id                => l_array_entity_id(Idx)
168113       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
168114       ,p_entity_code              => l_array_entity_code(Idx)
168115       ,p_transaction_num          => l_array_transaction_num(Idx)
168116       ,p_event_id                 => l_array_event_id(Idx)
168117       ,p_event_class_code         => l_array_class_code(Idx)
168118       ,p_event_type_code          => l_array_event_type(Idx)
168119       ,p_event_number             => l_array_event_number(Idx)
168120       ,p_event_date               => l_array_event_date(Idx)
168121       ,p_transaction_date         => l_array_transaction_date(Idx)
168122       ,p_reference_num_1          => l_array_reference_num_1(Idx)
168123       ,p_reference_num_2          => l_array_reference_num_2(Idx)
168124       ,p_reference_num_3          => l_array_reference_num_3(Idx)
168125       ,p_reference_num_4          => l_array_reference_num_4(Idx)
168126       ,p_reference_char_1         => l_array_reference_char_1(Idx)
168127       ,p_reference_char_2         => l_array_reference_char_2(Idx)
168128       ,p_reference_char_3         => l_array_reference_char_3(Idx)
168129       ,p_reference_char_4         => l_array_reference_char_4(Idx)
168130       ,p_reference_date_1         => l_array_reference_date_1(Idx)
168131       ,p_reference_date_2         => l_array_reference_date_2(Idx)
168132       ,p_reference_date_3         => l_array_reference_date_3(Idx)
168133       ,p_reference_date_4         => l_array_reference_date_4(Idx)
168134       ,p_event_created_by         => l_array_event_created_by(Idx)
168135       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
168136        --
168137 END IF;
168138 
168139 
168140 
168141 --
168142 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
168143 
168144 l_acct_reversal_source := SUBSTR(NULL, 1,30);
168145 
168146 IF l_continue_with_lines THEN
168147    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
168148       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
168149 
168150       xla_accounting_err_pkg.build_message
168151          (p_appli_s_name            => 'XLA'
168152          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
168153          ,p_token_1                 => 'LINE_NUMBER'
168154          ,p_value_1                 => l_array_extract_line_num(Idx)
168155          ,p_token_2                 => 'PRODUCT_NAME'
168156          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
168157          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
168158          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
168159          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
168160 
168161    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
168162       --
168163       -- following sets the accounting attributes needed to reverse
168164       -- accounting for a distributeion
168165       --
168166 
168167       --
168168       -- 5217187
168169       --
168170       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
168171       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
168172                                        g_array_event(l_event_id).array_value_num('header_index'));
168173       --
168174       --
168175 
168176       -- No reversal code generated
168177 
168178       xla_ae_lines_pkg.SetAcctReversalAttrs
168179          (p_event_id             => l_event_id
168180          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
168181          ,p_calculate_acctd_flag => l_calculate_acctd_flag
168182          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
168183    END IF;
168184 
168185    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
168186        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
168187 
168188 --
168189 AcctLineType_48 (
168190  p_application_id  => p_application_id
168191  ,p_event_id     => l_event_id
168192  ,p_calculate_acctd_flag => l_calculate_acctd_flag
168193  ,p_calculate_g_l_flag => l_calculate_g_l_flag
168194  ,p_actual_flag => l_actual_flag
168195  ,p_balance_type_code => l_balance_type_code
168196  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
168197  
168198  , p_source_1 => l_array_source_1(Idx)
168199  , p_source_2 => l_array_source_2(Idx)
168200  , p_source_3 => l_array_source_3(Idx)
168201  , p_source_5 => l_array_source_5(Idx)
168202  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
168203  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
168204  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
168205  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
168206  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
168207  , p_source_11 => l_array_source_11(Idx)
168208  );
168209 If(l_balance_type_code = 'A') THEN
168210   l_actual_gain_loss_ref := l_gain_or_loss_ref;
168211 END IF;
168212 
168213 --
168214 
168215 
168216 --
168217 AcctLineType_64 (
168218  p_application_id  => p_application_id
168219  ,p_event_id     => l_event_id
168220  ,p_calculate_acctd_flag => l_calculate_acctd_flag
168224  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
168221  ,p_calculate_g_l_flag => l_calculate_g_l_flag
168222  ,p_actual_flag => l_actual_flag
168223  ,p_balance_type_code => l_balance_type_code
168225  
168226  , p_source_1 => l_array_source_1(Idx)
168227  , p_source_2 => l_array_source_2(Idx)
168228  , p_source_3 => l_array_source_3(Idx)
168229  , p_source_5 => l_array_source_5(Idx)
168230  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
168231  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
168232  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
168233  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
168234  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
168235  , p_source_11 => l_array_source_11(Idx)
168236  );
168237 If(l_balance_type_code = 'A') THEN
168238   l_actual_gain_loss_ref := l_gain_or_loss_ref;
168239 END IF;
168240 
168241 --
168242 
168243 
168244 --
168245 AcctLineType_121 (
168246  p_application_id  => p_application_id
168247  ,p_event_id     => l_event_id
168248  ,p_calculate_acctd_flag => l_calculate_acctd_flag
168249  ,p_calculate_g_l_flag => l_calculate_g_l_flag
168250  ,p_actual_flag => l_actual_flag
168251  ,p_balance_type_code => l_balance_type_code
168252  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
168253  
168254  , p_source_1 => l_array_source_1(Idx)
168255  , p_source_2 => l_array_source_2(Idx)
168256  , p_source_3 => l_array_source_3(Idx)
168257  , p_source_5 => l_array_source_5(Idx)
168258  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
168259  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
168260  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
168261  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
168262  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
168263  , p_source_11 => l_array_source_11(Idx)
168264  );
168265 If(l_balance_type_code = 'A') THEN
168266   l_actual_gain_loss_ref := l_gain_or_loss_ref;
168267 END IF;
168268 
168269 --
168270 
168271       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
168272       -- or secondary ledger that has different currency with primary
168273       -- or alc that is calculated by sla
168274       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
168275             (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'))
168276 
168277 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
168278 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
168279           AND (l_actual_flag = 'A')) THEN
168280         XLA_AE_LINES_PKG.CreateGainOrLossLines(
168281           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
168282          ,p_application_id   => p_application_id
168283          ,p_amb_context_code => 'DEFAULT'
168284          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
168285          ,p_event_class_code => C_EVENT_CLASS_CODE
168286          ,p_event_type_code  => C_EVENT_TYPE_CODE
168287          
168288          ,p_gain_ccid        => -1
168289          ,p_loss_ccid        => -1
168290 
168291          ,p_actual_flag      => l_actual_flag
168292          ,p_enc_flag         => null
168293          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
168294          ,p_enc_g_l_ref      => null
168295          );
168296       END IF;
168297    END IF;
168298 END IF;
168299 
168300    ELSE
168301       --
168302       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
168303       --
168304       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168305          trace
168306             (p_msg      => 'Trancaction revesal option is Y'
168307             ,p_level    => C_LEVEL_STATEMENT
168308             ,p_module   => l_log_module);
168309       END IF;
168310    END IF;
168311 
168312 END LOOP;
168313 l_result := XLA_AE_LINES_PKG.InsertLines ;
168314 end loop;
168315 close line_cur;
168316 
168317 
168318 --
168319 -- insert headers into xla_ae_headers_gt table
168320 --
168321 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
168322 
168323 -- insert into errors table here.
168324 
168325 END LOOP;
168326 
168327 --
168328 -- 4865292
168329 --
168330 -- Compare g_hdr_extract_count with event count in
168331 -- CreateHeadersAndLines.
168332 --
168333 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
168334 
168335 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168336    trace (p_msg     => '# rows extracted from header extract objects '
168337                     || ' (running total): '
168338                     || g_hdr_extract_count
168339          ,p_level   => C_LEVEL_STATEMENT
168340          ,p_module  => l_log_module);
168341 END IF;
168342 
168343 CLOSE header_cur;
168344 --
168345 
168346 --
168347 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168348    trace
168349       (p_msg      => 'END of EventType_287'
168350       ,p_level    => C_LEVEL_PROCEDURE
168351       ,p_module   => l_log_module);
168352 END IF;
168353 --
168354 RETURN l_result;
168355 EXCEPTION
168356 WHEN xla_exceptions_pkg.application_exception THEN
168357    
168358 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
168359 
168360    
168364 
168361 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
168362 
168363    RAISE;
168365 WHEN NO_DATA_FOUND THEN
168366 
168367 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
168368 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
168369 
168370 FOR header_record IN header_cur
168371 LOOP
168372     l_array_header_events(header_record.event_id) := header_record.event_id;
168373 END LOOP;
168374 
168375 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
168376 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
168377 
168378 fnd_file.put_line(fnd_file.LOG, '                    ');
168379 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
168380 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
168381 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
168382 
168383 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
168384 LOOP
168385 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
168386 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
168387         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
168388 	END IF;
168389 END LOOP;
168390 
168391 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
168392 fnd_file.put_line(fnd_file.LOG, '                    ');
168393 
168394 
168395 xla_exceptions_pkg.raise_message
168396       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_287');
168397 
168398 
168399 WHEN OTHERS THEN
168400    xla_exceptions_pkg.raise_message
168401       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_287');
168402 END EventType_287;
168403 --
168404 
168405 ---------------------------------------
168406 --
168407 -- PRIVATE PROCEDURE
168408 --         insert_sources_288
168409 --
168410 ----------------------------------------
168411 --
168412 PROCEDURE insert_sources_288(
168413                                 p_target_ledger_id       IN NUMBER
168414                               , p_language               IN VARCHAR2
168415                               , p_sla_ledger_id          IN NUMBER
168416                               , p_pad_start_date         IN DATE
168417                               , p_pad_end_date           IN DATE
168418                          )
168419 IS
168420 
168421 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_RET_TO_RECEIVING';
168422 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DELIVER';
168423 p_apps_owner                   VARCHAR2(30);
168424 l_log_module                   VARCHAR2(240);
168425 BEGIN
168426 IF g_log_enabled THEN
168427       l_log_module := C_DEFAULT_MODULE||'.insert_sources_288';
168428 END IF;
168429 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168430 
168431       trace
168432          (p_msg      => 'BEGIN of insert_sources_288'
168433          ,p_level    => C_LEVEL_PROCEDURE
168434          ,p_module   => l_log_module);
168435 
168436 END IF;
168437 
168438 -- select APPS owner
168439 SELECT oracle_username
168440   INTO p_apps_owner
168441   FROM fnd_oracle_userid
168442  WHERE read_only_flag = 'U'
168443 ;
168444 
168445 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168446       trace
168447          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
168448                         ' - p_language = '||p_language||
168449                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
168450                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
168451                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
168452                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
168453          ,p_level    => C_LEVEL_STATEMENT
168454          ,p_module   => l_log_module);
168455 END IF;
168456 
168457 
168458 --
168459 INSERT INTO xla_diag_sources --hdr1
168460 (
168461         event_id
168462       , ledger_id
168463       , sla_ledger_id
168464       , description_language
168465       , object_name
168466       , object_type_code
168467       , line_number
168468       , source_application_id
168469       , source_type_code
168470       , source_code
168471       , source_value
168472       , source_meaning
168473       , created_by
168474       , creation_date
168475       , last_update_date
168476       , last_updated_by
168477       , last_update_login
168478       , program_update_date
168479       , program_application_id
168480       , program_id
168481       , request_id
168482 )
168483 SELECT
168484         event_id
168485       , p_target_ledger_id
168486       , p_sla_ledger_id
168487       , p_language
168488       , object_name
168489       , object_type_code
168490       , line_number
168491       , source_application_id
168492       , source_type_code
168493       , source_code
168494       , SUBSTR(source_value ,1,1996)
168495       , SUBSTR(source_meaning,1,200)
168496       , xla_environment_pkg.g_Usr_Id
168497       , TRUNC(SYSDATE)
168498       , TRUNC(SYSDATE)
168499       , xla_environment_pkg.g_Usr_Id
168500       , xla_environment_pkg.g_Login_Id
168501       , TRUNC(SYSDATE)
168502       , xla_environment_pkg.g_Prog_Appl_Id
168503       , xla_environment_pkg.g_Prog_Id
168504       , xla_environment_pkg.g_Req_Id
168508             , CASE r
168505   FROM (
168506        SELECT xet.event_id                  event_id
168507             , 0                             line_number
168509                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
168510                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
168511                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
168512                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
168513                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
168514                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
168515                 
168516                ELSE null
168517               END                           object_name
168518             , CASE r
168519                 WHEN 1 THEN 'HEADER' 
168520                 WHEN 2 THEN 'HEADER' 
168521                 WHEN 3 THEN 'HEADER' 
168522                 WHEN 4 THEN 'HEADER' 
168523                 WHEN 5 THEN 'HEADER' 
168524                 WHEN 6 THEN 'HEADER' 
168525                 
168526                 ELSE null
168527               END                           object_type_code
168528             , CASE r
168529                 WHEN 1 THEN '555' 
168530                 WHEN 2 THEN '555' 
168531                 WHEN 3 THEN '555' 
168532                 WHEN 4 THEN '555' 
168533                 WHEN 5 THEN '555' 
168534                 WHEN 6 THEN '555' 
168535                 
168536                 ELSE null
168537               END                           source_application_id
168538             , 'S'             source_type_code
168539             , CASE r
168540                 WHEN 1 THEN 'ENTITY_CODE' 
168541                 WHEN 2 THEN 'CURRENCY_CODE' 
168542                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
168543                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
168544                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
168545                 WHEN 6 THEN 'TRANSACTION_DATE' 
168546                 
168547                 ELSE null
168548               END                           source_code
168549             , CASE r
168550                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
168551                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
168552                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
168553                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
168554                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
168555                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
168556                 
168557                 ELSE null
168558               END                           source_value
168559             , CASE r
168560                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
168561                           1010186
168562                          ,TO_CHAR(h1.CURRENCY_CODE)
168563                          ,'CURRENCY_CODE'
168564                          ,'S'
168565                          ,555)
168566                 
168567                 ELSE null
168568               END               source_meaning
168569         FROM xla_events_gt     xet  
168570       , GMF_XLA_EXTRACT_HEADERS  h1
168571             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
168572        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
168573          AND xet.event_type_code = C_EVENT_TYPE_CODE
168574             AND h1.event_id = xet.event_id
168575 
168576 )
168577 ;
168578 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168579 
168580       trace
168581          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
168582          ,p_level    => C_LEVEL_STATEMENT
168583          ,p_module   => l_log_module);
168584 
168585 END IF;
168586 --
168587 
168588 
168589 
168590 --
168591 INSERT INTO xla_diag_sources --line1
168592 (
168593         event_id
168594       , ledger_id
168595       , sla_ledger_id
168596       , description_language
168597       , object_name
168598       , object_type_code
168599       , line_number
168600       , source_application_id
168601       , source_type_code
168602       , source_code
168603       , source_value
168604       , source_meaning
168605       , created_by
168606       , creation_date
168607       , last_update_date
168608       , last_updated_by
168609       , last_update_login
168610       , program_update_date
168611       , program_application_id
168612       , program_id
168613       , request_id
168614 )
168615 SELECT  event_id
168616       , p_target_ledger_id
168617       , p_sla_ledger_id
168618       , p_language
168619       , object_name
168620       , object_type_code
168621       , line_number
168622       , source_application_id
168623       , source_type_code
168624       , source_code
168625       , SUBSTR(source_value,1,1996)
168626       , SUBSTR(source_meaning,1,200)
168627       , xla_environment_pkg.g_Usr_Id
168628       , TRUNC(SYSDATE)
168629       , TRUNC(SYSDATE)
168630       , xla_environment_pkg.g_Usr_Id
168631       , xla_environment_pkg.g_Login_Id
168632       , TRUNC(SYSDATE)
168633       , xla_environment_pkg.g_Prog_Appl_Id
168634       , xla_environment_pkg.g_Prog_Id
168635       , xla_environment_pkg.g_Req_Id
168636   FROM (
168637        SELECT xet.event_id                  event_id
168638             , l2.line_number                 line_number
168639             , CASE r
168640                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
168641                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
168645                 
168642                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
168643                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
168644                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
168646                ELSE null
168647               END                           object_name
168648             , CASE r
168649                 WHEN 1 THEN 'LINE' 
168650                 WHEN 2 THEN 'LINE' 
168651                 WHEN 3 THEN 'LINE' 
168652                 WHEN 4 THEN 'LINE' 
168653                 WHEN 5 THEN 'LINE' 
168654                 
168655                 ELSE null
168656               END                           object_type_code
168657             , CASE r
168658                 WHEN 1 THEN '555' 
168659                 WHEN 2 THEN '555' 
168660                 WHEN 3 THEN '555' 
168661                 WHEN 4 THEN '555' 
168662                 WHEN 5 THEN '555' 
168663                 
168664                 ELSE null
168665               END                           source_application_id
168666             , 'S'             source_type_code
168667             , CASE r
168668                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
168669                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
168670                 WHEN 3 THEN 'ENTERED_AMOUNT' 
168671                 WHEN 4 THEN 'LINE_ID' 
168672                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
168673                 
168674                 ELSE null
168675               END                           source_code
168676             , CASE r
168677                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
168678                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
168679                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
168680                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
168681                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
168682                 
168683                 ELSE null
168684               END                           source_value
168685             , null              source_meaning
168686          FROM  xla_events_gt     xet  
168687         , GMF_XLA_EXTRACT_LINES  l2
168688             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
168689         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
168690           AND xet.event_type_code = C_EVENT_TYPE_CODE
168691             AND l2.event_id          = xet.event_id
168692 
168693 )
168694 ;
168695 --
168696 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168697 
168698       trace
168699          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
168700          ,p_level    => C_LEVEL_STATEMENT
168701          ,p_module   => l_log_module);
168702 
168703 END IF;
168704 
168705 
168706 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168707       trace
168708          (p_msg      => 'END of insert_sources_288'
168709          ,p_level    => C_LEVEL_PROCEDURE
168710          ,p_module   => l_log_module);
168711 END IF;
168712 EXCEPTION
168713   WHEN xla_exceptions_pkg.application_exception THEN
168714       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
168715             trace
168716                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
168717                ,p_level    => C_LEVEL_EXCEPTION
168718                ,p_module   => l_log_module);
168719       END IF;
168720       RAISE;
168721   WHEN OTHERS THEN
168722       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
168723             trace
168724                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
168725                ,p_level    => C_LEVEL_EXCEPTION
168726                ,p_module   => l_log_module);
168727        END IF;
168728        xla_exceptions_pkg.raise_message
168729            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_288');
168730 END insert_sources_288;
168731 --
168732 
168733 ---------------------------------------
168734 --
168735 -- PRIVATE FUNCTION
168736 --         EventType_288
168737 --
168738 ----------------------------------------
168739 --
168740 FUNCTION EventType_288
168741        (p_application_id         IN NUMBER
168742        ,p_base_ledger_id         IN NUMBER
168743        ,p_target_ledger_id       IN NUMBER
168744        ,p_language               IN VARCHAR2
168745        ,p_currency_code          IN VARCHAR2
168746        ,p_sla_ledger_id          IN NUMBER
168747        ,p_pad_start_date         IN DATE
168748        ,p_pad_end_date           IN DATE
168749        ,p_primary_ledger_id      IN NUMBER)
168750 RETURN BOOLEAN IS
168751 --
168752 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_RET_TO_RECEIVING';
168753 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DELIVER';
168754 
168755 l_calculate_acctd_flag   VARCHAR2(1) :='N';
168756 l_calculate_g_l_flag     VARCHAR2(1) :='N';
168757 --
168758 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168759 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168760 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168761 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168762 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168763 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168764 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168765 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168766 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168770 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168767 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168768 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168769 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168771 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168772 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168773 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168774 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168775 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168776 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168777 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168778 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168779 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168780 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
168781 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168782 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
168783 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
168784 
168785 l_event_id                             NUMBER;
168786 l_previous_event_id                    NUMBER;
168787 l_first_event_id                       NUMBER;
168788 l_last_event_id                        NUMBER;
168789 
168790 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
168791 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
168792 --
168793 --
168794 l_result                    BOOLEAN := TRUE;
168795 l_rows                      NUMBER  := 1000;
168796 l_event_type_name           VARCHAR2(80) := 'Logical Return to Receiving';
168797 l_event_class_name          VARCHAR2(80) := 'Deliver to or Return from Inventory';
168798 l_description               VARCHAR2(4000);
168799 l_transaction_reversal      NUMBER;
168800 l_ae_header_id              NUMBER;
168801 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
168802 l_log_module                VARCHAR2(240);
168803 --
168804 l_acct_reversal_source      VARCHAR2(30);
168805 l_trx_reversal_source       VARCHAR2(30);
168806 
168807 l_continue_with_lines       BOOLEAN := TRUE;
168808 --
168809 l_acc_rev_gl_date_source    DATE;                      -- 4262811
168810 --
168811 type t_array_event_id is table of number index by binary_integer;
168812 
168813 l_rec_array_event                    t_rec_array_event;
168814 l_null_rec_array_event               t_rec_array_event;
168815 l_array_ae_header_id                 xla_number_array_type;
168816 l_actual_flag                        VARCHAR2(1) := NULL;
168817 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
168818 l_balance_type_code                  VARCHAR2(1) :=NULL;
168819 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
168820 
168821 --
168822 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
168823 --
168824 
168825 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
168826 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
168827 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
168828 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
168829 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
168830 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
168831 
168832 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
168833 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
168834 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
168835 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
168836 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
168837 
168838 l_array_source_6              t_array_source_6;
168839 l_array_source_7              t_array_source_7;
168840 l_array_source_8              t_array_source_8;
168841 l_array_source_9              t_array_source_9;
168842 l_array_source_10              t_array_source_10;
168843 l_array_source_12              t_array_source_12;
168844 
168845 l_array_source_1      t_array_source_1;
168846 l_array_source_2      t_array_source_2;
168847 l_array_source_3      t_array_source_3;
168848 l_array_source_5      t_array_source_5;
168849 l_array_source_11      t_array_source_11;
168850 
168851 --
168852 CURSOR header_cur
168853 IS
168854 SELECT /*+ leading(xet) cardinality(xet,1) */
168855 -- Event Type Code: LOG_RET_TO_RECEIVING
168856 -- Event Class Code: DELIVER
168857     xet.entity_id
168858   , xet.legal_entity_id
168859   , xet.entity_code
168860   , xet.transaction_number
168861   , xet.event_id
168862   , xet.event_class_code
168863   , xet.event_type_code
168864   , xet.event_number
168865   , xet.event_date
168866   , xet.transaction_date
168867   , xet.reference_num_1
168868   , xet.reference_num_2
168869   , xet.reference_num_3
168870   , xet.reference_num_4
168871   , xet.reference_char_1
168872   , xet.reference_char_2
168876   , xet.reference_date_2
168873   , xet.reference_char_3
168874   , xet.reference_char_4
168875   , xet.reference_date_1
168877   , xet.reference_date_3
168878   , xet.reference_date_4
168879   , xet.event_created_by
168880   , xet.budgetary_control_flag 
168881   , h1.ENTITY_CODE    source_6
168882   , h1.CURRENCY_CODE    source_7
168883   , h1.CURRENCY_CONVERSION_DATE    source_8
168884   , h1.CURRENCY_CONVERSION_RATE    source_9
168885   , h1.CURRENCY_CONVERSION_TYPE    source_10
168886   , h1.TRANSACTION_DATE    source_12
168887   FROM xla_events_gt     xet 
168888   , GMF_XLA_EXTRACT_HEADERS  h1
168889  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
168890    and xet.event_type_code = C_EVENT_TYPE_CODE
168891    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
168892 
168893  ORDER BY event_id
168894 ;
168895 
168896 
168897 --
168898 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
168899 IS
168900 SELECT /*+ leading(xet) cardinality(xet,1) */
168901 -- Event Type Code: LOG_RET_TO_RECEIVING
168902 -- Event Class Code: DELIVER
168903     xet.entity_id
168904    ,xet.legal_entity_id
168905    ,xet.entity_code
168906    ,xet.transaction_number
168907    ,xet.event_id
168908    ,xet.event_class_code
168909    ,xet.event_type_code
168910    ,xet.event_number
168911    ,xet.event_date
168912    ,xet.transaction_date
168913    ,xet.reference_num_1
168914    ,xet.reference_num_2
168915    ,xet.reference_num_3
168916    ,xet.reference_num_4
168917    ,xet.reference_char_1
168918    ,xet.reference_char_2
168919    ,xet.reference_char_3
168920    ,xet.reference_char_4
168921    ,xet.reference_date_1
168922    ,xet.reference_date_2
168923    ,xet.reference_date_3
168924    ,xet.reference_date_4
168925    ,xet.event_created_by
168926    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
168927   , l2.TRANSACTION_ACCOUNT_ID    source_1
168928   , l2.JOURNAL_LINE_TYPE    source_2
168929   , l2.ENTERED_AMOUNT    source_3
168930   , l2.LINE_ID    source_5
168931   , l2.ACCOUNTED_AMOUNT    source_11
168932   FROM xla_events_gt     xet 
168933   , GMF_XLA_EXTRACT_LINES  l2
168934  WHERE xet.event_id between x_first_event_id and x_last_event_id
168935    and xet.event_date between p_pad_start_date and p_pad_end_date
168936    and xet.event_type_code = C_EVENT_TYPE_CODE
168937    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
168938 ;
168939 
168940 --
168941 BEGIN
168942 IF g_log_enabled THEN
168943    l_log_module := C_DEFAULT_MODULE||'.EventType_288';
168944 END IF;
168945 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168946    trace
168947       (p_msg      => 'BEGIN of EventType_288'
168948       ,p_level    => C_LEVEL_PROCEDURE
168949       ,p_module   => l_log_module);
168950 END IF;
168951 
168952 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168953    trace
168954       (p_msg      => 'p_application_id = '||p_application_id||
168955                      ' - p_base_ledger_id = '||p_base_ledger_id||
168956                      ' - p_target_ledger_id  = '||p_target_ledger_id||
168957                      ' - p_language = '||p_language||
168958                      ' - p_currency_code = '||p_currency_code||
168959                      ' - p_sla_ledger_id = '||p_sla_ledger_id
168960       ,p_level    => C_LEVEL_STATEMENT
168961       ,p_module   => l_log_module);
168962 END IF;
168963 --
168964 -- initialze arrays
168965 --
168966 g_array_event.DELETE;
168967 l_rec_array_event := l_null_rec_array_event;
168968 --
168969 --------------------------------------
168970 -- 4262811 Initialze MPA Line Number
168971 --------------------------------------
168972 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
168973 
168974 --
168975 
168976 --
168977 OPEN header_cur;
168978 --
168979 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168980    trace
168981    (p_msg      => 'SQL - FETCH header_cur'
168982    ,p_level    => C_LEVEL_STATEMENT
168983    ,p_module   => l_log_module);
168984 END IF;
168985 --
168986 LOOP
168987 FETCH header_cur BULK COLLECT INTO
168988         l_array_entity_id
168989       , l_array_legal_entity_id
168990       , l_array_entity_code
168991       , l_array_transaction_num
168992       , l_array_event_id
168993       , l_array_class_code
168994       , l_array_event_type
168995       , l_array_event_number
168996       , l_array_event_date
168997       , l_array_transaction_date
168998       , l_array_reference_num_1
168999       , l_array_reference_num_2
169000       , l_array_reference_num_3
169001       , l_array_reference_num_4
169002       , l_array_reference_char_1
169003       , l_array_reference_char_2
169004       , l_array_reference_char_3
169005       , l_array_reference_char_4
169006       , l_array_reference_date_1
169007       , l_array_reference_date_2
169008       , l_array_reference_date_3
169009       , l_array_reference_date_4
169010       , l_array_event_created_by
169011       , l_array_budgetary_control_flag 
169012       , l_array_source_6
169013       , l_array_source_7
169014       , l_array_source_8
169015       , l_array_source_9
169016       , l_array_source_10
169017       , l_array_source_12
169018       LIMIT l_rows;
169019 --
169020 IF (C_LEVEL_EVENT >= g_log_level) THEN
169021    trace
169022    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
169023    ,p_level    => C_LEVEL_EVENT
169027 EXIT WHEN l_array_entity_id.COUNT = 0;
169024    ,p_module   => l_log_module);
169025 END IF;
169026 --
169028 
169029 -- initialize arrays
169030 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
169031 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
169032 
169033 --
169034 -- Bug 4458708
169035 --
169036 XLA_AE_LINES_PKG.g_LineNumber := 0;
169037 
169038 
169039 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
169040 g_last_hdr_idx := l_array_event_id.LAST;
169041 --
169042 -- loop for the headers. Each iteration is for each header extract row
169043 -- fetched in header cursor
169044 --
169045 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
169046 
169047 --
169048 -- set event info as cache for other routines to refer event attributes
169049 --
169050 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
169051    (p_application_id           => p_application_id
169052    ,p_primary_ledger_id        => p_primary_ledger_id
169053    ,p_base_ledger_id           => p_base_ledger_id
169054    ,p_target_ledger_id         => p_target_ledger_id
169055    ,p_entity_id                => l_array_entity_id(hdr_idx)
169056    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
169057    ,p_entity_code              => l_array_entity_code(hdr_idx)
169058    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
169059    ,p_event_id                 => l_array_event_id(hdr_idx)
169060    ,p_event_class_code         => l_array_class_code(hdr_idx)
169061    ,p_event_type_code          => l_array_event_type(hdr_idx)
169062    ,p_event_number             => l_array_event_number(hdr_idx)
169063    ,p_event_date               => l_array_event_date(hdr_idx)
169064    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
169065    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
169066    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
169067    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
169068    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
169069    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
169070    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
169071    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
169072    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
169073    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
169074    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
169075    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
169076    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
169077    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
169078    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
169079 
169080 --
169081 -- set the status of entry to C_VALID (0)
169082 --
169083 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
169084 
169085 --
169086 -- initialize a row for ae header
169087 --
169088 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
169089 
169090 l_event_id := l_array_event_id(hdr_idx);
169091 
169092 --
169093 -- storing the hdr_idx for event. May be used by line cursor.
169094 --
169095 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
169096 
169097 --
169098 -- store sources from header extract. This can be improved to
169099 -- store only those sources from header extract that may be used in lines
169100 --
169101 
169102 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
169103 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
169104 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
169105 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
169106 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
169107 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
169108 
169109 --
169110 -- initilaize the status of ae headers for diffrent balance types
169111 -- the status is initialised to C_NOT_CREATED (2)
169112 --
169113 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
169114 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
169115 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
169116 
169117 --
169118 -- call api to validate and store accounting attributes for header
169119 --
169120 
169121 ------------------------------------------------------------
169122 -- Accrual Reversal : to get date for Standard Source (NONE)
169123 ------------------------------------------------------------
169124 l_acc_rev_gl_date_source := NULL;
169125 
169126      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
169127       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
169128 
169129 
169130 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
169131 
169132 XLA_AE_HEADER_PKG.SetJeCategoryName;
169133 
169134 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
169135 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
169136 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
169140 
169137 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
169138 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
169139 
169141 -- No header level analytical criteria
169142 
169143 --
169144 --accounting attribute enhancement, bug 3612931
169145 --
169146 l_trx_reversal_source := SUBSTR(NULL, 1,30);
169147 
169148 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
169149    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
169150 
169151    xla_accounting_err_pkg.build_message
169152       (p_appli_s_name            => 'XLA'
169153       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
169154       ,p_token_1                 => 'ACCT_ATTR_NAME'
169155       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
169156       ,p_token_2                 => 'PRODUCT_NAME'
169157       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
169158       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
169159       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
169160       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
169161 
169162 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
169163    --
169164    -- following sets the accounting attributes needed to reverse
169165    -- accounting for a distributeion
169166    --
169167    xla_ae_lines_pkg.SetTrxReversalAttrs
169168       (p_event_id              => l_event_id
169169       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
169170       ,p_trx_reversal_source   => l_trx_reversal_source);
169171 
169172 END IF;
169173 
169174 
169175 ----------------------------------------------------------------
169176 -- 4262811 -  update the header statuses to invalid in need be
169177 ----------------------------------------------------------------
169178 --
169179 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
169180 
169181 
169182   -----------------------------------------------
169183   -- No accrual reversal for the event class/type
169184   -----------------------------------------------
169185 ----------------------------------------------------------------
169186 
169187 --
169188 -- this ends the header loop iteration for one bulk fetch
169189 --
169190 END LOOP;
169191 
169192 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
169193 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
169194 
169195 --
169196 -- insert dummy rows into lines gt table that were created due to
169197 -- transaction reversals
169198 --
169199 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
169200    l_result := XLA_AE_LINES_PKG.InsertLines;
169201 END IF;
169202 
169203 --
169204 -- reset the temp_line_num for each set of events fetched from header
169205 -- cursor rather than doing it for each new event in line cursor
169206 -- Bug 3939231
169207 --
169208 xla_ae_lines_pkg.g_temp_line_num := 0;
169209 
169210 
169211 
169212 --
169213 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
169214 --
169215 --
169216 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169217 
169218       trace
169219          (p_msg      => 'SQL - FETCH line_cur'
169220          ,p_level    => C_LEVEL_STATEMENT
169221          ,p_module   => l_log_module);
169222 
169223 END IF;
169224 --
169225 --
169226 LOOP
169227   --
169228   FETCH line_cur BULK COLLECT INTO
169229         l_array_entity_id
169230       , l_array_legal_entity_id
169231       , l_array_entity_code
169232       , l_array_transaction_num
169233       , l_array_event_id
169234       , l_array_class_code
169235       , l_array_event_type
169236       , l_array_event_number
169237       , l_array_event_date
169238       , l_array_transaction_date
169239       , l_array_reference_num_1
169240       , l_array_reference_num_2
169241       , l_array_reference_num_3
169242       , l_array_reference_num_4
169243       , l_array_reference_char_1
169244       , l_array_reference_char_2
169245       , l_array_reference_char_3
169246       , l_array_reference_char_4
169247       , l_array_reference_date_1
169248       , l_array_reference_date_2
169249       , l_array_reference_date_3
169250       , l_array_reference_date_4
169251       , l_array_event_created_by
169252       , l_array_budgetary_control_flag
169253       , l_array_extract_line_num 
169254       , l_array_source_1
169255       , l_array_source_2
169256       , l_array_source_3
169257       , l_array_source_5
169258       , l_array_source_11
169259       LIMIT l_rows;
169260 
169261   --
169262   IF (C_LEVEL_EVENT >= g_log_level) THEN
169263             trace
169264                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
169265                ,p_level    => C_LEVEL_EVENT
169266                ,p_module   => l_log_module);
169267   END IF;
169268   --
169269   EXIT WHEN l_array_entity_id.count = 0;
169270 
169271   XLA_AE_LINES_PKG.g_rec_lines := null;
169272 
169273 --
169274 -- Bug 4458708
169275 --
169276 XLA_AE_LINES_PKG.g_LineNumber := 0;
169277 --
169278 --
169279 
169283    --
169280 FOR Idx IN 1..l_array_event_id.count LOOP
169281    --
169282    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
169284    l_event_id := l_array_event_id(idx);  -- 5648433
169285 
169286    --
169287    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
169288    --
169289 
169290    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
169291              (g_array_event(l_event_id).array_value_num('header_index'))
169292          ,'N'
169293          ) <> 'Y'
169294    THEN
169295       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169296          trace
169297             (p_msg      => 'Trancaction revesal option is not Y '
169298             ,p_level    => C_LEVEL_STATEMENT
169299             ,p_module   => l_log_module);
169300       END IF;
169301 
169302 --
169303 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
169304 --
169305 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
169306 --
169307 -- set event info as cache for other routines to refer event attributes
169308 --
169309 
169310 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
169311    l_previous_event_id := l_event_id;
169312 
169313    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
169314       (p_application_id           => p_application_id
169315       ,p_primary_ledger_id        => p_primary_ledger_id
169316       ,p_base_ledger_id           => p_base_ledger_id
169317       ,p_target_ledger_id         => p_target_ledger_id
169318       ,p_entity_id                => l_array_entity_id(Idx)
169319       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
169320       ,p_entity_code              => l_array_entity_code(Idx)
169321       ,p_transaction_num          => l_array_transaction_num(Idx)
169322       ,p_event_id                 => l_array_event_id(Idx)
169323       ,p_event_class_code         => l_array_class_code(Idx)
169324       ,p_event_type_code          => l_array_event_type(Idx)
169325       ,p_event_number             => l_array_event_number(Idx)
169326       ,p_event_date               => l_array_event_date(Idx)
169327       ,p_transaction_date         => l_array_transaction_date(Idx)
169328       ,p_reference_num_1          => l_array_reference_num_1(Idx)
169329       ,p_reference_num_2          => l_array_reference_num_2(Idx)
169330       ,p_reference_num_3          => l_array_reference_num_3(Idx)
169331       ,p_reference_num_4          => l_array_reference_num_4(Idx)
169332       ,p_reference_char_1         => l_array_reference_char_1(Idx)
169333       ,p_reference_char_2         => l_array_reference_char_2(Idx)
169334       ,p_reference_char_3         => l_array_reference_char_3(Idx)
169335       ,p_reference_char_4         => l_array_reference_char_4(Idx)
169336       ,p_reference_date_1         => l_array_reference_date_1(Idx)
169337       ,p_reference_date_2         => l_array_reference_date_2(Idx)
169338       ,p_reference_date_3         => l_array_reference_date_3(Idx)
169339       ,p_reference_date_4         => l_array_reference_date_4(Idx)
169340       ,p_event_created_by         => l_array_event_created_by(Idx)
169341       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
169342        --
169343 END IF;
169344 
169345 
169346 
169347 --
169348 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
169349 
169350 l_acct_reversal_source := SUBSTR(NULL, 1,30);
169351 
169352 IF l_continue_with_lines THEN
169353    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
169354       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
169355 
169356       xla_accounting_err_pkg.build_message
169357          (p_appli_s_name            => 'XLA'
169358          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
169359          ,p_token_1                 => 'LINE_NUMBER'
169360          ,p_value_1                 => l_array_extract_line_num(Idx)
169361          ,p_token_2                 => 'PRODUCT_NAME'
169362          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
169363          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
169364          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
169365          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
169366 
169367    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
169368       --
169369       -- following sets the accounting attributes needed to reverse
169370       -- accounting for a distributeion
169371       --
169372 
169373       --
169374       -- 5217187
169375       --
169376       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
169377       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
169378                                        g_array_event(l_event_id).array_value_num('header_index'));
169379       --
169380       --
169381 
169382       -- No reversal code generated
169383 
169384       xla_ae_lines_pkg.SetAcctReversalAttrs
169385          (p_event_id             => l_event_id
169386          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
169387          ,p_calculate_acctd_flag => l_calculate_acctd_flag
169388          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
169389    END IF;
169390 
169391    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
169392        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
169393 
169394 --
169395 AcctLineType_66 (
169399  ,p_calculate_g_l_flag => l_calculate_g_l_flag
169396  p_application_id  => p_application_id
169397  ,p_event_id     => l_event_id
169398  ,p_calculate_acctd_flag => l_calculate_acctd_flag
169400  ,p_actual_flag => l_actual_flag
169401  ,p_balance_type_code => l_balance_type_code
169402  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
169403  
169404  , p_source_1 => l_array_source_1(Idx)
169405  , p_source_2 => l_array_source_2(Idx)
169406  , p_source_3 => l_array_source_3(Idx)
169407  , p_source_5 => l_array_source_5(Idx)
169408  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
169409  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
169410  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
169411  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
169412  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
169413  , p_source_11 => l_array_source_11(Idx)
169414  );
169415 If(l_balance_type_code = 'A') THEN
169416   l_actual_gain_loss_ref := l_gain_or_loss_ref;
169417 END IF;
169418 
169419 --
169420 
169421 
169422 --
169423 AcctLineType_84 (
169424  p_application_id  => p_application_id
169425  ,p_event_id     => l_event_id
169426  ,p_calculate_acctd_flag => l_calculate_acctd_flag
169427  ,p_calculate_g_l_flag => l_calculate_g_l_flag
169428  ,p_actual_flag => l_actual_flag
169429  ,p_balance_type_code => l_balance_type_code
169430  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
169431  
169432  , p_source_1 => l_array_source_1(Idx)
169433  , p_source_2 => l_array_source_2(Idx)
169434  , p_source_3 => l_array_source_3(Idx)
169435  , p_source_5 => l_array_source_5(Idx)
169436  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
169437  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
169438  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
169439  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
169440  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
169441  , p_source_11 => l_array_source_11(Idx)
169442  );
169443 If(l_balance_type_code = 'A') THEN
169444   l_actual_gain_loss_ref := l_gain_or_loss_ref;
169445 END IF;
169446 
169447 --
169448 
169449 
169450 --
169451 AcctLineType_135 (
169452  p_application_id  => p_application_id
169453  ,p_event_id     => l_event_id
169454  ,p_calculate_acctd_flag => l_calculate_acctd_flag
169455  ,p_calculate_g_l_flag => l_calculate_g_l_flag
169456  ,p_actual_flag => l_actual_flag
169457  ,p_balance_type_code => l_balance_type_code
169458  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
169459  
169460  , p_source_1 => l_array_source_1(Idx)
169461  , p_source_2 => l_array_source_2(Idx)
169462  , p_source_3 => l_array_source_3(Idx)
169463  , p_source_5 => l_array_source_5(Idx)
169464  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
169465  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
169466  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
169467  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
169468  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
169469  , p_source_11 => l_array_source_11(Idx)
169470  );
169471 If(l_balance_type_code = 'A') THEN
169472   l_actual_gain_loss_ref := l_gain_or_loss_ref;
169473 END IF;
169474 
169475 --
169476 
169477       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
169478       -- or secondary ledger that has different currency with primary
169479       -- or alc that is calculated by sla
169480       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
169481             (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'))
169482 
169483 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
169484 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
169485           AND (l_actual_flag = 'A')) THEN
169486         XLA_AE_LINES_PKG.CreateGainOrLossLines(
169487           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
169488          ,p_application_id   => p_application_id
169489          ,p_amb_context_code => 'DEFAULT'
169490          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
169491          ,p_event_class_code => C_EVENT_CLASS_CODE
169492          ,p_event_type_code  => C_EVENT_TYPE_CODE
169493          
169494          ,p_gain_ccid        => -1
169495          ,p_loss_ccid        => -1
169496 
169497          ,p_actual_flag      => l_actual_flag
169498          ,p_enc_flag         => null
169499          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
169500          ,p_enc_g_l_ref      => null
169501          );
169502       END IF;
169503    END IF;
169504 END IF;
169505 
169506    ELSE
169507       --
169508       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
169509       --
169510       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169511          trace
169512             (p_msg      => 'Trancaction revesal option is Y'
169513             ,p_level    => C_LEVEL_STATEMENT
169514             ,p_module   => l_log_module);
169515       END IF;
169516    END IF;
169517 
169518 END LOOP;
169519 l_result := XLA_AE_LINES_PKG.InsertLines ;
169520 end loop;
169521 close line_cur;
169522 
169526 --
169523 
169524 --
169525 -- insert headers into xla_ae_headers_gt table
169527 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
169528 
169529 -- insert into errors table here.
169530 
169531 END LOOP;
169532 
169533 --
169534 -- 4865292
169535 --
169536 -- Compare g_hdr_extract_count with event count in
169537 -- CreateHeadersAndLines.
169538 --
169539 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
169540 
169541 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169542    trace (p_msg     => '# rows extracted from header extract objects '
169543                     || ' (running total): '
169544                     || g_hdr_extract_count
169545          ,p_level   => C_LEVEL_STATEMENT
169546          ,p_module  => l_log_module);
169547 END IF;
169548 
169549 CLOSE header_cur;
169550 --
169551 
169552 --
169553 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
169554    trace
169555       (p_msg      => 'END of EventType_288'
169556       ,p_level    => C_LEVEL_PROCEDURE
169557       ,p_module   => l_log_module);
169558 END IF;
169559 --
169560 RETURN l_result;
169561 EXCEPTION
169562 WHEN xla_exceptions_pkg.application_exception THEN
169563    
169564 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
169565 
169566    
169567 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
169568 
169569    RAISE;
169570 
169571 WHEN NO_DATA_FOUND THEN
169572 
169573 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
169574 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
169575 
169576 FOR header_record IN header_cur
169577 LOOP
169578     l_array_header_events(header_record.event_id) := header_record.event_id;
169579 END LOOP;
169580 
169581 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
169582 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
169583 
169584 fnd_file.put_line(fnd_file.LOG, '                    ');
169585 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
169586 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
169587 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
169588 
169589 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
169590 LOOP
169591 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
169592 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
169593         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
169594 	END IF;
169595 END LOOP;
169596 
169597 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
169598 fnd_file.put_line(fnd_file.LOG, '                    ');
169599 
169600 
169601 xla_exceptions_pkg.raise_message
169602       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_288');
169603 
169604 
169605 WHEN OTHERS THEN
169606    xla_exceptions_pkg.raise_message
169607       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_288');
169608 END EventType_288;
169609 --
169610 
169611 ---------------------------------------
169612 --
169613 -- PRIVATE PROCEDURE
169614 --         insert_sources_289
169615 --
169616 ----------------------------------------
169617 --
169618 PROCEDURE insert_sources_289(
169619                                 p_target_ledger_id       IN NUMBER
169620                               , p_language               IN VARCHAR2
169621                               , p_sla_ledger_id          IN NUMBER
169622                               , p_pad_start_date         IN DATE
169623                               , p_pad_end_date           IN DATE
169624                          )
169625 IS
169626 
169627 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_RET_TO_VENDOR';
169628 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RECEIVE';
169629 p_apps_owner                   VARCHAR2(30);
169630 l_log_module                   VARCHAR2(240);
169631 BEGIN
169632 IF g_log_enabled THEN
169633       l_log_module := C_DEFAULT_MODULE||'.insert_sources_289';
169634 END IF;
169635 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
169636 
169637       trace
169638          (p_msg      => 'BEGIN of insert_sources_289'
169639          ,p_level    => C_LEVEL_PROCEDURE
169640          ,p_module   => l_log_module);
169641 
169642 END IF;
169643 
169644 -- select APPS owner
169645 SELECT oracle_username
169646   INTO p_apps_owner
169647   FROM fnd_oracle_userid
169648  WHERE read_only_flag = 'U'
169649 ;
169650 
169651 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169652       trace
169653          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
169654                         ' - p_language = '||p_language||
169655                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
169656                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
169657                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
169658                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
169659          ,p_level    => C_LEVEL_STATEMENT
169660          ,p_module   => l_log_module);
169661 END IF;
169662 
169663 
169664 --
169665 INSERT INTO xla_diag_sources --hdr1
169666 (
169667         event_id
169668       , ledger_id
169669       , sla_ledger_id
169670       , description_language
169674       , source_application_id
169671       , object_name
169672       , object_type_code
169673       , line_number
169675       , source_type_code
169676       , source_code
169677       , source_value
169678       , source_meaning
169679       , created_by
169680       , creation_date
169681       , last_update_date
169682       , last_updated_by
169683       , last_update_login
169684       , program_update_date
169685       , program_application_id
169686       , program_id
169687       , request_id
169688 )
169689 SELECT
169690         event_id
169691       , p_target_ledger_id
169692       , p_sla_ledger_id
169693       , p_language
169694       , object_name
169695       , object_type_code
169696       , line_number
169697       , source_application_id
169698       , source_type_code
169699       , source_code
169700       , SUBSTR(source_value ,1,1996)
169701       , SUBSTR(source_meaning,1,200)
169702       , xla_environment_pkg.g_Usr_Id
169703       , TRUNC(SYSDATE)
169704       , TRUNC(SYSDATE)
169705       , xla_environment_pkg.g_Usr_Id
169706       , xla_environment_pkg.g_Login_Id
169707       , TRUNC(SYSDATE)
169708       , xla_environment_pkg.g_Prog_Appl_Id
169709       , xla_environment_pkg.g_Prog_Id
169710       , xla_environment_pkg.g_Req_Id
169711   FROM (
169712        SELECT xet.event_id                  event_id
169713             , 0                             line_number
169714             , CASE r
169715                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
169716                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
169717                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
169718                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
169719                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
169720                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
169721                 
169722                ELSE null
169723               END                           object_name
169724             , CASE r
169725                 WHEN 1 THEN 'HEADER' 
169726                 WHEN 2 THEN 'HEADER' 
169727                 WHEN 3 THEN 'HEADER' 
169728                 WHEN 4 THEN 'HEADER' 
169729                 WHEN 5 THEN 'HEADER' 
169730                 WHEN 6 THEN 'HEADER' 
169731                 
169732                 ELSE null
169733               END                           object_type_code
169734             , CASE r
169735                 WHEN 1 THEN '555' 
169736                 WHEN 2 THEN '555' 
169737                 WHEN 3 THEN '555' 
169738                 WHEN 4 THEN '555' 
169739                 WHEN 5 THEN '555' 
169740                 WHEN 6 THEN '555' 
169741                 
169742                 ELSE null
169743               END                           source_application_id
169744             , 'S'             source_type_code
169745             , CASE r
169746                 WHEN 1 THEN 'ENTITY_CODE' 
169747                 WHEN 2 THEN 'CURRENCY_CODE' 
169748                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
169749                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
169750                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
169751                 WHEN 6 THEN 'TRANSACTION_DATE' 
169752                 
169753                 ELSE null
169754               END                           source_code
169755             , CASE r
169756                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
169757                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
169758                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
169759                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
169760                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
169761                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
169762                 
169763                 ELSE null
169764               END                           source_value
169765             , CASE r
169766                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
169767                           1010186
169768                          ,TO_CHAR(h1.CURRENCY_CODE)
169769                          ,'CURRENCY_CODE'
169770                          ,'S'
169771                          ,555)
169772                 
169773                 ELSE null
169774               END               source_meaning
169775         FROM xla_events_gt     xet  
169776       , GMF_XLA_EXTRACT_HEADERS  h1
169777             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
169778        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
169779          AND xet.event_type_code = C_EVENT_TYPE_CODE
169780             AND h1.event_id = xet.event_id
169781 
169782 )
169783 ;
169784 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169785 
169786       trace
169787          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
169788          ,p_level    => C_LEVEL_STATEMENT
169789          ,p_module   => l_log_module);
169790 
169791 END IF;
169792 --
169793 
169794 
169795 
169796 --
169797 INSERT INTO xla_diag_sources --line1
169798 (
169799         event_id
169800       , ledger_id
169801       , sla_ledger_id
169802       , description_language
169803       , object_name
169804       , object_type_code
169805       , line_number
169806       , source_application_id
169807       , source_type_code
169808       , source_code
169809       , source_value
169810       , source_meaning
169811       , created_by
169812       , creation_date
169816       , program_update_date
169813       , last_update_date
169814       , last_updated_by
169815       , last_update_login
169817       , program_application_id
169818       , program_id
169819       , request_id
169820 )
169821 SELECT  event_id
169822       , p_target_ledger_id
169823       , p_sla_ledger_id
169824       , p_language
169825       , object_name
169826       , object_type_code
169827       , line_number
169828       , source_application_id
169829       , source_type_code
169830       , source_code
169831       , SUBSTR(source_value,1,1996)
169832       , SUBSTR(source_meaning,1,200)
169833       , xla_environment_pkg.g_Usr_Id
169834       , TRUNC(SYSDATE)
169835       , TRUNC(SYSDATE)
169836       , xla_environment_pkg.g_Usr_Id
169837       , xla_environment_pkg.g_Login_Id
169838       , TRUNC(SYSDATE)
169839       , xla_environment_pkg.g_Prog_Appl_Id
169840       , xla_environment_pkg.g_Prog_Id
169841       , xla_environment_pkg.g_Req_Id
169842   FROM (
169843        SELECT xet.event_id                  event_id
169844             , l2.line_number                 line_number
169845             , CASE r
169846                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
169847                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
169848                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
169849                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
169850                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
169851                 
169852                ELSE null
169853               END                           object_name
169854             , CASE r
169855                 WHEN 1 THEN 'LINE' 
169856                 WHEN 2 THEN 'LINE' 
169857                 WHEN 3 THEN 'LINE' 
169858                 WHEN 4 THEN 'LINE' 
169859                 WHEN 5 THEN 'LINE' 
169860                 
169861                 ELSE null
169862               END                           object_type_code
169863             , CASE r
169864                 WHEN 1 THEN '555' 
169865                 WHEN 2 THEN '555' 
169866                 WHEN 3 THEN '555' 
169867                 WHEN 4 THEN '555' 
169868                 WHEN 5 THEN '555' 
169869                 
169870                 ELSE null
169871               END                           source_application_id
169872             , 'S'             source_type_code
169873             , CASE r
169874                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
169875                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
169876                 WHEN 3 THEN 'ENTERED_AMOUNT' 
169877                 WHEN 4 THEN 'LINE_ID' 
169878                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
169879                 
169880                 ELSE null
169881               END                           source_code
169882             , CASE r
169883                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
169884                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
169885                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
169886                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
169887                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
169888                 
169889                 ELSE null
169890               END                           source_value
169891             , null              source_meaning
169892          FROM  xla_events_gt     xet  
169893         , GMF_XLA_EXTRACT_LINES  l2
169894             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
169895         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
169896           AND xet.event_type_code = C_EVENT_TYPE_CODE
169897             AND l2.event_id          = xet.event_id
169898 
169899 )
169900 ;
169901 --
169902 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169903 
169904       trace
169905          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
169906          ,p_level    => C_LEVEL_STATEMENT
169907          ,p_module   => l_log_module);
169908 
169909 END IF;
169910 
169911 
169912 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
169913       trace
169914          (p_msg      => 'END of insert_sources_289'
169915          ,p_level    => C_LEVEL_PROCEDURE
169916          ,p_module   => l_log_module);
169917 END IF;
169918 EXCEPTION
169919   WHEN xla_exceptions_pkg.application_exception THEN
169920       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
169921             trace
169922                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
169923                ,p_level    => C_LEVEL_EXCEPTION
169924                ,p_module   => l_log_module);
169925       END IF;
169926       RAISE;
169927   WHEN OTHERS THEN
169928       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
169929             trace
169930                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
169931                ,p_level    => C_LEVEL_EXCEPTION
169932                ,p_module   => l_log_module);
169933        END IF;
169934        xla_exceptions_pkg.raise_message
169935            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_289');
169936 END insert_sources_289;
169937 --
169938 
169939 ---------------------------------------
169940 --
169941 -- PRIVATE FUNCTION
169942 --         EventType_289
169943 --
169944 ----------------------------------------
169945 --
169946 FUNCTION EventType_289
169947        (p_application_id         IN NUMBER
169948        ,p_base_ledger_id         IN NUMBER
169949        ,p_target_ledger_id       IN NUMBER
169953        ,p_pad_start_date         IN DATE
169950        ,p_language               IN VARCHAR2
169951        ,p_currency_code          IN VARCHAR2
169952        ,p_sla_ledger_id          IN NUMBER
169954        ,p_pad_end_date           IN DATE
169955        ,p_primary_ledger_id      IN NUMBER)
169956 RETURN BOOLEAN IS
169957 --
169958 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_RET_TO_VENDOR';
169959 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RECEIVE';
169960 
169961 l_calculate_acctd_flag   VARCHAR2(1) :='N';
169962 l_calculate_g_l_flag     VARCHAR2(1) :='N';
169963 --
169964 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169965 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169966 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169967 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169968 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169969 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169970 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169971 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169972 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169973 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169974 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169975 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169976 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169977 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169978 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169979 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169980 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169981 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169982 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169983 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169984 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169985 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169986 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
169987 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169988 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
169989 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
169990 
169991 l_event_id                             NUMBER;
169992 l_previous_event_id                    NUMBER;
169993 l_first_event_id                       NUMBER;
169994 l_last_event_id                        NUMBER;
169995 
169996 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
169997 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
169998 --
169999 --
170000 l_result                    BOOLEAN := TRUE;
170001 l_rows                      NUMBER  := 1000;
170002 l_event_type_name           VARCHAR2(80) := 'Logical Return to Vendor';
170003 l_event_class_name          VARCHAR2(80) := 'Receiving';
170004 l_description               VARCHAR2(4000);
170005 l_transaction_reversal      NUMBER;
170006 l_ae_header_id              NUMBER;
170007 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
170008 l_log_module                VARCHAR2(240);
170009 --
170010 l_acct_reversal_source      VARCHAR2(30);
170011 l_trx_reversal_source       VARCHAR2(30);
170012 
170013 l_continue_with_lines       BOOLEAN := TRUE;
170014 --
170015 l_acc_rev_gl_date_source    DATE;                      -- 4262811
170016 --
170017 type t_array_event_id is table of number index by binary_integer;
170018 
170019 l_rec_array_event                    t_rec_array_event;
170020 l_null_rec_array_event               t_rec_array_event;
170021 l_array_ae_header_id                 xla_number_array_type;
170022 l_actual_flag                        VARCHAR2(1) := NULL;
170023 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
170024 l_balance_type_code                  VARCHAR2(1) :=NULL;
170025 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
170026 
170027 --
170028 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
170029 --
170030 
170031 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
170032 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
170033 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
170034 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
170035 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
170036 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
170037 
170038 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
170039 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
170040 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
170041 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
170045 l_array_source_7              t_array_source_7;
170042 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
170043 
170044 l_array_source_6              t_array_source_6;
170046 l_array_source_8              t_array_source_8;
170047 l_array_source_9              t_array_source_9;
170048 l_array_source_10              t_array_source_10;
170049 l_array_source_12              t_array_source_12;
170050 
170051 l_array_source_1      t_array_source_1;
170052 l_array_source_2      t_array_source_2;
170053 l_array_source_3      t_array_source_3;
170054 l_array_source_5      t_array_source_5;
170055 l_array_source_11      t_array_source_11;
170056 
170057 --
170058 CURSOR header_cur
170059 IS
170060 SELECT /*+ leading(xet) cardinality(xet,1) */
170061 -- Event Type Code: LOG_RET_TO_VENDOR
170062 -- Event Class Code: RECEIVE
170063     xet.entity_id
170064   , xet.legal_entity_id
170065   , xet.entity_code
170066   , xet.transaction_number
170067   , xet.event_id
170068   , xet.event_class_code
170069   , xet.event_type_code
170070   , xet.event_number
170071   , xet.event_date
170072   , xet.transaction_date
170073   , xet.reference_num_1
170074   , xet.reference_num_2
170075   , xet.reference_num_3
170076   , xet.reference_num_4
170077   , xet.reference_char_1
170078   , xet.reference_char_2
170079   , xet.reference_char_3
170080   , xet.reference_char_4
170081   , xet.reference_date_1
170082   , xet.reference_date_2
170083   , xet.reference_date_3
170084   , xet.reference_date_4
170085   , xet.event_created_by
170086   , xet.budgetary_control_flag 
170087   , h1.ENTITY_CODE    source_6
170088   , h1.CURRENCY_CODE    source_7
170089   , h1.CURRENCY_CONVERSION_DATE    source_8
170090   , h1.CURRENCY_CONVERSION_RATE    source_9
170091   , h1.CURRENCY_CONVERSION_TYPE    source_10
170092   , h1.TRANSACTION_DATE    source_12
170093   FROM xla_events_gt     xet 
170094   , GMF_XLA_EXTRACT_HEADERS  h1
170095  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
170096    and xet.event_type_code = C_EVENT_TYPE_CODE
170097    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
170098 
170099  ORDER BY event_id
170100 ;
170101 
170102 
170103 --
170104 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
170105 IS
170106 SELECT /*+ leading(xet) cardinality(xet,1) */
170107 -- Event Type Code: LOG_RET_TO_VENDOR
170108 -- Event Class Code: RECEIVE
170109     xet.entity_id
170110    ,xet.legal_entity_id
170111    ,xet.entity_code
170112    ,xet.transaction_number
170113    ,xet.event_id
170114    ,xet.event_class_code
170115    ,xet.event_type_code
170116    ,xet.event_number
170117    ,xet.event_date
170118    ,xet.transaction_date
170119    ,xet.reference_num_1
170120    ,xet.reference_num_2
170121    ,xet.reference_num_3
170122    ,xet.reference_num_4
170123    ,xet.reference_char_1
170124    ,xet.reference_char_2
170125    ,xet.reference_char_3
170126    ,xet.reference_char_4
170127    ,xet.reference_date_1
170128    ,xet.reference_date_2
170129    ,xet.reference_date_3
170130    ,xet.reference_date_4
170131    ,xet.event_created_by
170132    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
170133   , l2.TRANSACTION_ACCOUNT_ID    source_1
170134   , l2.JOURNAL_LINE_TYPE    source_2
170135   , l2.ENTERED_AMOUNT    source_3
170136   , l2.LINE_ID    source_5
170137   , l2.ACCOUNTED_AMOUNT    source_11
170138   FROM xla_events_gt     xet 
170139   , GMF_XLA_EXTRACT_LINES  l2
170140  WHERE xet.event_id between x_first_event_id and x_last_event_id
170141    and xet.event_date between p_pad_start_date and p_pad_end_date
170142    and xet.event_type_code = C_EVENT_TYPE_CODE
170143    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
170144 ;
170145 
170146 --
170147 BEGIN
170148 IF g_log_enabled THEN
170149    l_log_module := C_DEFAULT_MODULE||'.EventType_289';
170150 END IF;
170151 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170152    trace
170153       (p_msg      => 'BEGIN of EventType_289'
170154       ,p_level    => C_LEVEL_PROCEDURE
170155       ,p_module   => l_log_module);
170156 END IF;
170157 
170158 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170159    trace
170160       (p_msg      => 'p_application_id = '||p_application_id||
170161                      ' - p_base_ledger_id = '||p_base_ledger_id||
170162                      ' - p_target_ledger_id  = '||p_target_ledger_id||
170163                      ' - p_language = '||p_language||
170164                      ' - p_currency_code = '||p_currency_code||
170165                      ' - p_sla_ledger_id = '||p_sla_ledger_id
170166       ,p_level    => C_LEVEL_STATEMENT
170167       ,p_module   => l_log_module);
170168 END IF;
170169 --
170170 -- initialze arrays
170171 --
170172 g_array_event.DELETE;
170173 l_rec_array_event := l_null_rec_array_event;
170174 --
170175 --------------------------------------
170176 -- 4262811 Initialze MPA Line Number
170177 --------------------------------------
170178 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
170179 
170180 --
170181 
170182 --
170183 OPEN header_cur;
170184 --
170185 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170186    trace
170187    (p_msg      => 'SQL - FETCH header_cur'
170188    ,p_level    => C_LEVEL_STATEMENT
170189    ,p_module   => l_log_module);
170190 END IF;
170191 --
170192 LOOP
170196       , l_array_entity_code
170193 FETCH header_cur BULK COLLECT INTO
170194         l_array_entity_id
170195       , l_array_legal_entity_id
170197       , l_array_transaction_num
170198       , l_array_event_id
170199       , l_array_class_code
170200       , l_array_event_type
170201       , l_array_event_number
170202       , l_array_event_date
170203       , l_array_transaction_date
170204       , l_array_reference_num_1
170205       , l_array_reference_num_2
170206       , l_array_reference_num_3
170207       , l_array_reference_num_4
170208       , l_array_reference_char_1
170209       , l_array_reference_char_2
170210       , l_array_reference_char_3
170211       , l_array_reference_char_4
170212       , l_array_reference_date_1
170213       , l_array_reference_date_2
170214       , l_array_reference_date_3
170215       , l_array_reference_date_4
170216       , l_array_event_created_by
170217       , l_array_budgetary_control_flag 
170218       , l_array_source_6
170219       , l_array_source_7
170220       , l_array_source_8
170221       , l_array_source_9
170222       , l_array_source_10
170223       , l_array_source_12
170224       LIMIT l_rows;
170225 --
170226 IF (C_LEVEL_EVENT >= g_log_level) THEN
170227    trace
170228    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
170229    ,p_level    => C_LEVEL_EVENT
170230    ,p_module   => l_log_module);
170231 END IF;
170232 --
170233 EXIT WHEN l_array_entity_id.COUNT = 0;
170234 
170235 -- initialize arrays
170236 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
170237 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
170238 
170239 --
170240 -- Bug 4458708
170241 --
170242 XLA_AE_LINES_PKG.g_LineNumber := 0;
170243 
170244 
170245 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
170246 g_last_hdr_idx := l_array_event_id.LAST;
170247 --
170248 -- loop for the headers. Each iteration is for each header extract row
170249 -- fetched in header cursor
170250 --
170251 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
170252 
170253 --
170254 -- set event info as cache for other routines to refer event attributes
170255 --
170256 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
170257    (p_application_id           => p_application_id
170258    ,p_primary_ledger_id        => p_primary_ledger_id
170259    ,p_base_ledger_id           => p_base_ledger_id
170260    ,p_target_ledger_id         => p_target_ledger_id
170261    ,p_entity_id                => l_array_entity_id(hdr_idx)
170262    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
170263    ,p_entity_code              => l_array_entity_code(hdr_idx)
170264    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
170265    ,p_event_id                 => l_array_event_id(hdr_idx)
170266    ,p_event_class_code         => l_array_class_code(hdr_idx)
170267    ,p_event_type_code          => l_array_event_type(hdr_idx)
170268    ,p_event_number             => l_array_event_number(hdr_idx)
170269    ,p_event_date               => l_array_event_date(hdr_idx)
170270    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
170271    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
170272    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
170273    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
170274    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
170275    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
170276    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
170277    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
170278    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
170279    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
170280    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
170281    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
170282    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
170283    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
170284    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
170285 
170286 --
170287 -- set the status of entry to C_VALID (0)
170288 --
170289 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
170290 
170291 --
170292 -- initialize a row for ae header
170293 --
170294 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
170295 
170296 l_event_id := l_array_event_id(hdr_idx);
170297 
170298 --
170299 -- storing the hdr_idx for event. May be used by line cursor.
170300 --
170301 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
170302 
170303 --
170304 -- store sources from header extract. This can be improved to
170305 -- store only those sources from header extract that may be used in lines
170306 --
170307 
170308 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
170309 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
170310 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
170311 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
170312 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
170313 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
170314 
170315 --
170316 -- initilaize the status of ae headers for diffrent balance types
170320 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
170317 -- the status is initialised to C_NOT_CREATED (2)
170318 --
170319 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
170321 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
170322 
170323 --
170324 -- call api to validate and store accounting attributes for header
170325 --
170326 
170327 ------------------------------------------------------------
170328 -- Accrual Reversal : to get date for Standard Source (NONE)
170329 ------------------------------------------------------------
170330 l_acc_rev_gl_date_source := NULL;
170331 
170332      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
170333       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
170334 
170335 
170336 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
170337 
170338 XLA_AE_HEADER_PKG.SetJeCategoryName;
170339 
170340 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
170341 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
170342 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
170343 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
170344 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
170345 
170346 
170347 -- No header level analytical criteria
170348 
170349 --
170350 --accounting attribute enhancement, bug 3612931
170351 --
170352 l_trx_reversal_source := SUBSTR(NULL, 1,30);
170353 
170354 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
170355    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
170356 
170357    xla_accounting_err_pkg.build_message
170358       (p_appli_s_name            => 'XLA'
170359       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
170360       ,p_token_1                 => 'ACCT_ATTR_NAME'
170361       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
170362       ,p_token_2                 => 'PRODUCT_NAME'
170363       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
170364       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
170365       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
170366       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
170367 
170368 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
170369    --
170370    -- following sets the accounting attributes needed to reverse
170371    -- accounting for a distributeion
170372    --
170373    xla_ae_lines_pkg.SetTrxReversalAttrs
170374       (p_event_id              => l_event_id
170375       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
170376       ,p_trx_reversal_source   => l_trx_reversal_source);
170377 
170378 END IF;
170379 
170380 
170381 ----------------------------------------------------------------
170382 -- 4262811 -  update the header statuses to invalid in need be
170383 ----------------------------------------------------------------
170384 --
170385 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
170386 
170387 
170388   -----------------------------------------------
170389   -- No accrual reversal for the event class/type
170390   -----------------------------------------------
170391 ----------------------------------------------------------------
170392 
170393 --
170394 -- this ends the header loop iteration for one bulk fetch
170395 --
170396 END LOOP;
170397 
170398 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
170399 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
170400 
170401 --
170402 -- insert dummy rows into lines gt table that were created due to
170403 -- transaction reversals
170404 --
170405 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
170406    l_result := XLA_AE_LINES_PKG.InsertLines;
170407 END IF;
170408 
170409 --
170410 -- reset the temp_line_num for each set of events fetched from header
170411 -- cursor rather than doing it for each new event in line cursor
170412 -- Bug 3939231
170413 --
170414 xla_ae_lines_pkg.g_temp_line_num := 0;
170415 
170416 
170417 
170418 --
170419 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
170420 --
170421 --
170422 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170423 
170424       trace
170425          (p_msg      => 'SQL - FETCH line_cur'
170426          ,p_level    => C_LEVEL_STATEMENT
170427          ,p_module   => l_log_module);
170428 
170429 END IF;
170430 --
170431 --
170432 LOOP
170433   --
170434   FETCH line_cur BULK COLLECT INTO
170435         l_array_entity_id
170436       , l_array_legal_entity_id
170437       , l_array_entity_code
170438       , l_array_transaction_num
170439       , l_array_event_id
170440       , l_array_class_code
170441       , l_array_event_type
170442       , l_array_event_number
170443       , l_array_event_date
170444       , l_array_transaction_date
170445       , l_array_reference_num_1
170446       , l_array_reference_num_2
170447       , l_array_reference_num_3
170451       , l_array_reference_char_3
170448       , l_array_reference_num_4
170449       , l_array_reference_char_1
170450       , l_array_reference_char_2
170452       , l_array_reference_char_4
170453       , l_array_reference_date_1
170454       , l_array_reference_date_2
170455       , l_array_reference_date_3
170456       , l_array_reference_date_4
170457       , l_array_event_created_by
170458       , l_array_budgetary_control_flag
170459       , l_array_extract_line_num 
170460       , l_array_source_1
170461       , l_array_source_2
170462       , l_array_source_3
170463       , l_array_source_5
170464       , l_array_source_11
170465       LIMIT l_rows;
170466 
170467   --
170468   IF (C_LEVEL_EVENT >= g_log_level) THEN
170469             trace
170470                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
170471                ,p_level    => C_LEVEL_EVENT
170472                ,p_module   => l_log_module);
170473   END IF;
170474   --
170475   EXIT WHEN l_array_entity_id.count = 0;
170476 
170477   XLA_AE_LINES_PKG.g_rec_lines := null;
170478 
170479 --
170480 -- Bug 4458708
170481 --
170482 XLA_AE_LINES_PKG.g_LineNumber := 0;
170483 --
170484 --
170485 
170486 FOR Idx IN 1..l_array_event_id.count LOOP
170487    --
170488    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
170489    --
170490    l_event_id := l_array_event_id(idx);  -- 5648433
170491 
170492    --
170493    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
170494    --
170495 
170496    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
170497              (g_array_event(l_event_id).array_value_num('header_index'))
170498          ,'N'
170499          ) <> 'Y'
170500    THEN
170501       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170502          trace
170503             (p_msg      => 'Trancaction revesal option is not Y '
170504             ,p_level    => C_LEVEL_STATEMENT
170505             ,p_module   => l_log_module);
170506       END IF;
170507 
170508 --
170509 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
170510 --
170511 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
170512 --
170513 -- set event info as cache for other routines to refer event attributes
170514 --
170515 
170516 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
170517    l_previous_event_id := l_event_id;
170518 
170519    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
170520       (p_application_id           => p_application_id
170521       ,p_primary_ledger_id        => p_primary_ledger_id
170522       ,p_base_ledger_id           => p_base_ledger_id
170523       ,p_target_ledger_id         => p_target_ledger_id
170524       ,p_entity_id                => l_array_entity_id(Idx)
170525       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
170526       ,p_entity_code              => l_array_entity_code(Idx)
170527       ,p_transaction_num          => l_array_transaction_num(Idx)
170528       ,p_event_id                 => l_array_event_id(Idx)
170529       ,p_event_class_code         => l_array_class_code(Idx)
170530       ,p_event_type_code          => l_array_event_type(Idx)
170531       ,p_event_number             => l_array_event_number(Idx)
170532       ,p_event_date               => l_array_event_date(Idx)
170533       ,p_transaction_date         => l_array_transaction_date(Idx)
170534       ,p_reference_num_1          => l_array_reference_num_1(Idx)
170535       ,p_reference_num_2          => l_array_reference_num_2(Idx)
170536       ,p_reference_num_3          => l_array_reference_num_3(Idx)
170537       ,p_reference_num_4          => l_array_reference_num_4(Idx)
170538       ,p_reference_char_1         => l_array_reference_char_1(Idx)
170539       ,p_reference_char_2         => l_array_reference_char_2(Idx)
170540       ,p_reference_char_3         => l_array_reference_char_3(Idx)
170541       ,p_reference_char_4         => l_array_reference_char_4(Idx)
170542       ,p_reference_date_1         => l_array_reference_date_1(Idx)
170543       ,p_reference_date_2         => l_array_reference_date_2(Idx)
170544       ,p_reference_date_3         => l_array_reference_date_3(Idx)
170545       ,p_reference_date_4         => l_array_reference_date_4(Idx)
170546       ,p_event_created_by         => l_array_event_created_by(Idx)
170547       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
170548        --
170549 END IF;
170550 
170551 
170552 
170553 --
170554 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
170555 
170556 l_acct_reversal_source := SUBSTR(NULL, 1,30);
170557 
170558 IF l_continue_with_lines THEN
170559    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
170560       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
170561 
170562       xla_accounting_err_pkg.build_message
170563          (p_appli_s_name            => 'XLA'
170564          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
170565          ,p_token_1                 => 'LINE_NUMBER'
170566          ,p_value_1                 => l_array_extract_line_num(Idx)
170567          ,p_token_2                 => 'PRODUCT_NAME'
170568          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
170569          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
170570          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
170574       --
170571          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
170572 
170573    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
170575       -- following sets the accounting attributes needed to reverse
170576       -- accounting for a distributeion
170577       --
170578 
170579       --
170580       -- 5217187
170581       --
170582       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
170583       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
170584                                        g_array_event(l_event_id).array_value_num('header_index'));
170585       --
170586       --
170587 
170588       -- No reversal code generated
170589 
170590       xla_ae_lines_pkg.SetAcctReversalAttrs
170591          (p_event_id             => l_event_id
170592          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
170593          ,p_calculate_acctd_flag => l_calculate_acctd_flag
170594          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
170595    END IF;
170596 
170597    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
170598        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
170599 
170600 --
170601 AcctLineType_54 (
170602  p_application_id  => p_application_id
170603  ,p_event_id     => l_event_id
170604  ,p_calculate_acctd_flag => l_calculate_acctd_flag
170605  ,p_calculate_g_l_flag => l_calculate_g_l_flag
170606  ,p_actual_flag => l_actual_flag
170607  ,p_balance_type_code => l_balance_type_code
170608  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170609  
170610  , p_source_1 => l_array_source_1(Idx)
170611  , p_source_2 => l_array_source_2(Idx)
170612  , p_source_3 => l_array_source_3(Idx)
170613  , p_source_5 => l_array_source_5(Idx)
170614  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
170615  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
170616  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
170617  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
170618  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
170619  , p_source_11 => l_array_source_11(Idx)
170620  );
170621 If(l_balance_type_code = 'A') THEN
170622   l_actual_gain_loss_ref := l_gain_or_loss_ref;
170623 END IF;
170624 
170625 --
170626 
170627 
170628 --
170629 AcctLineType_65 (
170630  p_application_id  => p_application_id
170631  ,p_event_id     => l_event_id
170632  ,p_calculate_acctd_flag => l_calculate_acctd_flag
170633  ,p_calculate_g_l_flag => l_calculate_g_l_flag
170634  ,p_actual_flag => l_actual_flag
170635  ,p_balance_type_code => l_balance_type_code
170636  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170637  
170638  , p_source_1 => l_array_source_1(Idx)
170639  , p_source_2 => l_array_source_2(Idx)
170640  , p_source_3 => l_array_source_3(Idx)
170641  , p_source_5 => l_array_source_5(Idx)
170642  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
170643  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
170644  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
170645  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
170646  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
170647  , p_source_11 => l_array_source_11(Idx)
170648  );
170649 If(l_balance_type_code = 'A') THEN
170650   l_actual_gain_loss_ref := l_gain_or_loss_ref;
170651 END IF;
170652 
170653 --
170654 
170655       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
170656       -- or secondary ledger that has different currency with primary
170657       -- or alc that is calculated by sla
170658       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
170659             (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'))
170660 
170661 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
170662 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
170663           AND (l_actual_flag = 'A')) THEN
170664         XLA_AE_LINES_PKG.CreateGainOrLossLines(
170665           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
170666          ,p_application_id   => p_application_id
170667          ,p_amb_context_code => 'DEFAULT'
170668          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
170669          ,p_event_class_code => C_EVENT_CLASS_CODE
170670          ,p_event_type_code  => C_EVENT_TYPE_CODE
170671          
170672          ,p_gain_ccid        => -1
170673          ,p_loss_ccid        => -1
170674 
170675          ,p_actual_flag      => l_actual_flag
170676          ,p_enc_flag         => null
170677          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
170678          ,p_enc_g_l_ref      => null
170679          );
170680       END IF;
170681    END IF;
170682 END IF;
170683 
170684    ELSE
170685       --
170686       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
170687       --
170688       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170689          trace
170690             (p_msg      => 'Trancaction revesal option is Y'
170691             ,p_level    => C_LEVEL_STATEMENT
170692             ,p_module   => l_log_module);
170693       END IF;
170694    END IF;
170695 
170699 close line_cur;
170696 END LOOP;
170697 l_result := XLA_AE_LINES_PKG.InsertLines ;
170698 end loop;
170700 
170701 
170702 --
170703 -- insert headers into xla_ae_headers_gt table
170704 --
170705 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
170706 
170707 -- insert into errors table here.
170708 
170709 END LOOP;
170710 
170711 --
170712 -- 4865292
170713 --
170714 -- Compare g_hdr_extract_count with event count in
170715 -- CreateHeadersAndLines.
170716 --
170717 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
170718 
170719 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170720    trace (p_msg     => '# rows extracted from header extract objects '
170721                     || ' (running total): '
170722                     || g_hdr_extract_count
170723          ,p_level   => C_LEVEL_STATEMENT
170724          ,p_module  => l_log_module);
170725 END IF;
170726 
170727 CLOSE header_cur;
170728 --
170729 
170730 --
170731 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170732    trace
170733       (p_msg      => 'END of EventType_289'
170734       ,p_level    => C_LEVEL_PROCEDURE
170735       ,p_module   => l_log_module);
170736 END IF;
170737 --
170738 RETURN l_result;
170739 EXCEPTION
170740 WHEN xla_exceptions_pkg.application_exception THEN
170741    
170742 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
170743 
170744    
170745 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
170746 
170747    RAISE;
170748 
170749 WHEN NO_DATA_FOUND THEN
170750 
170751 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
170752 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
170753 
170754 FOR header_record IN header_cur
170755 LOOP
170756     l_array_header_events(header_record.event_id) := header_record.event_id;
170757 END LOOP;
170758 
170759 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
170760 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
170761 
170762 fnd_file.put_line(fnd_file.LOG, '                    ');
170763 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
170764 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
170765 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
170766 
170767 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
170768 LOOP
170769 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
170770 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
170771         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
170772 	END IF;
170773 END LOOP;
170774 
170775 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
170776 fnd_file.put_line(fnd_file.LOG, '                    ');
170777 
170778 
170779 xla_exceptions_pkg.raise_message
170780       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_289');
170781 
170782 
170783 WHEN OTHERS THEN
170784    xla_exceptions_pkg.raise_message
170785       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_289');
170786 END EventType_289;
170787 --
170788 
170789 ---------------------------------------
170790 --
170791 -- PRIVATE PROCEDURE
170792 --         insert_sources_290
170793 --
170794 ----------------------------------------
170795 --
170796 PROCEDURE insert_sources_290(
170797                                 p_target_ledger_id       IN NUMBER
170798                               , p_language               IN VARCHAR2
170799                               , p_sla_ledger_id          IN NUMBER
170800                               , p_pad_start_date         IN DATE
170801                               , p_pad_end_date           IN DATE
170802                          )
170803 IS
170804 
170805 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_SO_ISSUE';
170806 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SHIPPING';
170807 p_apps_owner                   VARCHAR2(30);
170808 l_log_module                   VARCHAR2(240);
170809 BEGIN
170810 IF g_log_enabled THEN
170811       l_log_module := C_DEFAULT_MODULE||'.insert_sources_290';
170812 END IF;
170813 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170814 
170815       trace
170816          (p_msg      => 'BEGIN of insert_sources_290'
170817          ,p_level    => C_LEVEL_PROCEDURE
170818          ,p_module   => l_log_module);
170819 
170820 END IF;
170821 
170822 -- select APPS owner
170823 SELECT oracle_username
170824   INTO p_apps_owner
170825   FROM fnd_oracle_userid
170826  WHERE read_only_flag = 'U'
170827 ;
170828 
170829 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170830       trace
170831          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
170832                         ' - p_language = '||p_language||
170833                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
170834                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
170835                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
170836                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
170837          ,p_level    => C_LEVEL_STATEMENT
170838          ,p_module   => l_log_module);
170839 END IF;
170840 
170841 
170842 --
170843 INSERT INTO xla_diag_sources --hdr1
170844 (
170848       , description_language
170845         event_id
170846       , ledger_id
170847       , sla_ledger_id
170849       , object_name
170850       , object_type_code
170851       , line_number
170852       , source_application_id
170853       , source_type_code
170854       , source_code
170855       , source_value
170856       , source_meaning
170857       , created_by
170858       , creation_date
170859       , last_update_date
170860       , last_updated_by
170861       , last_update_login
170862       , program_update_date
170863       , program_application_id
170864       , program_id
170865       , request_id
170866 )
170867 SELECT
170868         event_id
170869       , p_target_ledger_id
170870       , p_sla_ledger_id
170871       , p_language
170872       , object_name
170873       , object_type_code
170874       , line_number
170875       , source_application_id
170876       , source_type_code
170877       , source_code
170878       , SUBSTR(source_value ,1,1996)
170879       , SUBSTR(source_meaning,1,200)
170880       , xla_environment_pkg.g_Usr_Id
170881       , TRUNC(SYSDATE)
170882       , TRUNC(SYSDATE)
170883       , xla_environment_pkg.g_Usr_Id
170884       , xla_environment_pkg.g_Login_Id
170885       , TRUNC(SYSDATE)
170886       , xla_environment_pkg.g_Prog_Appl_Id
170887       , xla_environment_pkg.g_Prog_Id
170888       , xla_environment_pkg.g_Req_Id
170889   FROM (
170890        SELECT xet.event_id                  event_id
170891             , 0                             line_number
170892             , CASE r
170893                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
170894                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
170895                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
170896                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
170897                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
170898                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
170899                 
170900                ELSE null
170901               END                           object_name
170902             , CASE r
170903                 WHEN 1 THEN 'HEADER' 
170904                 WHEN 2 THEN 'HEADER' 
170905                 WHEN 3 THEN 'HEADER' 
170906                 WHEN 4 THEN 'HEADER' 
170907                 WHEN 5 THEN 'HEADER' 
170908                 WHEN 6 THEN 'HEADER' 
170909                 
170910                 ELSE null
170911               END                           object_type_code
170912             , CASE r
170913                 WHEN 1 THEN '555' 
170914                 WHEN 2 THEN '555' 
170915                 WHEN 3 THEN '555' 
170916                 WHEN 4 THEN '555' 
170917                 WHEN 5 THEN '555' 
170918                 WHEN 6 THEN '555' 
170919                 
170920                 ELSE null
170921               END                           source_application_id
170922             , 'S'             source_type_code
170923             , CASE r
170924                 WHEN 1 THEN 'ENTITY_CODE' 
170925                 WHEN 2 THEN 'CURRENCY_CODE' 
170926                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
170927                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
170928                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
170929                 WHEN 6 THEN 'TRANSACTION_DATE' 
170930                 
170931                 ELSE null
170932               END                           source_code
170933             , CASE r
170934                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
170935                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
170936                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
170937                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
170938                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
170939                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
170940                 
170941                 ELSE null
170942               END                           source_value
170943             , CASE r
170944                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
170945                           1010186
170946                          ,TO_CHAR(h1.CURRENCY_CODE)
170947                          ,'CURRENCY_CODE'
170948                          ,'S'
170949                          ,555)
170950                 
170951                 ELSE null
170952               END               source_meaning
170953         FROM xla_events_gt     xet  
170954       , GMF_XLA_EXTRACT_HEADERS  h1
170955             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
170956        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
170957          AND xet.event_type_code = C_EVENT_TYPE_CODE
170958             AND h1.event_id = xet.event_id
170959 
170960 )
170961 ;
170962 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170963 
170964       trace
170965          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
170966          ,p_level    => C_LEVEL_STATEMENT
170967          ,p_module   => l_log_module);
170968 
170969 END IF;
170970 --
170971 
170972 
170973 
170974 --
170975 INSERT INTO xla_diag_sources --line1
170976 (
170977         event_id
170978       , ledger_id
170979       , sla_ledger_id
170980       , description_language
170981       , object_name
170982       , object_type_code
170983       , line_number
170984       , source_application_id
170985       , source_type_code
170989       , created_by
170986       , source_code
170987       , source_value
170988       , source_meaning
170990       , creation_date
170991       , last_update_date
170992       , last_updated_by
170993       , last_update_login
170994       , program_update_date
170995       , program_application_id
170996       , program_id
170997       , request_id
170998 )
170999 SELECT  event_id
171000       , p_target_ledger_id
171001       , p_sla_ledger_id
171002       , p_language
171003       , object_name
171004       , object_type_code
171005       , line_number
171006       , source_application_id
171007       , source_type_code
171008       , source_code
171009       , SUBSTR(source_value,1,1996)
171010       , SUBSTR(source_meaning,1,200)
171011       , xla_environment_pkg.g_Usr_Id
171012       , TRUNC(SYSDATE)
171013       , TRUNC(SYSDATE)
171014       , xla_environment_pkg.g_Usr_Id
171015       , xla_environment_pkg.g_Login_Id
171016       , TRUNC(SYSDATE)
171017       , xla_environment_pkg.g_Prog_Appl_Id
171018       , xla_environment_pkg.g_Prog_Id
171019       , xla_environment_pkg.g_Req_Id
171020   FROM (
171021        SELECT xet.event_id                  event_id
171022             , l2.line_number                 line_number
171023             , CASE r
171024                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
171025                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
171026                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
171027                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
171028                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
171029                 
171030                ELSE null
171031               END                           object_name
171032             , CASE r
171033                 WHEN 1 THEN 'LINE' 
171034                 WHEN 2 THEN 'LINE' 
171035                 WHEN 3 THEN 'LINE' 
171036                 WHEN 4 THEN 'LINE' 
171037                 WHEN 5 THEN 'LINE' 
171038                 
171039                 ELSE null
171040               END                           object_type_code
171041             , CASE r
171042                 WHEN 1 THEN '555' 
171043                 WHEN 2 THEN '555' 
171044                 WHEN 3 THEN '555' 
171045                 WHEN 4 THEN '555' 
171046                 WHEN 5 THEN '555' 
171047                 
171048                 ELSE null
171049               END                           source_application_id
171050             , 'S'             source_type_code
171051             , CASE r
171052                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
171053                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
171054                 WHEN 3 THEN 'ENTERED_AMOUNT' 
171055                 WHEN 4 THEN 'LINE_ID' 
171056                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
171057                 
171058                 ELSE null
171059               END                           source_code
171060             , CASE r
171061                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
171062                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
171063                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
171064                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
171065                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
171066                 
171067                 ELSE null
171068               END                           source_value
171069             , null              source_meaning
171070          FROM  xla_events_gt     xet  
171071         , GMF_XLA_EXTRACT_LINES  l2
171072             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
171073         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
171074           AND xet.event_type_code = C_EVENT_TYPE_CODE
171075             AND l2.event_id          = xet.event_id
171076 
171077 )
171078 ;
171079 --
171080 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171081 
171082       trace
171083          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
171084          ,p_level    => C_LEVEL_STATEMENT
171085          ,p_module   => l_log_module);
171086 
171087 END IF;
171088 
171089 
171090 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
171091       trace
171092          (p_msg      => 'END of insert_sources_290'
171093          ,p_level    => C_LEVEL_PROCEDURE
171094          ,p_module   => l_log_module);
171095 END IF;
171096 EXCEPTION
171097   WHEN xla_exceptions_pkg.application_exception THEN
171098       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
171099             trace
171100                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
171101                ,p_level    => C_LEVEL_EXCEPTION
171102                ,p_module   => l_log_module);
171103       END IF;
171104       RAISE;
171105   WHEN OTHERS THEN
171106       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
171107             trace
171108                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
171109                ,p_level    => C_LEVEL_EXCEPTION
171110                ,p_module   => l_log_module);
171111        END IF;
171112        xla_exceptions_pkg.raise_message
171113            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_290');
171114 END insert_sources_290;
171115 --
171116 
171117 ---------------------------------------
171118 --
171119 -- PRIVATE FUNCTION
171120 --         EventType_290
171121 --
171122 ----------------------------------------
171123 --
171124 FUNCTION EventType_290
171128        ,p_language               IN VARCHAR2
171125        (p_application_id         IN NUMBER
171126        ,p_base_ledger_id         IN NUMBER
171127        ,p_target_ledger_id       IN NUMBER
171129        ,p_currency_code          IN VARCHAR2
171130        ,p_sla_ledger_id          IN NUMBER
171131        ,p_pad_start_date         IN DATE
171132        ,p_pad_end_date           IN DATE
171133        ,p_primary_ledger_id      IN NUMBER)
171134 RETURN BOOLEAN IS
171135 --
171136 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_SO_ISSUE';
171137 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SHIPPING';
171138 
171139 l_calculate_acctd_flag   VARCHAR2(1) :='N';
171140 l_calculate_g_l_flag     VARCHAR2(1) :='N';
171141 --
171142 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171143 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171144 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171145 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171146 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171147 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171148 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171149 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171150 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171151 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171152 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171153 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171154 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171155 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171156 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171157 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171158 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171159 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171160 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171161 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171162 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171163 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171164 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
171165 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171166 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
171167 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
171168 
171169 l_event_id                             NUMBER;
171170 l_previous_event_id                    NUMBER;
171171 l_first_event_id                       NUMBER;
171172 l_last_event_id                        NUMBER;
171173 
171174 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
171175 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
171176 --
171177 --
171178 l_result                    BOOLEAN := TRUE;
171179 l_rows                      NUMBER  := 1000;
171180 l_event_type_name           VARCHAR2(80) := 'Logical Sales Order Issue';
171181 l_event_class_name          VARCHAR2(80) := 'Shipments';
171182 l_description               VARCHAR2(4000);
171183 l_transaction_reversal      NUMBER;
171184 l_ae_header_id              NUMBER;
171185 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
171186 l_log_module                VARCHAR2(240);
171187 --
171188 l_acct_reversal_source      VARCHAR2(30);
171189 l_trx_reversal_source       VARCHAR2(30);
171190 
171191 l_continue_with_lines       BOOLEAN := TRUE;
171192 --
171193 l_acc_rev_gl_date_source    DATE;                      -- 4262811
171194 --
171195 type t_array_event_id is table of number index by binary_integer;
171196 
171197 l_rec_array_event                    t_rec_array_event;
171198 l_null_rec_array_event               t_rec_array_event;
171199 l_array_ae_header_id                 xla_number_array_type;
171200 l_actual_flag                        VARCHAR2(1) := NULL;
171201 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
171202 l_balance_type_code                  VARCHAR2(1) :=NULL;
171203 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
171204 
171205 --
171206 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
171207 --
171208 
171209 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
171210 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
171211 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
171212 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
171213 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
171214 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
171215 
171216 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
171217 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
171221 
171218 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
171219 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
171220 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
171222 l_array_source_6              t_array_source_6;
171223 l_array_source_7              t_array_source_7;
171224 l_array_source_8              t_array_source_8;
171225 l_array_source_9              t_array_source_9;
171226 l_array_source_10              t_array_source_10;
171227 l_array_source_12              t_array_source_12;
171228 
171229 l_array_source_1      t_array_source_1;
171230 l_array_source_2      t_array_source_2;
171231 l_array_source_3      t_array_source_3;
171232 l_array_source_5      t_array_source_5;
171233 l_array_source_11      t_array_source_11;
171234 
171235 --
171236 CURSOR header_cur
171237 IS
171238 SELECT /*+ leading(xet) cardinality(xet,1) */
171239 -- Event Type Code: LOG_SO_ISSUE
171240 -- Event Class Code: SHIPPING
171241     xet.entity_id
171242   , xet.legal_entity_id
171243   , xet.entity_code
171244   , xet.transaction_number
171245   , xet.event_id
171246   , xet.event_class_code
171247   , xet.event_type_code
171248   , xet.event_number
171249   , xet.event_date
171250   , xet.transaction_date
171251   , xet.reference_num_1
171252   , xet.reference_num_2
171253   , xet.reference_num_3
171254   , xet.reference_num_4
171255   , xet.reference_char_1
171256   , xet.reference_char_2
171257   , xet.reference_char_3
171258   , xet.reference_char_4
171259   , xet.reference_date_1
171260   , xet.reference_date_2
171261   , xet.reference_date_3
171262   , xet.reference_date_4
171263   , xet.event_created_by
171264   , xet.budgetary_control_flag 
171265   , h1.ENTITY_CODE    source_6
171266   , h1.CURRENCY_CODE    source_7
171267   , h1.CURRENCY_CONVERSION_DATE    source_8
171268   , h1.CURRENCY_CONVERSION_RATE    source_9
171269   , h1.CURRENCY_CONVERSION_TYPE    source_10
171270   , h1.TRANSACTION_DATE    source_12
171271   FROM xla_events_gt     xet 
171272   , GMF_XLA_EXTRACT_HEADERS  h1
171273  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
171274    and xet.event_type_code = C_EVENT_TYPE_CODE
171275    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
171276 
171277  ORDER BY event_id
171278 ;
171279 
171280 
171281 --
171282 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
171283 IS
171284 SELECT /*+ leading(xet) cardinality(xet,1) */
171285 -- Event Type Code: LOG_SO_ISSUE
171286 -- Event Class Code: SHIPPING
171287     xet.entity_id
171288    ,xet.legal_entity_id
171289    ,xet.entity_code
171290    ,xet.transaction_number
171291    ,xet.event_id
171292    ,xet.event_class_code
171293    ,xet.event_type_code
171294    ,xet.event_number
171295    ,xet.event_date
171296    ,xet.transaction_date
171297    ,xet.reference_num_1
171298    ,xet.reference_num_2
171299    ,xet.reference_num_3
171300    ,xet.reference_num_4
171301    ,xet.reference_char_1
171302    ,xet.reference_char_2
171303    ,xet.reference_char_3
171304    ,xet.reference_char_4
171305    ,xet.reference_date_1
171306    ,xet.reference_date_2
171307    ,xet.reference_date_3
171308    ,xet.reference_date_4
171309    ,xet.event_created_by
171310    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
171311   , l2.TRANSACTION_ACCOUNT_ID    source_1
171312   , l2.JOURNAL_LINE_TYPE    source_2
171313   , l2.ENTERED_AMOUNT    source_3
171314   , l2.LINE_ID    source_5
171315   , l2.ACCOUNTED_AMOUNT    source_11
171316   FROM xla_events_gt     xet 
171317   , GMF_XLA_EXTRACT_LINES  l2
171318  WHERE xet.event_id between x_first_event_id and x_last_event_id
171319    and xet.event_date between p_pad_start_date and p_pad_end_date
171320    and xet.event_type_code = C_EVENT_TYPE_CODE
171321    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
171322 ;
171323 
171324 --
171325 BEGIN
171326 IF g_log_enabled THEN
171327    l_log_module := C_DEFAULT_MODULE||'.EventType_290';
171328 END IF;
171329 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
171330    trace
171331       (p_msg      => 'BEGIN of EventType_290'
171332       ,p_level    => C_LEVEL_PROCEDURE
171333       ,p_module   => l_log_module);
171334 END IF;
171335 
171336 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171337    trace
171338       (p_msg      => 'p_application_id = '||p_application_id||
171339                      ' - p_base_ledger_id = '||p_base_ledger_id||
171340                      ' - p_target_ledger_id  = '||p_target_ledger_id||
171341                      ' - p_language = '||p_language||
171342                      ' - p_currency_code = '||p_currency_code||
171343                      ' - p_sla_ledger_id = '||p_sla_ledger_id
171344       ,p_level    => C_LEVEL_STATEMENT
171345       ,p_module   => l_log_module);
171346 END IF;
171347 --
171348 -- initialze arrays
171349 --
171350 g_array_event.DELETE;
171351 l_rec_array_event := l_null_rec_array_event;
171352 --
171353 --------------------------------------
171354 -- 4262811 Initialze MPA Line Number
171355 --------------------------------------
171356 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
171357 
171358 --
171359 
171360 --
171361 OPEN header_cur;
171362 --
171363 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171364    trace
171368 END IF;
171365    (p_msg      => 'SQL - FETCH header_cur'
171366    ,p_level    => C_LEVEL_STATEMENT
171367    ,p_module   => l_log_module);
171369 --
171370 LOOP
171371 FETCH header_cur BULK COLLECT INTO
171372         l_array_entity_id
171373       , l_array_legal_entity_id
171374       , l_array_entity_code
171375       , l_array_transaction_num
171376       , l_array_event_id
171377       , l_array_class_code
171378       , l_array_event_type
171379       , l_array_event_number
171380       , l_array_event_date
171381       , l_array_transaction_date
171382       , l_array_reference_num_1
171383       , l_array_reference_num_2
171384       , l_array_reference_num_3
171385       , l_array_reference_num_4
171386       , l_array_reference_char_1
171387       , l_array_reference_char_2
171388       , l_array_reference_char_3
171389       , l_array_reference_char_4
171390       , l_array_reference_date_1
171391       , l_array_reference_date_2
171392       , l_array_reference_date_3
171393       , l_array_reference_date_4
171394       , l_array_event_created_by
171395       , l_array_budgetary_control_flag 
171396       , l_array_source_6
171397       , l_array_source_7
171398       , l_array_source_8
171399       , l_array_source_9
171400       , l_array_source_10
171401       , l_array_source_12
171402       LIMIT l_rows;
171403 --
171404 IF (C_LEVEL_EVENT >= g_log_level) THEN
171405    trace
171406    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
171407    ,p_level    => C_LEVEL_EVENT
171408    ,p_module   => l_log_module);
171409 END IF;
171410 --
171411 EXIT WHEN l_array_entity_id.COUNT = 0;
171412 
171413 -- initialize arrays
171414 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
171415 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
171416 
171417 --
171418 -- Bug 4458708
171419 --
171420 XLA_AE_LINES_PKG.g_LineNumber := 0;
171421 
171422 
171423 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
171424 g_last_hdr_idx := l_array_event_id.LAST;
171425 --
171426 -- loop for the headers. Each iteration is for each header extract row
171427 -- fetched in header cursor
171428 --
171429 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
171430 
171431 --
171432 -- set event info as cache for other routines to refer event attributes
171433 --
171434 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
171435    (p_application_id           => p_application_id
171436    ,p_primary_ledger_id        => p_primary_ledger_id
171437    ,p_base_ledger_id           => p_base_ledger_id
171438    ,p_target_ledger_id         => p_target_ledger_id
171439    ,p_entity_id                => l_array_entity_id(hdr_idx)
171440    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
171441    ,p_entity_code              => l_array_entity_code(hdr_idx)
171442    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
171443    ,p_event_id                 => l_array_event_id(hdr_idx)
171444    ,p_event_class_code         => l_array_class_code(hdr_idx)
171445    ,p_event_type_code          => l_array_event_type(hdr_idx)
171446    ,p_event_number             => l_array_event_number(hdr_idx)
171447    ,p_event_date               => l_array_event_date(hdr_idx)
171448    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
171449    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
171450    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
171451    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
171452    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
171453    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
171454    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
171455    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
171456    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
171457    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
171458    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
171459    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
171460    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
171461    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
171462    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
171463 
171464 --
171465 -- set the status of entry to C_VALID (0)
171466 --
171467 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
171468 
171469 --
171470 -- initialize a row for ae header
171471 --
171472 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
171473 
171474 l_event_id := l_array_event_id(hdr_idx);
171475 
171476 --
171477 -- storing the hdr_idx for event. May be used by line cursor.
171478 --
171479 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
171480 
171481 --
171482 -- store sources from header extract. This can be improved to
171483 -- store only those sources from header extract that may be used in lines
171484 --
171485 
171486 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
171487 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
171488 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
171489 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
171490 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
171494 -- initilaize the status of ae headers for diffrent balance types
171491 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
171492 
171493 --
171495 -- the status is initialised to C_NOT_CREATED (2)
171496 --
171497 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
171498 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
171499 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
171500 
171501 --
171502 -- call api to validate and store accounting attributes for header
171503 --
171504 
171505 ------------------------------------------------------------
171506 -- Accrual Reversal : to get date for Standard Source (NONE)
171507 ------------------------------------------------------------
171508 l_acc_rev_gl_date_source := NULL;
171509 
171510      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
171511       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
171512 
171513 
171514 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
171515 
171516 XLA_AE_HEADER_PKG.SetJeCategoryName;
171517 
171518 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
171519 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
171520 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
171521 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
171522 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
171523 
171524 
171525 -- No header level analytical criteria
171526 
171527 --
171528 --accounting attribute enhancement, bug 3612931
171529 --
171530 l_trx_reversal_source := SUBSTR(NULL, 1,30);
171531 
171532 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
171533    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
171534 
171535    xla_accounting_err_pkg.build_message
171536       (p_appli_s_name            => 'XLA'
171537       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
171538       ,p_token_1                 => 'ACCT_ATTR_NAME'
171539       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
171540       ,p_token_2                 => 'PRODUCT_NAME'
171541       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
171542       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
171543       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
171544       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
171545 
171546 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
171547    --
171548    -- following sets the accounting attributes needed to reverse
171549    -- accounting for a distributeion
171550    --
171551    xla_ae_lines_pkg.SetTrxReversalAttrs
171552       (p_event_id              => l_event_id
171553       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
171554       ,p_trx_reversal_source   => l_trx_reversal_source);
171555 
171556 END IF;
171557 
171558 
171559 ----------------------------------------------------------------
171560 -- 4262811 -  update the header statuses to invalid in need be
171561 ----------------------------------------------------------------
171562 --
171563 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
171564 
171565 
171566   -----------------------------------------------
171567   -- No accrual reversal for the event class/type
171568   -----------------------------------------------
171569 ----------------------------------------------------------------
171570 
171571 --
171572 -- this ends the header loop iteration for one bulk fetch
171573 --
171574 END LOOP;
171575 
171576 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
171577 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
171578 
171579 --
171580 -- insert dummy rows into lines gt table that were created due to
171581 -- transaction reversals
171582 --
171583 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
171584    l_result := XLA_AE_LINES_PKG.InsertLines;
171585 END IF;
171586 
171587 --
171588 -- reset the temp_line_num for each set of events fetched from header
171589 -- cursor rather than doing it for each new event in line cursor
171590 -- Bug 3939231
171591 --
171592 xla_ae_lines_pkg.g_temp_line_num := 0;
171593 
171594 
171595 
171596 --
171597 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
171598 --
171599 --
171600 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171601 
171602       trace
171603          (p_msg      => 'SQL - FETCH line_cur'
171604          ,p_level    => C_LEVEL_STATEMENT
171605          ,p_module   => l_log_module);
171606 
171607 END IF;
171608 --
171609 --
171610 LOOP
171611   --
171612   FETCH line_cur BULK COLLECT INTO
171613         l_array_entity_id
171614       , l_array_legal_entity_id
171615       , l_array_entity_code
171616       , l_array_transaction_num
171617       , l_array_event_id
171618       , l_array_class_code
171619       , l_array_event_type
171620       , l_array_event_number
171624       , l_array_reference_num_2
171621       , l_array_event_date
171622       , l_array_transaction_date
171623       , l_array_reference_num_1
171625       , l_array_reference_num_3
171626       , l_array_reference_num_4
171627       , l_array_reference_char_1
171628       , l_array_reference_char_2
171629       , l_array_reference_char_3
171630       , l_array_reference_char_4
171631       , l_array_reference_date_1
171632       , l_array_reference_date_2
171633       , l_array_reference_date_3
171634       , l_array_reference_date_4
171635       , l_array_event_created_by
171636       , l_array_budgetary_control_flag
171637       , l_array_extract_line_num 
171638       , l_array_source_1
171639       , l_array_source_2
171640       , l_array_source_3
171641       , l_array_source_5
171642       , l_array_source_11
171643       LIMIT l_rows;
171644 
171645   --
171646   IF (C_LEVEL_EVENT >= g_log_level) THEN
171647             trace
171648                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
171649                ,p_level    => C_LEVEL_EVENT
171650                ,p_module   => l_log_module);
171651   END IF;
171652   --
171653   EXIT WHEN l_array_entity_id.count = 0;
171654 
171655   XLA_AE_LINES_PKG.g_rec_lines := null;
171656 
171657 --
171658 -- Bug 4458708
171659 --
171660 XLA_AE_LINES_PKG.g_LineNumber := 0;
171661 --
171662 --
171663 
171664 FOR Idx IN 1..l_array_event_id.count LOOP
171665    --
171666    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
171667    --
171668    l_event_id := l_array_event_id(idx);  -- 5648433
171669 
171670    --
171671    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
171672    --
171673 
171674    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
171675              (g_array_event(l_event_id).array_value_num('header_index'))
171676          ,'N'
171677          ) <> 'Y'
171678    THEN
171679       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171680          trace
171681             (p_msg      => 'Trancaction revesal option is not Y '
171682             ,p_level    => C_LEVEL_STATEMENT
171683             ,p_module   => l_log_module);
171684       END IF;
171685 
171686 --
171687 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
171688 --
171689 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
171690 --
171691 -- set event info as cache for other routines to refer event attributes
171692 --
171693 
171694 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
171695    l_previous_event_id := l_event_id;
171696 
171697    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
171698       (p_application_id           => p_application_id
171699       ,p_primary_ledger_id        => p_primary_ledger_id
171700       ,p_base_ledger_id           => p_base_ledger_id
171701       ,p_target_ledger_id         => p_target_ledger_id
171702       ,p_entity_id                => l_array_entity_id(Idx)
171703       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
171704       ,p_entity_code              => l_array_entity_code(Idx)
171705       ,p_transaction_num          => l_array_transaction_num(Idx)
171706       ,p_event_id                 => l_array_event_id(Idx)
171707       ,p_event_class_code         => l_array_class_code(Idx)
171708       ,p_event_type_code          => l_array_event_type(Idx)
171709       ,p_event_number             => l_array_event_number(Idx)
171710       ,p_event_date               => l_array_event_date(Idx)
171711       ,p_transaction_date         => l_array_transaction_date(Idx)
171712       ,p_reference_num_1          => l_array_reference_num_1(Idx)
171713       ,p_reference_num_2          => l_array_reference_num_2(Idx)
171714       ,p_reference_num_3          => l_array_reference_num_3(Idx)
171715       ,p_reference_num_4          => l_array_reference_num_4(Idx)
171716       ,p_reference_char_1         => l_array_reference_char_1(Idx)
171717       ,p_reference_char_2         => l_array_reference_char_2(Idx)
171718       ,p_reference_char_3         => l_array_reference_char_3(Idx)
171719       ,p_reference_char_4         => l_array_reference_char_4(Idx)
171720       ,p_reference_date_1         => l_array_reference_date_1(Idx)
171721       ,p_reference_date_2         => l_array_reference_date_2(Idx)
171722       ,p_reference_date_3         => l_array_reference_date_3(Idx)
171723       ,p_reference_date_4         => l_array_reference_date_4(Idx)
171724       ,p_event_created_by         => l_array_event_created_by(Idx)
171725       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
171726        --
171727 END IF;
171728 
171729 
171730 
171731 --
171732 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
171733 
171734 l_acct_reversal_source := SUBSTR(NULL, 1,30);
171735 
171736 IF l_continue_with_lines THEN
171737    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
171738       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
171739 
171740       xla_accounting_err_pkg.build_message
171741          (p_appli_s_name            => 'XLA'
171742          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
171743          ,p_token_1                 => 'LINE_NUMBER'
171744          ,p_value_1                 => l_array_extract_line_num(Idx)
171745          ,p_token_2                 => 'PRODUCT_NAME'
171749          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
171746          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
171747          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
171748          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
171750 
171751    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
171752       --
171753       -- following sets the accounting attributes needed to reverse
171754       -- accounting for a distributeion
171755       --
171756 
171757       --
171758       -- 5217187
171759       --
171760       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
171761       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
171762                                        g_array_event(l_event_id).array_value_num('header_index'));
171763       --
171764       --
171765 
171766       -- No reversal code generated
171767 
171768       xla_ae_lines_pkg.SetAcctReversalAttrs
171769          (p_event_id             => l_event_id
171770          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
171771          ,p_calculate_acctd_flag => l_calculate_acctd_flag
171772          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
171773    END IF;
171774 
171775    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
171776        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
171777 
171778 --
171779 AcctLineType_74 (
171780  p_application_id  => p_application_id
171781  ,p_event_id     => l_event_id
171782  ,p_calculate_acctd_flag => l_calculate_acctd_flag
171783  ,p_calculate_g_l_flag => l_calculate_g_l_flag
171784  ,p_actual_flag => l_actual_flag
171785  ,p_balance_type_code => l_balance_type_code
171786  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
171787  
171788  , p_source_1 => l_array_source_1(Idx)
171789  , p_source_2 => l_array_source_2(Idx)
171790  , p_source_3 => l_array_source_3(Idx)
171791  , p_source_5 => l_array_source_5(Idx)
171792  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
171793  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
171794  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
171795  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
171796  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
171797  , p_source_11 => l_array_source_11(Idx)
171798  );
171799 If(l_balance_type_code = 'A') THEN
171800   l_actual_gain_loss_ref := l_gain_or_loss_ref;
171801 END IF;
171802 
171803 --
171804 
171805 
171806 --
171807 AcctLineType_79 (
171808  p_application_id  => p_application_id
171809  ,p_event_id     => l_event_id
171810  ,p_calculate_acctd_flag => l_calculate_acctd_flag
171811  ,p_calculate_g_l_flag => l_calculate_g_l_flag
171812  ,p_actual_flag => l_actual_flag
171813  ,p_balance_type_code => l_balance_type_code
171814  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
171815  
171816  , p_source_1 => l_array_source_1(Idx)
171817  , p_source_2 => l_array_source_2(Idx)
171818  , p_source_3 => l_array_source_3(Idx)
171819  , p_source_5 => l_array_source_5(Idx)
171820  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
171821  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
171822  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
171823  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
171824  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
171825  , p_source_11 => l_array_source_11(Idx)
171826  );
171827 If(l_balance_type_code = 'A') THEN
171828   l_actual_gain_loss_ref := l_gain_or_loss_ref;
171829 END IF;
171830 
171831 --
171832 
171833 
171834 --
171835 AcctLineType_133 (
171836  p_application_id  => p_application_id
171837  ,p_event_id     => l_event_id
171838  ,p_calculate_acctd_flag => l_calculate_acctd_flag
171839  ,p_calculate_g_l_flag => l_calculate_g_l_flag
171840  ,p_actual_flag => l_actual_flag
171841  ,p_balance_type_code => l_balance_type_code
171842  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
171843  
171844  , p_source_1 => l_array_source_1(Idx)
171845  , p_source_2 => l_array_source_2(Idx)
171846  , p_source_3 => l_array_source_3(Idx)
171847  , p_source_5 => l_array_source_5(Idx)
171848  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
171849  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
171850  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
171851  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
171852  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
171853  , p_source_11 => l_array_source_11(Idx)
171854  );
171855 If(l_balance_type_code = 'A') THEN
171856   l_actual_gain_loss_ref := l_gain_or_loss_ref;
171857 END IF;
171858 
171859 --
171860 
171861       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
171862       -- or secondary ledger that has different currency with primary
171863       -- or alc that is calculated by sla
171864       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
171865             (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'))
171866 
171867 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
171871           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
171868 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
171869           AND (l_actual_flag = 'A')) THEN
171870         XLA_AE_LINES_PKG.CreateGainOrLossLines(
171872          ,p_application_id   => p_application_id
171873          ,p_amb_context_code => 'DEFAULT'
171874          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
171875          ,p_event_class_code => C_EVENT_CLASS_CODE
171876          ,p_event_type_code  => C_EVENT_TYPE_CODE
171877          
171878          ,p_gain_ccid        => -1
171879          ,p_loss_ccid        => -1
171880 
171881          ,p_actual_flag      => l_actual_flag
171882          ,p_enc_flag         => null
171883          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
171884          ,p_enc_g_l_ref      => null
171885          );
171886       END IF;
171887    END IF;
171888 END IF;
171889 
171890    ELSE
171891       --
171892       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
171893       --
171894       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171895          trace
171896             (p_msg      => 'Trancaction revesal option is Y'
171897             ,p_level    => C_LEVEL_STATEMENT
171898             ,p_module   => l_log_module);
171899       END IF;
171900    END IF;
171901 
171902 END LOOP;
171903 l_result := XLA_AE_LINES_PKG.InsertLines ;
171904 end loop;
171905 close line_cur;
171906 
171907 
171908 --
171909 -- insert headers into xla_ae_headers_gt table
171910 --
171911 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
171912 
171913 -- insert into errors table here.
171914 
171915 END LOOP;
171916 
171917 --
171918 -- 4865292
171919 --
171920 -- Compare g_hdr_extract_count with event count in
171921 -- CreateHeadersAndLines.
171922 --
171923 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
171924 
171925 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171926    trace (p_msg     => '# rows extracted from header extract objects '
171927                     || ' (running total): '
171928                     || g_hdr_extract_count
171929          ,p_level   => C_LEVEL_STATEMENT
171930          ,p_module  => l_log_module);
171931 END IF;
171932 
171933 CLOSE header_cur;
171934 --
171935 
171936 --
171937 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
171938    trace
171939       (p_msg      => 'END of EventType_290'
171940       ,p_level    => C_LEVEL_PROCEDURE
171941       ,p_module   => l_log_module);
171942 END IF;
171943 --
171944 RETURN l_result;
171945 EXCEPTION
171946 WHEN xla_exceptions_pkg.application_exception THEN
171947    
171948 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
171949 
171950    
171951 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
171952 
171953    RAISE;
171954 
171955 WHEN NO_DATA_FOUND THEN
171956 
171957 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
171958 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
171959 
171960 FOR header_record IN header_cur
171961 LOOP
171962     l_array_header_events(header_record.event_id) := header_record.event_id;
171963 END LOOP;
171964 
171965 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
171966 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
171967 
171968 fnd_file.put_line(fnd_file.LOG, '                    ');
171969 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
171970 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
171971 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
171972 
171973 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
171974 LOOP
171975 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
171976 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
171977         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
171978 	END IF;
171979 END LOOP;
171980 
171981 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
171982 fnd_file.put_line(fnd_file.LOG, '                    ');
171983 
171984 
171985 xla_exceptions_pkg.raise_message
171986       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_290');
171987 
171988 
171989 WHEN OTHERS THEN
171990    xla_exceptions_pkg.raise_message
171991       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_290');
171992 END EventType_290;
171993 --
171994 
171995 ---------------------------------------
171996 --
171997 -- PRIVATE PROCEDURE
171998 --         insert_sources_291
171999 --
172000 ----------------------------------------
172001 --
172002 PROCEDURE insert_sources_291(
172003                                 p_target_ledger_id       IN NUMBER
172004                               , p_language               IN VARCHAR2
172005                               , p_sla_ledger_id          IN NUMBER
172006                               , p_pad_start_date         IN DATE
172007                               , p_pad_end_date           IN DATE
172008                          )
172009 IS
172010 
172011 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOTCOSTADJ';
172012 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LOTCOSTADJ';
172016 IF g_log_enabled THEN
172013 p_apps_owner                   VARCHAR2(30);
172014 l_log_module                   VARCHAR2(240);
172015 BEGIN
172017       l_log_module := C_DEFAULT_MODULE||'.insert_sources_291';
172018 END IF;
172019 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172020 
172021       trace
172022          (p_msg      => 'BEGIN of insert_sources_291'
172023          ,p_level    => C_LEVEL_PROCEDURE
172024          ,p_module   => l_log_module);
172025 
172026 END IF;
172027 
172028 -- select APPS owner
172029 SELECT oracle_username
172030   INTO p_apps_owner
172031   FROM fnd_oracle_userid
172032  WHERE read_only_flag = 'U'
172033 ;
172034 
172035 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172036       trace
172037          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
172038                         ' - p_language = '||p_language||
172039                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
172040                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
172041                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
172042                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
172043          ,p_level    => C_LEVEL_STATEMENT
172044          ,p_module   => l_log_module);
172045 END IF;
172046 
172047 
172048 --
172049 INSERT INTO xla_diag_sources --hdr1
172050 (
172051         event_id
172052       , ledger_id
172053       , sla_ledger_id
172054       , description_language
172055       , object_name
172056       , object_type_code
172057       , line_number
172058       , source_application_id
172059       , source_type_code
172060       , source_code
172061       , source_value
172062       , source_meaning
172063       , created_by
172064       , creation_date
172065       , last_update_date
172066       , last_updated_by
172067       , last_update_login
172068       , program_update_date
172069       , program_application_id
172070       , program_id
172071       , request_id
172072 )
172073 SELECT
172074         event_id
172075       , p_target_ledger_id
172076       , p_sla_ledger_id
172077       , p_language
172078       , object_name
172079       , object_type_code
172080       , line_number
172081       , source_application_id
172082       , source_type_code
172083       , source_code
172084       , SUBSTR(source_value ,1,1996)
172085       , SUBSTR(source_meaning,1,200)
172086       , xla_environment_pkg.g_Usr_Id
172087       , TRUNC(SYSDATE)
172088       , TRUNC(SYSDATE)
172089       , xla_environment_pkg.g_Usr_Id
172090       , xla_environment_pkg.g_Login_Id
172091       , TRUNC(SYSDATE)
172092       , xla_environment_pkg.g_Prog_Appl_Id
172093       , xla_environment_pkg.g_Prog_Id
172094       , xla_environment_pkg.g_Req_Id
172095   FROM (
172096        SELECT xet.event_id                  event_id
172097             , 0                             line_number
172098             , CASE r
172099                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
172100                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
172101                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
172102                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
172103                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
172104                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
172105                 
172106                ELSE null
172107               END                           object_name
172108             , CASE r
172109                 WHEN 1 THEN 'HEADER' 
172110                 WHEN 2 THEN 'HEADER' 
172111                 WHEN 3 THEN 'HEADER' 
172112                 WHEN 4 THEN 'HEADER' 
172113                 WHEN 5 THEN 'HEADER' 
172114                 WHEN 6 THEN 'HEADER' 
172115                 
172116                 ELSE null
172117               END                           object_type_code
172118             , CASE r
172119                 WHEN 1 THEN '555' 
172120                 WHEN 2 THEN '555' 
172121                 WHEN 3 THEN '555' 
172122                 WHEN 4 THEN '555' 
172123                 WHEN 5 THEN '555' 
172124                 WHEN 6 THEN '555' 
172125                 
172126                 ELSE null
172127               END                           source_application_id
172128             , 'S'             source_type_code
172129             , CASE r
172130                 WHEN 1 THEN 'ENTITY_CODE' 
172131                 WHEN 2 THEN 'CURRENCY_CODE' 
172132                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
172133                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
172134                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
172135                 WHEN 6 THEN 'TRANSACTION_DATE' 
172136                 
172137                 ELSE null
172138               END                           source_code
172139             , CASE r
172140                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
172141                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
172142                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
172143                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
172144                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
172145                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
172146                 
172147                 ELSE null
172148               END                           source_value
172149             , CASE r
172150                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
172151                           1010186
172155                          ,555)
172152                          ,TO_CHAR(h1.CURRENCY_CODE)
172153                          ,'CURRENCY_CODE'
172154                          ,'S'
172156                 
172157                 ELSE null
172158               END               source_meaning
172159         FROM xla_events_gt     xet  
172160       , GMF_XLA_EXTRACT_HEADERS  h1
172161             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
172162        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
172163          AND xet.event_type_code = C_EVENT_TYPE_CODE
172164             AND h1.event_id = xet.event_id
172165 
172166 )
172167 ;
172168 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172169 
172170       trace
172171          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
172172          ,p_level    => C_LEVEL_STATEMENT
172173          ,p_module   => l_log_module);
172174 
172175 END IF;
172176 --
172177 
172178 
172179 
172180 --
172181 INSERT INTO xla_diag_sources --line1
172182 (
172183         event_id
172184       , ledger_id
172185       , sla_ledger_id
172186       , description_language
172187       , object_name
172188       , object_type_code
172189       , line_number
172190       , source_application_id
172191       , source_type_code
172192       , source_code
172193       , source_value
172194       , source_meaning
172195       , created_by
172196       , creation_date
172197       , last_update_date
172198       , last_updated_by
172199       , last_update_login
172200       , program_update_date
172201       , program_application_id
172202       , program_id
172203       , request_id
172204 )
172205 SELECT  event_id
172206       , p_target_ledger_id
172207       , p_sla_ledger_id
172208       , p_language
172209       , object_name
172210       , object_type_code
172211       , line_number
172212       , source_application_id
172213       , source_type_code
172214       , source_code
172215       , SUBSTR(source_value,1,1996)
172216       , SUBSTR(source_meaning,1,200)
172217       , xla_environment_pkg.g_Usr_Id
172218       , TRUNC(SYSDATE)
172219       , TRUNC(SYSDATE)
172220       , xla_environment_pkg.g_Usr_Id
172221       , xla_environment_pkg.g_Login_Id
172222       , TRUNC(SYSDATE)
172223       , xla_environment_pkg.g_Prog_Appl_Id
172224       , xla_environment_pkg.g_Prog_Id
172225       , xla_environment_pkg.g_Req_Id
172226   FROM (
172227        SELECT xet.event_id                  event_id
172228             , l2.line_number                 line_number
172229             , CASE r
172230                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
172231                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
172232                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
172233                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
172234                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
172235                 
172236                ELSE null
172237               END                           object_name
172238             , CASE r
172239                 WHEN 1 THEN 'LINE' 
172240                 WHEN 2 THEN 'LINE' 
172241                 WHEN 3 THEN 'LINE' 
172242                 WHEN 4 THEN 'LINE' 
172243                 WHEN 5 THEN 'LINE' 
172244                 
172245                 ELSE null
172246               END                           object_type_code
172247             , CASE r
172248                 WHEN 1 THEN '555' 
172249                 WHEN 2 THEN '555' 
172250                 WHEN 3 THEN '555' 
172251                 WHEN 4 THEN '555' 
172252                 WHEN 5 THEN '555' 
172253                 
172254                 ELSE null
172255               END                           source_application_id
172256             , 'S'             source_type_code
172257             , CASE r
172258                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
172259                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
172260                 WHEN 3 THEN 'ENTERED_AMOUNT' 
172261                 WHEN 4 THEN 'LINE_ID' 
172262                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
172263                 
172264                 ELSE null
172265               END                           source_code
172266             , CASE r
172267                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
172268                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
172269                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
172270                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
172271                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
172272                 
172273                 ELSE null
172274               END                           source_value
172275             , null              source_meaning
172276          FROM  xla_events_gt     xet  
172277         , GMF_XLA_EXTRACT_LINES  l2
172278             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
172279         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
172280           AND xet.event_type_code = C_EVENT_TYPE_CODE
172281             AND l2.event_id          = xet.event_id
172282 
172283 )
172284 ;
172285 --
172286 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172287 
172288       trace
172289          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
172290          ,p_level    => C_LEVEL_STATEMENT
172291          ,p_module   => l_log_module);
172292 
172293 END IF;
172294 
172298          (p_msg      => 'END of insert_sources_291'
172295 
172296 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172297       trace
172299          ,p_level    => C_LEVEL_PROCEDURE
172300          ,p_module   => l_log_module);
172301 END IF;
172302 EXCEPTION
172303   WHEN xla_exceptions_pkg.application_exception THEN
172304       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
172305             trace
172306                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
172307                ,p_level    => C_LEVEL_EXCEPTION
172308                ,p_module   => l_log_module);
172309       END IF;
172310       RAISE;
172311   WHEN OTHERS THEN
172312       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
172313             trace
172314                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
172315                ,p_level    => C_LEVEL_EXCEPTION
172316                ,p_module   => l_log_module);
172317        END IF;
172318        xla_exceptions_pkg.raise_message
172319            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_291');
172320 END insert_sources_291;
172321 --
172322 
172323 ---------------------------------------
172324 --
172325 -- PRIVATE FUNCTION
172326 --         EventType_291
172327 --
172328 ----------------------------------------
172329 --
172330 FUNCTION EventType_291
172331        (p_application_id         IN NUMBER
172332        ,p_base_ledger_id         IN NUMBER
172333        ,p_target_ledger_id       IN NUMBER
172334        ,p_language               IN VARCHAR2
172335        ,p_currency_code          IN VARCHAR2
172336        ,p_sla_ledger_id          IN NUMBER
172337        ,p_pad_start_date         IN DATE
172338        ,p_pad_end_date           IN DATE
172339        ,p_primary_ledger_id      IN NUMBER)
172340 RETURN BOOLEAN IS
172341 --
172342 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOTCOSTADJ';
172343 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LOTCOSTADJ';
172344 
172345 l_calculate_acctd_flag   VARCHAR2(1) :='N';
172346 l_calculate_g_l_flag     VARCHAR2(1) :='N';
172347 --
172348 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172349 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172350 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
172351 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172352 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172353 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
172354 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
172355 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172356 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172357 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172358 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172359 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172360 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172361 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172362 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172363 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172364 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172365 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172366 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172367 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172368 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172369 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172370 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
172371 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
172372 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
172373 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
172374 
172375 l_event_id                             NUMBER;
172376 l_previous_event_id                    NUMBER;
172377 l_first_event_id                       NUMBER;
172378 l_last_event_id                        NUMBER;
172379 
172380 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
172381 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
172382 --
172383 --
172384 l_result                    BOOLEAN := TRUE;
172385 l_rows                      NUMBER  := 1000;
172386 l_event_type_name           VARCHAR2(80) := 'Lot Cost Adjustment';
172387 l_event_class_name          VARCHAR2(80) := 'Lot Cost Adjustment';
172388 l_description               VARCHAR2(4000);
172389 l_transaction_reversal      NUMBER;
172390 l_ae_header_id              NUMBER;
172391 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
172392 l_log_module                VARCHAR2(240);
172393 --
172394 l_acct_reversal_source      VARCHAR2(30);
172395 l_trx_reversal_source       VARCHAR2(30);
172396 
172397 l_continue_with_lines       BOOLEAN := TRUE;
172398 --
172399 l_acc_rev_gl_date_source    DATE;                      -- 4262811
172400 --
172401 type t_array_event_id is table of number index by binary_integer;
172402 
172403 l_rec_array_event                    t_rec_array_event;
172404 l_null_rec_array_event               t_rec_array_event;
172408 l_balance_type_code                  VARCHAR2(1) :=NULL;
172405 l_array_ae_header_id                 xla_number_array_type;
172406 l_actual_flag                        VARCHAR2(1) := NULL;
172407 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
172409 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
172410 
172411 --
172412 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
172413 --
172414 
172415 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
172416 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
172417 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
172418 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
172419 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
172420 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
172421 
172422 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
172423 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
172424 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
172425 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
172426 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
172427 
172428 l_array_source_6              t_array_source_6;
172429 l_array_source_7              t_array_source_7;
172430 l_array_source_8              t_array_source_8;
172431 l_array_source_9              t_array_source_9;
172432 l_array_source_10              t_array_source_10;
172433 l_array_source_12              t_array_source_12;
172434 
172435 l_array_source_1      t_array_source_1;
172436 l_array_source_2      t_array_source_2;
172437 l_array_source_3      t_array_source_3;
172438 l_array_source_5      t_array_source_5;
172439 l_array_source_11      t_array_source_11;
172440 
172441 --
172442 CURSOR header_cur
172443 IS
172444 SELECT /*+ leading(xet) cardinality(xet,1) */
172445 -- Event Type Code: LOTCOSTADJ
172446 -- Event Class Code: LOTCOSTADJ
172447     xet.entity_id
172448   , xet.legal_entity_id
172449   , xet.entity_code
172450   , xet.transaction_number
172451   , xet.event_id
172452   , xet.event_class_code
172453   , xet.event_type_code
172454   , xet.event_number
172455   , xet.event_date
172456   , xet.transaction_date
172457   , xet.reference_num_1
172458   , xet.reference_num_2
172459   , xet.reference_num_3
172460   , xet.reference_num_4
172461   , xet.reference_char_1
172462   , xet.reference_char_2
172463   , xet.reference_char_3
172464   , xet.reference_char_4
172465   , xet.reference_date_1
172466   , xet.reference_date_2
172467   , xet.reference_date_3
172468   , xet.reference_date_4
172469   , xet.event_created_by
172470   , xet.budgetary_control_flag 
172471   , h1.ENTITY_CODE    source_6
172472   , h1.CURRENCY_CODE    source_7
172473   , h1.CURRENCY_CONVERSION_DATE    source_8
172474   , h1.CURRENCY_CONVERSION_RATE    source_9
172475   , h1.CURRENCY_CONVERSION_TYPE    source_10
172476   , h1.TRANSACTION_DATE    source_12
172477   FROM xla_events_gt     xet 
172478   , GMF_XLA_EXTRACT_HEADERS  h1
172479  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
172480    and xet.event_type_code = C_EVENT_TYPE_CODE
172481    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
172482 
172483  ORDER BY event_id
172484 ;
172485 
172486 
172487 --
172488 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
172489 IS
172490 SELECT /*+ leading(xet) cardinality(xet,1) */
172491 -- Event Type Code: LOTCOSTADJ
172492 -- Event Class Code: LOTCOSTADJ
172493     xet.entity_id
172494    ,xet.legal_entity_id
172495    ,xet.entity_code
172496    ,xet.transaction_number
172497    ,xet.event_id
172498    ,xet.event_class_code
172499    ,xet.event_type_code
172500    ,xet.event_number
172501    ,xet.event_date
172502    ,xet.transaction_date
172503    ,xet.reference_num_1
172504    ,xet.reference_num_2
172505    ,xet.reference_num_3
172506    ,xet.reference_num_4
172507    ,xet.reference_char_1
172508    ,xet.reference_char_2
172509    ,xet.reference_char_3
172510    ,xet.reference_char_4
172511    ,xet.reference_date_1
172512    ,xet.reference_date_2
172513    ,xet.reference_date_3
172514    ,xet.reference_date_4
172515    ,xet.event_created_by
172516    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
172517   , l2.TRANSACTION_ACCOUNT_ID    source_1
172518   , l2.JOURNAL_LINE_TYPE    source_2
172519   , l2.ENTERED_AMOUNT    source_3
172520   , l2.LINE_ID    source_5
172521   , l2.ACCOUNTED_AMOUNT    source_11
172522   FROM xla_events_gt     xet 
172523   , GMF_XLA_EXTRACT_LINES  l2
172524  WHERE xet.event_id between x_first_event_id and x_last_event_id
172525    and xet.event_date between p_pad_start_date and p_pad_end_date
172526    and xet.event_type_code = C_EVENT_TYPE_CODE
172527    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
172528 ;
172529 
172530 --
172531 BEGIN
172532 IF g_log_enabled THEN
172533    l_log_module := C_DEFAULT_MODULE||'.EventType_291';
172534 END IF;
172535 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172539       ,p_module   => l_log_module);
172536    trace
172537       (p_msg      => 'BEGIN of EventType_291'
172538       ,p_level    => C_LEVEL_PROCEDURE
172540 END IF;
172541 
172542 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172543    trace
172544       (p_msg      => 'p_application_id = '||p_application_id||
172545                      ' - p_base_ledger_id = '||p_base_ledger_id||
172546                      ' - p_target_ledger_id  = '||p_target_ledger_id||
172547                      ' - p_language = '||p_language||
172548                      ' - p_currency_code = '||p_currency_code||
172549                      ' - p_sla_ledger_id = '||p_sla_ledger_id
172550       ,p_level    => C_LEVEL_STATEMENT
172551       ,p_module   => l_log_module);
172552 END IF;
172553 --
172554 -- initialze arrays
172555 --
172556 g_array_event.DELETE;
172557 l_rec_array_event := l_null_rec_array_event;
172558 --
172559 --------------------------------------
172560 -- 4262811 Initialze MPA Line Number
172561 --------------------------------------
172562 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
172563 
172564 --
172565 
172566 --
172567 OPEN header_cur;
172568 --
172569 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172570    trace
172571    (p_msg      => 'SQL - FETCH header_cur'
172572    ,p_level    => C_LEVEL_STATEMENT
172573    ,p_module   => l_log_module);
172574 END IF;
172575 --
172576 LOOP
172577 FETCH header_cur BULK COLLECT INTO
172578         l_array_entity_id
172579       , l_array_legal_entity_id
172580       , l_array_entity_code
172581       , l_array_transaction_num
172582       , l_array_event_id
172583       , l_array_class_code
172584       , l_array_event_type
172585       , l_array_event_number
172586       , l_array_event_date
172587       , l_array_transaction_date
172588       , l_array_reference_num_1
172589       , l_array_reference_num_2
172590       , l_array_reference_num_3
172591       , l_array_reference_num_4
172592       , l_array_reference_char_1
172593       , l_array_reference_char_2
172594       , l_array_reference_char_3
172595       , l_array_reference_char_4
172596       , l_array_reference_date_1
172597       , l_array_reference_date_2
172598       , l_array_reference_date_3
172599       , l_array_reference_date_4
172600       , l_array_event_created_by
172601       , l_array_budgetary_control_flag 
172602       , l_array_source_6
172603       , l_array_source_7
172604       , l_array_source_8
172605       , l_array_source_9
172606       , l_array_source_10
172607       , l_array_source_12
172608       LIMIT l_rows;
172609 --
172610 IF (C_LEVEL_EVENT >= g_log_level) THEN
172611    trace
172612    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
172613    ,p_level    => C_LEVEL_EVENT
172614    ,p_module   => l_log_module);
172615 END IF;
172616 --
172617 EXIT WHEN l_array_entity_id.COUNT = 0;
172618 
172619 -- initialize arrays
172620 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
172621 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
172622 
172623 --
172624 -- Bug 4458708
172625 --
172626 XLA_AE_LINES_PKG.g_LineNumber := 0;
172627 
172628 
172629 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
172630 g_last_hdr_idx := l_array_event_id.LAST;
172631 --
172632 -- loop for the headers. Each iteration is for each header extract row
172633 -- fetched in header cursor
172634 --
172635 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
172636 
172637 --
172638 -- set event info as cache for other routines to refer event attributes
172639 --
172640 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
172641    (p_application_id           => p_application_id
172642    ,p_primary_ledger_id        => p_primary_ledger_id
172643    ,p_base_ledger_id           => p_base_ledger_id
172644    ,p_target_ledger_id         => p_target_ledger_id
172645    ,p_entity_id                => l_array_entity_id(hdr_idx)
172646    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
172647    ,p_entity_code              => l_array_entity_code(hdr_idx)
172648    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
172649    ,p_event_id                 => l_array_event_id(hdr_idx)
172650    ,p_event_class_code         => l_array_class_code(hdr_idx)
172651    ,p_event_type_code          => l_array_event_type(hdr_idx)
172652    ,p_event_number             => l_array_event_number(hdr_idx)
172653    ,p_event_date               => l_array_event_date(hdr_idx)
172654    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
172655    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
172656    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
172657    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
172658    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
172659    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
172660    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
172661    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
172662    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
172663    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
172664    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
172665    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
172666    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
172670 --
172667    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
172668    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
172669 
172671 -- set the status of entry to C_VALID (0)
172672 --
172673 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
172674 
172675 --
172676 -- initialize a row for ae header
172677 --
172678 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
172679 
172680 l_event_id := l_array_event_id(hdr_idx);
172681 
172682 --
172683 -- storing the hdr_idx for event. May be used by line cursor.
172684 --
172685 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
172686 
172687 --
172688 -- store sources from header extract. This can be improved to
172689 -- store only those sources from header extract that may be used in lines
172690 --
172691 
172692 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
172693 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
172694 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
172695 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
172696 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
172697 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
172698 
172699 --
172700 -- initilaize the status of ae headers for diffrent balance types
172701 -- the status is initialised to C_NOT_CREATED (2)
172702 --
172703 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
172704 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
172705 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
172706 
172707 --
172708 -- call api to validate and store accounting attributes for header
172709 --
172710 
172711 ------------------------------------------------------------
172712 -- Accrual Reversal : to get date for Standard Source (NONE)
172713 ------------------------------------------------------------
172714 l_acc_rev_gl_date_source := NULL;
172715 
172716      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
172717       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
172718 
172719 
172720 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
172721 
172722 XLA_AE_HEADER_PKG.SetJeCategoryName;
172723 
172724 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
172725 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
172726 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
172727 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
172728 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
172729 
172730 
172731 -- No header level analytical criteria
172732 
172733 --
172734 --accounting attribute enhancement, bug 3612931
172735 --
172736 l_trx_reversal_source := SUBSTR(NULL, 1,30);
172737 
172738 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
172739    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
172740 
172741    xla_accounting_err_pkg.build_message
172742       (p_appli_s_name            => 'XLA'
172743       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
172744       ,p_token_1                 => 'ACCT_ATTR_NAME'
172745       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
172746       ,p_token_2                 => 'PRODUCT_NAME'
172747       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
172748       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
172749       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
172750       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
172751 
172752 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
172753    --
172754    -- following sets the accounting attributes needed to reverse
172755    -- accounting for a distributeion
172756    --
172757    xla_ae_lines_pkg.SetTrxReversalAttrs
172758       (p_event_id              => l_event_id
172759       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
172760       ,p_trx_reversal_source   => l_trx_reversal_source);
172761 
172762 END IF;
172763 
172764 
172765 ----------------------------------------------------------------
172766 -- 4262811 -  update the header statuses to invalid in need be
172767 ----------------------------------------------------------------
172768 --
172769 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
172770 
172771 
172772   -----------------------------------------------
172773   -- No accrual reversal for the event class/type
172774   -----------------------------------------------
172775 ----------------------------------------------------------------
172776 
172777 --
172778 -- this ends the header loop iteration for one bulk fetch
172779 --
172780 END LOOP;
172781 
172782 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
172783 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
172784 
172785 --
172789 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
172786 -- insert dummy rows into lines gt table that were created due to
172787 -- transaction reversals
172788 --
172790    l_result := XLA_AE_LINES_PKG.InsertLines;
172791 END IF;
172792 
172793 --
172794 -- reset the temp_line_num for each set of events fetched from header
172795 -- cursor rather than doing it for each new event in line cursor
172796 -- Bug 3939231
172797 --
172798 xla_ae_lines_pkg.g_temp_line_num := 0;
172799 
172800 
172801 
172802 --
172803 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
172804 --
172805 --
172806 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172807 
172808       trace
172809          (p_msg      => 'SQL - FETCH line_cur'
172810          ,p_level    => C_LEVEL_STATEMENT
172811          ,p_module   => l_log_module);
172812 
172813 END IF;
172814 --
172815 --
172816 LOOP
172817   --
172818   FETCH line_cur BULK COLLECT INTO
172819         l_array_entity_id
172820       , l_array_legal_entity_id
172821       , l_array_entity_code
172822       , l_array_transaction_num
172823       , l_array_event_id
172824       , l_array_class_code
172825       , l_array_event_type
172826       , l_array_event_number
172827       , l_array_event_date
172828       , l_array_transaction_date
172829       , l_array_reference_num_1
172830       , l_array_reference_num_2
172831       , l_array_reference_num_3
172832       , l_array_reference_num_4
172833       , l_array_reference_char_1
172834       , l_array_reference_char_2
172835       , l_array_reference_char_3
172836       , l_array_reference_char_4
172837       , l_array_reference_date_1
172838       , l_array_reference_date_2
172839       , l_array_reference_date_3
172840       , l_array_reference_date_4
172841       , l_array_event_created_by
172842       , l_array_budgetary_control_flag
172843       , l_array_extract_line_num 
172844       , l_array_source_1
172845       , l_array_source_2
172846       , l_array_source_3
172847       , l_array_source_5
172848       , l_array_source_11
172849       LIMIT l_rows;
172850 
172851   --
172852   IF (C_LEVEL_EVENT >= g_log_level) THEN
172853             trace
172854                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
172855                ,p_level    => C_LEVEL_EVENT
172856                ,p_module   => l_log_module);
172857   END IF;
172858   --
172859   EXIT WHEN l_array_entity_id.count = 0;
172860 
172861   XLA_AE_LINES_PKG.g_rec_lines := null;
172862 
172863 --
172864 -- Bug 4458708
172865 --
172866 XLA_AE_LINES_PKG.g_LineNumber := 0;
172867 --
172868 --
172869 
172870 FOR Idx IN 1..l_array_event_id.count LOOP
172871    --
172872    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
172873    --
172874    l_event_id := l_array_event_id(idx);  -- 5648433
172875 
172876    --
172877    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
172878    --
172879 
172880    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
172881              (g_array_event(l_event_id).array_value_num('header_index'))
172882          ,'N'
172883          ) <> 'Y'
172884    THEN
172885       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172886          trace
172887             (p_msg      => 'Trancaction revesal option is not Y '
172888             ,p_level    => C_LEVEL_STATEMENT
172889             ,p_module   => l_log_module);
172890       END IF;
172891 
172892 --
172893 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
172894 --
172895 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
172896 --
172897 -- set event info as cache for other routines to refer event attributes
172898 --
172899 
172900 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
172901    l_previous_event_id := l_event_id;
172902 
172903    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
172904       (p_application_id           => p_application_id
172905       ,p_primary_ledger_id        => p_primary_ledger_id
172906       ,p_base_ledger_id           => p_base_ledger_id
172907       ,p_target_ledger_id         => p_target_ledger_id
172908       ,p_entity_id                => l_array_entity_id(Idx)
172909       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
172910       ,p_entity_code              => l_array_entity_code(Idx)
172911       ,p_transaction_num          => l_array_transaction_num(Idx)
172912       ,p_event_id                 => l_array_event_id(Idx)
172913       ,p_event_class_code         => l_array_class_code(Idx)
172914       ,p_event_type_code          => l_array_event_type(Idx)
172915       ,p_event_number             => l_array_event_number(Idx)
172916       ,p_event_date               => l_array_event_date(Idx)
172917       ,p_transaction_date         => l_array_transaction_date(Idx)
172918       ,p_reference_num_1          => l_array_reference_num_1(Idx)
172919       ,p_reference_num_2          => l_array_reference_num_2(Idx)
172920       ,p_reference_num_3          => l_array_reference_num_3(Idx)
172921       ,p_reference_num_4          => l_array_reference_num_4(Idx)
172922       ,p_reference_char_1         => l_array_reference_char_1(Idx)
172923       ,p_reference_char_2         => l_array_reference_char_2(Idx)
172924       ,p_reference_char_3         => l_array_reference_char_3(Idx)
172925       ,p_reference_char_4         => l_array_reference_char_4(Idx)
172929       ,p_reference_date_4         => l_array_reference_date_4(Idx)
172926       ,p_reference_date_1         => l_array_reference_date_1(Idx)
172927       ,p_reference_date_2         => l_array_reference_date_2(Idx)
172928       ,p_reference_date_3         => l_array_reference_date_3(Idx)
172930       ,p_event_created_by         => l_array_event_created_by(Idx)
172931       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
172932        --
172933 END IF;
172934 
172935 
172936 
172937 --
172938 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
172939 
172940 l_acct_reversal_source := SUBSTR(NULL, 1,30);
172941 
172942 IF l_continue_with_lines THEN
172943    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
172944       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
172945 
172946       xla_accounting_err_pkg.build_message
172947          (p_appli_s_name            => 'XLA'
172948          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
172949          ,p_token_1                 => 'LINE_NUMBER'
172950          ,p_value_1                 => l_array_extract_line_num(Idx)
172951          ,p_token_2                 => 'PRODUCT_NAME'
172952          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
172953          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
172954          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
172955          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
172956 
172957    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
172958       --
172959       -- following sets the accounting attributes needed to reverse
172960       -- accounting for a distributeion
172961       --
172962 
172963       --
172964       -- 5217187
172965       --
172966       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
172967       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
172968                                        g_array_event(l_event_id).array_value_num('header_index'));
172969       --
172970       --
172971 
172972       -- No reversal code generated
172973 
172974       xla_ae_lines_pkg.SetAcctReversalAttrs
172975          (p_event_id             => l_event_id
172976          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
172977          ,p_calculate_acctd_flag => l_calculate_acctd_flag
172978          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
172979    END IF;
172980 
172981    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
172982        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
172983 
172984 --
172985 AcctLineType_163 (
172986  p_application_id  => p_application_id
172987  ,p_event_id     => l_event_id
172988  ,p_calculate_acctd_flag => l_calculate_acctd_flag
172989  ,p_calculate_g_l_flag => l_calculate_g_l_flag
172990  ,p_actual_flag => l_actual_flag
172991  ,p_balance_type_code => l_balance_type_code
172992  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
172993  
172994  , p_source_1 => l_array_source_1(Idx)
172995  , p_source_2 => l_array_source_2(Idx)
172996  , p_source_3 => l_array_source_3(Idx)
172997  , p_source_5 => l_array_source_5(Idx)
172998  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
172999  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173000  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
173001  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
173002  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
173003  , p_source_11 => l_array_source_11(Idx)
173004  );
173005 If(l_balance_type_code = 'A') THEN
173006   l_actual_gain_loss_ref := l_gain_or_loss_ref;
173007 END IF;
173008 
173009 --
173010 
173011 
173012 --
173013 AcctLineType_192 (
173014  p_application_id  => p_application_id
173015  ,p_event_id     => l_event_id
173016  ,p_calculate_acctd_flag => l_calculate_acctd_flag
173017  ,p_calculate_g_l_flag => l_calculate_g_l_flag
173018  ,p_actual_flag => l_actual_flag
173019  ,p_balance_type_code => l_balance_type_code
173020  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173021  
173022  , p_source_1 => l_array_source_1(Idx)
173023  , p_source_2 => l_array_source_2(Idx)
173024  , p_source_3 => l_array_source_3(Idx)
173025  , p_source_5 => l_array_source_5(Idx)
173026  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
173027  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173028  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
173029  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
173030  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
173031  , p_source_11 => l_array_source_11(Idx)
173032  );
173033 If(l_balance_type_code = 'A') THEN
173034   l_actual_gain_loss_ref := l_gain_or_loss_ref;
173035 END IF;
173036 
173037 --
173038 
173039       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
173040       -- or secondary ledger that has different currency with primary
173041       -- or alc that is calculated by sla
173042       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
173043             (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'))
173044 
173048         XLA_AE_LINES_PKG.CreateGainOrLossLines(
173045 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
173046 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
173047           AND (l_actual_flag = 'A')) THEN
173049           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
173050          ,p_application_id   => p_application_id
173051          ,p_amb_context_code => 'DEFAULT'
173052          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
173053          ,p_event_class_code => C_EVENT_CLASS_CODE
173054          ,p_event_type_code  => C_EVENT_TYPE_CODE
173055          
173056          ,p_gain_ccid        => -1
173057          ,p_loss_ccid        => -1
173058 
173059          ,p_actual_flag      => l_actual_flag
173060          ,p_enc_flag         => null
173061          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
173062          ,p_enc_g_l_ref      => null
173063          );
173064       END IF;
173065    END IF;
173066 END IF;
173067 
173068    ELSE
173069       --
173070       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
173071       --
173072       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173073          trace
173074             (p_msg      => 'Trancaction revesal option is Y'
173075             ,p_level    => C_LEVEL_STATEMENT
173076             ,p_module   => l_log_module);
173077       END IF;
173078    END IF;
173079 
173080 END LOOP;
173081 l_result := XLA_AE_LINES_PKG.InsertLines ;
173082 end loop;
173083 close line_cur;
173084 
173085 
173086 --
173087 -- insert headers into xla_ae_headers_gt table
173088 --
173089 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
173090 
173091 -- insert into errors table here.
173092 
173093 END LOOP;
173094 
173095 --
173096 -- 4865292
173097 --
173098 -- Compare g_hdr_extract_count with event count in
173099 -- CreateHeadersAndLines.
173100 --
173101 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
173102 
173103 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173104    trace (p_msg     => '# rows extracted from header extract objects '
173105                     || ' (running total): '
173106                     || g_hdr_extract_count
173107          ,p_level   => C_LEVEL_STATEMENT
173108          ,p_module  => l_log_module);
173109 END IF;
173110 
173111 CLOSE header_cur;
173112 --
173113 
173114 --
173115 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173116    trace
173117       (p_msg      => 'END of EventType_291'
173118       ,p_level    => C_LEVEL_PROCEDURE
173119       ,p_module   => l_log_module);
173120 END IF;
173121 --
173122 RETURN l_result;
173123 EXCEPTION
173124 WHEN xla_exceptions_pkg.application_exception THEN
173125    
173126 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
173127 
173128    
173129 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
173130 
173131    RAISE;
173132 
173133 WHEN NO_DATA_FOUND THEN
173134 
173135 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
173136 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
173137 
173138 FOR header_record IN header_cur
173139 LOOP
173140     l_array_header_events(header_record.event_id) := header_record.event_id;
173141 END LOOP;
173142 
173143 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
173144 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
173145 
173146 fnd_file.put_line(fnd_file.LOG, '                    ');
173147 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
173148 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
173149 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
173150 
173151 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
173152 LOOP
173153 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
173154 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
173155         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
173156 	END IF;
173157 END LOOP;
173158 
173159 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
173160 fnd_file.put_line(fnd_file.LOG, '                    ');
173161 
173162 
173163 xla_exceptions_pkg.raise_message
173164       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_291');
173165 
173166 
173167 WHEN OTHERS THEN
173168    xla_exceptions_pkg.raise_message
173169       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_291');
173170 END EventType_291;
173171 --
173172 
173173 ---------------------------------------
173174 --
173175 -- PRIVATE PROCEDURE
173176 --         insert_sources_292
173177 --
173178 ----------------------------------------
173179 --
173180 PROCEDURE insert_sources_292(
173181                                 p_target_ledger_id       IN NUMBER
173182                               , p_language               IN VARCHAR2
173183                               , p_sla_ledger_id          IN NUMBER
173184                               , p_pad_start_date         IN DATE
173185                               , p_pad_end_date           IN DATE
173186                          )
173187 IS
173188 
173192 l_log_module                   VARCHAR2(240);
173189 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_TXN_ALL';
173190 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'MISC_TXN';
173191 p_apps_owner                   VARCHAR2(30);
173193 BEGIN
173194 IF g_log_enabled THEN
173195       l_log_module := C_DEFAULT_MODULE||'.insert_sources_292';
173196 END IF;
173197 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173198 
173199       trace
173200          (p_msg      => 'BEGIN of insert_sources_292'
173201          ,p_level    => C_LEVEL_PROCEDURE
173202          ,p_module   => l_log_module);
173203 
173204 END IF;
173205 
173206 -- select APPS owner
173207 SELECT oracle_username
173208   INTO p_apps_owner
173209   FROM fnd_oracle_userid
173210  WHERE read_only_flag = 'U'
173211 ;
173212 
173213 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173214       trace
173215          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
173216                         ' - p_language = '||p_language||
173217                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
173218                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
173219                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
173220                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
173221          ,p_level    => C_LEVEL_STATEMENT
173222          ,p_module   => l_log_module);
173223 END IF;
173224 
173225 
173226 --
173227 INSERT INTO xla_diag_sources --hdr2
173228 (
173229         event_id
173230       , ledger_id
173231       , sla_ledger_id
173232       , description_language
173233       , object_name
173234       , object_type_code
173235       , line_number
173236       , source_application_id
173237       , source_type_code
173238       , source_code
173239       , source_value
173240       , source_meaning
173241       , created_by
173242       , creation_date
173243       , last_update_date
173244       , last_updated_by
173245       , last_update_login
173246       , program_update_date
173247       , program_application_id
173248       , program_id
173249       , request_id
173250 )
173251 SELECT
173252         event_id
173253       , p_target_ledger_id
173254       , p_sla_ledger_id
173255       , p_language
173256       , object_name
173257       , object_type_code
173258       , line_number
173259       , source_application_id
173260       , source_type_code
173261       , source_code
173262       , SUBSTR(source_value ,1,1996)
173263       , SUBSTR(source_meaning ,1,200)
173264       , xla_environment_pkg.g_Usr_Id
173265       , TRUNC(SYSDATE)
173266       , TRUNC(SYSDATE)
173267       , xla_environment_pkg.g_Usr_Id
173268       , xla_environment_pkg.g_Login_Id
173269       , TRUNC(SYSDATE)
173270       , xla_environment_pkg.g_Prog_Appl_Id
173271       , xla_environment_pkg.g_Prog_Id
173272       , xla_environment_pkg.g_Req_Id
173273   FROM (
173274        SELECT xet.event_id                  event_id
173275             , 0                          line_number
173276             , CASE r
173277                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
173278                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
173279                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
173280                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
173281                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
173282                 
173283                ELSE null
173284               END                           object_name
173285             , CASE r
173286                 WHEN 1 THEN 'HEADER' 
173287                 WHEN 2 THEN 'HEADER' 
173288                 WHEN 3 THEN 'HEADER' 
173289                 WHEN 4 THEN 'HEADER' 
173290                 WHEN 5 THEN 'HEADER' 
173291                 
173292                 ELSE null
173293               END                           object_type_code
173294             , CASE r
173295                 WHEN 1 THEN '555' 
173296                 WHEN 2 THEN '555' 
173297                 WHEN 3 THEN '555' 
173298                 WHEN 4 THEN '555' 
173299                 WHEN 5 THEN '555' 
173300                 
173301                 ELSE null
173302               END                           source_application_id
173303             , 'S'             source_type_code
173304             , CASE r
173305                 WHEN 1 THEN 'ENTITY_CODE' 
173306                 WHEN 2 THEN 'CURRENCY_CODE' 
173307                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
173308                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
173309                 WHEN 5 THEN 'TRANSACTION_DATE' 
173310                 
173311                 ELSE null
173312               END                           source_code
173313             , CASE r
173314                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
173315                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
173316                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
173317                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
173318                 WHEN 5 THEN TO_CHAR(h1.TRANSACTION_DATE)
173319                 
173320                 ELSE null
173321               END                           source_value
173322             , CASE r
173323                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
173324                           1010186
173325                          ,TO_CHAR(h1.CURRENCY_CODE)
173326                          ,'CURRENCY_CODE'
173327                          ,'S'
173331               END               source_meaning
173328                          ,555)
173329                 
173330                 ELSE null
173332          FROM xla_events_gt     xet  
173333       , GMF_XLA_EXTRACT_HEADERS  h1
173334              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
173335          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
173336            AND xet.event_class_code = C_EVENT_CLASS_CODE
173337               AND h1.event_id = xet.event_id
173338 
173339 )
173340 ;
173341 --
173342 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173343 
173344       trace
173345          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
173346          ,p_level    => C_LEVEL_STATEMENT
173347          ,p_module   => l_log_module);
173348 
173349 END IF;
173350 --
173351 
173352 
173353 
173354 --
173355 INSERT INTO xla_diag_sources  --line2
173356 (
173357         event_id
173358       , ledger_id
173359       , sla_ledger_id
173360       , description_language
173361       , object_name
173362       , object_type_code
173363       , line_number
173364       , source_application_id
173365       , source_type_code
173366       , source_code
173367       , source_value
173368       , source_meaning
173369       , created_by
173370       , creation_date
173371       , last_update_date
173372       , last_updated_by
173373       , last_update_login
173374       , program_update_date
173375       , program_application_id
173376       , program_id
173377       , request_id
173378 )
173379 SELECT  event_id
173380       , p_target_ledger_id
173381       , p_sla_ledger_id
173382       , p_language
173383       , object_name
173384       , object_type_code
173385       , line_number
173386       , source_application_id
173387       , source_type_code
173388       , source_code
173389       , SUBSTR(source_value,1,1996)
173390       , SUBSTR(source_meaning ,1,200)
173391       , xla_environment_pkg.g_Usr_Id
173392       , TRUNC(SYSDATE)
173393       , TRUNC(SYSDATE)
173394       , xla_environment_pkg.g_Usr_Id
173395       , xla_environment_pkg.g_Login_Id
173396       , TRUNC(SYSDATE)
173397       , xla_environment_pkg.g_Prog_Appl_Id
173398       , xla_environment_pkg.g_Prog_Id
173399       , xla_environment_pkg.g_Req_Id
173400   FROM (
173401        SELECT xet.event_id                  event_id
173402             , l2.line_number                 line_number
173403             , CASE r
173404                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
173405                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
173406                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
173407                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
173408                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
173409                 
173410                ELSE null
173411               END                           object_name
173412             , CASE r
173413                 WHEN 1 THEN 'LINE' 
173414                 WHEN 2 THEN 'LINE' 
173415                 WHEN 3 THEN 'LINE' 
173416                 WHEN 4 THEN 'LINE' 
173417                 WHEN 5 THEN 'LINE' 
173418                 
173419                 ELSE null
173420               END                           object_type_code
173421             , CASE r
173422                 WHEN 1 THEN '555' 
173423                 WHEN 2 THEN '555' 
173424                 WHEN 3 THEN '555' 
173425                 WHEN 4 THEN '555' 
173426                 WHEN 5 THEN '555' 
173427                 
173428                 ELSE null
173429               END                           source_application_id
173430             , 'S'             source_type_code
173431             , CASE r
173432                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
173433                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
173434                 WHEN 3 THEN 'ENTERED_AMOUNT' 
173435                 WHEN 4 THEN 'LINE_ID' 
173436                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
173437                 
173438                 ELSE null
173439               END                           source_code
173440             , CASE r
173441                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
173442                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
173443                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
173444                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
173445                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
173446                 
173447                 ELSE null
173448               END                           source_value
173449             , null              source_meaning
173450          FROM  xla_events_gt     xet  
173451         , GMF_XLA_EXTRACT_LINES  l2
173452             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
173453         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
173454           AND xet.event_class_code = C_EVENT_CLASS_CODE
173455             AND l2.event_id          = xet.event_id
173456 
173457 )
173458 ;
173459 --
173460 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173461 
173462       trace
173463          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
173464          ,p_level    => C_LEVEL_STATEMENT
173465          ,p_module   => l_log_module);
173466 
173467 END IF;
173468 
173469 
173470 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173471       trace
173475 END IF;
173472          (p_msg      => 'END of insert_sources_292'
173473          ,p_level    => C_LEVEL_PROCEDURE
173474          ,p_module   => l_log_module);
173476 EXCEPTION
173477   WHEN xla_exceptions_pkg.application_exception THEN
173478       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
173479             trace
173480                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
173481                ,p_level    => C_LEVEL_EXCEPTION
173482                ,p_module   => l_log_module);
173483       END IF;
173484       RAISE;
173485   WHEN OTHERS THEN
173486       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
173487             trace
173488                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
173489                ,p_level    => C_LEVEL_EXCEPTION
173490                ,p_module   => l_log_module);
173491        END IF;
173492        xla_exceptions_pkg.raise_message
173493            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_292');
173494 END insert_sources_292;
173495 --
173496 
173497 ---------------------------------------
173498 --
173499 -- PRIVATE FUNCTION
173500 --         EventClass_292
173501 --
173502 ----------------------------------------
173503 --
173504 FUNCTION EventClass_292
173505        (p_application_id         IN NUMBER
173506        ,p_base_ledger_id         IN NUMBER
173507        ,p_target_ledger_id       IN NUMBER
173508        ,p_language               IN VARCHAR2
173509        ,p_currency_code          IN VARCHAR2
173510        ,p_sla_ledger_id          IN NUMBER
173511        ,p_pad_start_date         IN DATE
173512        ,p_pad_end_date           IN DATE
173513        ,p_primary_ledger_id      IN NUMBER)
173514 RETURN BOOLEAN IS
173515 --
173516 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_TXN_ALL';
173517 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'MISC_TXN';
173518 
173519 l_calculate_acctd_flag   VARCHAR2(1) :='N';
173520 l_calculate_g_l_flag     VARCHAR2(1) :='N';
173521 --
173522 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173523 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173524 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
173525 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173526 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173527 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
173528 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
173529 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173530 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173531 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173532 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173533 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173534 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173535 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173536 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173537 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173538 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173539 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173540 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173541 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173542 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173543 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173544 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
173545 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
173546 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
173547 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
173548 
173549 l_event_id                             NUMBER;
173550 l_previous_event_id                    NUMBER;
173551 l_first_event_id                       NUMBER;
173552 l_last_event_id                        NUMBER;
173553 
173554 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
173555 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
173556 --
173557 --
173558 l_result                    BOOLEAN := TRUE;
173559 l_rows                      NUMBER  := 1000;
173560 l_event_type_name           VARCHAR2(80) := 'All';
173561 l_event_class_name          VARCHAR2(80) := 'Miscellaneous Transactions';
173562 l_description               VARCHAR2(4000);
173563 l_transaction_reversal      NUMBER;
173564 l_ae_header_id              NUMBER;
173565 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
173566 l_log_module                VARCHAR2(240);
173567 --
173568 l_acct_reversal_source      VARCHAR2(30);
173569 l_trx_reversal_source       VARCHAR2(30);
173570 
173571 l_continue_with_lines       BOOLEAN := TRUE;
173572 --
173573 l_acc_rev_gl_date_source    DATE;                      -- 4262811
173574 --
173575 type t_array_event_id is table of number index by binary_integer;
173576 
173577 l_rec_array_event                    t_rec_array_event;
173578 l_null_rec_array_event               t_rec_array_event;
173579 l_array_ae_header_id                 xla_number_array_type;
173583 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
173580 l_actual_flag                        VARCHAR2(1) := NULL;
173581 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
173582 l_balance_type_code                  VARCHAR2(1) :=NULL;
173584 
173585 --
173586 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
173587 --
173588 
173589 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
173590 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
173591 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
173592 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
173593 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
173594 
173595 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
173596 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
173597 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
173598 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
173599 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
173600 
173601 l_array_source_6              t_array_source_6;
173602 l_array_source_7              t_array_source_7;
173603 l_array_source_8              t_array_source_8;
173604 l_array_source_9              t_array_source_9;
173605 l_array_source_12              t_array_source_12;
173606 
173607 l_array_source_1      t_array_source_1;
173608 l_array_source_2      t_array_source_2;
173609 l_array_source_3      t_array_source_3;
173610 l_array_source_5      t_array_source_5;
173611 l_array_source_11      t_array_source_11;
173612 
173613 --
173614 CURSOR header_cur
173615 IS
173616 SELECT /*+ leading(xet) cardinality(xet,1) */
173617 -- Event Class Code: MISC_TXN
173618     xet.entity_id
173619    ,xet.legal_entity_id
173620    ,xet.entity_code
173621    ,xet.transaction_number
173622    ,xet.event_id
173623    ,xet.event_class_code
173624    ,xet.event_type_code
173625    ,xet.event_number
173626    ,xet.event_date
173627    ,xet.transaction_date
173628    ,xet.reference_num_1
173629    ,xet.reference_num_2
173630    ,xet.reference_num_3
173631    ,xet.reference_num_4
173632    ,xet.reference_char_1
173633    ,xet.reference_char_2
173634    ,xet.reference_char_3
173635    ,xet.reference_char_4
173636    ,xet.reference_date_1
173637    ,xet.reference_date_2
173638    ,xet.reference_date_3
173639    ,xet.reference_date_4
173640    ,xet.event_created_by
173641    ,xet.budgetary_control_flag 
173642   , h1.ENTITY_CODE    source_6
173643   , h1.CURRENCY_CODE    source_7
173644   , h1.CURRENCY_CONVERSION_DATE    source_8
173645   , h1.CURRENCY_CONVERSION_RATE    source_9
173646   , h1.TRANSACTION_DATE    source_12
173647   FROM xla_events_gt     xet 
173648   , GMF_XLA_EXTRACT_HEADERS  h1
173649  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
173650    and xet.event_class_code = C_EVENT_CLASS_CODE
173651    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
173652 
173653  ORDER BY event_id
173654 ;
173655 
173656 
173657 --
173658 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
173659 IS
173660 SELECT  /*+ leading(xet) cardinality(xet,1) */
173661 -- Event Class Code: MISC_TXN
173662     xet.entity_id
173663    ,xet.legal_entity_id
173664    ,xet.entity_code
173665    ,xet.transaction_number
173666    ,xet.event_id
173667    ,xet.event_class_code
173668    ,xet.event_type_code
173669    ,xet.event_number
173670    ,xet.event_date
173671    ,xet.transaction_date
173672    ,xet.reference_num_1
173673    ,xet.reference_num_2
173674    ,xet.reference_num_3
173675    ,xet.reference_num_4
173676    ,xet.reference_char_1
173677    ,xet.reference_char_2
173678    ,xet.reference_char_3
173679    ,xet.reference_char_4
173680    ,xet.reference_date_1
173681    ,xet.reference_date_2
173682    ,xet.reference_date_3
173683    ,xet.reference_date_4
173684    ,xet.event_created_by
173685    ,xet.budgetary_control_flag
173686  , l2.LINE_NUMBER  
173687   , l2.TRANSACTION_ACCOUNT_ID    source_1
173688   , l2.JOURNAL_LINE_TYPE    source_2
173689   , l2.ENTERED_AMOUNT    source_3
173690   , l2.LINE_ID    source_5
173691   , l2.ACCOUNTED_AMOUNT    source_11
173692   FROM xla_events_gt     xet 
173693   , GMF_XLA_EXTRACT_LINES  l2
173694  WHERE xet.event_id between x_first_event_id and x_last_event_id
173695    and xet.event_date between p_pad_start_date and p_pad_end_date
173696    and xet.event_class_code = C_EVENT_CLASS_CODE
173697    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
173698 ;
173699 
173700 --
173701 BEGIN
173702 IF g_log_enabled THEN
173703    l_log_module := C_DEFAULT_MODULE||'.EventClass_292';
173704 END IF;
173705 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173706    trace
173707       (p_msg      => 'BEGIN of EventClass_292'
173708       ,p_level    => C_LEVEL_PROCEDURE
173709       ,p_module   => l_log_module);
173710 END IF;
173711 
173712 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173713    trace
173714       (p_msg      => 'p_application_id = '||p_application_id||
173718                      ' - p_currency_code = '||p_currency_code||
173715                      ' - p_base_ledger_id = '||p_base_ledger_id||
173716                      ' - p_target_ledger_id  = '||p_target_ledger_id||
173717                      ' - p_language = '||p_language||
173719                      ' - p_sla_ledger_id = '||p_sla_ledger_id
173720       ,p_level    => C_LEVEL_STATEMENT
173721       ,p_module   => l_log_module);
173722 END IF;
173723 --
173724 -- initialze arrays
173725 --
173726 g_array_event.DELETE;
173727 l_rec_array_event := l_null_rec_array_event;
173728 --
173729 --------------------------------------
173730 -- 4262811 Initialze MPA Line Number
173731 --------------------------------------
173732 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
173733 
173734 --
173735 
173736 --
173737 OPEN header_cur;
173738 --
173739 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173740    trace
173741    (p_msg      => 'SQL - FETCH header_cur'
173742    ,p_level    => C_LEVEL_STATEMENT
173743    ,p_module   => l_log_module);
173744 END IF;
173745 --
173746 LOOP
173747 FETCH header_cur BULK COLLECT INTO
173748         l_array_entity_id
173749       , l_array_legal_entity_id
173750       , l_array_entity_code
173751       , l_array_transaction_num
173752       , l_array_event_id
173753       , l_array_class_code
173754       , l_array_event_type
173755       , l_array_event_number
173756       , l_array_event_date
173757       , l_array_transaction_date
173758       , l_array_reference_num_1
173759       , l_array_reference_num_2
173760       , l_array_reference_num_3
173761       , l_array_reference_num_4
173762       , l_array_reference_char_1
173763       , l_array_reference_char_2
173764       , l_array_reference_char_3
173765       , l_array_reference_char_4
173766       , l_array_reference_date_1
173767       , l_array_reference_date_2
173768       , l_array_reference_date_3
173769       , l_array_reference_date_4
173770       , l_array_event_created_by
173771       , l_array_budgetary_control_flag 
173772       , l_array_source_6
173773       , l_array_source_7
173774       , l_array_source_8
173775       , l_array_source_9
173776       , l_array_source_12
173777       LIMIT l_rows;
173778 --
173779 IF (C_LEVEL_EVENT >= g_log_level) THEN
173780    trace
173781    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
173782    ,p_level    => C_LEVEL_EVENT
173783    ,p_module   => l_log_module);
173784 END IF;
173785 --
173786 EXIT WHEN l_array_entity_id.COUNT = 0;
173787 
173788 -- initialize arrays
173789 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
173790 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
173791 
173792 --
173793 -- Bug 4458708
173794 --
173795 XLA_AE_LINES_PKG.g_LineNumber := 0;
173796 
173797 
173798 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
173799 g_last_hdr_idx := l_array_event_id.LAST;
173800 --
173801 -- loop for the headers. Each iteration is for each header extract row
173802 -- fetched in header cursor
173803 --
173804 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
173805 
173806 --
173807 -- set event info as cache for other routines to refer event attributes
173808 --
173809 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
173810    (p_application_id           => p_application_id
173811    ,p_primary_ledger_id        => p_primary_ledger_id
173812    ,p_base_ledger_id           => p_base_ledger_id
173813    ,p_target_ledger_id         => p_target_ledger_id
173814    ,p_entity_id                => l_array_entity_id(hdr_idx)
173815    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
173816    ,p_entity_code              => l_array_entity_code(hdr_idx)
173817    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
173818    ,p_event_id                 => l_array_event_id(hdr_idx)
173819    ,p_event_class_code         => l_array_class_code(hdr_idx)
173820    ,p_event_type_code          => l_array_event_type(hdr_idx)
173821    ,p_event_number             => l_array_event_number(hdr_idx)
173822    ,p_event_date               => l_array_event_date(hdr_idx)
173823    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
173824    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
173825    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
173826    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
173827    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
173828    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
173829    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
173830    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
173831    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
173832    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
173833    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
173834    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
173835    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
173836    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
173837    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
173838 
173839 --
173840 -- set the status of entry to C_VALID (0)
173841 --
173842 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
173843 
173844 --
173845 -- initialize a row for ae header
173846 --
173850 
173847 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
173848 
173849 l_event_id := l_array_event_id(hdr_idx);
173851 --
173852 -- storing the hdr_idx for event. May be used by line cursor.
173853 --
173854 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
173855 
173856 --
173857 -- store sources from header extract. This can be improved to
173858 -- store only those sources from header extract that may be used in lines
173859 --
173860 
173861 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
173862 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
173863 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
173864 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
173865 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
173866 
173867 --
173868 -- initilaize the status of ae headers for diffrent balance types
173869 -- the status is initialised to C_NOT_CREATED (2)
173870 --
173871 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
173872 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
173873 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
173874 
173875 --
173876 -- call api to validate and store accounting attributes for header
173877 --
173878 
173879 ------------------------------------------------------------
173880 -- Accrual Reversal : to get date for Standard Source (NONE)
173881 ------------------------------------------------------------
173882 l_acc_rev_gl_date_source := NULL;
173883 
173884      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
173885       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
173886 
173887 
173888 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
173889 
173890 XLA_AE_HEADER_PKG.SetJeCategoryName;
173891 
173892 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
173893 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
173894 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
173895 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
173896 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
173897 
173898 
173899 -- No header level analytical criteria
173900 
173901 --
173902 --accounting attribute enhancement, bug 3612931
173903 --
173904 l_trx_reversal_source := SUBSTR(NULL, 1,30);
173905 
173906 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
173907    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
173908 
173909    xla_accounting_err_pkg.build_message
173910       (p_appli_s_name            => 'XLA'
173911       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
173912       ,p_token_1                 => 'ACCT_ATTR_NAME'
173913       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
173914       ,p_token_2                 => 'PRODUCT_NAME'
173915       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
173916       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
173917       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
173918       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
173919 
173920 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
173921    --
173922    -- following sets the accounting attributes needed to reverse
173923    -- accounting for a distributeion
173924    --
173925    xla_ae_lines_pkg.SetTrxReversalAttrs
173926       (p_event_id              => l_event_id
173927       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
173928       ,p_trx_reversal_source   => l_trx_reversal_source);
173929 
173930 END IF;
173931 
173932 
173933 ----------------------------------------------------------------
173934 -- 4262811 -  update the header statuses to invalid in need be
173935 ----------------------------------------------------------------
173936 --
173937 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
173938 
173939 
173940   -----------------------------------------------
173941   -- No accrual reversal for the event class/type
173942   -----------------------------------------------
173943 ----------------------------------------------------------------
173944 
173945 --
173946 -- this ends the header loop iteration for one bulk fetch
173947 --
173948 END LOOP;
173949 
173950 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
173951 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
173952 
173953 --
173954 -- insert dummy rows into lines gt table that were created due to
173955 -- transaction reversals
173956 --
173957 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
173958    l_result := XLA_AE_LINES_PKG.InsertLines;
173959 END IF;
173960 
173961 --
173962 -- reset the temp_line_num for each set of events fetched from header
173963 -- cursor rather than doing it for each new event in line cursor
173964 -- Bug 3939231
173965 --
173966 xla_ae_lines_pkg.g_temp_line_num := 0;
173967 
173968 
173969 
173973 --
173970 --
173971 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
173972 --
173974 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173975 
173976       trace
173977          (p_msg      => 'SQL - FETCH line_cur'
173978          ,p_level    => C_LEVEL_STATEMENT
173979          ,p_module   => l_log_module);
173980 
173981 END IF;
173982 --
173983 --
173984 LOOP
173985   --
173986   FETCH line_cur BULK COLLECT INTO
173987         l_array_entity_id
173988       , l_array_legal_entity_id
173989       , l_array_entity_code
173990       , l_array_transaction_num
173991       , l_array_event_id
173992       , l_array_class_code
173993       , l_array_event_type
173994       , l_array_event_number
173995       , l_array_event_date
173996       , l_array_transaction_date
173997       , l_array_reference_num_1
173998       , l_array_reference_num_2
173999       , l_array_reference_num_3
174000       , l_array_reference_num_4
174001       , l_array_reference_char_1
174002       , l_array_reference_char_2
174003       , l_array_reference_char_3
174004       , l_array_reference_char_4
174005       , l_array_reference_date_1
174006       , l_array_reference_date_2
174007       , l_array_reference_date_3
174008       , l_array_reference_date_4
174009       , l_array_event_created_by
174010       , l_array_budgetary_control_flag
174011       , l_array_extract_line_num 
174012       , l_array_source_1
174013       , l_array_source_2
174014       , l_array_source_3
174015       , l_array_source_5
174016       , l_array_source_11
174017       LIMIT l_rows;
174018 
174019   --
174020   IF (C_LEVEL_EVENT >= g_log_level) THEN
174021             trace
174022                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
174023                ,p_level    => C_LEVEL_EVENT
174024                ,p_module   => l_log_module);
174025   END IF;
174026   --
174027   EXIT WHEN l_array_entity_id.count = 0;
174028 
174029   XLA_AE_LINES_PKG.g_rec_lines := null;
174030 
174031 --
174032 -- Bug 4458708
174033 --
174034 XLA_AE_LINES_PKG.g_LineNumber := 0;
174035 --
174036 --
174037 
174038 FOR Idx IN 1..l_array_event_id.count LOOP
174039    --
174040    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
174041    --
174042    l_event_id := l_array_event_id(idx);  -- 5648433
174043 
174044    --
174045    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
174046    --
174047 
174048    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
174049              (g_array_event(l_event_id).array_value_num('header_index'))
174050          ,'N'
174051          ) <> 'Y'
174052    THEN
174053       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174054          trace
174055             (p_msg      => 'Trancaction revesal option is not Y '
174056             ,p_level    => C_LEVEL_STATEMENT
174057             ,p_module   => l_log_module);
174058       END IF;
174059 
174060 --
174061 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
174062 --
174063 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
174064 --
174065 -- set event info as cache for other routines to refer event attributes
174066 --
174067 
174068 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
174069    l_previous_event_id := l_event_id;
174070 
174071    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
174072       (p_application_id           => p_application_id
174073       ,p_primary_ledger_id        => p_primary_ledger_id
174074       ,p_base_ledger_id           => p_base_ledger_id
174075       ,p_target_ledger_id         => p_target_ledger_id
174076       ,p_entity_id                => l_array_entity_id(Idx)
174077       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
174078       ,p_entity_code              => l_array_entity_code(Idx)
174079       ,p_transaction_num          => l_array_transaction_num(Idx)
174080       ,p_event_id                 => l_array_event_id(Idx)
174081       ,p_event_class_code         => l_array_class_code(Idx)
174082       ,p_event_type_code          => l_array_event_type(Idx)
174083       ,p_event_number             => l_array_event_number(Idx)
174084       ,p_event_date               => l_array_event_date(Idx)
174085       ,p_transaction_date         => l_array_transaction_date(Idx)
174086       ,p_reference_num_1          => l_array_reference_num_1(Idx)
174087       ,p_reference_num_2          => l_array_reference_num_2(Idx)
174088       ,p_reference_num_3          => l_array_reference_num_3(Idx)
174089       ,p_reference_num_4          => l_array_reference_num_4(Idx)
174090       ,p_reference_char_1         => l_array_reference_char_1(Idx)
174091       ,p_reference_char_2         => l_array_reference_char_2(Idx)
174092       ,p_reference_char_3         => l_array_reference_char_3(Idx)
174093       ,p_reference_char_4         => l_array_reference_char_4(Idx)
174094       ,p_reference_date_1         => l_array_reference_date_1(Idx)
174095       ,p_reference_date_2         => l_array_reference_date_2(Idx)
174096       ,p_reference_date_3         => l_array_reference_date_3(Idx)
174097       ,p_reference_date_4         => l_array_reference_date_4(Idx)
174098       ,p_event_created_by         => l_array_event_created_by(Idx)
174099       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
174100        --
174101 END IF;
174102 
174103 
174104 
174105 --
174109 
174106 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
174107 
174108 l_acct_reversal_source := SUBSTR(NULL, 1,30);
174110 IF l_continue_with_lines THEN
174111    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
174112       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
174113 
174114       xla_accounting_err_pkg.build_message
174115          (p_appli_s_name            => 'XLA'
174116          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
174117          ,p_token_1                 => 'LINE_NUMBER'
174118          ,p_value_1                 => l_array_extract_line_num(Idx)
174119          ,p_token_2                 => 'PRODUCT_NAME'
174120          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
174121          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
174122          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
174123          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
174124 
174125    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
174126       --
174127       -- following sets the accounting attributes needed to reverse
174128       -- accounting for a distributeion
174129       --
174130 
174131       --
174132       -- 5217187
174133       --
174134       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
174135       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
174136                                        g_array_event(l_event_id).array_value_num('header_index'));
174137       --
174138       --
174139 
174140       -- No reversal code generated
174141 
174142       xla_ae_lines_pkg.SetAcctReversalAttrs
174143          (p_event_id             => l_event_id
174144          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
174145          ,p_calculate_acctd_flag => l_calculate_acctd_flag
174146          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
174147    END IF;
174148 
174149    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
174150        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
174151 
174152 --
174153 AcctLineType_160 (
174154  p_application_id  => p_application_id
174155  ,p_event_id     => l_event_id
174156  ,p_calculate_acctd_flag => l_calculate_acctd_flag
174157  ,p_calculate_g_l_flag => l_calculate_g_l_flag
174158  ,p_actual_flag => l_actual_flag
174159  ,p_balance_type_code => l_balance_type_code
174160  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
174161  
174162  , p_source_1 => l_array_source_1(Idx)
174163  , p_source_2 => l_array_source_2(Idx)
174164  , p_source_3 => l_array_source_3(Idx)
174165  , p_source_5 => l_array_source_5(Idx)
174166  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
174167  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
174168  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
174169  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
174170  , p_source_11 => l_array_source_11(Idx)
174171  );
174172 If(l_balance_type_code = 'A') THEN
174173   l_actual_gain_loss_ref := l_gain_or_loss_ref;
174174 END IF;
174175 
174176 --
174177 
174178 
174179 --
174180 AcctLineType_213 (
174181  p_application_id  => p_application_id
174182  ,p_event_id     => l_event_id
174183  ,p_calculate_acctd_flag => l_calculate_acctd_flag
174184  ,p_calculate_g_l_flag => l_calculate_g_l_flag
174185  ,p_actual_flag => l_actual_flag
174186  ,p_balance_type_code => l_balance_type_code
174187  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
174188  
174189  , p_source_1 => l_array_source_1(Idx)
174190  , p_source_2 => l_array_source_2(Idx)
174191  , p_source_3 => l_array_source_3(Idx)
174192  , p_source_5 => l_array_source_5(Idx)
174193  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
174194  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
174195  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
174196  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
174197  , p_source_11 => l_array_source_11(Idx)
174198  );
174199 If(l_balance_type_code = 'A') THEN
174200   l_actual_gain_loss_ref := l_gain_or_loss_ref;
174201 END IF;
174202 
174203 --
174204 
174205       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
174206       -- or secondary ledger that has different currency with primary
174207       -- or alc that is calculated by sla
174208       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
174209             (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'))
174210 
174211 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
174212 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
174213           AND (l_actual_flag = 'A')) THEN
174214         XLA_AE_LINES_PKG.CreateGainOrLossLines(
174215           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
174216          ,p_application_id   => p_application_id
174217          ,p_amb_context_code => 'DEFAULT'
174218          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
174219          ,p_event_class_code => C_EVENT_CLASS_CODE
174220          ,p_event_type_code  => C_EVENT_TYPE_CODE
174221          
174225          ,p_actual_flag      => l_actual_flag
174222          ,p_gain_ccid        => -1
174223          ,p_loss_ccid        => -1
174224 
174226          ,p_enc_flag         => null
174227          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
174228          ,p_enc_g_l_ref      => null
174229          );
174230       END IF;
174231    END IF;
174232 END IF;
174233 
174234    ELSE
174235       --
174236       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
174237       --
174238       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174239          trace
174240             (p_msg      => 'Trancaction revesal option is Y'
174241             ,p_level    => C_LEVEL_STATEMENT
174242             ,p_module   => l_log_module);
174243       END IF;
174244    END IF;
174245 
174246 END LOOP;
174247 l_result := XLA_AE_LINES_PKG.InsertLines ;
174248 end loop;
174249 close line_cur;
174250 
174251 
174252 --
174253 -- insert headers into xla_ae_headers_gt table
174254 --
174255 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
174256 
174257 -- insert into errors table here.
174258 
174259 END LOOP;
174260 
174261 --
174262 -- 4865292
174263 --
174264 -- Compare g_hdr_extract_count with event count in
174265 -- CreateHeadersAndLines.
174266 --
174267 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
174268 
174269 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174270    trace (p_msg     => '# rows extracted from header extract objects '
174271                     || ' (running total): '
174272                     || g_hdr_extract_count
174273          ,p_level   => C_LEVEL_STATEMENT
174274          ,p_module  => l_log_module);
174275 END IF;
174276 
174277 CLOSE header_cur;
174278 --
174279 
174280 --
174281 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174282    trace
174283       (p_msg      => 'END of EventClass_292'
174284       ,p_level    => C_LEVEL_PROCEDURE
174285       ,p_module   => l_log_module);
174286 END IF;
174287 --
174288 RETURN l_result;
174289 EXCEPTION
174290 WHEN xla_exceptions_pkg.application_exception THEN
174291    
174292 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
174293 
174294    
174295 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
174296 
174297    RAISE;
174298 
174299 WHEN NO_DATA_FOUND THEN
174300 
174301 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
174302 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
174303 
174304 FOR header_record IN header_cur
174305 LOOP
174306     l_array_header_events(header_record.event_id) := header_record.event_id;
174307 END LOOP;
174308 
174309 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
174310 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
174311 
174312 fnd_file.put_line(fnd_file.LOG, '                    ');
174313 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
174314 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
174315 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
174316 
174317 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
174318 LOOP
174319 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
174320 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
174321         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
174322 	END IF;
174323 END LOOP;
174324 
174325 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
174326 fnd_file.put_line(fnd_file.LOG, '                    ');
174327 
174328 
174329 xla_exceptions_pkg.raise_message
174330       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventClass_292');
174331 
174332 
174333 WHEN OTHERS THEN
174334    xla_exceptions_pkg.raise_message
174335       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventClass_292');
174336 END EventClass_292;
174337 --
174338 
174339 ---------------------------------------
174340 --
174341 -- PRIVATE PROCEDURE
174342 --         insert_sources_293
174343 --
174344 ----------------------------------------
174345 --
174346 PROCEDURE insert_sources_293(
174347                                 p_target_ledger_id       IN NUMBER
174348                               , p_language               IN VARCHAR2
174349                               , p_sla_ledger_id          IN NUMBER
174350                               , p_pad_start_date         IN DATE
174351                               , p_pad_end_date           IN DATE
174352                          )
174353 IS
174354 
174355 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PO_RECEIPT';
174356 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DELIVER';
174357 p_apps_owner                   VARCHAR2(30);
174358 l_log_module                   VARCHAR2(240);
174359 BEGIN
174360 IF g_log_enabled THEN
174361       l_log_module := C_DEFAULT_MODULE||'.insert_sources_293';
174362 END IF;
174363 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174364 
174365       trace
174366          (p_msg      => 'BEGIN of insert_sources_293'
174367          ,p_level    => C_LEVEL_PROCEDURE
174368          ,p_module   => l_log_module);
174369 
174370 END IF;
174371 
174372 -- select APPS owner
174376  WHERE read_only_flag = 'U'
174373 SELECT oracle_username
174374   INTO p_apps_owner
174375   FROM fnd_oracle_userid
174377 ;
174378 
174379 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174380       trace
174381          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
174382                         ' - p_language = '||p_language||
174383                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
174384                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
174385                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
174386                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
174387          ,p_level    => C_LEVEL_STATEMENT
174388          ,p_module   => l_log_module);
174389 END IF;
174390 
174391 
174392 --
174393 INSERT INTO xla_diag_sources --hdr1
174394 (
174395         event_id
174396       , ledger_id
174397       , sla_ledger_id
174398       , description_language
174399       , object_name
174400       , object_type_code
174401       , line_number
174402       , source_application_id
174403       , source_type_code
174404       , source_code
174405       , source_value
174406       , source_meaning
174407       , created_by
174408       , creation_date
174409       , last_update_date
174410       , last_updated_by
174411       , last_update_login
174412       , program_update_date
174413       , program_application_id
174414       , program_id
174415       , request_id
174416 )
174417 SELECT
174418         event_id
174419       , p_target_ledger_id
174420       , p_sla_ledger_id
174421       , p_language
174422       , object_name
174423       , object_type_code
174424       , line_number
174425       , source_application_id
174426       , source_type_code
174427       , source_code
174428       , SUBSTR(source_value ,1,1996)
174429       , SUBSTR(source_meaning,1,200)
174430       , xla_environment_pkg.g_Usr_Id
174431       , TRUNC(SYSDATE)
174432       , TRUNC(SYSDATE)
174433       , xla_environment_pkg.g_Usr_Id
174434       , xla_environment_pkg.g_Login_Id
174435       , TRUNC(SYSDATE)
174436       , xla_environment_pkg.g_Prog_Appl_Id
174437       , xla_environment_pkg.g_Prog_Id
174438       , xla_environment_pkg.g_Req_Id
174439   FROM (
174440        SELECT xet.event_id                  event_id
174441             , 0                             line_number
174442             , CASE r
174443                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
174444                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
174445                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
174446                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
174447                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
174448                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
174449                 
174450                ELSE null
174451               END                           object_name
174452             , CASE r
174453                 WHEN 1 THEN 'HEADER' 
174454                 WHEN 2 THEN 'HEADER' 
174455                 WHEN 3 THEN 'HEADER' 
174456                 WHEN 4 THEN 'HEADER' 
174457                 WHEN 5 THEN 'HEADER' 
174458                 WHEN 6 THEN 'HEADER' 
174459                 
174460                 ELSE null
174461               END                           object_type_code
174462             , CASE r
174463                 WHEN 1 THEN '555' 
174464                 WHEN 2 THEN '555' 
174465                 WHEN 3 THEN '555' 
174466                 WHEN 4 THEN '555' 
174467                 WHEN 5 THEN '555' 
174468                 WHEN 6 THEN '555' 
174469                 
174470                 ELSE null
174471               END                           source_application_id
174472             , 'S'             source_type_code
174473             , CASE r
174474                 WHEN 1 THEN 'ENTITY_CODE' 
174475                 WHEN 2 THEN 'CURRENCY_CODE' 
174476                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
174477                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
174478                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
174479                 WHEN 6 THEN 'TRANSACTION_DATE' 
174480                 
174481                 ELSE null
174482               END                           source_code
174483             , CASE r
174484                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
174485                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
174486                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
174487                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
174488                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
174489                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
174490                 
174491                 ELSE null
174492               END                           source_value
174493             , CASE r
174494                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
174495                           1010186
174496                          ,TO_CHAR(h1.CURRENCY_CODE)
174497                          ,'CURRENCY_CODE'
174498                          ,'S'
174499                          ,555)
174500                 
174501                 ELSE null
174502               END               source_meaning
174503         FROM xla_events_gt     xet  
174504       , GMF_XLA_EXTRACT_HEADERS  h1
174505             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
174506        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
174507          AND xet.event_type_code = C_EVENT_TYPE_CODE
174508             AND h1.event_id = xet.event_id
174512 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174509 
174510 )
174511 ;
174513 
174514       trace
174515          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
174516          ,p_level    => C_LEVEL_STATEMENT
174517          ,p_module   => l_log_module);
174518 
174519 END IF;
174520 --
174521 
174522 
174523 
174524 --
174525 INSERT INTO xla_diag_sources --line1
174526 (
174527         event_id
174528       , ledger_id
174529       , sla_ledger_id
174530       , description_language
174531       , object_name
174532       , object_type_code
174533       , line_number
174534       , source_application_id
174535       , source_type_code
174536       , source_code
174537       , source_value
174538       , source_meaning
174539       , created_by
174540       , creation_date
174541       , last_update_date
174542       , last_updated_by
174543       , last_update_login
174544       , program_update_date
174545       , program_application_id
174546       , program_id
174547       , request_id
174548 )
174549 SELECT  event_id
174550       , p_target_ledger_id
174551       , p_sla_ledger_id
174552       , p_language
174553       , object_name
174554       , object_type_code
174555       , line_number
174556       , source_application_id
174557       , source_type_code
174558       , source_code
174559       , SUBSTR(source_value,1,1996)
174560       , SUBSTR(source_meaning,1,200)
174561       , xla_environment_pkg.g_Usr_Id
174562       , TRUNC(SYSDATE)
174563       , TRUNC(SYSDATE)
174564       , xla_environment_pkg.g_Usr_Id
174565       , xla_environment_pkg.g_Login_Id
174566       , TRUNC(SYSDATE)
174567       , xla_environment_pkg.g_Prog_Appl_Id
174568       , xla_environment_pkg.g_Prog_Id
174569       , xla_environment_pkg.g_Req_Id
174570   FROM (
174571        SELECT xet.event_id                  event_id
174572             , l2.line_number                 line_number
174573             , CASE r
174574                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
174575                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
174576                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
174580                ELSE null
174577                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
174578                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
174579                 
174581               END                           object_name
174582             , CASE r
174583                 WHEN 1 THEN 'LINE' 
174584                 WHEN 2 THEN 'LINE' 
174585                 WHEN 3 THEN 'LINE' 
174586                 WHEN 4 THEN 'LINE' 
174587                 WHEN 5 THEN 'LINE' 
174588                 
174589                 ELSE null
174590               END                           object_type_code
174591             , CASE r
174592                 WHEN 1 THEN '555' 
174593                 WHEN 2 THEN '555' 
174594                 WHEN 3 THEN '555' 
174595                 WHEN 4 THEN '555' 
174596                 WHEN 5 THEN '555' 
174597                 
174598                 ELSE null
174599               END                           source_application_id
174600             , 'S'             source_type_code
174601             , CASE r
174602                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
174603                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
174604                 WHEN 3 THEN 'ENTERED_AMOUNT' 
174605                 WHEN 4 THEN 'LINE_ID' 
174606                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
174607                 
174608                 ELSE null
174609               END                           source_code
174610             , CASE r
174611                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
174612                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
174613                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
174614                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
174615                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
174616                 
174617                 ELSE null
174618               END                           source_value
174619             , null              source_meaning
174620          FROM  xla_events_gt     xet  
174621         , GMF_XLA_EXTRACT_LINES  l2
174622             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
174623         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
174624           AND xet.event_type_code = C_EVENT_TYPE_CODE
174625             AND l2.event_id          = xet.event_id
174626 
174627 )
174628 ;
174629 --
174630 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174631 
174632       trace
174633          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
174634          ,p_level    => C_LEVEL_STATEMENT
174635          ,p_module   => l_log_module);
174636 
174637 END IF;
174638 
174639 
174640 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174641       trace
174642          (p_msg      => 'END of insert_sources_293'
174643          ,p_level    => C_LEVEL_PROCEDURE
174644          ,p_module   => l_log_module);
174645 END IF;
174646 EXCEPTION
174647   WHEN xla_exceptions_pkg.application_exception THEN
174648       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
174649             trace
174650                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
174651                ,p_level    => C_LEVEL_EXCEPTION
174652                ,p_module   => l_log_module);
174653       END IF;
174654       RAISE;
174655   WHEN OTHERS THEN
174656       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
174657             trace
174658                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
174659                ,p_level    => C_LEVEL_EXCEPTION
174660                ,p_module   => l_log_module);
174661        END IF;
174662        xla_exceptions_pkg.raise_message
174663            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_293');
174664 END insert_sources_293;
174665 --
174666 
174667 ---------------------------------------
174668 --
174669 -- PRIVATE FUNCTION
174670 --         EventType_293
174671 --
174672 ----------------------------------------
174673 --
174674 FUNCTION EventType_293
174675        (p_application_id         IN NUMBER
174676        ,p_base_ledger_id         IN NUMBER
174677        ,p_target_ledger_id       IN NUMBER
174678        ,p_language               IN VARCHAR2
174679        ,p_currency_code          IN VARCHAR2
174680        ,p_sla_ledger_id          IN NUMBER
174681        ,p_pad_start_date         IN DATE
174682        ,p_pad_end_date           IN DATE
174683        ,p_primary_ledger_id      IN NUMBER)
174684 RETURN BOOLEAN IS
174685 --
174686 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PO_RECEIPT';
174687 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DELIVER';
174688 
174689 l_calculate_acctd_flag   VARCHAR2(1) :='N';
174690 l_calculate_g_l_flag     VARCHAR2(1) :='N';
174691 --
174692 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174693 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174694 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174695 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174696 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174697 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174698 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174699 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174700 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174701 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174702 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174703 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174704 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174708 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174705 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174706 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174707 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174709 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174710 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174711 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174712 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174713 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174714 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
174715 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174716 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
174717 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
174718 
174719 l_event_id                             NUMBER;
174720 l_previous_event_id                    NUMBER;
174721 l_first_event_id                       NUMBER;
174722 l_last_event_id                        NUMBER;
174723 
174724 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
174725 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
174726 --
174727 --
174728 l_result                    BOOLEAN := TRUE;
174729 l_rows                      NUMBER  := 1000;
174730 l_event_type_name           VARCHAR2(80) := 'PO Receipt';
174731 l_event_class_name          VARCHAR2(80) := 'Deliver to or Return from Inventory';
174732 l_description               VARCHAR2(4000);
174733 l_transaction_reversal      NUMBER;
174734 l_ae_header_id              NUMBER;
174735 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
174736 l_log_module                VARCHAR2(240);
174737 --
174738 l_acct_reversal_source      VARCHAR2(30);
174739 l_trx_reversal_source       VARCHAR2(30);
174740 
174741 l_continue_with_lines       BOOLEAN := TRUE;
174742 --
174743 l_acc_rev_gl_date_source    DATE;                      -- 4262811
174744 --
174745 type t_array_event_id is table of number index by binary_integer;
174746 
174747 l_rec_array_event                    t_rec_array_event;
174748 l_null_rec_array_event               t_rec_array_event;
174749 l_array_ae_header_id                 xla_number_array_type;
174750 l_actual_flag                        VARCHAR2(1) := NULL;
174751 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
174752 l_balance_type_code                  VARCHAR2(1) :=NULL;
174753 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
174754 
174755 --
174756 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
174757 --
174758 
174759 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
174760 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
174761 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
174762 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
174763 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
174764 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
174765 
174766 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
174767 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
174768 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
174769 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
174770 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
174771 
174772 l_array_source_6              t_array_source_6;
174773 l_array_source_7              t_array_source_7;
174774 l_array_source_8              t_array_source_8;
174775 l_array_source_9              t_array_source_9;
174776 l_array_source_10              t_array_source_10;
174777 l_array_source_12              t_array_source_12;
174778 
174779 l_array_source_1      t_array_source_1;
174780 l_array_source_2      t_array_source_2;
174781 l_array_source_3      t_array_source_3;
174782 l_array_source_5      t_array_source_5;
174783 l_array_source_11      t_array_source_11;
174784 
174785 --
174786 CURSOR header_cur
174787 IS
174788 SELECT /*+ leading(xet) cardinality(xet,1) */
174789 -- Event Type Code: PO_RECEIPT
174790 -- Event Class Code: DELIVER
174791     xet.entity_id
174792   , xet.legal_entity_id
174793   , xet.entity_code
174794   , xet.transaction_number
174795   , xet.event_id
174796   , xet.event_class_code
174797   , xet.event_type_code
174798   , xet.event_number
174799   , xet.event_date
174800   , xet.transaction_date
174801   , xet.reference_num_1
174802   , xet.reference_num_2
174803   , xet.reference_num_3
174804   , xet.reference_num_4
174805   , xet.reference_char_1
174806   , xet.reference_char_2
174807   , xet.reference_char_3
174808   , xet.reference_char_4
174809   , xet.reference_date_1
174810   , xet.reference_date_2
174811   , xet.reference_date_3
174812   , xet.reference_date_4
174813   , xet.event_created_by
174814   , xet.budgetary_control_flag 
174815   , h1.ENTITY_CODE    source_6
174816   , h1.CURRENCY_CODE    source_7
174817   , h1.CURRENCY_CONVERSION_DATE    source_8
174818   , h1.CURRENCY_CONVERSION_RATE    source_9
174819   , h1.CURRENCY_CONVERSION_TYPE    source_10
174820   , h1.TRANSACTION_DATE    source_12
174821   FROM xla_events_gt     xet 
174822   , GMF_XLA_EXTRACT_HEADERS  h1
174826 
174823  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
174824    and xet.event_type_code = C_EVENT_TYPE_CODE
174825    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
174827  ORDER BY event_id
174828 ;
174829 
174830 
174831 --
174832 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
174833 IS
174834 SELECT /*+ leading(xet) cardinality(xet,1) */
174835 -- Event Type Code: PO_RECEIPT
174836 -- Event Class Code: DELIVER
174837     xet.entity_id
174838    ,xet.legal_entity_id
174839    ,xet.entity_code
174840    ,xet.transaction_number
174841    ,xet.event_id
174842    ,xet.event_class_code
174843    ,xet.event_type_code
174844    ,xet.event_number
174845    ,xet.event_date
174846    ,xet.transaction_date
174847    ,xet.reference_num_1
174848    ,xet.reference_num_2
174849    ,xet.reference_num_3
174850    ,xet.reference_num_4
174851    ,xet.reference_char_1
174852    ,xet.reference_char_2
174853    ,xet.reference_char_3
174854    ,xet.reference_char_4
174855    ,xet.reference_date_1
174856    ,xet.reference_date_2
174857    ,xet.reference_date_3
174858    ,xet.reference_date_4
174859    ,xet.event_created_by
174860    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
174861   , l2.TRANSACTION_ACCOUNT_ID    source_1
174862   , l2.JOURNAL_LINE_TYPE    source_2
174863   , l2.ENTERED_AMOUNT    source_3
174864   , l2.LINE_ID    source_5
174865   , l2.ACCOUNTED_AMOUNT    source_11
174866   FROM xla_events_gt     xet 
174867   , GMF_XLA_EXTRACT_LINES  l2
174868  WHERE xet.event_id between x_first_event_id and x_last_event_id
174869    and xet.event_date between p_pad_start_date and p_pad_end_date
174870    and xet.event_type_code = C_EVENT_TYPE_CODE
174871    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
174872 ;
174873 
174874 --
174875 BEGIN
174876 IF g_log_enabled THEN
174877    l_log_module := C_DEFAULT_MODULE||'.EventType_293';
174878 END IF;
174879 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174880    trace
174881       (p_msg      => 'BEGIN of EventType_293'
174882       ,p_level    => C_LEVEL_PROCEDURE
174883       ,p_module   => l_log_module);
174884 END IF;
174885 
174886 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174887    trace
174888       (p_msg      => 'p_application_id = '||p_application_id||
174889                      ' - p_base_ledger_id = '||p_base_ledger_id||
174890                      ' - p_target_ledger_id  = '||p_target_ledger_id||
174891                      ' - p_language = '||p_language||
174892                      ' - p_currency_code = '||p_currency_code||
174893                      ' - p_sla_ledger_id = '||p_sla_ledger_id
174894       ,p_level    => C_LEVEL_STATEMENT
174895       ,p_module   => l_log_module);
174896 END IF;
174897 --
174898 -- initialze arrays
174899 --
174900 g_array_event.DELETE;
174901 l_rec_array_event := l_null_rec_array_event;
174902 --
174903 --------------------------------------
174904 -- 4262811 Initialze MPA Line Number
174905 --------------------------------------
174906 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
174907 
174908 --
174909 
174910 --
174911 OPEN header_cur;
174912 --
174913 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174914    trace
174915    (p_msg      => 'SQL - FETCH header_cur'
174916    ,p_level    => C_LEVEL_STATEMENT
174917    ,p_module   => l_log_module);
174918 END IF;
174919 --
174920 LOOP
174921 FETCH header_cur BULK COLLECT INTO
174922         l_array_entity_id
174923       , l_array_legal_entity_id
174924       , l_array_entity_code
174925       , l_array_transaction_num
174926       , l_array_event_id
174927       , l_array_class_code
174928       , l_array_event_type
174929       , l_array_event_number
174930       , l_array_event_date
174931       , l_array_transaction_date
174932       , l_array_reference_num_1
174933       , l_array_reference_num_2
174934       , l_array_reference_num_3
174935       , l_array_reference_num_4
174936       , l_array_reference_char_1
174937       , l_array_reference_char_2
174938       , l_array_reference_char_3
174939       , l_array_reference_char_4
174940       , l_array_reference_date_1
174941       , l_array_reference_date_2
174942       , l_array_reference_date_3
174943       , l_array_reference_date_4
174944       , l_array_event_created_by
174945       , l_array_budgetary_control_flag 
174946       , l_array_source_6
174947       , l_array_source_7
174948       , l_array_source_8
174949       , l_array_source_9
174950       , l_array_source_10
174951       , l_array_source_12
174952       LIMIT l_rows;
174953 --
174954 IF (C_LEVEL_EVENT >= g_log_level) THEN
174955    trace
174956    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
174957    ,p_level    => C_LEVEL_EVENT
174958    ,p_module   => l_log_module);
174959 END IF;
174960 --
174961 EXIT WHEN l_array_entity_id.COUNT = 0;
174962 
174963 -- initialize arrays
174964 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
174965 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
174966 
174967 --
174968 -- Bug 4458708
174969 --
174970 XLA_AE_LINES_PKG.g_LineNumber := 0;
174971 
174972 
174973 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
174974 g_last_hdr_idx := l_array_event_id.LAST;
174975 --
174976 -- loop for the headers. Each iteration is for each header extract row
174977 -- fetched in header cursor
174978 --
174979 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
174980 
174981 --
174982 -- set event info as cache for other routines to refer event attributes
174983 --
174984 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
174985    (p_application_id           => p_application_id
174989    ,p_entity_id                => l_array_entity_id(hdr_idx)
174986    ,p_primary_ledger_id        => p_primary_ledger_id
174987    ,p_base_ledger_id           => p_base_ledger_id
174988    ,p_target_ledger_id         => p_target_ledger_id
174990    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
174991    ,p_entity_code              => l_array_entity_code(hdr_idx)
174992    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
174993    ,p_event_id                 => l_array_event_id(hdr_idx)
174994    ,p_event_class_code         => l_array_class_code(hdr_idx)
174995    ,p_event_type_code          => l_array_event_type(hdr_idx)
174996    ,p_event_number             => l_array_event_number(hdr_idx)
174997    ,p_event_date               => l_array_event_date(hdr_idx)
174998    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
174999    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
175000    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
175001    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
175002    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
175003    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
175004    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
175005    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
175006    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
175007    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
175008    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
175009    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
175010    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
175011    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
175012    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
175013 
175014 --
175015 -- set the status of entry to C_VALID (0)
175016 --
175017 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
175018 
175019 --
175020 -- initialize a row for ae header
175021 --
175022 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
175023 
175024 l_event_id := l_array_event_id(hdr_idx);
175025 
175026 --
175027 -- storing the hdr_idx for event. May be used by line cursor.
175028 --
175029 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
175030 
175031 --
175032 -- store sources from header extract. This can be improved to
175033 -- store only those sources from header extract that may be used in lines
175034 --
175035 
175036 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
175037 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
175038 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
175039 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
175040 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
175041 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
175042 
175043 --
175044 -- initilaize the status of ae headers for diffrent balance types
175045 -- the status is initialised to C_NOT_CREATED (2)
175046 --
175047 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
175048 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
175049 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
175050 
175051 --
175052 -- call api to validate and store accounting attributes for header
175053 --
175054 
175055 ------------------------------------------------------------
175056 -- Accrual Reversal : to get date for Standard Source (NONE)
175057 ------------------------------------------------------------
175058 l_acc_rev_gl_date_source := NULL;
175059 
175060      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
175061       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
175062 
175063 
175064 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
175065 
175066 XLA_AE_HEADER_PKG.SetJeCategoryName;
175067 
175068 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
175069 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
175070 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
175071 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
175072 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
175073 
175074 
175075 -- No header level analytical criteria
175076 
175077 --
175078 --accounting attribute enhancement, bug 3612931
175079 --
175080 l_trx_reversal_source := SUBSTR(NULL, 1,30);
175081 
175082 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
175083    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
175084 
175085    xla_accounting_err_pkg.build_message
175086       (p_appli_s_name            => 'XLA'
175087       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
175088       ,p_token_1                 => 'ACCT_ATTR_NAME'
175089       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
175090       ,p_token_2                 => 'PRODUCT_NAME'
175091       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
175092       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
175093       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
175094       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
175095 
175096 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
175097    --
175098    -- following sets the accounting attributes needed to reverse
175099    -- accounting for a distributeion
175100    --
175104       ,p_trx_reversal_source   => l_trx_reversal_source);
175101    xla_ae_lines_pkg.SetTrxReversalAttrs
175102       (p_event_id              => l_event_id
175103       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
175105 
175106 END IF;
175107 
175108 
175109 ----------------------------------------------------------------
175110 -- 4262811 -  update the header statuses to invalid in need be
175111 ----------------------------------------------------------------
175112 --
175113 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
175114 
175115 
175116   -----------------------------------------------
175117   -- No accrual reversal for the event class/type
175118   -----------------------------------------------
175119 ----------------------------------------------------------------
175120 
175121 --
175122 -- this ends the header loop iteration for one bulk fetch
175123 --
175124 END LOOP;
175125 
175126 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
175127 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
175128 
175129 --
175130 -- insert dummy rows into lines gt table that were created due to
175131 -- transaction reversals
175132 --
175133 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
175134    l_result := XLA_AE_LINES_PKG.InsertLines;
175135 END IF;
175136 
175137 --
175138 -- reset the temp_line_num for each set of events fetched from header
175139 -- cursor rather than doing it for each new event in line cursor
175140 -- Bug 3939231
175141 --
175142 xla_ae_lines_pkg.g_temp_line_num := 0;
175143 
175144 
175145 
175146 --
175147 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
175148 --
175149 --
175150 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175151 
175152       trace
175153          (p_msg      => 'SQL - FETCH line_cur'
175154          ,p_level    => C_LEVEL_STATEMENT
175155          ,p_module   => l_log_module);
175156 
175157 END IF;
175158 --
175159 --
175160 LOOP
175161   --
175162   FETCH line_cur BULK COLLECT INTO
175163         l_array_entity_id
175164       , l_array_legal_entity_id
175165       , l_array_entity_code
175166       , l_array_transaction_num
175167       , l_array_event_id
175168       , l_array_class_code
175169       , l_array_event_type
175170       , l_array_event_number
175171       , l_array_event_date
175172       , l_array_transaction_date
175173       , l_array_reference_num_1
175174       , l_array_reference_num_2
175175       , l_array_reference_num_3
175176       , l_array_reference_num_4
175177       , l_array_reference_char_1
175178       , l_array_reference_char_2
175179       , l_array_reference_char_3
175180       , l_array_reference_char_4
175181       , l_array_reference_date_1
175182       , l_array_reference_date_2
175183       , l_array_reference_date_3
175184       , l_array_reference_date_4
175185       , l_array_event_created_by
175186       , l_array_budgetary_control_flag
175187       , l_array_extract_line_num 
175188       , l_array_source_1
175189       , l_array_source_2
175190       , l_array_source_3
175191       , l_array_source_5
175192       , l_array_source_11
175193       LIMIT l_rows;
175194 
175195   --
175196   IF (C_LEVEL_EVENT >= g_log_level) THEN
175197             trace
175198                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
175199                ,p_level    => C_LEVEL_EVENT
175200                ,p_module   => l_log_module);
175201   END IF;
175202   --
175203   EXIT WHEN l_array_entity_id.count = 0;
175204 
175205   XLA_AE_LINES_PKG.g_rec_lines := null;
175206 
175207 --
175208 -- Bug 4458708
175209 --
175210 XLA_AE_LINES_PKG.g_LineNumber := 0;
175211 --
175212 --
175213 
175214 FOR Idx IN 1..l_array_event_id.count LOOP
175215    --
175216    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
175217    --
175218    l_event_id := l_array_event_id(idx);  -- 5648433
175219 
175220    --
175221    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
175222    --
175223 
175224    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
175225              (g_array_event(l_event_id).array_value_num('header_index'))
175226          ,'N'
175227          ) <> 'Y'
175228    THEN
175229       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175230          trace
175231             (p_msg      => 'Trancaction revesal option is not Y '
175232             ,p_level    => C_LEVEL_STATEMENT
175233             ,p_module   => l_log_module);
175234       END IF;
175235 
175236 --
175237 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
175238 --
175239 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
175240 --
175241 -- set event info as cache for other routines to refer event attributes
175242 --
175243 
175244 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
175245    l_previous_event_id := l_event_id;
175246 
175247    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
175248       (p_application_id           => p_application_id
175249       ,p_primary_ledger_id        => p_primary_ledger_id
175250       ,p_base_ledger_id           => p_base_ledger_id
175251       ,p_target_ledger_id         => p_target_ledger_id
175252       ,p_entity_id                => l_array_entity_id(Idx)
175253       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
175254       ,p_entity_code              => l_array_entity_code(Idx)
175255       ,p_transaction_num          => l_array_transaction_num(Idx)
175256       ,p_event_id                 => l_array_event_id(Idx)
175257       ,p_event_class_code         => l_array_class_code(Idx)
175261       ,p_transaction_date         => l_array_transaction_date(Idx)
175258       ,p_event_type_code          => l_array_event_type(Idx)
175259       ,p_event_number             => l_array_event_number(Idx)
175260       ,p_event_date               => l_array_event_date(Idx)
175262       ,p_reference_num_1          => l_array_reference_num_1(Idx)
175263       ,p_reference_num_2          => l_array_reference_num_2(Idx)
175264       ,p_reference_num_3          => l_array_reference_num_3(Idx)
175265       ,p_reference_num_4          => l_array_reference_num_4(Idx)
175266       ,p_reference_char_1         => l_array_reference_char_1(Idx)
175267       ,p_reference_char_2         => l_array_reference_char_2(Idx)
175268       ,p_reference_char_3         => l_array_reference_char_3(Idx)
175269       ,p_reference_char_4         => l_array_reference_char_4(Idx)
175270       ,p_reference_date_1         => l_array_reference_date_1(Idx)
175271       ,p_reference_date_2         => l_array_reference_date_2(Idx)
175272       ,p_reference_date_3         => l_array_reference_date_3(Idx)
175273       ,p_reference_date_4         => l_array_reference_date_4(Idx)
175274       ,p_event_created_by         => l_array_event_created_by(Idx)
175275       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
175276        --
175277 END IF;
175278 
175279 
175280 
175281 --
175282 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
175283 
175284 l_acct_reversal_source := SUBSTR(NULL, 1,30);
175285 
175286 IF l_continue_with_lines THEN
175287    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
175288       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
175289 
175290       xla_accounting_err_pkg.build_message
175291          (p_appli_s_name            => 'XLA'
175292          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
175293          ,p_token_1                 => 'LINE_NUMBER'
175294          ,p_value_1                 => l_array_extract_line_num(Idx)
175295          ,p_token_2                 => 'PRODUCT_NAME'
175296          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
175297          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
175298          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
175299          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
175300 
175301    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
175302       --
175303       -- following sets the accounting attributes needed to reverse
175304       -- accounting for a distributeion
175305       --
175306 
175307       --
175308       -- 5217187
175309       --
175310       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
175311       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
175312                                        g_array_event(l_event_id).array_value_num('header_index'));
175313       --
175314       --
175315 
175316       -- No reversal code generated
175317 
175318       xla_ae_lines_pkg.SetAcctReversalAttrs
175319          (p_event_id             => l_event_id
175320          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
175321          ,p_calculate_acctd_flag => l_calculate_acctd_flag
175322          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
175323    END IF;
175324 
175325    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
175326        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
175327 
175328 --
175329 AcctLineType_43 (
175330  p_application_id  => p_application_id
175331  ,p_event_id     => l_event_id
175332  ,p_calculate_acctd_flag => l_calculate_acctd_flag
175333  ,p_calculate_g_l_flag => l_calculate_g_l_flag
175334  ,p_actual_flag => l_actual_flag
175335  ,p_balance_type_code => l_balance_type_code
175336  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175337  
175338  , p_source_1 => l_array_source_1(Idx)
175339  , p_source_2 => l_array_source_2(Idx)
175340  , p_source_3 => l_array_source_3(Idx)
175341  , p_source_5 => l_array_source_5(Idx)
175342  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
175343  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
175344  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
175345  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
175346  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
175347  , p_source_11 => l_array_source_11(Idx)
175348  );
175349 If(l_balance_type_code = 'A') THEN
175350   l_actual_gain_loss_ref := l_gain_or_loss_ref;
175351 END IF;
175352 
175353 --
175354 
175355 
175356 --
175357 AcctLineType_58 (
175358  p_application_id  => p_application_id
175359  ,p_event_id     => l_event_id
175360  ,p_calculate_acctd_flag => l_calculate_acctd_flag
175364  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175361  ,p_calculate_g_l_flag => l_calculate_g_l_flag
175362  ,p_actual_flag => l_actual_flag
175363  ,p_balance_type_code => l_balance_type_code
175365  
175366  , p_source_1 => l_array_source_1(Idx)
175367  , p_source_2 => l_array_source_2(Idx)
175368  , p_source_3 => l_array_source_3(Idx)
175369  , p_source_5 => l_array_source_5(Idx)
175370  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
175371  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
175372  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
175373  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
175374  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
175375  , p_source_11 => l_array_source_11(Idx)
175376  );
175377 If(l_balance_type_code = 'A') THEN
175378   l_actual_gain_loss_ref := l_gain_or_loss_ref;
175379 END IF;
175380 
175381 --
175382 
175383 
175384 --
175385 AcctLineType_104 (
175386  p_application_id  => p_application_id
175387  ,p_event_id     => l_event_id
175388  ,p_calculate_acctd_flag => l_calculate_acctd_flag
175389  ,p_calculate_g_l_flag => l_calculate_g_l_flag
175390  ,p_actual_flag => l_actual_flag
175391  ,p_balance_type_code => l_balance_type_code
175392  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175393  
175394  , p_source_1 => l_array_source_1(Idx)
175395  , p_source_2 => l_array_source_2(Idx)
175396  , p_source_3 => l_array_source_3(Idx)
175397  , p_source_5 => l_array_source_5(Idx)
175398  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
175399  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
175400  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
175401  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
175402  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
175403  , p_source_11 => l_array_source_11(Idx)
175404  );
175405 If(l_balance_type_code = 'A') THEN
175406   l_actual_gain_loss_ref := l_gain_or_loss_ref;
175407 END IF;
175408 
175409 --
175410 
175411 
175412 --
175413 AcctLineType_138 (
175414  p_application_id  => p_application_id
175415  ,p_event_id     => l_event_id
175416  ,p_calculate_acctd_flag => l_calculate_acctd_flag
175417  ,p_calculate_g_l_flag => l_calculate_g_l_flag
175418  ,p_actual_flag => l_actual_flag
175419  ,p_balance_type_code => l_balance_type_code
175420  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175421  
175422  , p_source_1 => l_array_source_1(Idx)
175423  , p_source_2 => l_array_source_2(Idx)
175424  , p_source_3 => l_array_source_3(Idx)
175425  , p_source_5 => l_array_source_5(Idx)
175426  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
175427  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
175428  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
175429  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
175430  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
175431  , p_source_11 => l_array_source_11(Idx)
175432  );
175433 If(l_balance_type_code = 'A') THEN
175434   l_actual_gain_loss_ref := l_gain_or_loss_ref;
175435 END IF;
175436 
175437 --
175438 
175439 
175440 --
175441 AcctLineType_205 (
175442  p_application_id  => p_application_id
175443  ,p_event_id     => l_event_id
175444  ,p_calculate_acctd_flag => l_calculate_acctd_flag
175445  ,p_calculate_g_l_flag => l_calculate_g_l_flag
175446  ,p_actual_flag => l_actual_flag
175447  ,p_balance_type_code => l_balance_type_code
175448  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175449  
175450  , p_source_1 => l_array_source_1(Idx)
175451  , p_source_2 => l_array_source_2(Idx)
175452  , p_source_3 => l_array_source_3(Idx)
175453  , p_source_5 => l_array_source_5(Idx)
175454  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
175455  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
175456  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
175457  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
175458  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
175459  , p_source_11 => l_array_source_11(Idx)
175460  );
175461 If(l_balance_type_code = 'A') THEN
175462   l_actual_gain_loss_ref := l_gain_or_loss_ref;
175463 END IF;
175464 
175465 --
175466 
175467 
175468 --
175469 AcctLineType_228 (
175470  p_application_id  => p_application_id
175471  ,p_event_id     => l_event_id
175472  ,p_calculate_acctd_flag => l_calculate_acctd_flag
175473  ,p_calculate_g_l_flag => l_calculate_g_l_flag
175474  ,p_actual_flag => l_actual_flag
175475  ,p_balance_type_code => l_balance_type_code
175476  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175477  
175478  , p_source_1 => l_array_source_1(Idx)
175479  , p_source_2 => l_array_source_2(Idx)
175480  , p_source_3 => l_array_source_3(Idx)
175481  , p_source_5 => l_array_source_5(Idx)
175482  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
175483  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
175484  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
175485  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
175486  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
175487  , p_source_11 => l_array_source_11(Idx)
175488  );
175489 If(l_balance_type_code = 'A') THEN
175490   l_actual_gain_loss_ref := l_gain_or_loss_ref;
175491 END IF;
175492 
175493 --
175494 
175495       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
175496       -- or secondary ledger that has different currency with primary
175497       -- or alc that is calculated by sla
175498       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
175502 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
175499             (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'))
175500 
175501 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
175503           AND (l_actual_flag = 'A')) THEN
175504         XLA_AE_LINES_PKG.CreateGainOrLossLines(
175505           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
175506          ,p_application_id   => p_application_id
175507          ,p_amb_context_code => 'DEFAULT'
175508          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
175509          ,p_event_class_code => C_EVENT_CLASS_CODE
175510          ,p_event_type_code  => C_EVENT_TYPE_CODE
175511          
175512          ,p_gain_ccid        => -1
175513          ,p_loss_ccid        => -1
175514 
175515          ,p_actual_flag      => l_actual_flag
175516          ,p_enc_flag         => null
175517          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
175518          ,p_enc_g_l_ref      => null
175519          );
175520       END IF;
175521    END IF;
175522 END IF;
175523 
175524    ELSE
175525       --
175526       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
175527       --
175528       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175529          trace
175530             (p_msg      => 'Trancaction revesal option is Y'
175531             ,p_level    => C_LEVEL_STATEMENT
175532             ,p_module   => l_log_module);
175533       END IF;
175534    END IF;
175535 
175536 END LOOP;
175537 l_result := XLA_AE_LINES_PKG.InsertLines ;
175538 end loop;
175539 close line_cur;
175540 
175541 
175542 --
175543 -- insert headers into xla_ae_headers_gt table
175544 --
175545 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
175546 
175547 -- insert into errors table here.
175548 
175549 END LOOP;
175550 
175551 --
175552 -- 4865292
175553 --
175554 -- Compare g_hdr_extract_count with event count in
175555 -- CreateHeadersAndLines.
175556 --
175557 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
175558 
175559 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175560    trace (p_msg     => '# rows extracted from header extract objects '
175561                     || ' (running total): '
175562                     || g_hdr_extract_count
175563          ,p_level   => C_LEVEL_STATEMENT
175564          ,p_module  => l_log_module);
175565 END IF;
175566 
175567 CLOSE header_cur;
175568 --
175569 
175570 --
175571 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175572    trace
175573       (p_msg      => 'END of EventType_293'
175574       ,p_level    => C_LEVEL_PROCEDURE
175575       ,p_module   => l_log_module);
175576 END IF;
175577 --
175578 RETURN l_result;
175579 EXCEPTION
175580 WHEN xla_exceptions_pkg.application_exception THEN
175581    
175582 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
175583 
175584    
175585 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
175586 
175587    RAISE;
175588 
175589 WHEN NO_DATA_FOUND THEN
175590 
175591 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
175592 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
175593 
175594 FOR header_record IN header_cur
175595 LOOP
175596     l_array_header_events(header_record.event_id) := header_record.event_id;
175597 END LOOP;
175598 
175599 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
175600 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
175601 
175602 fnd_file.put_line(fnd_file.LOG, '                    ');
175603 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
175604 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
175605 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
175606 
175607 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
175608 LOOP
175609 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
175610 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
175611         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
175612 	END IF;
175613 END LOOP;
175614 
175615 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
175616 fnd_file.put_line(fnd_file.LOG, '                    ');
175617 
175618 
175619 xla_exceptions_pkg.raise_message
175620       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_293');
175621 
175622 
175623 WHEN OTHERS THEN
175624    xla_exceptions_pkg.raise_message
175625       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_293');
175626 END EventType_293;
175627 --
175628 
175629 ---------------------------------------
175630 --
175631 -- PRIVATE PROCEDURE
175632 --         insert_sources_294
175633 --
175634 ----------------------------------------
175635 --
175636 PROCEDURE insert_sources_294(
175637                                 p_target_ledger_id       IN NUMBER
175638                               , p_language               IN VARCHAR2
175639                               , p_sla_ledger_id          IN NUMBER
175640                               , p_pad_start_date         IN DATE
175641                               , p_pad_end_date           IN DATE
175642                          )
175643 IS
175644 
175645 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PO_RECEIPT_ADJ';
175646 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DELIVER';
175647 p_apps_owner                   VARCHAR2(30);
175648 l_log_module                   VARCHAR2(240);
175649 BEGIN
175653 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175650 IF g_log_enabled THEN
175651       l_log_module := C_DEFAULT_MODULE||'.insert_sources_294';
175652 END IF;
175654 
175655       trace
175656          (p_msg      => 'BEGIN of insert_sources_294'
175657          ,p_level    => C_LEVEL_PROCEDURE
175658          ,p_module   => l_log_module);
175659 
175660 END IF;
175661 
175662 -- select APPS owner
175663 SELECT oracle_username
175664   INTO p_apps_owner
175665   FROM fnd_oracle_userid
175666  WHERE read_only_flag = 'U'
175667 ;
175668 
175669 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175670       trace
175671          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
175672                         ' - p_language = '||p_language||
175673                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
175674                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
175675                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
175676                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
175677          ,p_level    => C_LEVEL_STATEMENT
175678          ,p_module   => l_log_module);
175679 END IF;
175680 
175681 
175682 --
175683 INSERT INTO xla_diag_sources --hdr1
175684 (
175685         event_id
175686       , ledger_id
175687       , sla_ledger_id
175688       , description_language
175689       , object_name
175690       , object_type_code
175691       , line_number
175692       , source_application_id
175693       , source_type_code
175694       , source_code
175695       , source_value
175696       , source_meaning
175697       , created_by
175698       , creation_date
175699       , last_update_date
175700       , last_updated_by
175701       , last_update_login
175702       , program_update_date
175703       , program_application_id
175704       , program_id
175705       , request_id
175706 )
175707 SELECT
175708         event_id
175709       , p_target_ledger_id
175710       , p_sla_ledger_id
175711       , p_language
175712       , object_name
175713       , object_type_code
175714       , line_number
175715       , source_application_id
175716       , source_type_code
175717       , source_code
175718       , SUBSTR(source_value ,1,1996)
175719       , SUBSTR(source_meaning,1,200)
175720       , xla_environment_pkg.g_Usr_Id
175721       , TRUNC(SYSDATE)
175722       , TRUNC(SYSDATE)
175723       , xla_environment_pkg.g_Usr_Id
175724       , xla_environment_pkg.g_Login_Id
175725       , TRUNC(SYSDATE)
175726       , xla_environment_pkg.g_Prog_Appl_Id
175727       , xla_environment_pkg.g_Prog_Id
175728       , xla_environment_pkg.g_Req_Id
175729   FROM (
175730        SELECT xet.event_id                  event_id
175731             , 0                             line_number
175732             , CASE r
175733                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
175734                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
175735                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
175736                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
175737                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
175738                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
175739                 
175740                ELSE null
175741               END                           object_name
175742             , CASE r
175743                 WHEN 1 THEN 'HEADER' 
175744                 WHEN 2 THEN 'HEADER' 
175745                 WHEN 3 THEN 'HEADER' 
175746                 WHEN 4 THEN 'HEADER' 
175747                 WHEN 5 THEN 'HEADER' 
175748                 WHEN 6 THEN 'HEADER' 
175749                 
175750                 ELSE null
175751               END                           object_type_code
175752             , CASE r
175753                 WHEN 1 THEN '555' 
175754                 WHEN 2 THEN '555' 
175755                 WHEN 3 THEN '555' 
175756                 WHEN 4 THEN '555' 
175757                 WHEN 5 THEN '555' 
175758                 WHEN 6 THEN '555' 
175759                 
175760                 ELSE null
175761               END                           source_application_id
175762             , 'S'             source_type_code
175763             , CASE r
175764                 WHEN 1 THEN 'ENTITY_CODE' 
175765                 WHEN 2 THEN 'CURRENCY_CODE' 
175766                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
175767                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
175768                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
175769                 WHEN 6 THEN 'TRANSACTION_DATE' 
175770                 
175771                 ELSE null
175772               END                           source_code
175773             , CASE r
175774                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
175775                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
175776                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
175777                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
175778                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
175779                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
175780                 
175781                 ELSE null
175782               END                           source_value
175783             , CASE r
175784                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
175785                           1010186
175786                          ,TO_CHAR(h1.CURRENCY_CODE)
175787                          ,'CURRENCY_CODE'
175788                          ,'S'
175789                          ,555)
175790                 
175791                 ELSE null
175792               END               source_meaning
175793         FROM xla_events_gt     xet  
175794       , GMF_XLA_EXTRACT_HEADERS  h1
175795             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
175796        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
175800 )
175797          AND xet.event_type_code = C_EVENT_TYPE_CODE
175798             AND h1.event_id = xet.event_id
175799 
175801 ;
175802 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175803 
175804       trace
175805          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
175806          ,p_level    => C_LEVEL_STATEMENT
175807          ,p_module   => l_log_module);
175808 
175809 END IF;
175810 --
175811 
175812 
175813 
175814 --
175815 INSERT INTO xla_diag_sources --line1
175816 (
175817         event_id
175818       , ledger_id
175819       , sla_ledger_id
175820       , description_language
175821       , object_name
175822       , object_type_code
175823       , line_number
175824       , source_application_id
175825       , source_type_code
175826       , source_code
175827       , source_value
175828       , source_meaning
175829       , created_by
175830       , creation_date
175831       , last_update_date
175832       , last_updated_by
175833       , last_update_login
175834       , program_update_date
175835       , program_application_id
175836       , program_id
175837       , request_id
175838 )
175839 SELECT  event_id
175840       , p_target_ledger_id
175841       , p_sla_ledger_id
175842       , p_language
175843       , object_name
175844       , object_type_code
175845       , line_number
175846       , source_application_id
175847       , source_type_code
175848       , source_code
175849       , SUBSTR(source_value,1,1996)
175850       , SUBSTR(source_meaning,1,200)
175851       , xla_environment_pkg.g_Usr_Id
175852       , TRUNC(SYSDATE)
175853       , TRUNC(SYSDATE)
175854       , xla_environment_pkg.g_Usr_Id
175855       , xla_environment_pkg.g_Login_Id
175856       , TRUNC(SYSDATE)
175857       , xla_environment_pkg.g_Prog_Appl_Id
175858       , xla_environment_pkg.g_Prog_Id
175859       , xla_environment_pkg.g_Req_Id
175860   FROM (
175861        SELECT xet.event_id                  event_id
175862             , l2.line_number                 line_number
175863             , CASE r
175864                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
175865                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
175866                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
175867                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
175868                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
175869                 
175870                ELSE null
175871               END                           object_name
175872             , CASE r
175873                 WHEN 1 THEN 'LINE' 
175874                 WHEN 2 THEN 'LINE' 
175875                 WHEN 3 THEN 'LINE' 
175876                 WHEN 4 THEN 'LINE' 
175877                 WHEN 5 THEN 'LINE' 
175878                 
175879                 ELSE null
175880               END                           object_type_code
175881             , CASE r
175882                 WHEN 1 THEN '555' 
175883                 WHEN 2 THEN '555' 
175884                 WHEN 3 THEN '555' 
175885                 WHEN 4 THEN '555' 
175886                 WHEN 5 THEN '555' 
175887                 
175888                 ELSE null
175889               END                           source_application_id
175890             , 'S'             source_type_code
175891             , CASE r
175892                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
175893                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
175894                 WHEN 3 THEN 'ENTERED_AMOUNT' 
175895                 WHEN 4 THEN 'LINE_ID' 
175896                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
175897                 
175898                 ELSE null
175899               END                           source_code
175900             , CASE r
175901                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
175902                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
175903                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
175904                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
175905                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
175906                 
175907                 ELSE null
175908               END                           source_value
175909             , null              source_meaning
175910          FROM  xla_events_gt     xet  
175911         , GMF_XLA_EXTRACT_LINES  l2
175912             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
175913         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
175914           AND xet.event_type_code = C_EVENT_TYPE_CODE
175915             AND l2.event_id          = xet.event_id
175916 
175917 )
175918 ;
175919 --
175920 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175921 
175922       trace
175923          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
175924          ,p_level    => C_LEVEL_STATEMENT
175925          ,p_module   => l_log_module);
175926 
175927 END IF;
175928 
175929 
175930 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175931       trace
175932          (p_msg      => 'END of insert_sources_294'
175933          ,p_level    => C_LEVEL_PROCEDURE
175934          ,p_module   => l_log_module);
175935 END IF;
175936 EXCEPTION
175937   WHEN xla_exceptions_pkg.application_exception THEN
175938       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
175939             trace
175940                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
175941                ,p_level    => C_LEVEL_EXCEPTION
175942                ,p_module   => l_log_module);
175943       END IF;
175944       RAISE;
175945   WHEN OTHERS THEN
175946       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
175947             trace
175948                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
175949                ,p_level    => C_LEVEL_EXCEPTION
175950                ,p_module   => l_log_module);
175951        END IF;
175955 --
175952        xla_exceptions_pkg.raise_message
175953            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_294');
175954 END insert_sources_294;
175956 
175957 ---------------------------------------
175958 --
175959 -- PRIVATE FUNCTION
175960 --         EventType_294
175961 --
175962 ----------------------------------------
175963 --
175964 FUNCTION EventType_294
175965        (p_application_id         IN NUMBER
175966        ,p_base_ledger_id         IN NUMBER
175967        ,p_target_ledger_id       IN NUMBER
175968        ,p_language               IN VARCHAR2
175969        ,p_currency_code          IN VARCHAR2
175970        ,p_sla_ledger_id          IN NUMBER
175971        ,p_pad_start_date         IN DATE
175972        ,p_pad_end_date           IN DATE
175973        ,p_primary_ledger_id      IN NUMBER)
175974 RETURN BOOLEAN IS
175975 --
175976 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PO_RECEIPT_ADJ';
175977 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DELIVER';
175978 
175979 l_calculate_acctd_flag   VARCHAR2(1) :='N';
175980 l_calculate_g_l_flag     VARCHAR2(1) :='N';
175981 --
175982 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175983 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175984 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175985 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175986 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175987 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175988 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175989 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175990 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175991 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175992 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175993 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175994 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175995 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175996 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175997 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175998 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175999 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
176000 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176001 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176002 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176003 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176004 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
176005 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
176006 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
176007 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
176008 
176009 l_event_id                             NUMBER;
176010 l_previous_event_id                    NUMBER;
176011 l_first_event_id                       NUMBER;
176012 l_last_event_id                        NUMBER;
176013 
176014 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
176015 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
176016 --
176017 --
176018 l_result                    BOOLEAN := TRUE;
176019 l_rows                      NUMBER  := 1000;
176020 l_event_type_name           VARCHAR2(80) := 'PO Receipt Adjustment';
176021 l_event_class_name          VARCHAR2(80) := 'Deliver to or Return from Inventory';
176022 l_description               VARCHAR2(4000);
176023 l_transaction_reversal      NUMBER;
176024 l_ae_header_id              NUMBER;
176025 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
176026 l_log_module                VARCHAR2(240);
176027 --
176028 l_acct_reversal_source      VARCHAR2(30);
176029 l_trx_reversal_source       VARCHAR2(30);
176030 
176031 l_continue_with_lines       BOOLEAN := TRUE;
176032 --
176033 l_acc_rev_gl_date_source    DATE;                      -- 4262811
176034 --
176035 type t_array_event_id is table of number index by binary_integer;
176036 
176037 l_rec_array_event                    t_rec_array_event;
176038 l_null_rec_array_event               t_rec_array_event;
176039 l_array_ae_header_id                 xla_number_array_type;
176040 l_actual_flag                        VARCHAR2(1) := NULL;
176041 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
176042 l_balance_type_code                  VARCHAR2(1) :=NULL;
176043 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
176044 
176045 --
176046 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
176047 --
176048 
176049 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
176050 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
176051 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
176052 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
176053 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
176054 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
176055 
176056 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
176057 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
176058 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
176062 l_array_source_6              t_array_source_6;
176059 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
176060 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
176061 
176063 l_array_source_7              t_array_source_7;
176064 l_array_source_8              t_array_source_8;
176065 l_array_source_9              t_array_source_9;
176066 l_array_source_10              t_array_source_10;
176067 l_array_source_12              t_array_source_12;
176068 
176069 l_array_source_1      t_array_source_1;
176070 l_array_source_2      t_array_source_2;
176071 l_array_source_3      t_array_source_3;
176072 l_array_source_5      t_array_source_5;
176073 l_array_source_11      t_array_source_11;
176074 
176075 --
176076 CURSOR header_cur
176077 IS
176078 SELECT /*+ leading(xet) cardinality(xet,1) */
176079 -- Event Type Code: PO_RECEIPT_ADJ
176080 -- Event Class Code: DELIVER
176081     xet.entity_id
176082   , xet.legal_entity_id
176083   , xet.entity_code
176084   , xet.transaction_number
176085   , xet.event_id
176086   , xet.event_class_code
176087   , xet.event_type_code
176088   , xet.event_number
176089   , xet.event_date
176090   , xet.transaction_date
176091   , xet.reference_num_1
176092   , xet.reference_num_2
176093   , xet.reference_num_3
176094   , xet.reference_num_4
176095   , xet.reference_char_1
176096   , xet.reference_char_2
176097   , xet.reference_char_3
176098   , xet.reference_char_4
176099   , xet.reference_date_1
176100   , xet.reference_date_2
176101   , xet.reference_date_3
176102   , xet.reference_date_4
176103   , xet.event_created_by
176104   , xet.budgetary_control_flag 
176105   , h1.ENTITY_CODE    source_6
176106   , h1.CURRENCY_CODE    source_7
176107   , h1.CURRENCY_CONVERSION_DATE    source_8
176108   , h1.CURRENCY_CONVERSION_RATE    source_9
176109   , h1.CURRENCY_CONVERSION_TYPE    source_10
176110   , h1.TRANSACTION_DATE    source_12
176111   FROM xla_events_gt     xet 
176112   , GMF_XLA_EXTRACT_HEADERS  h1
176113  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
176114    and xet.event_type_code = C_EVENT_TYPE_CODE
176115    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
176116 
176117  ORDER BY event_id
176118 ;
176119 
176120 
176121 --
176122 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
176123 IS
176124 SELECT /*+ leading(xet) cardinality(xet,1) */
176125 -- Event Type Code: PO_RECEIPT_ADJ
176126 -- Event Class Code: DELIVER
176127     xet.entity_id
176128    ,xet.legal_entity_id
176129    ,xet.entity_code
176130    ,xet.transaction_number
176131    ,xet.event_id
176132    ,xet.event_class_code
176133    ,xet.event_type_code
176134    ,xet.event_number
176135    ,xet.event_date
176136    ,xet.transaction_date
176137    ,xet.reference_num_1
176138    ,xet.reference_num_2
176139    ,xet.reference_num_3
176140    ,xet.reference_num_4
176141    ,xet.reference_char_1
176142    ,xet.reference_char_2
176143    ,xet.reference_char_3
176144    ,xet.reference_char_4
176145    ,xet.reference_date_1
176146    ,xet.reference_date_2
176147    ,xet.reference_date_3
176148    ,xet.reference_date_4
176149    ,xet.event_created_by
176150    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
176151   , l2.TRANSACTION_ACCOUNT_ID    source_1
176152   , l2.JOURNAL_LINE_TYPE    source_2
176153   , l2.ENTERED_AMOUNT    source_3
176154   , l2.LINE_ID    source_5
176155   , l2.ACCOUNTED_AMOUNT    source_11
176156   FROM xla_events_gt     xet 
176157   , GMF_XLA_EXTRACT_LINES  l2
176158  WHERE xet.event_id between x_first_event_id and x_last_event_id
176159    and xet.event_date between p_pad_start_date and p_pad_end_date
176160    and xet.event_type_code = C_EVENT_TYPE_CODE
176161    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
176162 ;
176163 
176164 --
176165 BEGIN
176166 IF g_log_enabled THEN
176167    l_log_module := C_DEFAULT_MODULE||'.EventType_294';
176168 END IF;
176169 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176170    trace
176171       (p_msg      => 'BEGIN of EventType_294'
176172       ,p_level    => C_LEVEL_PROCEDURE
176173       ,p_module   => l_log_module);
176174 END IF;
176175 
176176 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176177    trace
176178       (p_msg      => 'p_application_id = '||p_application_id||
176179                      ' - p_base_ledger_id = '||p_base_ledger_id||
176180                      ' - p_target_ledger_id  = '||p_target_ledger_id||
176181                      ' - p_language = '||p_language||
176182                      ' - p_currency_code = '||p_currency_code||
176183                      ' - p_sla_ledger_id = '||p_sla_ledger_id
176184       ,p_level    => C_LEVEL_STATEMENT
176185       ,p_module   => l_log_module);
176186 END IF;
176187 --
176188 -- initialze arrays
176189 --
176190 g_array_event.DELETE;
176191 l_rec_array_event := l_null_rec_array_event;
176192 --
176193 --------------------------------------
176194 -- 4262811 Initialze MPA Line Number
176195 --------------------------------------
176196 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
176197 
176198 --
176199 
176200 --
176201 OPEN header_cur;
176202 --
176203 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176204    trace
176205    (p_msg      => 'SQL - FETCH header_cur'
176206    ,p_level    => C_LEVEL_STATEMENT
176207    ,p_module   => l_log_module);
176208 END IF;
176209 --
176210 LOOP
176211 FETCH header_cur BULK COLLECT INTO
176212         l_array_entity_id
176213       , l_array_legal_entity_id
176214       , l_array_entity_code
176215       , l_array_transaction_num
176216       , l_array_event_id
176217       , l_array_class_code
176218       , l_array_event_type
176219       , l_array_event_number
176223       , l_array_reference_num_2
176220       , l_array_event_date
176221       , l_array_transaction_date
176222       , l_array_reference_num_1
176224       , l_array_reference_num_3
176225       , l_array_reference_num_4
176226       , l_array_reference_char_1
176227       , l_array_reference_char_2
176228       , l_array_reference_char_3
176229       , l_array_reference_char_4
176230       , l_array_reference_date_1
176231       , l_array_reference_date_2
176232       , l_array_reference_date_3
176233       , l_array_reference_date_4
176234       , l_array_event_created_by
176235       , l_array_budgetary_control_flag 
176236       , l_array_source_6
176237       , l_array_source_7
176238       , l_array_source_8
176239       , l_array_source_9
176240       , l_array_source_10
176241       , l_array_source_12
176242       LIMIT l_rows;
176243 --
176244 IF (C_LEVEL_EVENT >= g_log_level) THEN
176245    trace
176246    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
176247    ,p_level    => C_LEVEL_EVENT
176248    ,p_module   => l_log_module);
176249 END IF;
176250 --
176251 EXIT WHEN l_array_entity_id.COUNT = 0;
176252 
176253 -- initialize arrays
176254 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
176255 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
176256 
176257 --
176258 -- Bug 4458708
176259 --
176260 XLA_AE_LINES_PKG.g_LineNumber := 0;
176261 
176262 
176263 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
176264 g_last_hdr_idx := l_array_event_id.LAST;
176265 --
176266 -- loop for the headers. Each iteration is for each header extract row
176267 -- fetched in header cursor
176268 --
176269 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
176270 
176271 --
176272 -- set event info as cache for other routines to refer event attributes
176273 --
176274 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
176275    (p_application_id           => p_application_id
176276    ,p_primary_ledger_id        => p_primary_ledger_id
176277    ,p_base_ledger_id           => p_base_ledger_id
176278    ,p_target_ledger_id         => p_target_ledger_id
176279    ,p_entity_id                => l_array_entity_id(hdr_idx)
176280    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
176281    ,p_entity_code              => l_array_entity_code(hdr_idx)
176282    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
176283    ,p_event_id                 => l_array_event_id(hdr_idx)
176284    ,p_event_class_code         => l_array_class_code(hdr_idx)
176285    ,p_event_type_code          => l_array_event_type(hdr_idx)
176286    ,p_event_number             => l_array_event_number(hdr_idx)
176287    ,p_event_date               => l_array_event_date(hdr_idx)
176288    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
176289    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
176290    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
176291    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
176292    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
176293    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
176294    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
176295    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
176296    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
176297    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
176298    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
176299    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
176300    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
176301    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
176302    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
176303 
176304 --
176305 -- set the status of entry to C_VALID (0)
176306 --
176307 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
176308 
176309 --
176310 -- initialize a row for ae header
176311 --
176312 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
176313 
176314 l_event_id := l_array_event_id(hdr_idx);
176315 
176316 --
176317 -- storing the hdr_idx for event. May be used by line cursor.
176318 --
176319 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
176320 
176321 --
176322 -- store sources from header extract. This can be improved to
176323 -- store only those sources from header extract that may be used in lines
176324 --
176325 
176326 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
176327 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
176328 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
176329 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
176330 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
176331 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
176332 
176333 --
176334 -- initilaize the status of ae headers for diffrent balance types
176335 -- the status is initialised to C_NOT_CREATED (2)
176336 --
176337 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
176338 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
176339 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
176340 
176341 --
176342 -- call api to validate and store accounting attributes for header
176343 --
176344 
176345 ------------------------------------------------------------
176346 -- Accrual Reversal : to get date for Standard Source (NONE)
176347 ------------------------------------------------------------
176348 l_acc_rev_gl_date_source := NULL;
176349 
176353 
176350      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
176351       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
176352 
176354 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
176355 
176356 XLA_AE_HEADER_PKG.SetJeCategoryName;
176357 
176358 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
176359 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
176360 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
176361 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
176362 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
176363 
176364 
176365 -- No header level analytical criteria
176366 
176367 --
176368 --accounting attribute enhancement, bug 3612931
176369 --
176370 l_trx_reversal_source := SUBSTR(NULL, 1,30);
176371 
176372 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
176373    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
176374 
176375    xla_accounting_err_pkg.build_message
176376       (p_appli_s_name            => 'XLA'
176377       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
176378       ,p_token_1                 => 'ACCT_ATTR_NAME'
176379       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
176380       ,p_token_2                 => 'PRODUCT_NAME'
176381       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
176382       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
176383       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
176384       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
176385 
176386 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
176387    --
176388    -- following sets the accounting attributes needed to reverse
176389    -- accounting for a distributeion
176390    --
176391    xla_ae_lines_pkg.SetTrxReversalAttrs
176392       (p_event_id              => l_event_id
176393       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
176394       ,p_trx_reversal_source   => l_trx_reversal_source);
176395 
176396 END IF;
176397 
176398 
176399 ----------------------------------------------------------------
176400 -- 4262811 -  update the header statuses to invalid in need be
176401 ----------------------------------------------------------------
176402 --
176403 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
176404 
176405 
176406   -----------------------------------------------
176407   -- No accrual reversal for the event class/type
176408   -----------------------------------------------
176409 ----------------------------------------------------------------
176410 
176411 --
176412 -- this ends the header loop iteration for one bulk fetch
176413 --
176414 END LOOP;
176415 
176416 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
176417 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
176418 
176419 --
176420 -- insert dummy rows into lines gt table that were created due to
176421 -- transaction reversals
176422 --
176423 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
176424    l_result := XLA_AE_LINES_PKG.InsertLines;
176425 END IF;
176426 
176427 --
176428 -- reset the temp_line_num for each set of events fetched from header
176429 -- cursor rather than doing it for each new event in line cursor
176430 -- Bug 3939231
176431 --
176432 xla_ae_lines_pkg.g_temp_line_num := 0;
176433 
176434 
176435 
176436 --
176437 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
176438 --
176439 --
176440 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176441 
176442       trace
176443          (p_msg      => 'SQL - FETCH line_cur'
176444          ,p_level    => C_LEVEL_STATEMENT
176445          ,p_module   => l_log_module);
176446 
176447 END IF;
176448 --
176449 --
176450 LOOP
176451   --
176452   FETCH line_cur BULK COLLECT INTO
176453         l_array_entity_id
176454       , l_array_legal_entity_id
176455       , l_array_entity_code
176456       , l_array_transaction_num
176457       , l_array_event_id
176458       , l_array_class_code
176459       , l_array_event_type
176460       , l_array_event_number
176461       , l_array_event_date
176462       , l_array_transaction_date
176463       , l_array_reference_num_1
176464       , l_array_reference_num_2
176465       , l_array_reference_num_3
176466       , l_array_reference_num_4
176467       , l_array_reference_char_1
176468       , l_array_reference_char_2
176469       , l_array_reference_char_3
176470       , l_array_reference_char_4
176471       , l_array_reference_date_1
176472       , l_array_reference_date_2
176473       , l_array_reference_date_3
176474       , l_array_reference_date_4
176475       , l_array_event_created_by
176476       , l_array_budgetary_control_flag
176477       , l_array_extract_line_num 
176478       , l_array_source_1
176479       , l_array_source_2
176480       , l_array_source_3
176481       , l_array_source_5
176482       , l_array_source_11
176483       LIMIT l_rows;
176484 
176485   --
176486   IF (C_LEVEL_EVENT >= g_log_level) THEN
176487             trace
176488                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
176489                ,p_level    => C_LEVEL_EVENT
176490                ,p_module   => l_log_module);
176491   END IF;
176492   --
176493   EXIT WHEN l_array_entity_id.count = 0;
176494 
176495   XLA_AE_LINES_PKG.g_rec_lines := null;
176496 
176497 --
176498 -- Bug 4458708
176502 --
176499 --
176500 XLA_AE_LINES_PKG.g_LineNumber := 0;
176501 --
176503 
176504 FOR Idx IN 1..l_array_event_id.count LOOP
176505    --
176506    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
176507    --
176508    l_event_id := l_array_event_id(idx);  -- 5648433
176509 
176510    --
176511    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
176512    --
176513 
176514    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
176515              (g_array_event(l_event_id).array_value_num('header_index'))
176516          ,'N'
176517          ) <> 'Y'
176518    THEN
176519       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176520          trace
176521             (p_msg      => 'Trancaction revesal option is not Y '
176522             ,p_level    => C_LEVEL_STATEMENT
176523             ,p_module   => l_log_module);
176524       END IF;
176525 
176526 --
176527 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
176528 --
176529 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
176530 --
176531 -- set event info as cache for other routines to refer event attributes
176532 --
176533 
176534 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
176535    l_previous_event_id := l_event_id;
176536 
176537    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
176538       (p_application_id           => p_application_id
176539       ,p_primary_ledger_id        => p_primary_ledger_id
176540       ,p_base_ledger_id           => p_base_ledger_id
176541       ,p_target_ledger_id         => p_target_ledger_id
176542       ,p_entity_id                => l_array_entity_id(Idx)
176543       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
176544       ,p_entity_code              => l_array_entity_code(Idx)
176545       ,p_transaction_num          => l_array_transaction_num(Idx)
176546       ,p_event_id                 => l_array_event_id(Idx)
176547       ,p_event_class_code         => l_array_class_code(Idx)
176548       ,p_event_type_code          => l_array_event_type(Idx)
176549       ,p_event_number             => l_array_event_number(Idx)
176550       ,p_event_date               => l_array_event_date(Idx)
176551       ,p_transaction_date         => l_array_transaction_date(Idx)
176552       ,p_reference_num_1          => l_array_reference_num_1(Idx)
176553       ,p_reference_num_2          => l_array_reference_num_2(Idx)
176554       ,p_reference_num_3          => l_array_reference_num_3(Idx)
176555       ,p_reference_num_4          => l_array_reference_num_4(Idx)
176556       ,p_reference_char_1         => l_array_reference_char_1(Idx)
176557       ,p_reference_char_2         => l_array_reference_char_2(Idx)
176558       ,p_reference_char_3         => l_array_reference_char_3(Idx)
176559       ,p_reference_char_4         => l_array_reference_char_4(Idx)
176560       ,p_reference_date_1         => l_array_reference_date_1(Idx)
176561       ,p_reference_date_2         => l_array_reference_date_2(Idx)
176562       ,p_reference_date_3         => l_array_reference_date_3(Idx)
176563       ,p_reference_date_4         => l_array_reference_date_4(Idx)
176564       ,p_event_created_by         => l_array_event_created_by(Idx)
176565       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
176566        --
176567 END IF;
176568 
176569 
176570 
176571 --
176572 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
176573 
176574 l_acct_reversal_source := SUBSTR(NULL, 1,30);
176575 
176576 IF l_continue_with_lines THEN
176577    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
176578       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
176579 
176580       xla_accounting_err_pkg.build_message
176581          (p_appli_s_name            => 'XLA'
176582          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
176583          ,p_token_1                 => 'LINE_NUMBER'
176584          ,p_value_1                 => l_array_extract_line_num(Idx)
176585          ,p_token_2                 => 'PRODUCT_NAME'
176586          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
176587          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
176588          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
176589          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
176590 
176591    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
176592       --
176593       -- following sets the accounting attributes needed to reverse
176594       -- accounting for a distributeion
176595       --
176596 
176597       --
176598       -- 5217187
176599       --
176600       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
176601       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
176602                                        g_array_event(l_event_id).array_value_num('header_index'));
176603       --
176604       --
176605 
176606       -- No reversal code generated
176607 
176608       xla_ae_lines_pkg.SetAcctReversalAttrs
176609          (p_event_id             => l_event_id
176610          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
176611          ,p_calculate_acctd_flag => l_calculate_acctd_flag
176612          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
176613    END IF;
176614 
176615    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
176616        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
176617 
176618 --
176619 AcctLineType_45 (
176620  p_application_id  => p_application_id
176621  ,p_event_id     => l_event_id
176622  ,p_calculate_acctd_flag => l_calculate_acctd_flag
176623  ,p_calculate_g_l_flag => l_calculate_g_l_flag
176624  ,p_actual_flag => l_actual_flag
176625  ,p_balance_type_code => l_balance_type_code
176626  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176627  
176631  , p_source_5 => l_array_source_5(Idx)
176628  , p_source_1 => l_array_source_1(Idx)
176629  , p_source_2 => l_array_source_2(Idx)
176630  , p_source_3 => l_array_source_3(Idx)
176632  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
176633  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
176634  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
176635  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
176636  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
176637  , p_source_11 => l_array_source_11(Idx)
176638  );
176639 If(l_balance_type_code = 'A') THEN
176640   l_actual_gain_loss_ref := l_gain_or_loss_ref;
176641 END IF;
176642 
176643 --
176644 
176645 
176646 --
176647 AcctLineType_55 (
176648  p_application_id  => p_application_id
176649  ,p_event_id     => l_event_id
176650  ,p_calculate_acctd_flag => l_calculate_acctd_flag
176651  ,p_calculate_g_l_flag => l_calculate_g_l_flag
176652  ,p_actual_flag => l_actual_flag
176653  ,p_balance_type_code => l_balance_type_code
176654  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176655  
176656  , p_source_1 => l_array_source_1(Idx)
176657  , p_source_2 => l_array_source_2(Idx)
176658  , p_source_3 => l_array_source_3(Idx)
176659  , p_source_5 => l_array_source_5(Idx)
176660  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
176661  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
176662  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
176663  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
176664  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
176665  , p_source_11 => l_array_source_11(Idx)
176666  );
176667 If(l_balance_type_code = 'A') THEN
176668   l_actual_gain_loss_ref := l_gain_or_loss_ref;
176669 END IF;
176670 
176671 --
176672 
176673 
176674 --
176675 AcctLineType_102 (
176676  p_application_id  => p_application_id
176677  ,p_event_id     => l_event_id
176678  ,p_calculate_acctd_flag => l_calculate_acctd_flag
176679  ,p_calculate_g_l_flag => l_calculate_g_l_flag
176680  ,p_actual_flag => l_actual_flag
176681  ,p_balance_type_code => l_balance_type_code
176682  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176683  
176684  , p_source_1 => l_array_source_1(Idx)
176685  , p_source_2 => l_array_source_2(Idx)
176686  , p_source_3 => l_array_source_3(Idx)
176687  , p_source_5 => l_array_source_5(Idx)
176688  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
176689  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
176690  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
176691  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
176692  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
176693  , p_source_11 => l_array_source_11(Idx)
176694  );
176695 If(l_balance_type_code = 'A') THEN
176696   l_actual_gain_loss_ref := l_gain_or_loss_ref;
176697 END IF;
176698 
176699 --
176700 
176701 
176702 --
176703 AcctLineType_155 (
176704  p_application_id  => p_application_id
176705  ,p_event_id     => l_event_id
176706  ,p_calculate_acctd_flag => l_calculate_acctd_flag
176707  ,p_calculate_g_l_flag => l_calculate_g_l_flag
176708  ,p_actual_flag => l_actual_flag
176709  ,p_balance_type_code => l_balance_type_code
176710  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176711  
176712  , p_source_1 => l_array_source_1(Idx)
176713  , p_source_2 => l_array_source_2(Idx)
176714  , p_source_3 => l_array_source_3(Idx)
176715  , p_source_5 => l_array_source_5(Idx)
176716  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
176717  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
176718  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
176719  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
176720  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
176721  , p_source_11 => l_array_source_11(Idx)
176722  );
176723 If(l_balance_type_code = 'A') THEN
176724   l_actual_gain_loss_ref := l_gain_or_loss_ref;
176725 END IF;
176726 
176727 --
176728 
176729 
176730 --
176731 AcctLineType_198 (
176732  p_application_id  => p_application_id
176733  ,p_event_id     => l_event_id
176734  ,p_calculate_acctd_flag => l_calculate_acctd_flag
176735  ,p_calculate_g_l_flag => l_calculate_g_l_flag
176736  ,p_actual_flag => l_actual_flag
176737  ,p_balance_type_code => l_balance_type_code
176738  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176739  
176740  , p_source_1 => l_array_source_1(Idx)
176741  , p_source_2 => l_array_source_2(Idx)
176742  , p_source_3 => l_array_source_3(Idx)
176743  , p_source_5 => l_array_source_5(Idx)
176744  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
176745  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
176746  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
176747  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
176748  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
176749  , p_source_11 => l_array_source_11(Idx)
176750  );
176751 If(l_balance_type_code = 'A') THEN
176752   l_actual_gain_loss_ref := l_gain_or_loss_ref;
176753 END IF;
176754 
176755 --
176756 
176757 
176758 --
176759 AcctLineType_227 (
176760  p_application_id  => p_application_id
176761  ,p_event_id     => l_event_id
176762  ,p_calculate_acctd_flag => l_calculate_acctd_flag
176763  ,p_calculate_g_l_flag => l_calculate_g_l_flag
176764  ,p_actual_flag => l_actual_flag
176765  ,p_balance_type_code => l_balance_type_code
176766  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176767  
176768  , p_source_1 => l_array_source_1(Idx)
176769  , p_source_2 => l_array_source_2(Idx)
176770  , p_source_3 => l_array_source_3(Idx)
176774  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
176771  , p_source_5 => l_array_source_5(Idx)
176772  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
176773  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
176775  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
176776  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
176777  , p_source_11 => l_array_source_11(Idx)
176778  );
176779 If(l_balance_type_code = 'A') THEN
176780   l_actual_gain_loss_ref := l_gain_or_loss_ref;
176781 END IF;
176782 
176783 --
176784 
176785       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
176786       -- or secondary ledger that has different currency with primary
176787       -- or alc that is calculated by sla
176788       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
176789             (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'))
176790 
176791 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
176792 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
176793           AND (l_actual_flag = 'A')) THEN
176794         XLA_AE_LINES_PKG.CreateGainOrLossLines(
176795           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
176796          ,p_application_id   => p_application_id
176797          ,p_amb_context_code => 'DEFAULT'
176798          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
176799          ,p_event_class_code => C_EVENT_CLASS_CODE
176800          ,p_event_type_code  => C_EVENT_TYPE_CODE
176801          
176802          ,p_gain_ccid        => -1
176803          ,p_loss_ccid        => -1
176804 
176805          ,p_actual_flag      => l_actual_flag
176806          ,p_enc_flag         => null
176807          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
176808          ,p_enc_g_l_ref      => null
176809          );
176810       END IF;
176811    END IF;
176812 END IF;
176813 
176814    ELSE
176815       --
176816       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
176817       --
176818       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176819          trace
176820             (p_msg      => 'Trancaction revesal option is Y'
176821             ,p_level    => C_LEVEL_STATEMENT
176822             ,p_module   => l_log_module);
176823       END IF;
176824    END IF;
176825 
176826 END LOOP;
176827 l_result := XLA_AE_LINES_PKG.InsertLines ;
176828 end loop;
176829 close line_cur;
176830 
176831 
176832 --
176833 -- insert headers into xla_ae_headers_gt table
176834 --
176835 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
176836 
176837 -- insert into errors table here.
176838 
176839 END LOOP;
176840 
176841 --
176842 -- 4865292
176843 --
176844 -- Compare g_hdr_extract_count with event count in
176845 -- CreateHeadersAndLines.
176846 --
176847 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
176848 
176849 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176850    trace (p_msg     => '# rows extracted from header extract objects '
176851                     || ' (running total): '
176852                     || g_hdr_extract_count
176853          ,p_level   => C_LEVEL_STATEMENT
176854          ,p_module  => l_log_module);
176855 END IF;
176856 
176857 CLOSE header_cur;
176858 --
176859 
176860 --
176861 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176862    trace
176863       (p_msg      => 'END of EventType_294'
176864       ,p_level    => C_LEVEL_PROCEDURE
176865       ,p_module   => l_log_module);
176866 END IF;
176867 --
176868 RETURN l_result;
176869 EXCEPTION
176870 WHEN xla_exceptions_pkg.application_exception THEN
176871    
176872 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
176873 
176874    
176875 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
176876 
176877    RAISE;
176878 
176879 WHEN NO_DATA_FOUND THEN
176880 
176881 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
176882 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
176883 
176884 FOR header_record IN header_cur
176885 LOOP
176886     l_array_header_events(header_record.event_id) := header_record.event_id;
176887 END LOOP;
176888 
176889 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
176890 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
176891 
176892 fnd_file.put_line(fnd_file.LOG, '                    ');
176893 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
176894 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
176895 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
176896 
176897 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
176898 LOOP
176899 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
176900 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
176901         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
176902 	END IF;
176903 END LOOP;
176904 
176905 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
176906 fnd_file.put_line(fnd_file.LOG, '                    ');
176907 
176908 
176909 xla_exceptions_pkg.raise_message
176910       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_294');
176911 
176912 
176913 WHEN OTHERS THEN
176914    xla_exceptions_pkg.raise_message
176915       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_294');
176916 END EventType_294;
176920 --
176917 --
176918 
176919 ---------------------------------------
176921 -- PRIVATE PROCEDURE
176922 --         insert_sources_295
176923 --
176924 ----------------------------------------
176925 --
176926 PROCEDURE insert_sources_295(
176927                                 p_target_ledger_id       IN NUMBER
176928                               , p_language               IN VARCHAR2
176929                               , p_sla_ledger_id          IN NUMBER
176930                               , p_pad_start_date         IN DATE
176931                               , p_pad_end_date           IN DATE
176932                          )
176933 IS
176934 
176935 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RECEIVE';
176936 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RECEIVE';
176937 p_apps_owner                   VARCHAR2(30);
176938 l_log_module                   VARCHAR2(240);
176939 BEGIN
176940 IF g_log_enabled THEN
176941       l_log_module := C_DEFAULT_MODULE||'.insert_sources_295';
176942 END IF;
176943 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176944 
176945       trace
176946          (p_msg      => 'BEGIN of insert_sources_295'
176947          ,p_level    => C_LEVEL_PROCEDURE
176948          ,p_module   => l_log_module);
176949 
176950 END IF;
176951 
176952 -- select APPS owner
176953 SELECT oracle_username
176954   INTO p_apps_owner
176955   FROM fnd_oracle_userid
176956  WHERE read_only_flag = 'U'
176957 ;
176958 
176959 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176960       trace
176961          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
176962                         ' - p_language = '||p_language||
176963                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
176964                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
176965                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
176966                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
176967          ,p_level    => C_LEVEL_STATEMENT
176968          ,p_module   => l_log_module);
176969 END IF;
176970 
176971 
176972 --
176973 INSERT INTO xla_diag_sources --hdr1
176974 (
176975         event_id
176976       , ledger_id
176977       , sla_ledger_id
176978       , description_language
176979       , object_name
176980       , object_type_code
176981       , line_number
176982       , source_application_id
176983       , source_type_code
176984       , source_code
176985       , source_value
176986       , source_meaning
176987       , created_by
176988       , creation_date
176989       , last_update_date
176990       , last_updated_by
176991       , last_update_login
176992       , program_update_date
176993       , program_application_id
176994       , program_id
176995       , request_id
176996 )
176997 SELECT
176998         event_id
176999       , p_target_ledger_id
177000       , p_sla_ledger_id
177001       , p_language
177002       , object_name
177003       , object_type_code
177004       , line_number
177005       , source_application_id
177006       , source_type_code
177007       , source_code
177008       , SUBSTR(source_value ,1,1996)
177009       , SUBSTR(source_meaning,1,200)
177010       , xla_environment_pkg.g_Usr_Id
177011       , TRUNC(SYSDATE)
177012       , TRUNC(SYSDATE)
177013       , xla_environment_pkg.g_Usr_Id
177014       , xla_environment_pkg.g_Login_Id
177015       , TRUNC(SYSDATE)
177016       , xla_environment_pkg.g_Prog_Appl_Id
177017       , xla_environment_pkg.g_Prog_Id
177018       , xla_environment_pkg.g_Req_Id
177019   FROM (
177020        SELECT xet.event_id                  event_id
177021             , 0                             line_number
177022             , CASE r
177023                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
177024                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
177025                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
177026                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
177027                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
177028                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
177029                 
177030                ELSE null
177031               END                           object_name
177032             , CASE r
177033                 WHEN 1 THEN 'HEADER' 
177034                 WHEN 2 THEN 'HEADER' 
177035                 WHEN 3 THEN 'HEADER' 
177036                 WHEN 4 THEN 'HEADER' 
177037                 WHEN 5 THEN 'HEADER' 
177038                 WHEN 6 THEN 'HEADER' 
177039                 
177040                 ELSE null
177041               END                           object_type_code
177042             , CASE r
177043                 WHEN 1 THEN '555' 
177044                 WHEN 2 THEN '555' 
177045                 WHEN 3 THEN '555' 
177046                 WHEN 4 THEN '555' 
177047                 WHEN 5 THEN '555' 
177048                 WHEN 6 THEN '555' 
177049                 
177050                 ELSE null
177051               END                           source_application_id
177052             , 'S'             source_type_code
177053             , CASE r
177054                 WHEN 1 THEN 'ENTITY_CODE' 
177055                 WHEN 2 THEN 'CURRENCY_CODE' 
177056                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
177057                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
177058                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
177059                 WHEN 6 THEN 'TRANSACTION_DATE' 
177060                 
177061                 ELSE null
177062               END                           source_code
177063             , CASE r
177064                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
177065                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
177066                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
177067                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
177071                 ELSE null
177068                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
177069                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
177070                 
177072               END                           source_value
177073             , CASE r
177074                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
177075                           1010186
177076                          ,TO_CHAR(h1.CURRENCY_CODE)
177077                          ,'CURRENCY_CODE'
177078                          ,'S'
177079                          ,555)
177080                 
177081                 ELSE null
177082               END               source_meaning
177083         FROM xla_events_gt     xet  
177084       , GMF_XLA_EXTRACT_HEADERS  h1
177085             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
177086        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
177087          AND xet.event_type_code = C_EVENT_TYPE_CODE
177088             AND h1.event_id = xet.event_id
177089 
177090 )
177091 ;
177092 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177093 
177094       trace
177095          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
177096          ,p_level    => C_LEVEL_STATEMENT
177097          ,p_module   => l_log_module);
177098 
177099 END IF;
177100 --
177101 
177102 
177103 
177104 --
177105 INSERT INTO xla_diag_sources --line1
177106 (
177107         event_id
177108       , ledger_id
177109       , sla_ledger_id
177110       , description_language
177111       , object_name
177112       , object_type_code
177113       , line_number
177114       , source_application_id
177115       , source_type_code
177116       , source_code
177117       , source_value
177118       , source_meaning
177119       , created_by
177120       , creation_date
177121       , last_update_date
177122       , last_updated_by
177123       , last_update_login
177124       , program_update_date
177125       , program_application_id
177126       , program_id
177127       , request_id
177128 )
177129 SELECT  event_id
177130       , p_target_ledger_id
177131       , p_sla_ledger_id
177132       , p_language
177133       , object_name
177134       , object_type_code
177135       , line_number
177136       , source_application_id
177137       , source_type_code
177138       , source_code
177139       , SUBSTR(source_value,1,1996)
177140       , SUBSTR(source_meaning,1,200)
177141       , xla_environment_pkg.g_Usr_Id
177142       , TRUNC(SYSDATE)
177143       , TRUNC(SYSDATE)
177144       , xla_environment_pkg.g_Usr_Id
177145       , xla_environment_pkg.g_Login_Id
177146       , TRUNC(SYSDATE)
177147       , xla_environment_pkg.g_Prog_Appl_Id
177148       , xla_environment_pkg.g_Prog_Id
177149       , xla_environment_pkg.g_Req_Id
177150   FROM (
177151        SELECT xet.event_id                  event_id
177152             , l2.line_number                 line_number
177153             , CASE r
177154                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
177155                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
177156                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
177157                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
177158                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
177159                 
177160                ELSE null
177161               END                           object_name
177162             , CASE r
177163                 WHEN 1 THEN 'LINE' 
177164                 WHEN 2 THEN 'LINE' 
177165                 WHEN 3 THEN 'LINE' 
177166                 WHEN 4 THEN 'LINE' 
177167                 WHEN 5 THEN 'LINE' 
177168                 
177169                 ELSE null
177170               END                           object_type_code
177171             , CASE r
177172                 WHEN 1 THEN '555' 
177173                 WHEN 2 THEN '555' 
177174                 WHEN 3 THEN '555' 
177175                 WHEN 4 THEN '555' 
177176                 WHEN 5 THEN '555' 
177177                 
177178                 ELSE null
177179               END                           source_application_id
177180             , 'S'             source_type_code
177181             , CASE r
177182                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
177183                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
177184                 WHEN 3 THEN 'ENTERED_AMOUNT' 
177185                 WHEN 4 THEN 'LINE_ID' 
177186                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
177187                 
177188                 ELSE null
177189               END                           source_code
177190             , CASE r
177191                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
177192                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
177193                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
177194                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
177195                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
177196                 
177197                 ELSE null
177198               END                           source_value
177199             , null              source_meaning
177200          FROM  xla_events_gt     xet  
177201         , GMF_XLA_EXTRACT_LINES  l2
177202             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
177203         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
177204           AND xet.event_type_code = C_EVENT_TYPE_CODE
177205             AND l2.event_id          = xet.event_id
177206 
177207 )
177208 ;
177209 --
177210 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177211 
177212       trace
177213          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
177214          ,p_level    => C_LEVEL_STATEMENT
177215          ,p_module   => l_log_module);
177216 
177217 END IF;
177218 
177219 
177223          ,p_level    => C_LEVEL_PROCEDURE
177220 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
177221       trace
177222          (p_msg      => 'END of insert_sources_295'
177224          ,p_module   => l_log_module);
177225 END IF;
177226 EXCEPTION
177227   WHEN xla_exceptions_pkg.application_exception THEN
177228       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
177229             trace
177230                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
177231                ,p_level    => C_LEVEL_EXCEPTION
177232                ,p_module   => l_log_module);
177233       END IF;
177234       RAISE;
177235   WHEN OTHERS THEN
177236       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
177237             trace
177238                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
177239                ,p_level    => C_LEVEL_EXCEPTION
177240                ,p_module   => l_log_module);
177241        END IF;
177242        xla_exceptions_pkg.raise_message
177243            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_295');
177244 END insert_sources_295;
177245 --
177246 
177247 ---------------------------------------
177248 --
177249 -- PRIVATE FUNCTION
177250 --         EventType_295
177251 --
177252 ----------------------------------------
177253 --
177254 FUNCTION EventType_295
177255        (p_application_id         IN NUMBER
177256        ,p_base_ledger_id         IN NUMBER
177257        ,p_target_ledger_id       IN NUMBER
177258        ,p_language               IN VARCHAR2
177259        ,p_currency_code          IN VARCHAR2
177260        ,p_sla_ledger_id          IN NUMBER
177261        ,p_pad_start_date         IN DATE
177262        ,p_pad_end_date           IN DATE
177263        ,p_primary_ledger_id      IN NUMBER)
177264 RETURN BOOLEAN IS
177265 --
177266 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RECEIVE';
177267 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RECEIVE';
177268 
177269 l_calculate_acctd_flag   VARCHAR2(1) :='N';
177270 l_calculate_g_l_flag     VARCHAR2(1) :='N';
177271 --
177272 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177273 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177274 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
177275 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177276 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177277 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
177278 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
177279 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177280 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177281 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177282 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177283 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177284 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177285 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177286 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177287 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177288 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177289 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177290 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177291 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177292 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177293 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177294 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
177295 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
177296 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
177297 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
177298 
177299 l_event_id                             NUMBER;
177300 l_previous_event_id                    NUMBER;
177301 l_first_event_id                       NUMBER;
177302 l_last_event_id                        NUMBER;
177303 
177304 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
177305 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
177306 --
177307 --
177308 l_result                    BOOLEAN := TRUE;
177309 l_rows                      NUMBER  := 1000;
177310 l_event_type_name           VARCHAR2(80) := 'Receive to Inspection';
177311 l_event_class_name          VARCHAR2(80) := 'Receiving';
177312 l_description               VARCHAR2(4000);
177313 l_transaction_reversal      NUMBER;
177314 l_ae_header_id              NUMBER;
177315 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
177316 l_log_module                VARCHAR2(240);
177317 --
177318 l_acct_reversal_source      VARCHAR2(30);
177319 l_trx_reversal_source       VARCHAR2(30);
177320 
177321 l_continue_with_lines       BOOLEAN := TRUE;
177322 --
177323 l_acc_rev_gl_date_source    DATE;                      -- 4262811
177324 --
177325 type t_array_event_id is table of number index by binary_integer;
177326 
177327 l_rec_array_event                    t_rec_array_event;
177328 l_null_rec_array_event               t_rec_array_event;
177329 l_array_ae_header_id                 xla_number_array_type;
177330 l_actual_flag                        VARCHAR2(1) := NULL;
177331 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
177332 l_balance_type_code                  VARCHAR2(1) :=NULL;
177333 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
177334 
177335 --
177336 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
177337 --
177338 
177342 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
177339 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
177340 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
177341 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
177343 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
177344 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
177345 
177346 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
177347 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
177348 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
177349 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
177350 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
177351 
177352 l_array_source_6              t_array_source_6;
177353 l_array_source_7              t_array_source_7;
177354 l_array_source_8              t_array_source_8;
177355 l_array_source_9              t_array_source_9;
177356 l_array_source_10              t_array_source_10;
177357 l_array_source_12              t_array_source_12;
177358 
177359 l_array_source_1      t_array_source_1;
177360 l_array_source_2      t_array_source_2;
177361 l_array_source_3      t_array_source_3;
177362 l_array_source_5      t_array_source_5;
177363 l_array_source_11      t_array_source_11;
177364 
177365 --
177366 CURSOR header_cur
177367 IS
177368 SELECT /*+ leading(xet) cardinality(xet,1) */
177369 -- Event Type Code: RECEIVE
177370 -- Event Class Code: RECEIVE
177371     xet.entity_id
177372   , xet.legal_entity_id
177373   , xet.entity_code
177374   , xet.transaction_number
177375   , xet.event_id
177376   , xet.event_class_code
177377   , xet.event_type_code
177378   , xet.event_number
177379   , xet.event_date
177380   , xet.transaction_date
177381   , xet.reference_num_1
177382   , xet.reference_num_2
177383   , xet.reference_num_3
177384   , xet.reference_num_4
177385   , xet.reference_char_1
177386   , xet.reference_char_2
177387   , xet.reference_char_3
177388   , xet.reference_char_4
177389   , xet.reference_date_1
177390   , xet.reference_date_2
177391   , xet.reference_date_3
177392   , xet.reference_date_4
177393   , xet.event_created_by
177394   , xet.budgetary_control_flag 
177395   , h1.ENTITY_CODE    source_6
177396   , h1.CURRENCY_CODE    source_7
177397   , h1.CURRENCY_CONVERSION_DATE    source_8
177398   , h1.CURRENCY_CONVERSION_RATE    source_9
177399   , h1.CURRENCY_CONVERSION_TYPE    source_10
177400   , h1.TRANSACTION_DATE    source_12
177401   FROM xla_events_gt     xet 
177402   , GMF_XLA_EXTRACT_HEADERS  h1
177403  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
177404    and xet.event_type_code = C_EVENT_TYPE_CODE
177405    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
177406 
177407  ORDER BY event_id
177408 ;
177409 
177410 
177411 --
177412 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
177413 IS
177414 SELECT /*+ leading(xet) cardinality(xet,1) */
177415 -- Event Type Code: RECEIVE
177416 -- Event Class Code: RECEIVE
177417     xet.entity_id
177418    ,xet.legal_entity_id
177419    ,xet.entity_code
177420    ,xet.transaction_number
177421    ,xet.event_id
177422    ,xet.event_class_code
177423    ,xet.event_type_code
177424    ,xet.event_number
177425    ,xet.event_date
177426    ,xet.transaction_date
177427    ,xet.reference_num_1
177428    ,xet.reference_num_2
177429    ,xet.reference_num_3
177430    ,xet.reference_num_4
177431    ,xet.reference_char_1
177432    ,xet.reference_char_2
177433    ,xet.reference_char_3
177434    ,xet.reference_char_4
177435    ,xet.reference_date_1
177436    ,xet.reference_date_2
177437    ,xet.reference_date_3
177438    ,xet.reference_date_4
177439    ,xet.event_created_by
177440    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
177441   , l2.TRANSACTION_ACCOUNT_ID    source_1
177442   , l2.JOURNAL_LINE_TYPE    source_2
177443   , l2.ENTERED_AMOUNT    source_3
177444   , l2.LINE_ID    source_5
177445   , l2.ACCOUNTED_AMOUNT    source_11
177446   FROM xla_events_gt     xet 
177447   , GMF_XLA_EXTRACT_LINES  l2
177448  WHERE xet.event_id between x_first_event_id and x_last_event_id
177449    and xet.event_date between p_pad_start_date and p_pad_end_date
177450    and xet.event_type_code = C_EVENT_TYPE_CODE
177451    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
177452 ;
177453 
177454 --
177455 BEGIN
177456 IF g_log_enabled THEN
177457    l_log_module := C_DEFAULT_MODULE||'.EventType_295';
177458 END IF;
177459 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
177460    trace
177461       (p_msg      => 'BEGIN of EventType_295'
177462       ,p_level    => C_LEVEL_PROCEDURE
177463       ,p_module   => l_log_module);
177464 END IF;
177465 
177466 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177467    trace
177468       (p_msg      => 'p_application_id = '||p_application_id||
177469                      ' - p_base_ledger_id = '||p_base_ledger_id||
177470                      ' - p_target_ledger_id  = '||p_target_ledger_id||
177471                      ' - p_language = '||p_language||
177472                      ' - p_currency_code = '||p_currency_code||
177473                      ' - p_sla_ledger_id = '||p_sla_ledger_id
177474       ,p_level    => C_LEVEL_STATEMENT
177475       ,p_module   => l_log_module);
177476 END IF;
177477 --
177478 -- initialze arrays
177479 --
177480 g_array_event.DELETE;
177484 -- 4262811 Initialze MPA Line Number
177481 l_rec_array_event := l_null_rec_array_event;
177482 --
177483 --------------------------------------
177485 --------------------------------------
177486 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
177487 
177488 --
177489 
177490 --
177491 OPEN header_cur;
177492 --
177493 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177494    trace
177495    (p_msg      => 'SQL - FETCH header_cur'
177496    ,p_level    => C_LEVEL_STATEMENT
177497    ,p_module   => l_log_module);
177498 END IF;
177499 --
177500 LOOP
177501 FETCH header_cur BULK COLLECT INTO
177502         l_array_entity_id
177503       , l_array_legal_entity_id
177504       , l_array_entity_code
177505       , l_array_transaction_num
177506       , l_array_event_id
177507       , l_array_class_code
177508       , l_array_event_type
177509       , l_array_event_number
177510       , l_array_event_date
177511       , l_array_transaction_date
177512       , l_array_reference_num_1
177513       , l_array_reference_num_2
177514       , l_array_reference_num_3
177515       , l_array_reference_num_4
177516       , l_array_reference_char_1
177517       , l_array_reference_char_2
177518       , l_array_reference_char_3
177519       , l_array_reference_char_4
177520       , l_array_reference_date_1
177521       , l_array_reference_date_2
177522       , l_array_reference_date_3
177523       , l_array_reference_date_4
177524       , l_array_event_created_by
177525       , l_array_budgetary_control_flag 
177526       , l_array_source_6
177527       , l_array_source_7
177528       , l_array_source_8
177529       , l_array_source_9
177530       , l_array_source_10
177531       , l_array_source_12
177532       LIMIT l_rows;
177533 --
177534 IF (C_LEVEL_EVENT >= g_log_level) THEN
177535    trace
177536    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
177537    ,p_level    => C_LEVEL_EVENT
177538    ,p_module   => l_log_module);
177539 END IF;
177540 --
177541 EXIT WHEN l_array_entity_id.COUNT = 0;
177542 
177543 -- initialize arrays
177544 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
177545 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
177546 
177547 --
177548 -- Bug 4458708
177549 --
177550 XLA_AE_LINES_PKG.g_LineNumber := 0;
177551 
177552 
177553 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
177554 g_last_hdr_idx := l_array_event_id.LAST;
177555 --
177556 -- loop for the headers. Each iteration is for each header extract row
177557 -- fetched in header cursor
177558 --
177559 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
177560 
177561 --
177562 -- set event info as cache for other routines to refer event attributes
177563 --
177564 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
177565    (p_application_id           => p_application_id
177566    ,p_primary_ledger_id        => p_primary_ledger_id
177567    ,p_base_ledger_id           => p_base_ledger_id
177568    ,p_target_ledger_id         => p_target_ledger_id
177569    ,p_entity_id                => l_array_entity_id(hdr_idx)
177570    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
177571    ,p_entity_code              => l_array_entity_code(hdr_idx)
177572    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
177573    ,p_event_id                 => l_array_event_id(hdr_idx)
177574    ,p_event_class_code         => l_array_class_code(hdr_idx)
177575    ,p_event_type_code          => l_array_event_type(hdr_idx)
177576    ,p_event_number             => l_array_event_number(hdr_idx)
177577    ,p_event_date               => l_array_event_date(hdr_idx)
177578    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
177579    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
177580    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
177581    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
177582    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
177583    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
177584    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
177585    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
177586    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
177587    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
177588    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
177589    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
177590    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
177591    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
177592    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
177593 
177594 --
177595 -- set the status of entry to C_VALID (0)
177596 --
177597 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
177598 
177599 --
177600 -- initialize a row for ae header
177601 --
177602 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
177603 
177604 l_event_id := l_array_event_id(hdr_idx);
177605 
177606 --
177607 -- storing the hdr_idx for event. May be used by line cursor.
177608 --
177609 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
177610 
177611 --
177612 -- store sources from header extract. This can be improved to
177613 -- store only those sources from header extract that may be used in lines
177614 --
177615 
177616 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
177617 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
177618 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
177619 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
177620 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
177624 -- initilaize the status of ae headers for diffrent balance types
177621 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
177622 
177623 --
177625 -- the status is initialised to C_NOT_CREATED (2)
177626 --
177627 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
177628 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
177629 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
177630 
177631 --
177632 -- call api to validate and store accounting attributes for header
177633 --
177634 
177635 ------------------------------------------------------------
177636 -- Accrual Reversal : to get date for Standard Source (NONE)
177637 ------------------------------------------------------------
177638 l_acc_rev_gl_date_source := NULL;
177639 
177640      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
177641       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
177642 
177643 
177644 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
177645 
177646 XLA_AE_HEADER_PKG.SetJeCategoryName;
177647 
177648 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
177649 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
177650 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
177651 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
177652 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
177653 
177654 
177655 -- No header level analytical criteria
177656 
177657 --
177658 --accounting attribute enhancement, bug 3612931
177659 --
177660 l_trx_reversal_source := SUBSTR(NULL, 1,30);
177661 
177662 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
177663    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
177664 
177665    xla_accounting_err_pkg.build_message
177666       (p_appli_s_name            => 'XLA'
177667       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
177668       ,p_token_1                 => 'ACCT_ATTR_NAME'
177669       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
177670       ,p_token_2                 => 'PRODUCT_NAME'
177671       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
177672       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
177673       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
177674       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
177675 
177676 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
177677    --
177678    -- following sets the accounting attributes needed to reverse
177679    -- accounting for a distributeion
177680    --
177681    xla_ae_lines_pkg.SetTrxReversalAttrs
177682       (p_event_id              => l_event_id
177683       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
177684       ,p_trx_reversal_source   => l_trx_reversal_source);
177685 
177686 END IF;
177687 
177688 
177689 ----------------------------------------------------------------
177690 -- 4262811 -  update the header statuses to invalid in need be
177691 ----------------------------------------------------------------
177692 --
177693 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
177694 
177695 
177696   -----------------------------------------------
177697   -- No accrual reversal for the event class/type
177698   -----------------------------------------------
177699 ----------------------------------------------------------------
177700 
177701 --
177702 -- this ends the header loop iteration for one bulk fetch
177703 --
177704 END LOOP;
177705 
177706 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
177707 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
177708 
177709 --
177710 -- insert dummy rows into lines gt table that were created due to
177711 -- transaction reversals
177712 --
177713 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
177714    l_result := XLA_AE_LINES_PKG.InsertLines;
177715 END IF;
177716 
177717 --
177718 -- reset the temp_line_num for each set of events fetched from header
177719 -- cursor rather than doing it for each new event in line cursor
177720 -- Bug 3939231
177721 --
177722 xla_ae_lines_pkg.g_temp_line_num := 0;
177723 
177724 
177725 
177726 --
177727 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
177728 --
177729 --
177730 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177731 
177732       trace
177733          (p_msg      => 'SQL - FETCH line_cur'
177734          ,p_level    => C_LEVEL_STATEMENT
177735          ,p_module   => l_log_module);
177736 
177737 END IF;
177738 --
177739 --
177740 LOOP
177741   --
177742   FETCH line_cur BULK COLLECT INTO
177743         l_array_entity_id
177744       , l_array_legal_entity_id
177745       , l_array_entity_code
177746       , l_array_transaction_num
177747       , l_array_event_id
177748       , l_array_class_code
177749       , l_array_event_type
177750       , l_array_event_number
177751       , l_array_event_date
177752       , l_array_transaction_date
177753       , l_array_reference_num_1
177754       , l_array_reference_num_2
177755       , l_array_reference_num_3
177756       , l_array_reference_num_4
177757       , l_array_reference_char_1
177758       , l_array_reference_char_2
177759       , l_array_reference_char_3
177760       , l_array_reference_char_4
177761       , l_array_reference_date_1
177765       , l_array_event_created_by
177762       , l_array_reference_date_2
177763       , l_array_reference_date_3
177764       , l_array_reference_date_4
177766       , l_array_budgetary_control_flag
177767       , l_array_extract_line_num 
177768       , l_array_source_1
177769       , l_array_source_2
177770       , l_array_source_3
177771       , l_array_source_5
177772       , l_array_source_11
177773       LIMIT l_rows;
177774 
177775   --
177776   IF (C_LEVEL_EVENT >= g_log_level) THEN
177777             trace
177778                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
177779                ,p_level    => C_LEVEL_EVENT
177780                ,p_module   => l_log_module);
177781   END IF;
177782   --
177783   EXIT WHEN l_array_entity_id.count = 0;
177784 
177785   XLA_AE_LINES_PKG.g_rec_lines := null;
177786 
177787 --
177788 -- Bug 4458708
177789 --
177790 XLA_AE_LINES_PKG.g_LineNumber := 0;
177791 --
177792 --
177793 
177794 FOR Idx IN 1..l_array_event_id.count LOOP
177795    --
177796    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
177797    --
177798    l_event_id := l_array_event_id(idx);  -- 5648433
177799 
177800    --
177801    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
177802    --
177803 
177804    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
177805              (g_array_event(l_event_id).array_value_num('header_index'))
177806          ,'N'
177807          ) <> 'Y'
177808    THEN
177809       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177810          trace
177811             (p_msg      => 'Trancaction revesal option is not Y '
177812             ,p_level    => C_LEVEL_STATEMENT
177813             ,p_module   => l_log_module);
177814       END IF;
177815 
177816 --
177817 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
177818 --
177819 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
177820 --
177821 -- set event info as cache for other routines to refer event attributes
177822 --
177823 
177824 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
177825    l_previous_event_id := l_event_id;
177826 
177827    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
177828       (p_application_id           => p_application_id
177829       ,p_primary_ledger_id        => p_primary_ledger_id
177830       ,p_base_ledger_id           => p_base_ledger_id
177831       ,p_target_ledger_id         => p_target_ledger_id
177832       ,p_entity_id                => l_array_entity_id(Idx)
177833       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
177834       ,p_entity_code              => l_array_entity_code(Idx)
177835       ,p_transaction_num          => l_array_transaction_num(Idx)
177836       ,p_event_id                 => l_array_event_id(Idx)
177837       ,p_event_class_code         => l_array_class_code(Idx)
177838       ,p_event_type_code          => l_array_event_type(Idx)
177839       ,p_event_number             => l_array_event_number(Idx)
177840       ,p_event_date               => l_array_event_date(Idx)
177841       ,p_transaction_date         => l_array_transaction_date(Idx)
177842       ,p_reference_num_1          => l_array_reference_num_1(Idx)
177843       ,p_reference_num_2          => l_array_reference_num_2(Idx)
177844       ,p_reference_num_3          => l_array_reference_num_3(Idx)
177845       ,p_reference_num_4          => l_array_reference_num_4(Idx)
177846       ,p_reference_char_1         => l_array_reference_char_1(Idx)
177847       ,p_reference_char_2         => l_array_reference_char_2(Idx)
177848       ,p_reference_char_3         => l_array_reference_char_3(Idx)
177849       ,p_reference_char_4         => l_array_reference_char_4(Idx)
177850       ,p_reference_date_1         => l_array_reference_date_1(Idx)
177851       ,p_reference_date_2         => l_array_reference_date_2(Idx)
177852       ,p_reference_date_3         => l_array_reference_date_3(Idx)
177853       ,p_reference_date_4         => l_array_reference_date_4(Idx)
177854       ,p_event_created_by         => l_array_event_created_by(Idx)
177855       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
177856        --
177857 END IF;
177858 
177859 
177860 
177861 --
177862 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
177863 
177864 l_acct_reversal_source := SUBSTR(NULL, 1,30);
177865 
177866 IF l_continue_with_lines THEN
177867    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
177868       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
177869 
177870       xla_accounting_err_pkg.build_message
177871          (p_appli_s_name            => 'XLA'
177872          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
177873          ,p_token_1                 => 'LINE_NUMBER'
177874          ,p_value_1                 => l_array_extract_line_num(Idx)
177875          ,p_token_2                 => 'PRODUCT_NAME'
177876          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
177877          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
177878          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
177879          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
177880 
177881    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
177882       --
177883       -- following sets the accounting attributes needed to reverse
177884       -- accounting for a distributeion
177885       --
177886 
177887       --
177888       -- 5217187
177889       --
177890       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
177891       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
177892                                        g_array_event(l_event_id).array_value_num('header_index'));
177896       -- No reversal code generated
177893       --
177894       --
177895 
177897 
177898       xla_ae_lines_pkg.SetAcctReversalAttrs
177899          (p_event_id             => l_event_id
177900          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
177901          ,p_calculate_acctd_flag => l_calculate_acctd_flag
177902          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
177903    END IF;
177904 
177905    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
177906        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
177907 
177908 --
177909 AcctLineType_47 (
177910  p_application_id  => p_application_id
177911  ,p_event_id     => l_event_id
177912  ,p_calculate_acctd_flag => l_calculate_acctd_flag
177913  ,p_calculate_g_l_flag => l_calculate_g_l_flag
177914  ,p_actual_flag => l_actual_flag
177915  ,p_balance_type_code => l_balance_type_code
177916  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177917  
177918  , p_source_1 => l_array_source_1(Idx)
177919  , p_source_2 => l_array_source_2(Idx)
177920  , p_source_3 => l_array_source_3(Idx)
177921  , p_source_5 => l_array_source_5(Idx)
177922  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
177923  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
177924  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
177925  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
177926  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
177927  , p_source_11 => l_array_source_11(Idx)
177928  );
177929 If(l_balance_type_code = 'A') THEN
177930   l_actual_gain_loss_ref := l_gain_or_loss_ref;
177931 END IF;
177932 
177933 --
177934 
177935 
177936 --
177937 AcctLineType_122 (
177938  p_application_id  => p_application_id
177939  ,p_event_id     => l_event_id
177940  ,p_calculate_acctd_flag => l_calculate_acctd_flag
177941  ,p_calculate_g_l_flag => l_calculate_g_l_flag
177942  ,p_actual_flag => l_actual_flag
177943  ,p_balance_type_code => l_balance_type_code
177944  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177945  
177946  , p_source_1 => l_array_source_1(Idx)
177947  , p_source_2 => l_array_source_2(Idx)
177948  , p_source_3 => l_array_source_3(Idx)
177949  , p_source_5 => l_array_source_5(Idx)
177950  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
177951  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
177952  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
177953  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
177954  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
177955  , p_source_11 => l_array_source_11(Idx)
177956  );
177957 If(l_balance_type_code = 'A') THEN
177958   l_actual_gain_loss_ref := l_gain_or_loss_ref;
177959 END IF;
177960 
177961 --
177962 
177963 
177964 --
177965 AcctLineType_201 (
177966  p_application_id  => p_application_id
177967  ,p_event_id     => l_event_id
177968  ,p_calculate_acctd_flag => l_calculate_acctd_flag
177969  ,p_calculate_g_l_flag => l_calculate_g_l_flag
177970  ,p_actual_flag => l_actual_flag
177971  ,p_balance_type_code => l_balance_type_code
177972  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177973  
177974  , p_source_1 => l_array_source_1(Idx)
177975  , p_source_2 => l_array_source_2(Idx)
177976  , p_source_3 => l_array_source_3(Idx)
177977  , p_source_5 => l_array_source_5(Idx)
177978  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
177979  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
177980  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
177981  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
177982  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
177983  , p_source_11 => l_array_source_11(Idx)
177984  );
177985 If(l_balance_type_code = 'A') THEN
177986   l_actual_gain_loss_ref := l_gain_or_loss_ref;
177987 END IF;
177988 
177989 --
177990 
177991       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
177992       -- or secondary ledger that has different currency with primary
177993       -- or alc that is calculated by sla
177994       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
177995             (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'))
177996 
177997 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
177998 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
177999           AND (l_actual_flag = 'A')) THEN
178000         XLA_AE_LINES_PKG.CreateGainOrLossLines(
178001           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
178002          ,p_application_id   => p_application_id
178003          ,p_amb_context_code => 'DEFAULT'
178004          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
178005          ,p_event_class_code => C_EVENT_CLASS_CODE
178006          ,p_event_type_code  => C_EVENT_TYPE_CODE
178007          
178008          ,p_gain_ccid        => -1
178009          ,p_loss_ccid        => -1
178010 
178011          ,p_actual_flag      => l_actual_flag
178012          ,p_enc_flag         => null
178013          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
178014          ,p_enc_g_l_ref      => null
178015          );
178016       END IF;
178017    END IF;
178018 END IF;
178019 
178020    ELSE
178021       --
178022       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
178023       --
178024       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178025          trace
178026             (p_msg      => 'Trancaction revesal option is Y'
178027             ,p_level    => C_LEVEL_STATEMENT
178028             ,p_module   => l_log_module);
178032 END LOOP;
178029       END IF;
178030    END IF;
178031 
178033 l_result := XLA_AE_LINES_PKG.InsertLines ;
178034 end loop;
178035 close line_cur;
178036 
178037 
178038 --
178039 -- insert headers into xla_ae_headers_gt table
178040 --
178041 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
178042 
178043 -- insert into errors table here.
178044 
178045 END LOOP;
178046 
178047 --
178048 -- 4865292
178049 --
178050 -- Compare g_hdr_extract_count with event count in
178051 -- CreateHeadersAndLines.
178052 --
178053 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
178054 
178055 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178056    trace (p_msg     => '# rows extracted from header extract objects '
178057                     || ' (running total): '
178058                     || g_hdr_extract_count
178059          ,p_level   => C_LEVEL_STATEMENT
178060          ,p_module  => l_log_module);
178061 END IF;
178062 
178063 CLOSE header_cur;
178064 --
178065 
178066 --
178067 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178068    trace
178069       (p_msg      => 'END of EventType_295'
178070       ,p_level    => C_LEVEL_PROCEDURE
178071       ,p_module   => l_log_module);
178072 END IF;
178073 --
178074 RETURN l_result;
178075 EXCEPTION
178076 WHEN xla_exceptions_pkg.application_exception THEN
178077    
178078 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
178079 
178080    
178081 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
178082 
178083    RAISE;
178084 
178085 WHEN NO_DATA_FOUND THEN
178086 
178087 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
178088 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
178089 
178090 FOR header_record IN header_cur
178091 LOOP
178092     l_array_header_events(header_record.event_id) := header_record.event_id;
178093 END LOOP;
178094 
178095 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
178096 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
178097 
178098 fnd_file.put_line(fnd_file.LOG, '                    ');
178099 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
178100 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
178101 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
178102 
178103 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
178104 LOOP
178105 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
178106 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
178107         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
178108 	END IF;
178109 END LOOP;
178110 
178111 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
178112 fnd_file.put_line(fnd_file.LOG, '                    ');
178113 
178114 
178115 xla_exceptions_pkg.raise_message
178116       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_295');
178117 
178118 
178119 WHEN OTHERS THEN
178120    xla_exceptions_pkg.raise_message
178121       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_295');
178122 END EventType_295;
178123 --
178124 
178125 ---------------------------------------
178126 --
178127 -- PRIVATE PROCEDURE
178128 --         insert_sources_296
178129 --
178130 ----------------------------------------
178131 --
178132 PROCEDURE insert_sources_296(
178133                                 p_target_ledger_id       IN NUMBER
178134                               , p_language               IN VARCHAR2
178135                               , p_sla_ledger_id          IN NUMBER
178136                               , p_pad_start_date         IN DATE
178137                               , p_pad_end_date           IN DATE
178138                          )
178139 IS
178140 
178141 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RELE';
178142 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BATCH_MATERIAL';
178143 p_apps_owner                   VARCHAR2(30);
178144 l_log_module                   VARCHAR2(240);
178145 BEGIN
178146 IF g_log_enabled THEN
178147       l_log_module := C_DEFAULT_MODULE||'.insert_sources_296';
178148 END IF;
178149 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178150 
178151       trace
178152          (p_msg      => 'BEGIN of insert_sources_296'
178153          ,p_level    => C_LEVEL_PROCEDURE
178154          ,p_module   => l_log_module);
178155 
178156 END IF;
178157 
178158 -- select APPS owner
178159 SELECT oracle_username
178160   INTO p_apps_owner
178161   FROM fnd_oracle_userid
178162  WHERE read_only_flag = 'U'
178163 ;
178164 
178165 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178166       trace
178167          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
178168                         ' - p_language = '||p_language||
178169                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
178170                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
178171                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
178172                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
178173          ,p_level    => C_LEVEL_STATEMENT
178174          ,p_module   => l_log_module);
178175 END IF;
178176 
178177 
178178 --
178179 INSERT INTO xla_diag_sources --hdr1
178180 (
178181         event_id
178182       , ledger_id
178183       , sla_ledger_id
178184       , description_language
178185       , object_name
178186       , object_type_code
178187       , line_number
178188       , source_application_id
178189       , source_type_code
178190       , source_code
178194       , creation_date
178191       , source_value
178192       , source_meaning
178193       , created_by
178195       , last_update_date
178196       , last_updated_by
178197       , last_update_login
178198       , program_update_date
178199       , program_application_id
178200       , program_id
178201       , request_id
178202 )
178203 SELECT
178204         event_id
178205       , p_target_ledger_id
178206       , p_sla_ledger_id
178207       , p_language
178208       , object_name
178209       , object_type_code
178210       , line_number
178211       , source_application_id
178212       , source_type_code
178213       , source_code
178214       , SUBSTR(source_value ,1,1996)
178215       , SUBSTR(source_meaning,1,200)
178216       , xla_environment_pkg.g_Usr_Id
178217       , TRUNC(SYSDATE)
178218       , TRUNC(SYSDATE)
178219       , xla_environment_pkg.g_Usr_Id
178220       , xla_environment_pkg.g_Login_Id
178221       , TRUNC(SYSDATE)
178222       , xla_environment_pkg.g_Prog_Appl_Id
178223       , xla_environment_pkg.g_Prog_Id
178224       , xla_environment_pkg.g_Req_Id
178225   FROM (
178226        SELECT xet.event_id                  event_id
178227             , 0                             line_number
178228             , CASE r
178229                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
178230                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
178231                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
178232                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
178233                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
178234                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
178235                 
178236                ELSE null
178237               END                           object_name
178238             , CASE r
178239                 WHEN 1 THEN 'HEADER' 
178240                 WHEN 2 THEN 'HEADER' 
178241                 WHEN 3 THEN 'HEADER' 
178242                 WHEN 4 THEN 'HEADER' 
178243                 WHEN 5 THEN 'HEADER' 
178244                 WHEN 6 THEN 'HEADER' 
178245                 
178246                 ELSE null
178247               END                           object_type_code
178248             , CASE r
178249                 WHEN 1 THEN '555' 
178250                 WHEN 2 THEN '555' 
178251                 WHEN 3 THEN '555' 
178252                 WHEN 4 THEN '555' 
178253                 WHEN 5 THEN '555' 
178254                 WHEN 6 THEN '555' 
178255                 
178256                 ELSE null
178257               END                           source_application_id
178258             , 'S'             source_type_code
178259             , CASE r
178260                 WHEN 1 THEN 'ENTITY_CODE' 
178261                 WHEN 2 THEN 'CURRENCY_CODE' 
178262                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
178263                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
178264                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
178265                 WHEN 6 THEN 'TRANSACTION_DATE' 
178266                 
178267                 ELSE null
178268               END                           source_code
178269             , CASE r
178270                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
178271                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
178272                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
178273                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
178274                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
178275                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
178276                 
178277                 ELSE null
178278               END                           source_value
178279             , CASE r
178280                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
178281                           1010186
178282                          ,TO_CHAR(h1.CURRENCY_CODE)
178283                          ,'CURRENCY_CODE'
178284                          ,'S'
178285                          ,555)
178286                 
178287                 ELSE null
178288               END               source_meaning
178289         FROM xla_events_gt     xet  
178290       , GMF_XLA_EXTRACT_HEADERS  h1
178291             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
178292        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
178293          AND xet.event_type_code = C_EVENT_TYPE_CODE
178294             AND h1.event_id = xet.event_id
178295 
178296 )
178297 ;
178298 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178299 
178300       trace
178301          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
178302          ,p_level    => C_LEVEL_STATEMENT
178303          ,p_module   => l_log_module);
178304 
178305 END IF;
178306 --
178307 
178308 
178309 
178310 --
178311 INSERT INTO xla_diag_sources --line1
178312 (
178313         event_id
178314       , ledger_id
178315       , sla_ledger_id
178316       , description_language
178317       , object_name
178318       , object_type_code
178319       , line_number
178320       , source_application_id
178321       , source_type_code
178322       , source_code
178323       , source_value
178324       , source_meaning
178325       , created_by
178326       , creation_date
178327       , last_update_date
178328       , last_updated_by
178329       , last_update_login
178330       , program_update_date
178331       , program_application_id
178332       , program_id
178333       , request_id
178334 )
178335 SELECT  event_id
178336       , p_target_ledger_id
178337       , p_sla_ledger_id
178338       , p_language
178339       , object_name
178340       , object_type_code
178341       , line_number
178342       , source_application_id
178343       , source_type_code
178344       , source_code
178345       , SUBSTR(source_value,1,1996)
178349       , TRUNC(SYSDATE)
178346       , SUBSTR(source_meaning,1,200)
178347       , xla_environment_pkg.g_Usr_Id
178348       , TRUNC(SYSDATE)
178350       , xla_environment_pkg.g_Usr_Id
178351       , xla_environment_pkg.g_Login_Id
178352       , TRUNC(SYSDATE)
178353       , xla_environment_pkg.g_Prog_Appl_Id
178354       , xla_environment_pkg.g_Prog_Id
178355       , xla_environment_pkg.g_Req_Id
178356   FROM (
178357        SELECT xet.event_id                  event_id
178358             , l2.line_number                 line_number
178359             , CASE r
178360                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
178361                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
178362                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
178363                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
178364                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
178365                 
178366                ELSE null
178367               END                           object_name
178368             , CASE r
178369                 WHEN 1 THEN 'LINE' 
178370                 WHEN 2 THEN 'LINE' 
178371                 WHEN 3 THEN 'LINE' 
178372                 WHEN 4 THEN 'LINE' 
178373                 WHEN 5 THEN 'LINE' 
178374                 
178375                 ELSE null
178376               END                           object_type_code
178377             , CASE r
178378                 WHEN 1 THEN '555' 
178379                 WHEN 2 THEN '555' 
178380                 WHEN 3 THEN '555' 
178381                 WHEN 4 THEN '555' 
178382                 WHEN 5 THEN '555' 
178383                 
178384                 ELSE null
178385               END                           source_application_id
178386             , 'S'             source_type_code
178387             , CASE r
178388                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
178389                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
178390                 WHEN 3 THEN 'ENTERED_AMOUNT' 
178391                 WHEN 4 THEN 'LINE_ID' 
178392                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
178393                 
178394                 ELSE null
178395               END                           source_code
178396             , CASE r
178397                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
178398                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
178399                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
178400                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
178401                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
178402                 
178403                 ELSE null
178404               END                           source_value
178405             , null              source_meaning
178406          FROM  xla_events_gt     xet  
178407         , GMF_XLA_EXTRACT_LINES  l2
178408             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
178409         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
178410           AND xet.event_type_code = C_EVENT_TYPE_CODE
178411             AND l2.event_id          = xet.event_id
178412 
178413 )
178414 ;
178415 --
178416 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178417 
178418       trace
178419          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
178420          ,p_level    => C_LEVEL_STATEMENT
178421          ,p_module   => l_log_module);
178422 
178423 END IF;
178424 
178425 
178426 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178427       trace
178428          (p_msg      => 'END of insert_sources_296'
178429          ,p_level    => C_LEVEL_PROCEDURE
178430          ,p_module   => l_log_module);
178431 END IF;
178432 EXCEPTION
178433   WHEN xla_exceptions_pkg.application_exception THEN
178434       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
178435             trace
178436                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
178437                ,p_level    => C_LEVEL_EXCEPTION
178438                ,p_module   => l_log_module);
178439       END IF;
178440       RAISE;
178441   WHEN OTHERS THEN
178442       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
178443             trace
178444                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
178445                ,p_level    => C_LEVEL_EXCEPTION
178446                ,p_module   => l_log_module);
178447        END IF;
178448        xla_exceptions_pkg.raise_message
178449            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_296');
178450 END insert_sources_296;
178451 --
178452 
178453 ---------------------------------------
178454 --
178455 -- PRIVATE FUNCTION
178456 --         EventType_296
178457 --
178458 ----------------------------------------
178459 --
178460 FUNCTION EventType_296
178461        (p_application_id         IN NUMBER
178462        ,p_base_ledger_id         IN NUMBER
178463        ,p_target_ledger_id       IN NUMBER
178464        ,p_language               IN VARCHAR2
178465        ,p_currency_code          IN VARCHAR2
178466        ,p_sla_ledger_id          IN NUMBER
178467        ,p_pad_start_date         IN DATE
178468        ,p_pad_end_date           IN DATE
178469        ,p_primary_ledger_id      IN NUMBER)
178470 RETURN BOOLEAN IS
178471 --
178472 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RELE';
178473 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BATCH_MATERIAL';
178474 
178475 l_calculate_acctd_flag   VARCHAR2(1) :='N';
178476 l_calculate_g_l_flag     VARCHAR2(1) :='N';
178477 --
178478 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178479 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178480 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178481 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178482 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178483 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178487 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178484 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178485 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178486 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178488 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178489 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178490 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178491 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178492 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178493 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178494 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178495 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178496 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178497 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178498 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178499 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178500 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
178501 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178502 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
178503 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
178504 
178505 l_event_id                             NUMBER;
178506 l_previous_event_id                    NUMBER;
178507 l_first_event_id                       NUMBER;
178508 l_last_event_id                        NUMBER;
178509 
178510 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
178511 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
178512 --
178513 --
178514 l_result                    BOOLEAN := TRUE;
178515 l_rows                      NUMBER  := 1000;
178516 l_event_type_name           VARCHAR2(80) := 'Batch Release';
178517 l_event_class_name          VARCHAR2(80) := 'Batch Material Transactions';
178518 l_description               VARCHAR2(4000);
178519 l_transaction_reversal      NUMBER;
178520 l_ae_header_id              NUMBER;
178521 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
178522 l_log_module                VARCHAR2(240);
178523 --
178524 l_acct_reversal_source      VARCHAR2(30);
178525 l_trx_reversal_source       VARCHAR2(30);
178526 
178527 l_continue_with_lines       BOOLEAN := TRUE;
178528 --
178529 l_acc_rev_gl_date_source    DATE;                      -- 4262811
178530 --
178531 type t_array_event_id is table of number index by binary_integer;
178532 
178533 l_rec_array_event                    t_rec_array_event;
178534 l_null_rec_array_event               t_rec_array_event;
178535 l_array_ae_header_id                 xla_number_array_type;
178536 l_actual_flag                        VARCHAR2(1) := NULL;
178537 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
178538 l_balance_type_code                  VARCHAR2(1) :=NULL;
178539 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
178540 
178541 --
178542 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
178543 --
178544 
178545 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
178546 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
178547 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
178548 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
178549 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
178550 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
178551 
178552 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
178553 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
178554 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
178555 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
178556 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
178557 
178558 l_array_source_6              t_array_source_6;
178559 l_array_source_7              t_array_source_7;
178560 l_array_source_8              t_array_source_8;
178561 l_array_source_9              t_array_source_9;
178562 l_array_source_10              t_array_source_10;
178563 l_array_source_12              t_array_source_12;
178564 
178565 l_array_source_1      t_array_source_1;
178566 l_array_source_2      t_array_source_2;
178567 l_array_source_3      t_array_source_3;
178568 l_array_source_5      t_array_source_5;
178569 l_array_source_11      t_array_source_11;
178570 
178571 --
178572 CURSOR header_cur
178573 IS
178574 SELECT /*+ leading(xet) cardinality(xet,1) */
178575 -- Event Type Code: RELE
178576 -- Event Class Code: BATCH_MATERIAL
178577     xet.entity_id
178578   , xet.legal_entity_id
178579   , xet.entity_code
178580   , xet.transaction_number
178581   , xet.event_id
178582   , xet.event_class_code
178583   , xet.event_type_code
178584   , xet.event_number
178585   , xet.event_date
178586   , xet.transaction_date
178587   , xet.reference_num_1
178588   , xet.reference_num_2
178589   , xet.reference_num_3
178590   , xet.reference_num_4
178591   , xet.reference_char_1
178592   , xet.reference_char_2
178593   , xet.reference_char_3
178594   , xet.reference_char_4
178595   , xet.reference_date_1
178596   , xet.reference_date_2
178597   , xet.reference_date_3
178601   , h1.ENTITY_CODE    source_6
178598   , xet.reference_date_4
178599   , xet.event_created_by
178600   , xet.budgetary_control_flag 
178602   , h1.CURRENCY_CODE    source_7
178603   , h1.CURRENCY_CONVERSION_DATE    source_8
178604   , h1.CURRENCY_CONVERSION_RATE    source_9
178605   , h1.CURRENCY_CONVERSION_TYPE    source_10
178606   , h1.TRANSACTION_DATE    source_12
178607   FROM xla_events_gt     xet 
178608   , GMF_XLA_EXTRACT_HEADERS  h1
178609  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
178610    and xet.event_type_code = C_EVENT_TYPE_CODE
178611    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
178612 
178613  ORDER BY event_id
178614 ;
178615 
178616 
178617 --
178618 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
178619 IS
178620 SELECT /*+ leading(xet) cardinality(xet,1) */
178621 -- Event Type Code: RELE
178622 -- Event Class Code: BATCH_MATERIAL
178623     xet.entity_id
178624    ,xet.legal_entity_id
178625    ,xet.entity_code
178626    ,xet.transaction_number
178627    ,xet.event_id
178628    ,xet.event_class_code
178629    ,xet.event_type_code
178630    ,xet.event_number
178631    ,xet.event_date
178632    ,xet.transaction_date
178633    ,xet.reference_num_1
178634    ,xet.reference_num_2
178635    ,xet.reference_num_3
178636    ,xet.reference_num_4
178637    ,xet.reference_char_1
178638    ,xet.reference_char_2
178639    ,xet.reference_char_3
178640    ,xet.reference_char_4
178641    ,xet.reference_date_1
178642    ,xet.reference_date_2
178643    ,xet.reference_date_3
178644    ,xet.reference_date_4
178645    ,xet.event_created_by
178646    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
178647   , l2.TRANSACTION_ACCOUNT_ID    source_1
178648   , l2.JOURNAL_LINE_TYPE    source_2
178649   , l2.ENTERED_AMOUNT    source_3
178650   , l2.LINE_ID    source_5
178651   , l2.ACCOUNTED_AMOUNT    source_11
178652   FROM xla_events_gt     xet 
178653   , GMF_XLA_EXTRACT_LINES  l2
178654  WHERE xet.event_id between x_first_event_id and x_last_event_id
178655    and xet.event_date between p_pad_start_date and p_pad_end_date
178656    and xet.event_type_code = C_EVENT_TYPE_CODE
178657    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
178658 ;
178659 
178660 --
178661 BEGIN
178662 IF g_log_enabled THEN
178663    l_log_module := C_DEFAULT_MODULE||'.EventType_296';
178664 END IF;
178665 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178666    trace
178667       (p_msg      => 'BEGIN of EventType_296'
178668       ,p_level    => C_LEVEL_PROCEDURE
178669       ,p_module   => l_log_module);
178670 END IF;
178671 
178672 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178673    trace
178674       (p_msg      => 'p_application_id = '||p_application_id||
178675                      ' - p_base_ledger_id = '||p_base_ledger_id||
178676                      ' - p_target_ledger_id  = '||p_target_ledger_id||
178677                      ' - p_language = '||p_language||
178678                      ' - p_currency_code = '||p_currency_code||
178679                      ' - p_sla_ledger_id = '||p_sla_ledger_id
178680       ,p_level    => C_LEVEL_STATEMENT
178681       ,p_module   => l_log_module);
178682 END IF;
178683 --
178684 -- initialze arrays
178685 --
178686 g_array_event.DELETE;
178687 l_rec_array_event := l_null_rec_array_event;
178688 --
178689 --------------------------------------
178690 -- 4262811 Initialze MPA Line Number
178691 --------------------------------------
178692 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
178693 
178694 --
178695 
178696 --
178697 OPEN header_cur;
178698 --
178699 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178700    trace
178701    (p_msg      => 'SQL - FETCH header_cur'
178702    ,p_level    => C_LEVEL_STATEMENT
178703    ,p_module   => l_log_module);
178704 END IF;
178705 --
178706 LOOP
178707 FETCH header_cur BULK COLLECT INTO
178708         l_array_entity_id
178709       , l_array_legal_entity_id
178710       , l_array_entity_code
178711       , l_array_transaction_num
178712       , l_array_event_id
178713       , l_array_class_code
178714       , l_array_event_type
178715       , l_array_event_number
178716       , l_array_event_date
178717       , l_array_transaction_date
178718       , l_array_reference_num_1
178719       , l_array_reference_num_2
178720       , l_array_reference_num_3
178721       , l_array_reference_num_4
178722       , l_array_reference_char_1
178723       , l_array_reference_char_2
178724       , l_array_reference_char_3
178725       , l_array_reference_char_4
178726       , l_array_reference_date_1
178727       , l_array_reference_date_2
178728       , l_array_reference_date_3
178729       , l_array_reference_date_4
178730       , l_array_event_created_by
178731       , l_array_budgetary_control_flag 
178732       , l_array_source_6
178733       , l_array_source_7
178734       , l_array_source_8
178735       , l_array_source_9
178736       , l_array_source_10
178737       , l_array_source_12
178738       LIMIT l_rows;
178739 --
178740 IF (C_LEVEL_EVENT >= g_log_level) THEN
178741    trace
178742    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
178743    ,p_level    => C_LEVEL_EVENT
178744    ,p_module   => l_log_module);
178745 END IF;
178746 --
178747 EXIT WHEN l_array_entity_id.COUNT = 0;
178748 
178749 -- initialize arrays
178750 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
178751 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
178752 
178753 --
178754 -- Bug 4458708
178755 --
178756 XLA_AE_LINES_PKG.g_LineNumber := 0;
178757 
178758 
178759 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
178760 g_last_hdr_idx := l_array_event_id.LAST;
178761 --
178765 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
178762 -- loop for the headers. Each iteration is for each header extract row
178763 -- fetched in header cursor
178764 --
178766 
178767 --
178768 -- set event info as cache for other routines to refer event attributes
178769 --
178770 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
178771    (p_application_id           => p_application_id
178772    ,p_primary_ledger_id        => p_primary_ledger_id
178773    ,p_base_ledger_id           => p_base_ledger_id
178774    ,p_target_ledger_id         => p_target_ledger_id
178775    ,p_entity_id                => l_array_entity_id(hdr_idx)
178776    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
178777    ,p_entity_code              => l_array_entity_code(hdr_idx)
178778    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
178779    ,p_event_id                 => l_array_event_id(hdr_idx)
178780    ,p_event_class_code         => l_array_class_code(hdr_idx)
178781    ,p_event_type_code          => l_array_event_type(hdr_idx)
178782    ,p_event_number             => l_array_event_number(hdr_idx)
178783    ,p_event_date               => l_array_event_date(hdr_idx)
178784    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
178785    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
178786    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
178787    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
178788    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
178789    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
178790    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
178791    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
178792    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
178793    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
178794    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
178795    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
178796    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
178797    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
178798    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
178799 
178800 --
178801 -- set the status of entry to C_VALID (0)
178802 --
178803 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
178804 
178805 --
178806 -- initialize a row for ae header
178807 --
178808 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
178809 
178810 l_event_id := l_array_event_id(hdr_idx);
178811 
178812 --
178813 -- storing the hdr_idx for event. May be used by line cursor.
178814 --
178815 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
178816 
178817 --
178818 -- store sources from header extract. This can be improved to
178819 -- store only those sources from header extract that may be used in lines
178820 --
178821 
178822 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
178823 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
178824 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
178825 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
178826 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
178827 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
178828 
178829 --
178830 -- initilaize the status of ae headers for diffrent balance types
178831 -- the status is initialised to C_NOT_CREATED (2)
178832 --
178833 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
178834 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
178835 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
178836 
178837 --
178838 -- call api to validate and store accounting attributes for header
178839 --
178840 
178841 ------------------------------------------------------------
178842 -- Accrual Reversal : to get date for Standard Source (NONE)
178843 ------------------------------------------------------------
178844 l_acc_rev_gl_date_source := NULL;
178845 
178846      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
178847       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
178848 
178849 
178850 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
178851 
178852 XLA_AE_HEADER_PKG.SetJeCategoryName;
178853 
178854 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
178855 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
178856 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
178857 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
178858 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
178859 
178860 
178861 -- No header level analytical criteria
178862 
178863 --
178864 --accounting attribute enhancement, bug 3612931
178865 --
178866 l_trx_reversal_source := SUBSTR(NULL, 1,30);
178867 
178868 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
178869    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
178870 
178871    xla_accounting_err_pkg.build_message
178872       (p_appli_s_name            => 'XLA'
178873       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
178874       ,p_token_1                 => 'ACCT_ATTR_NAME'
178875       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
178876       ,p_token_2                 => 'PRODUCT_NAME'
178877       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
178881 
178878       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
178879       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
178880       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
178882 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
178883    --
178884    -- following sets the accounting attributes needed to reverse
178885    -- accounting for a distributeion
178886    --
178887    xla_ae_lines_pkg.SetTrxReversalAttrs
178888       (p_event_id              => l_event_id
178889       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
178890       ,p_trx_reversal_source   => l_trx_reversal_source);
178891 
178892 END IF;
178893 
178894 
178895 ----------------------------------------------------------------
178896 -- 4262811 -  update the header statuses to invalid in need be
178897 ----------------------------------------------------------------
178898 --
178899 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
178900 
178901 
178902   -----------------------------------------------
178903   -- No accrual reversal for the event class/type
178904   -----------------------------------------------
178905 ----------------------------------------------------------------
178906 
178907 --
178908 -- this ends the header loop iteration for one bulk fetch
178909 --
178910 END LOOP;
178911 
178912 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
178913 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
178914 
178915 --
178916 -- insert dummy rows into lines gt table that were created due to
178917 -- transaction reversals
178918 --
178919 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
178920    l_result := XLA_AE_LINES_PKG.InsertLines;
178921 END IF;
178922 
178923 --
178924 -- reset the temp_line_num for each set of events fetched from header
178925 -- cursor rather than doing it for each new event in line cursor
178926 -- Bug 3939231
178927 --
178928 xla_ae_lines_pkg.g_temp_line_num := 0;
178929 
178930 
178931 
178932 --
178933 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
178934 --
178935 --
178936 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178937 
178938       trace
178939          (p_msg      => 'SQL - FETCH line_cur'
178940          ,p_level    => C_LEVEL_STATEMENT
178941          ,p_module   => l_log_module);
178942 
178943 END IF;
178944 --
178945 --
178946 LOOP
178947   --
178948   FETCH line_cur BULK COLLECT INTO
178949         l_array_entity_id
178950       , l_array_legal_entity_id
178951       , l_array_entity_code
178952       , l_array_transaction_num
178953       , l_array_event_id
178954       , l_array_class_code
178955       , l_array_event_type
178956       , l_array_event_number
178957       , l_array_event_date
178958       , l_array_transaction_date
178959       , l_array_reference_num_1
178960       , l_array_reference_num_2
178961       , l_array_reference_num_3
178962       , l_array_reference_num_4
178963       , l_array_reference_char_1
178964       , l_array_reference_char_2
178965       , l_array_reference_char_3
178966       , l_array_reference_char_4
178967       , l_array_reference_date_1
178968       , l_array_reference_date_2
178969       , l_array_reference_date_3
178970       , l_array_reference_date_4
178971       , l_array_event_created_by
178972       , l_array_budgetary_control_flag
178973       , l_array_extract_line_num 
178974       , l_array_source_1
178975       , l_array_source_2
178976       , l_array_source_3
178977       , l_array_source_5
178978       , l_array_source_11
178979       LIMIT l_rows;
178980 
178981   --
178982   IF (C_LEVEL_EVENT >= g_log_level) THEN
178983             trace
178984                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
178985                ,p_level    => C_LEVEL_EVENT
178986                ,p_module   => l_log_module);
178987   END IF;
178988   --
178989   EXIT WHEN l_array_entity_id.count = 0;
178990 
178991   XLA_AE_LINES_PKG.g_rec_lines := null;
178992 
178993 --
178994 -- Bug 4458708
178995 --
178996 XLA_AE_LINES_PKG.g_LineNumber := 0;
178997 --
178998 --
178999 
179000 FOR Idx IN 1..l_array_event_id.count LOOP
179001    --
179002    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
179003    --
179004    l_event_id := l_array_event_id(idx);  -- 5648433
179005 
179006    --
179007    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
179008    --
179009 
179010    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
179011              (g_array_event(l_event_id).array_value_num('header_index'))
179012          ,'N'
179013          ) <> 'Y'
179014    THEN
179015       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179016          trace
179017             (p_msg      => 'Trancaction revesal option is not Y '
179018             ,p_level    => C_LEVEL_STATEMENT
179019             ,p_module   => l_log_module);
179020       END IF;
179021 
179022 --
179023 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
179024 --
179025 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
179026 --
179027 -- set event info as cache for other routines to refer event attributes
179028 --
179029 
179030 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
179031    l_previous_event_id := l_event_id;
179032 
179033    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
179034       (p_application_id           => p_application_id
179035       ,p_primary_ledger_id        => p_primary_ledger_id
179036       ,p_base_ledger_id           => p_base_ledger_id
179040       ,p_entity_code              => l_array_entity_code(Idx)
179037       ,p_target_ledger_id         => p_target_ledger_id
179038       ,p_entity_id                => l_array_entity_id(Idx)
179039       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
179041       ,p_transaction_num          => l_array_transaction_num(Idx)
179042       ,p_event_id                 => l_array_event_id(Idx)
179043       ,p_event_class_code         => l_array_class_code(Idx)
179044       ,p_event_type_code          => l_array_event_type(Idx)
179045       ,p_event_number             => l_array_event_number(Idx)
179046       ,p_event_date               => l_array_event_date(Idx)
179047       ,p_transaction_date         => l_array_transaction_date(Idx)
179048       ,p_reference_num_1          => l_array_reference_num_1(Idx)
179049       ,p_reference_num_2          => l_array_reference_num_2(Idx)
179050       ,p_reference_num_3          => l_array_reference_num_3(Idx)
179051       ,p_reference_num_4          => l_array_reference_num_4(Idx)
179052       ,p_reference_char_1         => l_array_reference_char_1(Idx)
179053       ,p_reference_char_2         => l_array_reference_char_2(Idx)
179054       ,p_reference_char_3         => l_array_reference_char_3(Idx)
179055       ,p_reference_char_4         => l_array_reference_char_4(Idx)
179056       ,p_reference_date_1         => l_array_reference_date_1(Idx)
179057       ,p_reference_date_2         => l_array_reference_date_2(Idx)
179058       ,p_reference_date_3         => l_array_reference_date_3(Idx)
179059       ,p_reference_date_4         => l_array_reference_date_4(Idx)
179060       ,p_event_created_by         => l_array_event_created_by(Idx)
179061       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
179062        --
179063 END IF;
179064 
179065 
179066 
179067 --
179068 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
179069 
179070 l_acct_reversal_source := SUBSTR(NULL, 1,30);
179071 
179072 IF l_continue_with_lines THEN
179073    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
179074       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
179075 
179076       xla_accounting_err_pkg.build_message
179077          (p_appli_s_name            => 'XLA'
179078          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
179079          ,p_token_1                 => 'LINE_NUMBER'
179080          ,p_value_1                 => l_array_extract_line_num(Idx)
179081          ,p_token_2                 => 'PRODUCT_NAME'
179082          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
179083          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
179084          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
179085          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
179086 
179087    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
179088       --
179089       -- following sets the accounting attributes needed to reverse
179090       -- accounting for a distributeion
179091       --
179092 
179093       --
179094       -- 5217187
179095       --
179096       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
179097       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
179098                                        g_array_event(l_event_id).array_value_num('header_index'));
179099       --
179100       --
179101 
179102       -- No reversal code generated
179103 
179104       xla_ae_lines_pkg.SetAcctReversalAttrs
179105          (p_event_id             => l_event_id
179106          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
179107          ,p_calculate_acctd_flag => l_calculate_acctd_flag
179108          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
179109    END IF;
179110 
179111    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
179112        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
179113 
179114 --
179115 AcctLineType_134 (
179116  p_application_id  => p_application_id
179117  ,p_event_id     => l_event_id
179118  ,p_calculate_acctd_flag => l_calculate_acctd_flag
179119  ,p_calculate_g_l_flag => l_calculate_g_l_flag
179120  ,p_actual_flag => l_actual_flag
179121  ,p_balance_type_code => l_balance_type_code
179122  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179123  
179124  , p_source_1 => l_array_source_1(Idx)
179125  , p_source_2 => l_array_source_2(Idx)
179126  , p_source_3 => l_array_source_3(Idx)
179127  , p_source_5 => l_array_source_5(Idx)
179128  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
179129  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
179130  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
179131  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
179132  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
179133  , p_source_11 => l_array_source_11(Idx)
179134  );
179135 If(l_balance_type_code = 'A') THEN
179136   l_actual_gain_loss_ref := l_gain_or_loss_ref;
179137 END IF;
179138 
179139 --
179140 
179141 
179142 --
179143 AcctLineType_242 (
179144  p_application_id  => p_application_id
179145  ,p_event_id     => l_event_id
179146  ,p_calculate_acctd_flag => l_calculate_acctd_flag
179147  ,p_calculate_g_l_flag => l_calculate_g_l_flag
179148  ,p_actual_flag => l_actual_flag
179149  ,p_balance_type_code => l_balance_type_code
179150  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179151  
179152  , p_source_1 => l_array_source_1(Idx)
179153  , p_source_2 => l_array_source_2(Idx)
179154  , p_source_3 => l_array_source_3(Idx)
179155  , p_source_5 => l_array_source_5(Idx)
179156  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
179157  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
179158  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
179162  );
179159  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
179160  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
179161  , p_source_11 => l_array_source_11(Idx)
179163 If(l_balance_type_code = 'A') THEN
179164   l_actual_gain_loss_ref := l_gain_or_loss_ref;
179165 END IF;
179166 
179167 --
179168 
179169       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
179170       -- or secondary ledger that has different currency with primary
179171       -- or alc that is calculated by sla
179172       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
179173             (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'))
179174 
179175 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
179176 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
179177           AND (l_actual_flag = 'A')) THEN
179178         XLA_AE_LINES_PKG.CreateGainOrLossLines(
179179           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
179180          ,p_application_id   => p_application_id
179181          ,p_amb_context_code => 'DEFAULT'
179182          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
179183          ,p_event_class_code => C_EVENT_CLASS_CODE
179184          ,p_event_type_code  => C_EVENT_TYPE_CODE
179185          
179186          ,p_gain_ccid        => -1
179187          ,p_loss_ccid        => -1
179188 
179189          ,p_actual_flag      => l_actual_flag
179190          ,p_enc_flag         => null
179191          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
179192          ,p_enc_g_l_ref      => null
179193          );
179194       END IF;
179195    END IF;
179196 END IF;
179197 
179198    ELSE
179199       --
179200       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
179201       --
179202       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179203          trace
179204             (p_msg      => 'Trancaction revesal option is Y'
179205             ,p_level    => C_LEVEL_STATEMENT
179206             ,p_module   => l_log_module);
179207       END IF;
179208    END IF;
179209 
179210 END LOOP;
179211 l_result := XLA_AE_LINES_PKG.InsertLines ;
179212 end loop;
179213 close line_cur;
179214 
179215 
179216 --
179217 -- insert headers into xla_ae_headers_gt table
179218 --
179219 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
179220 
179221 -- insert into errors table here.
179222 
179223 END LOOP;
179224 
179225 --
179226 -- 4865292
179227 --
179228 -- Compare g_hdr_extract_count with event count in
179229 -- CreateHeadersAndLines.
179230 --
179231 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
179232 
179233 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179234    trace (p_msg     => '# rows extracted from header extract objects '
179235                     || ' (running total): '
179236                     || g_hdr_extract_count
179237          ,p_level   => C_LEVEL_STATEMENT
179238          ,p_module  => l_log_module);
179239 END IF;
179240 
179241 CLOSE header_cur;
179242 --
179243 
179244 --
179245 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
179246    trace
179247       (p_msg      => 'END of EventType_296'
179248       ,p_level    => C_LEVEL_PROCEDURE
179249       ,p_module   => l_log_module);
179250 END IF;
179251 --
179252 RETURN l_result;
179253 EXCEPTION
179254 WHEN xla_exceptions_pkg.application_exception THEN
179255    
179256 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
179257 
179258    
179259 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
179260 
179261    RAISE;
179262 
179263 WHEN NO_DATA_FOUND THEN
179264 
179265 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
179266 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
179267 
179268 FOR header_record IN header_cur
179269 LOOP
179270     l_array_header_events(header_record.event_id) := header_record.event_id;
179271 END LOOP;
179272 
179273 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
179274 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
179275 
179276 fnd_file.put_line(fnd_file.LOG, '                    ');
179277 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
179278 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
179279 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
179280 
179281 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
179282 LOOP
179283 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
179284 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
179285         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
179286 	END IF;
179287 END LOOP;
179288 
179289 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
179290 fnd_file.put_line(fnd_file.LOG, '                    ');
179291 
179292 
179293 xla_exceptions_pkg.raise_message
179294       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_296');
179295 
179296 
179297 WHEN OTHERS THEN
179298    xla_exceptions_pkg.raise_message
179299       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_296');
179300 END EventType_296;
179301 --
179302 
179303 ---------------------------------------
179304 --
179305 -- PRIVATE PROCEDURE
179306 --         insert_sources_297
179307 --
179308 ----------------------------------------
179309 --
179313                               , p_sla_ledger_id          IN NUMBER
179310 PROCEDURE insert_sources_297(
179311                                 p_target_ledger_id       IN NUMBER
179312                               , p_language               IN VARCHAR2
179314                               , p_pad_start_date         IN DATE
179315                               , p_pad_end_date           IN DATE
179316                          )
179317 IS
179318 
179319 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RETRO_PRICE_UPD';
179320 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DELIVER';
179321 p_apps_owner                   VARCHAR2(30);
179322 l_log_module                   VARCHAR2(240);
179323 BEGIN
179324 IF g_log_enabled THEN
179325       l_log_module := C_DEFAULT_MODULE||'.insert_sources_297';
179326 END IF;
179327 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
179328 
179329       trace
179330          (p_msg      => 'BEGIN of insert_sources_297'
179331          ,p_level    => C_LEVEL_PROCEDURE
179332          ,p_module   => l_log_module);
179333 
179334 END IF;
179335 
179336 -- select APPS owner
179337 SELECT oracle_username
179338   INTO p_apps_owner
179339   FROM fnd_oracle_userid
179340  WHERE read_only_flag = 'U'
179341 ;
179342 
179343 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179344       trace
179345          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
179346                         ' - p_language = '||p_language||
179347                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
179348                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
179349                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
179350                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
179351          ,p_level    => C_LEVEL_STATEMENT
179352          ,p_module   => l_log_module);
179353 END IF;
179354 
179355 
179356 --
179357 INSERT INTO xla_diag_sources --hdr1
179358 (
179359         event_id
179360       , ledger_id
179361       , sla_ledger_id
179362       , description_language
179363       , object_name
179364       , object_type_code
179365       , line_number
179366       , source_application_id
179367       , source_type_code
179368       , source_code
179369       , source_value
179370       , source_meaning
179371       , created_by
179372       , creation_date
179373       , last_update_date
179374       , last_updated_by
179375       , last_update_login
179376       , program_update_date
179377       , program_application_id
179378       , program_id
179379       , request_id
179380 )
179381 SELECT
179382         event_id
179383       , p_target_ledger_id
179384       , p_sla_ledger_id
179385       , p_language
179386       , object_name
179387       , object_type_code
179388       , line_number
179389       , source_application_id
179390       , source_type_code
179391       , source_code
179392       , SUBSTR(source_value ,1,1996)
179393       , SUBSTR(source_meaning,1,200)
179394       , xla_environment_pkg.g_Usr_Id
179395       , TRUNC(SYSDATE)
179396       , TRUNC(SYSDATE)
179397       , xla_environment_pkg.g_Usr_Id
179398       , xla_environment_pkg.g_Login_Id
179399       , TRUNC(SYSDATE)
179400       , xla_environment_pkg.g_Prog_Appl_Id
179401       , xla_environment_pkg.g_Prog_Id
179402       , xla_environment_pkg.g_Req_Id
179403   FROM (
179404        SELECT xet.event_id                  event_id
179405             , 0                             line_number
179406             , CASE r
179407                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
179408                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
179409                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
179410                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
179411                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
179412                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
179413                 
179414                ELSE null
179415               END                           object_name
179416             , CASE r
179417                 WHEN 1 THEN 'HEADER' 
179418                 WHEN 2 THEN 'HEADER' 
179419                 WHEN 3 THEN 'HEADER' 
179420                 WHEN 4 THEN 'HEADER' 
179421                 WHEN 5 THEN 'HEADER' 
179422                 WHEN 6 THEN 'HEADER' 
179423                 
179424                 ELSE null
179425               END                           object_type_code
179426             , CASE r
179427                 WHEN 1 THEN '555' 
179428                 WHEN 2 THEN '555' 
179429                 WHEN 3 THEN '555' 
179430                 WHEN 4 THEN '555' 
179431                 WHEN 5 THEN '555' 
179432                 WHEN 6 THEN '555' 
179433                 
179434                 ELSE null
179435               END                           source_application_id
179436             , 'S'             source_type_code
179437             , CASE r
179438                 WHEN 1 THEN 'ENTITY_CODE' 
179439                 WHEN 2 THEN 'CURRENCY_CODE' 
179440                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
179441                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
179442                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
179443                 WHEN 6 THEN 'TRANSACTION_DATE' 
179444                 
179445                 ELSE null
179446               END                           source_code
179447             , CASE r
179448                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
179449                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
179450                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
179451                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
179452                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
179453                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
179454                 
179455                 ELSE null
179456               END                           source_value
179460                          ,TO_CHAR(h1.CURRENCY_CODE)
179457             , CASE r
179458                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
179459                           1010186
179461                          ,'CURRENCY_CODE'
179462                          ,'S'
179463                          ,555)
179464                 
179465                 ELSE null
179466               END               source_meaning
179467         FROM xla_events_gt     xet  
179468       , GMF_XLA_EXTRACT_HEADERS  h1
179469             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
179470        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
179471          AND xet.event_type_code = C_EVENT_TYPE_CODE
179472             AND h1.event_id = xet.event_id
179473 
179474 )
179475 ;
179476 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179477 
179478       trace
179479          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
179480          ,p_level    => C_LEVEL_STATEMENT
179481          ,p_module   => l_log_module);
179482 
179483 END IF;
179484 --
179485 
179486 
179487 
179488 --
179489 INSERT INTO xla_diag_sources --line1
179490 (
179491         event_id
179492       , ledger_id
179493       , sla_ledger_id
179494       , description_language
179495       , object_name
179496       , object_type_code
179497       , line_number
179498       , source_application_id
179499       , source_type_code
179500       , source_code
179501       , source_value
179502       , source_meaning
179503       , created_by
179504       , creation_date
179505       , last_update_date
179506       , last_updated_by
179507       , last_update_login
179508       , program_update_date
179509       , program_application_id
179510       , program_id
179511       , request_id
179512 )
179513 SELECT  event_id
179514       , p_target_ledger_id
179515       , p_sla_ledger_id
179516       , p_language
179517       , object_name
179518       , object_type_code
179519       , line_number
179520       , source_application_id
179521       , source_type_code
179522       , source_code
179523       , SUBSTR(source_value,1,1996)
179524       , SUBSTR(source_meaning,1,200)
179525       , xla_environment_pkg.g_Usr_Id
179526       , TRUNC(SYSDATE)
179527       , TRUNC(SYSDATE)
179528       , xla_environment_pkg.g_Usr_Id
179529       , xla_environment_pkg.g_Login_Id
179530       , TRUNC(SYSDATE)
179531       , xla_environment_pkg.g_Prog_Appl_Id
179532       , xla_environment_pkg.g_Prog_Id
179533       , xla_environment_pkg.g_Req_Id
179534   FROM (
179535        SELECT xet.event_id                  event_id
179536             , l2.line_number                 line_number
179537             , CASE r
179538                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
179539                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
179540                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
179541                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
179542                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
179543                 
179544                ELSE null
179545               END                           object_name
179546             , CASE r
179547                 WHEN 1 THEN 'LINE' 
179548                 WHEN 2 THEN 'LINE' 
179549                 WHEN 3 THEN 'LINE' 
179550                 WHEN 4 THEN 'LINE' 
179551                 WHEN 5 THEN 'LINE' 
179552                 
179553                 ELSE null
179554               END                           object_type_code
179555             , CASE r
179556                 WHEN 1 THEN '555' 
179557                 WHEN 2 THEN '555' 
179558                 WHEN 3 THEN '555' 
179559                 WHEN 4 THEN '555' 
179560                 WHEN 5 THEN '555' 
179561                 
179562                 ELSE null
179563               END                           source_application_id
179564             , 'S'             source_type_code
179565             , CASE r
179566                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
179567                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
179568                 WHEN 3 THEN 'ENTERED_AMOUNT' 
179569                 WHEN 4 THEN 'LINE_ID' 
179570                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
179571                 
179572                 ELSE null
179573               END                           source_code
179574             , CASE r
179575                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
179576                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
179577                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
179578                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
179579                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
179580                 
179581                 ELSE null
179582               END                           source_value
179583             , null              source_meaning
179584          FROM  xla_events_gt     xet  
179585         , GMF_XLA_EXTRACT_LINES  l2
179586             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
179587         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
179588           AND xet.event_type_code = C_EVENT_TYPE_CODE
179589             AND l2.event_id          = xet.event_id
179590 
179591 )
179592 ;
179593 --
179594 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179595 
179596       trace
179597          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
179598          ,p_level    => C_LEVEL_STATEMENT
179599          ,p_module   => l_log_module);
179600 
179601 END IF;
179602 
179603 
179604 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
179605       trace
179606          (p_msg      => 'END of insert_sources_297'
179607          ,p_level    => C_LEVEL_PROCEDURE
179608          ,p_module   => l_log_module);
179609 END IF;
179610 EXCEPTION
179614                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
179611   WHEN xla_exceptions_pkg.application_exception THEN
179612       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
179613             trace
179615                ,p_level    => C_LEVEL_EXCEPTION
179616                ,p_module   => l_log_module);
179617       END IF;
179618       RAISE;
179619   WHEN OTHERS THEN
179620       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
179621             trace
179622                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
179623                ,p_level    => C_LEVEL_EXCEPTION
179624                ,p_module   => l_log_module);
179625        END IF;
179626        xla_exceptions_pkg.raise_message
179627            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_297');
179628 END insert_sources_297;
179629 --
179630 
179631 ---------------------------------------
179632 --
179633 -- PRIVATE FUNCTION
179634 --         EventType_297
179635 --
179636 ----------------------------------------
179637 --
179638 FUNCTION EventType_297
179639        (p_application_id         IN NUMBER
179640        ,p_base_ledger_id         IN NUMBER
179641        ,p_target_ledger_id       IN NUMBER
179642        ,p_language               IN VARCHAR2
179643        ,p_currency_code          IN VARCHAR2
179644        ,p_sla_ledger_id          IN NUMBER
179645        ,p_pad_start_date         IN DATE
179646        ,p_pad_end_date           IN DATE
179647        ,p_primary_ledger_id      IN NUMBER)
179648 RETURN BOOLEAN IS
179649 --
179650 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RETRO_PRICE_UPD';
179651 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DELIVER';
179652 
179653 l_calculate_acctd_flag   VARCHAR2(1) :='N';
179654 l_calculate_g_l_flag     VARCHAR2(1) :='N';
179655 --
179656 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179657 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179658 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
179659 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179660 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179661 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
179662 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
179663 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179664 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179665 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179666 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179667 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179668 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179669 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179670 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179671 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179672 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179673 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179674 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179675 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179676 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179677 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179678 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
179679 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
179680 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
179681 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
179682 
179683 l_event_id                             NUMBER;
179684 l_previous_event_id                    NUMBER;
179685 l_first_event_id                       NUMBER;
179686 l_last_event_id                        NUMBER;
179687 
179688 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
179689 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
179690 --
179691 --
179692 l_result                    BOOLEAN := TRUE;
179693 l_rows                      NUMBER  := 1000;
179694 l_event_type_name           VARCHAR2(80) := 'Retroactive Price Update';
179695 l_event_class_name          VARCHAR2(80) := 'Deliver to or Return from Inventory';
179696 l_description               VARCHAR2(4000);
179697 l_transaction_reversal      NUMBER;
179698 l_ae_header_id              NUMBER;
179699 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
179700 l_log_module                VARCHAR2(240);
179701 --
179702 l_acct_reversal_source      VARCHAR2(30);
179703 l_trx_reversal_source       VARCHAR2(30);
179704 
179705 l_continue_with_lines       BOOLEAN := TRUE;
179706 --
179707 l_acc_rev_gl_date_source    DATE;                      -- 4262811
179708 --
179709 type t_array_event_id is table of number index by binary_integer;
179710 
179711 l_rec_array_event                    t_rec_array_event;
179712 l_null_rec_array_event               t_rec_array_event;
179713 l_array_ae_header_id                 xla_number_array_type;
179714 l_actual_flag                        VARCHAR2(1) := NULL;
179715 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
179716 l_balance_type_code                  VARCHAR2(1) :=NULL;
179717 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
179718 
179719 --
179720 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
179721 --
179722 
179723 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
179724 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
179728 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
179725 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
179726 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
179727 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
179729 
179730 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
179731 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
179732 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
179733 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
179734 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
179735 
179736 l_array_source_6              t_array_source_6;
179737 l_array_source_7              t_array_source_7;
179738 l_array_source_8              t_array_source_8;
179739 l_array_source_9              t_array_source_9;
179740 l_array_source_10              t_array_source_10;
179741 l_array_source_12              t_array_source_12;
179742 
179743 l_array_source_1      t_array_source_1;
179744 l_array_source_2      t_array_source_2;
179745 l_array_source_3      t_array_source_3;
179746 l_array_source_5      t_array_source_5;
179747 l_array_source_11      t_array_source_11;
179748 
179749 --
179750 CURSOR header_cur
179751 IS
179752 SELECT /*+ leading(xet) cardinality(xet,1) */
179753 -- Event Type Code: RETRO_PRICE_UPD
179754 -- Event Class Code: DELIVER
179755     xet.entity_id
179756   , xet.legal_entity_id
179757   , xet.entity_code
179758   , xet.transaction_number
179759   , xet.event_id
179760   , xet.event_class_code
179761   , xet.event_type_code
179762   , xet.event_number
179763   , xet.event_date
179764   , xet.transaction_date
179765   , xet.reference_num_1
179766   , xet.reference_num_2
179767   , xet.reference_num_3
179768   , xet.reference_num_4
179769   , xet.reference_char_1
179770   , xet.reference_char_2
179771   , xet.reference_char_3
179772   , xet.reference_char_4
179773   , xet.reference_date_1
179774   , xet.reference_date_2
179775   , xet.reference_date_3
179776   , xet.reference_date_4
179777   , xet.event_created_by
179778   , xet.budgetary_control_flag 
179779   , h1.ENTITY_CODE    source_6
179780   , h1.CURRENCY_CODE    source_7
179781   , h1.CURRENCY_CONVERSION_DATE    source_8
179782   , h1.CURRENCY_CONVERSION_RATE    source_9
179783   , h1.CURRENCY_CONVERSION_TYPE    source_10
179784   , h1.TRANSACTION_DATE    source_12
179785   FROM xla_events_gt     xet 
179786   , GMF_XLA_EXTRACT_HEADERS  h1
179787  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
179788    and xet.event_type_code = C_EVENT_TYPE_CODE
179789    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
179790 
179791  ORDER BY event_id
179792 ;
179793 
179794 
179795 --
179796 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
179797 IS
179798 SELECT /*+ leading(xet) cardinality(xet,1) */
179799 -- Event Type Code: RETRO_PRICE_UPD
179800 -- Event Class Code: DELIVER
179801     xet.entity_id
179802    ,xet.legal_entity_id
179803    ,xet.entity_code
179804    ,xet.transaction_number
179805    ,xet.event_id
179806    ,xet.event_class_code
179807    ,xet.event_type_code
179808    ,xet.event_number
179809    ,xet.event_date
179810    ,xet.transaction_date
179811    ,xet.reference_num_1
179812    ,xet.reference_num_2
179813    ,xet.reference_num_3
179814    ,xet.reference_num_4
179815    ,xet.reference_char_1
179816    ,xet.reference_char_2
179817    ,xet.reference_char_3
179818    ,xet.reference_char_4
179819    ,xet.reference_date_1
179820    ,xet.reference_date_2
179821    ,xet.reference_date_3
179822    ,xet.reference_date_4
179823    ,xet.event_created_by
179824    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
179825   , l2.TRANSACTION_ACCOUNT_ID    source_1
179826   , l2.JOURNAL_LINE_TYPE    source_2
179827   , l2.ENTERED_AMOUNT    source_3
179828   , l2.LINE_ID    source_5
179829   , l2.ACCOUNTED_AMOUNT    source_11
179830   FROM xla_events_gt     xet 
179831   , GMF_XLA_EXTRACT_LINES  l2
179832  WHERE xet.event_id between x_first_event_id and x_last_event_id
179833    and xet.event_date between p_pad_start_date and p_pad_end_date
179834    and xet.event_type_code = C_EVENT_TYPE_CODE
179835    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
179836 ;
179837 
179838 --
179839 BEGIN
179840 IF g_log_enabled THEN
179841    l_log_module := C_DEFAULT_MODULE||'.EventType_297';
179842 END IF;
179843 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
179844    trace
179845       (p_msg      => 'BEGIN of EventType_297'
179846       ,p_level    => C_LEVEL_PROCEDURE
179847       ,p_module   => l_log_module);
179848 END IF;
179849 
179850 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179851    trace
179852       (p_msg      => 'p_application_id = '||p_application_id||
179853                      ' - p_base_ledger_id = '||p_base_ledger_id||
179854                      ' - p_target_ledger_id  = '||p_target_ledger_id||
179855                      ' - p_language = '||p_language||
179856                      ' - p_currency_code = '||p_currency_code||
179857                      ' - p_sla_ledger_id = '||p_sla_ledger_id
179858       ,p_level    => C_LEVEL_STATEMENT
179859       ,p_module   => l_log_module);
179860 END IF;
179861 --
179862 -- initialze arrays
179863 --
179864 g_array_event.DELETE;
179865 l_rec_array_event := l_null_rec_array_event;
179866 --
179867 --------------------------------------
179868 -- 4262811 Initialze MPA Line Number
179869 --------------------------------------
179873 
179870 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
179871 
179872 --
179874 --
179875 OPEN header_cur;
179876 --
179877 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179878    trace
179879    (p_msg      => 'SQL - FETCH header_cur'
179880    ,p_level    => C_LEVEL_STATEMENT
179881    ,p_module   => l_log_module);
179882 END IF;
179883 --
179884 LOOP
179885 FETCH header_cur BULK COLLECT INTO
179886         l_array_entity_id
179887       , l_array_legal_entity_id
179888       , l_array_entity_code
179889       , l_array_transaction_num
179890       , l_array_event_id
179891       , l_array_class_code
179892       , l_array_event_type
179893       , l_array_event_number
179894       , l_array_event_date
179895       , l_array_transaction_date
179896       , l_array_reference_num_1
179897       , l_array_reference_num_2
179898       , l_array_reference_num_3
179899       , l_array_reference_num_4
179900       , l_array_reference_char_1
179901       , l_array_reference_char_2
179902       , l_array_reference_char_3
179903       , l_array_reference_char_4
179904       , l_array_reference_date_1
179905       , l_array_reference_date_2
179906       , l_array_reference_date_3
179907       , l_array_reference_date_4
179908       , l_array_event_created_by
179909       , l_array_budgetary_control_flag 
179910       , l_array_source_6
179911       , l_array_source_7
179912       , l_array_source_8
179913       , l_array_source_9
179914       , l_array_source_10
179915       , l_array_source_12
179916       LIMIT l_rows;
179917 --
179918 IF (C_LEVEL_EVENT >= g_log_level) THEN
179919    trace
179920    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
179921    ,p_level    => C_LEVEL_EVENT
179922    ,p_module   => l_log_module);
179923 END IF;
179924 --
179925 EXIT WHEN l_array_entity_id.COUNT = 0;
179926 
179927 -- initialize arrays
179928 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
179929 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
179930 
179931 --
179932 -- Bug 4458708
179933 --
179934 XLA_AE_LINES_PKG.g_LineNumber := 0;
179935 
179936 
179937 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
179938 g_last_hdr_idx := l_array_event_id.LAST;
179939 --
179940 -- loop for the headers. Each iteration is for each header extract row
179941 -- fetched in header cursor
179942 --
179943 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
179944 
179945 --
179946 -- set event info as cache for other routines to refer event attributes
179947 --
179948 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
179949    (p_application_id           => p_application_id
179950    ,p_primary_ledger_id        => p_primary_ledger_id
179951    ,p_base_ledger_id           => p_base_ledger_id
179952    ,p_target_ledger_id         => p_target_ledger_id
179953    ,p_entity_id                => l_array_entity_id(hdr_idx)
179954    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
179955    ,p_entity_code              => l_array_entity_code(hdr_idx)
179956    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
179957    ,p_event_id                 => l_array_event_id(hdr_idx)
179958    ,p_event_class_code         => l_array_class_code(hdr_idx)
179959    ,p_event_type_code          => l_array_event_type(hdr_idx)
179960    ,p_event_number             => l_array_event_number(hdr_idx)
179961    ,p_event_date               => l_array_event_date(hdr_idx)
179962    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
179963    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
179964    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
179965    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
179966    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
179967    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
179968    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
179969    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
179970    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
179971    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
179972    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
179973    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
179974    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
179975    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
179976    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
179977 
179978 --
179979 -- set the status of entry to C_VALID (0)
179980 --
179981 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
179982 
179983 --
179984 -- initialize a row for ae header
179985 --
179986 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
179987 
179988 l_event_id := l_array_event_id(hdr_idx);
179989 
179990 --
179991 -- storing the hdr_idx for event. May be used by line cursor.
179992 --
179993 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
179994 
179995 --
179996 -- store sources from header extract. This can be improved to
179997 -- store only those sources from header extract that may be used in lines
179998 --
179999 
180000 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
180001 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
180002 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
180003 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
180004 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
180005 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
180006 
180007 --
180008 -- initilaize the status of ae headers for diffrent balance types
180012 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
180009 -- the status is initialised to C_NOT_CREATED (2)
180010 --
180011 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
180013 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
180014 
180015 --
180016 -- call api to validate and store accounting attributes for header
180017 --
180018 
180019 ------------------------------------------------------------
180020 -- Accrual Reversal : to get date for Standard Source (NONE)
180021 ------------------------------------------------------------
180022 l_acc_rev_gl_date_source := NULL;
180023 
180024      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
180025       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
180026 
180027 
180028 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
180029 
180030 XLA_AE_HEADER_PKG.SetJeCategoryName;
180031 
180032 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
180033 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
180034 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
180035 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
180036 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
180037 
180038 
180039 -- No header level analytical criteria
180040 
180041 --
180042 --accounting attribute enhancement, bug 3612931
180043 --
180044 l_trx_reversal_source := SUBSTR(NULL, 1,30);
180045 
180046 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
180047    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
180048 
180049    xla_accounting_err_pkg.build_message
180050       (p_appli_s_name            => 'XLA'
180051       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
180052       ,p_token_1                 => 'ACCT_ATTR_NAME'
180053       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
180054       ,p_token_2                 => 'PRODUCT_NAME'
180055       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
180056       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
180057       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
180058       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
180059 
180060 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
180061    --
180062    -- following sets the accounting attributes needed to reverse
180063    -- accounting for a distributeion
180064    --
180065    xla_ae_lines_pkg.SetTrxReversalAttrs
180066       (p_event_id              => l_event_id
180067       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
180068       ,p_trx_reversal_source   => l_trx_reversal_source);
180069 
180070 END IF;
180071 
180072 
180073 ----------------------------------------------------------------
180074 -- 4262811 -  update the header statuses to invalid in need be
180075 ----------------------------------------------------------------
180076 --
180077 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
180078 
180079 
180080   -----------------------------------------------
180081   -- No accrual reversal for the event class/type
180082   -----------------------------------------------
180083 ----------------------------------------------------------------
180084 
180085 --
180086 -- this ends the header loop iteration for one bulk fetch
180087 --
180088 END LOOP;
180089 
180090 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
180091 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
180092 
180093 --
180094 -- insert dummy rows into lines gt table that were created due to
180095 -- transaction reversals
180096 --
180097 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
180098    l_result := XLA_AE_LINES_PKG.InsertLines;
180099 END IF;
180100 
180101 --
180102 -- reset the temp_line_num for each set of events fetched from header
180103 -- cursor rather than doing it for each new event in line cursor
180104 -- Bug 3939231
180105 --
180106 xla_ae_lines_pkg.g_temp_line_num := 0;
180107 
180108 
180109 
180110 --
180111 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
180112 --
180113 --
180114 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180115 
180116       trace
180117          (p_msg      => 'SQL - FETCH line_cur'
180118          ,p_level    => C_LEVEL_STATEMENT
180119          ,p_module   => l_log_module);
180120 
180121 END IF;
180122 --
180123 --
180124 LOOP
180125   --
180126   FETCH line_cur BULK COLLECT INTO
180127         l_array_entity_id
180128       , l_array_legal_entity_id
180129       , l_array_entity_code
180130       , l_array_transaction_num
180131       , l_array_event_id
180132       , l_array_class_code
180133       , l_array_event_type
180134       , l_array_event_number
180135       , l_array_event_date
180136       , l_array_transaction_date
180137       , l_array_reference_num_1
180138       , l_array_reference_num_2
180139       , l_array_reference_num_3
180140       , l_array_reference_num_4
180141       , l_array_reference_char_1
180142       , l_array_reference_char_2
180143       , l_array_reference_char_3
180144       , l_array_reference_char_4
180145       , l_array_reference_date_1
180146       , l_array_reference_date_2
180147       , l_array_reference_date_3
180148       , l_array_reference_date_4
180149       , l_array_event_created_by
180153       , l_array_source_2
180150       , l_array_budgetary_control_flag
180151       , l_array_extract_line_num 
180152       , l_array_source_1
180154       , l_array_source_3
180155       , l_array_source_5
180156       , l_array_source_11
180157       LIMIT l_rows;
180158 
180159   --
180160   IF (C_LEVEL_EVENT >= g_log_level) THEN
180161             trace
180162                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
180163                ,p_level    => C_LEVEL_EVENT
180164                ,p_module   => l_log_module);
180165   END IF;
180166   --
180167   EXIT WHEN l_array_entity_id.count = 0;
180168 
180169   XLA_AE_LINES_PKG.g_rec_lines := null;
180170 
180171 --
180172 -- Bug 4458708
180173 --
180174 XLA_AE_LINES_PKG.g_LineNumber := 0;
180175 --
180176 --
180177 
180178 FOR Idx IN 1..l_array_event_id.count LOOP
180179    --
180180    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
180181    --
180182    l_event_id := l_array_event_id(idx);  -- 5648433
180183 
180184    --
180185    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
180186    --
180187 
180188    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
180189              (g_array_event(l_event_id).array_value_num('header_index'))
180190          ,'N'
180191          ) <> 'Y'
180192    THEN
180193       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180194          trace
180195             (p_msg      => 'Trancaction revesal option is not Y '
180196             ,p_level    => C_LEVEL_STATEMENT
180197             ,p_module   => l_log_module);
180198       END IF;
180199 
180200 --
180201 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
180202 --
180203 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
180204 --
180205 -- set event info as cache for other routines to refer event attributes
180206 --
180207 
180208 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
180209    l_previous_event_id := l_event_id;
180210 
180211    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
180212       (p_application_id           => p_application_id
180213       ,p_primary_ledger_id        => p_primary_ledger_id
180214       ,p_base_ledger_id           => p_base_ledger_id
180215       ,p_target_ledger_id         => p_target_ledger_id
180216       ,p_entity_id                => l_array_entity_id(Idx)
180217       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
180218       ,p_entity_code              => l_array_entity_code(Idx)
180219       ,p_transaction_num          => l_array_transaction_num(Idx)
180220       ,p_event_id                 => l_array_event_id(Idx)
180221       ,p_event_class_code         => l_array_class_code(Idx)
180222       ,p_event_type_code          => l_array_event_type(Idx)
180223       ,p_event_number             => l_array_event_number(Idx)
180224       ,p_event_date               => l_array_event_date(Idx)
180225       ,p_transaction_date         => l_array_transaction_date(Idx)
180226       ,p_reference_num_1          => l_array_reference_num_1(Idx)
180227       ,p_reference_num_2          => l_array_reference_num_2(Idx)
180228       ,p_reference_num_3          => l_array_reference_num_3(Idx)
180229       ,p_reference_num_4          => l_array_reference_num_4(Idx)
180230       ,p_reference_char_1         => l_array_reference_char_1(Idx)
180231       ,p_reference_char_2         => l_array_reference_char_2(Idx)
180232       ,p_reference_char_3         => l_array_reference_char_3(Idx)
180233       ,p_reference_char_4         => l_array_reference_char_4(Idx)
180234       ,p_reference_date_1         => l_array_reference_date_1(Idx)
180235       ,p_reference_date_2         => l_array_reference_date_2(Idx)
180236       ,p_reference_date_3         => l_array_reference_date_3(Idx)
180237       ,p_reference_date_4         => l_array_reference_date_4(Idx)
180238       ,p_event_created_by         => l_array_event_created_by(Idx)
180239       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
180240        --
180241 END IF;
180242 
180243 
180244 
180245 --
180246 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
180247 
180248 l_acct_reversal_source := SUBSTR(NULL, 1,30);
180249 
180250 IF l_continue_with_lines THEN
180251    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
180252       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
180253 
180254       xla_accounting_err_pkg.build_message
180255          (p_appli_s_name            => 'XLA'
180256          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
180257          ,p_token_1                 => 'LINE_NUMBER'
180258          ,p_value_1                 => l_array_extract_line_num(Idx)
180259          ,p_token_2                 => 'PRODUCT_NAME'
180260          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
180261          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
180262          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
180263          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
180264 
180265    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
180266       --
180267       -- following sets the accounting attributes needed to reverse
180268       -- accounting for a distributeion
180269       --
180270 
180271       --
180272       -- 5217187
180273       --
180274       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
180275       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
180276                                        g_array_event(l_event_id).array_value_num('header_index'));
180277       --
180278       --
180279 
180280       -- No reversal code generated
180281 
180282       xla_ae_lines_pkg.SetAcctReversalAttrs
180286          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
180283          (p_event_id             => l_event_id
180284          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
180285          ,p_calculate_acctd_flag => l_calculate_acctd_flag
180287    END IF;
180288 
180289    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
180290        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
180291 
180292 --
180293 AcctLineType_51 (
180294  p_application_id  => p_application_id
180295  ,p_event_id     => l_event_id
180296  ,p_calculate_acctd_flag => l_calculate_acctd_flag
180297  ,p_calculate_g_l_flag => l_calculate_g_l_flag
180298  ,p_actual_flag => l_actual_flag
180299  ,p_balance_type_code => l_balance_type_code
180300  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180301  
180302  , p_source_1 => l_array_source_1(Idx)
180303  , p_source_2 => l_array_source_2(Idx)
180304  , p_source_3 => l_array_source_3(Idx)
180305  , p_source_5 => l_array_source_5(Idx)
180306  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
180307  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
180308  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
180309  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
180310  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
180311  , p_source_11 => l_array_source_11(Idx)
180312  );
180313 If(l_balance_type_code = 'A') THEN
180314   l_actual_gain_loss_ref := l_gain_or_loss_ref;
180315 END IF;
180316 
180317 --
180318 
180319 
180320 --
180321 AcctLineType_233 (
180322  p_application_id  => p_application_id
180323  ,p_event_id     => l_event_id
180324  ,p_calculate_acctd_flag => l_calculate_acctd_flag
180325  ,p_calculate_g_l_flag => l_calculate_g_l_flag
180326  ,p_actual_flag => l_actual_flag
180327  ,p_balance_type_code => l_balance_type_code
180328  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180329  
180330  , p_source_1 => l_array_source_1(Idx)
180331  , p_source_2 => l_array_source_2(Idx)
180332  , p_source_3 => l_array_source_3(Idx)
180333  , p_source_5 => l_array_source_5(Idx)
180334  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
180335  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
180336  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
180337  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
180338  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
180339  , p_source_11 => l_array_source_11(Idx)
180340  );
180341 If(l_balance_type_code = 'A') THEN
180342   l_actual_gain_loss_ref := l_gain_or_loss_ref;
180343 END IF;
180344 
180345 --
180346 
180347       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
180348       -- or secondary ledger that has different currency with primary
180349       -- or alc that is calculated by sla
180350       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
180351             (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'))
180352 
180353 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
180354 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
180355           AND (l_actual_flag = 'A')) THEN
180356         XLA_AE_LINES_PKG.CreateGainOrLossLines(
180357           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
180358          ,p_application_id   => p_application_id
180359          ,p_amb_context_code => 'DEFAULT'
180360          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
180361          ,p_event_class_code => C_EVENT_CLASS_CODE
180362          ,p_event_type_code  => C_EVENT_TYPE_CODE
180363          
180364          ,p_gain_ccid        => -1
180365          ,p_loss_ccid        => -1
180366 
180367          ,p_actual_flag      => l_actual_flag
180368          ,p_enc_flag         => null
180369          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
180370          ,p_enc_g_l_ref      => null
180371          );
180372       END IF;
180373    END IF;
180374 END IF;
180375 
180376    ELSE
180377       --
180378       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
180379       --
180380       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180381          trace
180382             (p_msg      => 'Trancaction revesal option is Y'
180383             ,p_level    => C_LEVEL_STATEMENT
180384             ,p_module   => l_log_module);
180385       END IF;
180386    END IF;
180387 
180388 END LOOP;
180389 l_result := XLA_AE_LINES_PKG.InsertLines ;
180390 end loop;
180391 close line_cur;
180392 
180393 
180394 --
180395 -- insert headers into xla_ae_headers_gt table
180396 --
180397 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
180398 
180399 -- insert into errors table here.
180400 
180401 END LOOP;
180402 
180403 --
180404 -- 4865292
180405 --
180406 -- Compare g_hdr_extract_count with event count in
180407 -- CreateHeadersAndLines.
180408 --
180409 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
180410 
180411 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180412    trace (p_msg     => '# rows extracted from header extract objects '
180413                     || ' (running total): '
180414                     || g_hdr_extract_count
180415          ,p_level   => C_LEVEL_STATEMENT
180416          ,p_module  => l_log_module);
180417 END IF;
180418 
180419 CLOSE header_cur;
180420 --
180421 
180422 --
180423 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180424    trace
180425       (p_msg      => 'END of EventType_297'
180426       ,p_level    => C_LEVEL_PROCEDURE
180427       ,p_module   => l_log_module);
180428 END IF;
180432 WHEN xla_exceptions_pkg.application_exception THEN
180429 --
180430 RETURN l_result;
180431 EXCEPTION
180433    
180434 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
180435 
180436    
180437 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
180438 
180439    RAISE;
180440 
180441 WHEN NO_DATA_FOUND THEN
180442 
180443 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
180444 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
180445 
180446 FOR header_record IN header_cur
180447 LOOP
180448     l_array_header_events(header_record.event_id) := header_record.event_id;
180449 END LOOP;
180450 
180451 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
180452 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
180453 
180454 fnd_file.put_line(fnd_file.LOG, '                    ');
180455 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
180456 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
180457 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
180458 
180459 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
180460 LOOP
180461 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
180462 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
180463         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
180464 	END IF;
180465 END LOOP;
180466 
180467 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
180468 fnd_file.put_line(fnd_file.LOG, '                    ');
180469 
180470 
180471 xla_exceptions_pkg.raise_message
180472       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_297');
180473 
180474 
180475 WHEN OTHERS THEN
180476    xla_exceptions_pkg.raise_message
180477       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_297');
180478 END EventType_297;
180479 --
180480 
180481 ---------------------------------------
180482 --
180483 -- PRIVATE PROCEDURE
180484 --         insert_sources_298
180485 --
180486 ----------------------------------------
180487 --
180488 PROCEDURE insert_sources_298(
180489                                 p_target_ledger_id       IN NUMBER
180490                               , p_language               IN VARCHAR2
180491                               , p_sla_ledger_id          IN NUMBER
180492                               , p_pad_start_date         IN DATE
180493                               , p_pad_end_date           IN DATE
180494                          )
180495 IS
180496 
180497 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RET_TO_RECEIVING';
180498 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DELIVER';
180499 p_apps_owner                   VARCHAR2(30);
180500 l_log_module                   VARCHAR2(240);
180501 BEGIN
180502 IF g_log_enabled THEN
180503       l_log_module := C_DEFAULT_MODULE||'.insert_sources_298';
180504 END IF;
180505 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180506 
180507       trace
180508          (p_msg      => 'BEGIN of insert_sources_298'
180509          ,p_level    => C_LEVEL_PROCEDURE
180510          ,p_module   => l_log_module);
180511 
180512 END IF;
180513 
180514 -- select APPS owner
180515 SELECT oracle_username
180516   INTO p_apps_owner
180517   FROM fnd_oracle_userid
180518  WHERE read_only_flag = 'U'
180519 ;
180520 
180521 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180522       trace
180523          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
180524                         ' - p_language = '||p_language||
180525                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
180526                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
180527                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
180528                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
180529          ,p_level    => C_LEVEL_STATEMENT
180530          ,p_module   => l_log_module);
180531 END IF;
180532 
180533 
180534 --
180535 INSERT INTO xla_diag_sources --hdr1
180536 (
180537         event_id
180538       , ledger_id
180539       , sla_ledger_id
180540       , description_language
180541       , object_name
180542       , object_type_code
180543       , line_number
180544       , source_application_id
180545       , source_type_code
180546       , source_code
180547       , source_value
180548       , source_meaning
180549       , created_by
180550       , creation_date
180551       , last_update_date
180552       , last_updated_by
180553       , last_update_login
180554       , program_update_date
180555       , program_application_id
180556       , program_id
180557       , request_id
180558 )
180559 SELECT
180560         event_id
180561       , p_target_ledger_id
180562       , p_sla_ledger_id
180563       , p_language
180564       , object_name
180565       , object_type_code
180566       , line_number
180567       , source_application_id
180568       , source_type_code
180569       , source_code
180570       , SUBSTR(source_value ,1,1996)
180571       , SUBSTR(source_meaning,1,200)
180572       , xla_environment_pkg.g_Usr_Id
180573       , TRUNC(SYSDATE)
180574       , TRUNC(SYSDATE)
180575       , xla_environment_pkg.g_Usr_Id
180576       , xla_environment_pkg.g_Login_Id
180577       , TRUNC(SYSDATE)
180578       , xla_environment_pkg.g_Prog_Appl_Id
180579       , xla_environment_pkg.g_Prog_Id
180580       , xla_environment_pkg.g_Req_Id
180581   FROM (
180582        SELECT xet.event_id                  event_id
180583             , 0                             line_number
180584             , CASE r
180588                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
180585                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
180586                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
180587                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
180589                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
180590                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
180591                 
180592                ELSE null
180593               END                           object_name
180594             , CASE r
180595                 WHEN 1 THEN 'HEADER' 
180596                 WHEN 2 THEN 'HEADER' 
180597                 WHEN 3 THEN 'HEADER' 
180598                 WHEN 4 THEN 'HEADER' 
180599                 WHEN 5 THEN 'HEADER' 
180600                 WHEN 6 THEN 'HEADER' 
180601                 
180602                 ELSE null
180603               END                           object_type_code
180604             , CASE r
180605                 WHEN 1 THEN '555' 
180606                 WHEN 2 THEN '555' 
180607                 WHEN 3 THEN '555' 
180608                 WHEN 4 THEN '555' 
180609                 WHEN 5 THEN '555' 
180610                 WHEN 6 THEN '555' 
180611                 
180612                 ELSE null
180613               END                           source_application_id
180614             , 'S'             source_type_code
180615             , CASE r
180616                 WHEN 1 THEN 'ENTITY_CODE' 
180617                 WHEN 2 THEN 'CURRENCY_CODE' 
180618                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
180619                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
180620                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
180621                 WHEN 6 THEN 'TRANSACTION_DATE' 
180622                 
180623                 ELSE null
180624               END                           source_code
180625             , CASE r
180626                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
180627                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
180628                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
180629                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
180630                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
180631                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
180632                 
180633                 ELSE null
180634               END                           source_value
180635             , CASE r
180636                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
180637                           1010186
180638                          ,TO_CHAR(h1.CURRENCY_CODE)
180639                          ,'CURRENCY_CODE'
180640                          ,'S'
180641                          ,555)
180642                 
180643                 ELSE null
180644               END               source_meaning
180645         FROM xla_events_gt     xet  
180646       , GMF_XLA_EXTRACT_HEADERS  h1
180647             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
180648        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
180649          AND xet.event_type_code = C_EVENT_TYPE_CODE
180650             AND h1.event_id = xet.event_id
180651 
180652 )
180653 ;
180654 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180655 
180656       trace
180657          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
180658          ,p_level    => C_LEVEL_STATEMENT
180659          ,p_module   => l_log_module);
180660 
180661 END IF;
180662 --
180663 
180664 
180665 
180666 --
180667 INSERT INTO xla_diag_sources --line1
180668 (
180669         event_id
180670       , ledger_id
180671       , sla_ledger_id
180672       , description_language
180673       , object_name
180674       , object_type_code
180675       , line_number
180676       , source_application_id
180677       , source_type_code
180678       , source_code
180679       , source_value
180680       , source_meaning
180681       , created_by
180682       , creation_date
180683       , last_update_date
180684       , last_updated_by
180685       , last_update_login
180686       , program_update_date
180687       , program_application_id
180688       , program_id
180689       , request_id
180690 )
180691 SELECT  event_id
180692       , p_target_ledger_id
180693       , p_sla_ledger_id
180694       , p_language
180695       , object_name
180696       , object_type_code
180697       , line_number
180698       , source_application_id
180699       , source_type_code
180700       , source_code
180701       , SUBSTR(source_value,1,1996)
180702       , SUBSTR(source_meaning,1,200)
180703       , xla_environment_pkg.g_Usr_Id
180704       , TRUNC(SYSDATE)
180705       , TRUNC(SYSDATE)
180706       , xla_environment_pkg.g_Usr_Id
180707       , xla_environment_pkg.g_Login_Id
180708       , TRUNC(SYSDATE)
180709       , xla_environment_pkg.g_Prog_Appl_Id
180710       , xla_environment_pkg.g_Prog_Id
180711       , xla_environment_pkg.g_Req_Id
180712   FROM (
180713        SELECT xet.event_id                  event_id
180714             , l2.line_number                 line_number
180715             , CASE r
180716                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
180717                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
180718                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
180719                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
180720                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
180721                 
180722                ELSE null
180723               END                           object_name
180724             , CASE r
180725                 WHEN 1 THEN 'LINE' 
180726                 WHEN 2 THEN 'LINE' 
180727                 WHEN 3 THEN 'LINE' 
180728                 WHEN 4 THEN 'LINE' 
180729                 WHEN 5 THEN 'LINE' 
180730                 
180731                 ELSE null
180735                 WHEN 2 THEN '555' 
180732               END                           object_type_code
180733             , CASE r
180734                 WHEN 1 THEN '555' 
180736                 WHEN 3 THEN '555' 
180737                 WHEN 4 THEN '555' 
180738                 WHEN 5 THEN '555' 
180739                 
180740                 ELSE null
180741               END                           source_application_id
180742             , 'S'             source_type_code
180743             , CASE r
180744                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
180745                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
180746                 WHEN 3 THEN 'ENTERED_AMOUNT' 
180747                 WHEN 4 THEN 'LINE_ID' 
180748                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
180749                 
180750                 ELSE null
180751               END                           source_code
180752             , CASE r
180753                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
180754                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
180755                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
180756                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
180757                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
180758                 
180759                 ELSE null
180760               END                           source_value
180761             , null              source_meaning
180762          FROM  xla_events_gt     xet  
180763         , GMF_XLA_EXTRACT_LINES  l2
180764             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
180765         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
180766           AND xet.event_type_code = C_EVENT_TYPE_CODE
180767             AND l2.event_id          = xet.event_id
180768 
180769 )
180770 ;
180771 --
180772 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180773 
180774       trace
180775          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
180776          ,p_level    => C_LEVEL_STATEMENT
180777          ,p_module   => l_log_module);
180778 
180779 END IF;
180780 
180781 
180782 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180783       trace
180784          (p_msg      => 'END of insert_sources_298'
180785          ,p_level    => C_LEVEL_PROCEDURE
180786          ,p_module   => l_log_module);
180787 END IF;
180788 EXCEPTION
180789   WHEN xla_exceptions_pkg.application_exception THEN
180790       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
180791             trace
180792                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
180793                ,p_level    => C_LEVEL_EXCEPTION
180794                ,p_module   => l_log_module);
180795       END IF;
180796       RAISE;
180797   WHEN OTHERS THEN
180798       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
180799             trace
180800                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
180801                ,p_level    => C_LEVEL_EXCEPTION
180802                ,p_module   => l_log_module);
180803        END IF;
180804        xla_exceptions_pkg.raise_message
180805            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_298');
180806 END insert_sources_298;
180807 --
180808 
180809 ---------------------------------------
180810 --
180811 -- PRIVATE FUNCTION
180812 --         EventType_298
180813 --
180814 ----------------------------------------
180815 --
180816 FUNCTION EventType_298
180817        (p_application_id         IN NUMBER
180818        ,p_base_ledger_id         IN NUMBER
180819        ,p_target_ledger_id       IN NUMBER
180820        ,p_language               IN VARCHAR2
180821        ,p_currency_code          IN VARCHAR2
180822        ,p_sla_ledger_id          IN NUMBER
180823        ,p_pad_start_date         IN DATE
180824        ,p_pad_end_date           IN DATE
180825        ,p_primary_ledger_id      IN NUMBER)
180826 RETURN BOOLEAN IS
180827 --
180828 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RET_TO_RECEIVING';
180829 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DELIVER';
180830 
180831 l_calculate_acctd_flag   VARCHAR2(1) :='N';
180832 l_calculate_g_l_flag     VARCHAR2(1) :='N';
180833 --
180834 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180835 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180836 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180837 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180838 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180839 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180840 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180841 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180842 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180843 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180844 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180845 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180846 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180847 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180848 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180849 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180850 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180851 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180852 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180853 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180854 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180855 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180859 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
180856 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
180857 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180858 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
180860 
180861 l_event_id                             NUMBER;
180862 l_previous_event_id                    NUMBER;
180863 l_first_event_id                       NUMBER;
180864 l_last_event_id                        NUMBER;
180865 
180866 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
180867 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
180868 --
180869 --
180870 l_result                    BOOLEAN := TRUE;
180871 l_rows                      NUMBER  := 1000;
180872 l_event_type_name           VARCHAR2(80) := 'Return to Receiving from Inventory';
180873 l_event_class_name          VARCHAR2(80) := 'Deliver to or Return from Inventory';
180874 l_description               VARCHAR2(4000);
180875 l_transaction_reversal      NUMBER;
180876 l_ae_header_id              NUMBER;
180877 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
180878 l_log_module                VARCHAR2(240);
180879 --
180880 l_acct_reversal_source      VARCHAR2(30);
180881 l_trx_reversal_source       VARCHAR2(30);
180882 
180883 l_continue_with_lines       BOOLEAN := TRUE;
180884 --
180885 l_acc_rev_gl_date_source    DATE;                      -- 4262811
180886 --
180887 type t_array_event_id is table of number index by binary_integer;
180888 
180889 l_rec_array_event                    t_rec_array_event;
180890 l_null_rec_array_event               t_rec_array_event;
180891 l_array_ae_header_id                 xla_number_array_type;
180892 l_actual_flag                        VARCHAR2(1) := NULL;
180893 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
180894 l_balance_type_code                  VARCHAR2(1) :=NULL;
180895 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
180896 
180897 --
180898 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
180899 --
180900 
180901 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
180902 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
180903 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
180904 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
180905 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
180906 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
180907 
180908 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
180909 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
180910 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
180911 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
180912 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
180913 
180914 l_array_source_6              t_array_source_6;
180915 l_array_source_7              t_array_source_7;
180916 l_array_source_8              t_array_source_8;
180917 l_array_source_9              t_array_source_9;
180918 l_array_source_10              t_array_source_10;
180919 l_array_source_12              t_array_source_12;
180920 
180921 l_array_source_1      t_array_source_1;
180922 l_array_source_2      t_array_source_2;
180923 l_array_source_3      t_array_source_3;
180924 l_array_source_5      t_array_source_5;
180925 l_array_source_11      t_array_source_11;
180926 
180927 --
180928 CURSOR header_cur
180929 IS
180930 SELECT /*+ leading(xet) cardinality(xet,1) */
180931 -- Event Type Code: RET_TO_RECEIVING
180932 -- Event Class Code: DELIVER
180933     xet.entity_id
180934   , xet.legal_entity_id
180935   , xet.entity_code
180936   , xet.transaction_number
180937   , xet.event_id
180938   , xet.event_class_code
180939   , xet.event_type_code
180940   , xet.event_number
180941   , xet.event_date
180942   , xet.transaction_date
180943   , xet.reference_num_1
180944   , xet.reference_num_2
180945   , xet.reference_num_3
180946   , xet.reference_num_4
180947   , xet.reference_char_1
180948   , xet.reference_char_2
180949   , xet.reference_char_3
180950   , xet.reference_char_4
180951   , xet.reference_date_1
180952   , xet.reference_date_2
180953   , xet.reference_date_3
180954   , xet.reference_date_4
180955   , xet.event_created_by
180956   , xet.budgetary_control_flag 
180957   , h1.ENTITY_CODE    source_6
180958   , h1.CURRENCY_CODE    source_7
180959   , h1.CURRENCY_CONVERSION_DATE    source_8
180960   , h1.CURRENCY_CONVERSION_RATE    source_9
180961   , h1.CURRENCY_CONVERSION_TYPE    source_10
180962   , h1.TRANSACTION_DATE    source_12
180963   FROM xla_events_gt     xet 
180964   , GMF_XLA_EXTRACT_HEADERS  h1
180965  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
180966    and xet.event_type_code = C_EVENT_TYPE_CODE
180967    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
180968 
180969  ORDER BY event_id
180970 ;
180971 
180972 
180973 --
180974 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
180975 IS
180976 SELECT /*+ leading(xet) cardinality(xet,1) */
180977 -- Event Type Code: RET_TO_RECEIVING
180978 -- Event Class Code: DELIVER
180979     xet.entity_id
180980    ,xet.legal_entity_id
180981    ,xet.entity_code
180982    ,xet.transaction_number
180983    ,xet.event_id
180984    ,xet.event_class_code
180985    ,xet.event_type_code
180986    ,xet.event_number
180990    ,xet.reference_num_2
180987    ,xet.event_date
180988    ,xet.transaction_date
180989    ,xet.reference_num_1
180991    ,xet.reference_num_3
180992    ,xet.reference_num_4
180993    ,xet.reference_char_1
180994    ,xet.reference_char_2
180995    ,xet.reference_char_3
180996    ,xet.reference_char_4
180997    ,xet.reference_date_1
180998    ,xet.reference_date_2
180999    ,xet.reference_date_3
181000    ,xet.reference_date_4
181001    ,xet.event_created_by
181002    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
181003   , l2.TRANSACTION_ACCOUNT_ID    source_1
181004   , l2.JOURNAL_LINE_TYPE    source_2
181005   , l2.ENTERED_AMOUNT    source_3
181006   , l2.LINE_ID    source_5
181007   , l2.ACCOUNTED_AMOUNT    source_11
181008   FROM xla_events_gt     xet 
181009   , GMF_XLA_EXTRACT_LINES  l2
181010  WHERE xet.event_id between x_first_event_id and x_last_event_id
181011    and xet.event_date between p_pad_start_date and p_pad_end_date
181012    and xet.event_type_code = C_EVENT_TYPE_CODE
181013    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
181014 ;
181015 
181016 --
181017 BEGIN
181018 IF g_log_enabled THEN
181019    l_log_module := C_DEFAULT_MODULE||'.EventType_298';
181020 END IF;
181021 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181022    trace
181023       (p_msg      => 'BEGIN of EventType_298'
181024       ,p_level    => C_LEVEL_PROCEDURE
181025       ,p_module   => l_log_module);
181026 END IF;
181027 
181028 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181029    trace
181030       (p_msg      => 'p_application_id = '||p_application_id||
181031                      ' - p_base_ledger_id = '||p_base_ledger_id||
181032                      ' - p_target_ledger_id  = '||p_target_ledger_id||
181033                      ' - p_language = '||p_language||
181034                      ' - p_currency_code = '||p_currency_code||
181035                      ' - p_sla_ledger_id = '||p_sla_ledger_id
181036       ,p_level    => C_LEVEL_STATEMENT
181037       ,p_module   => l_log_module);
181038 END IF;
181039 --
181040 -- initialze arrays
181041 --
181042 g_array_event.DELETE;
181043 l_rec_array_event := l_null_rec_array_event;
181044 --
181045 --------------------------------------
181046 -- 4262811 Initialze MPA Line Number
181047 --------------------------------------
181048 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
181049 
181050 --
181051 
181052 --
181053 OPEN header_cur;
181054 --
181055 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181056    trace
181057    (p_msg      => 'SQL - FETCH header_cur'
181058    ,p_level    => C_LEVEL_STATEMENT
181059    ,p_module   => l_log_module);
181060 END IF;
181061 --
181062 LOOP
181063 FETCH header_cur BULK COLLECT INTO
181064         l_array_entity_id
181065       , l_array_legal_entity_id
181066       , l_array_entity_code
181067       , l_array_transaction_num
181068       , l_array_event_id
181069       , l_array_class_code
181070       , l_array_event_type
181071       , l_array_event_number
181072       , l_array_event_date
181073       , l_array_transaction_date
181074       , l_array_reference_num_1
181075       , l_array_reference_num_2
181076       , l_array_reference_num_3
181077       , l_array_reference_num_4
181078       , l_array_reference_char_1
181079       , l_array_reference_char_2
181080       , l_array_reference_char_3
181081       , l_array_reference_char_4
181082       , l_array_reference_date_1
181083       , l_array_reference_date_2
181084       , l_array_reference_date_3
181085       , l_array_reference_date_4
181086       , l_array_event_created_by
181087       , l_array_budgetary_control_flag 
181088       , l_array_source_6
181089       , l_array_source_7
181090       , l_array_source_8
181091       , l_array_source_9
181092       , l_array_source_10
181093       , l_array_source_12
181094       LIMIT l_rows;
181095 --
181096 IF (C_LEVEL_EVENT >= g_log_level) THEN
181097    trace
181098    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
181099    ,p_level    => C_LEVEL_EVENT
181100    ,p_module   => l_log_module);
181101 END IF;
181102 --
181103 EXIT WHEN l_array_entity_id.COUNT = 0;
181104 
181105 -- initialize arrays
181106 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
181107 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
181108 
181109 --
181110 -- Bug 4458708
181111 --
181112 XLA_AE_LINES_PKG.g_LineNumber := 0;
181113 
181114 
181115 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
181116 g_last_hdr_idx := l_array_event_id.LAST;
181117 --
181118 -- loop for the headers. Each iteration is for each header extract row
181119 -- fetched in header cursor
181120 --
181121 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
181122 
181123 --
181124 -- set event info as cache for other routines to refer event attributes
181125 --
181126 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
181127    (p_application_id           => p_application_id
181128    ,p_primary_ledger_id        => p_primary_ledger_id
181129    ,p_base_ledger_id           => p_base_ledger_id
181130    ,p_target_ledger_id         => p_target_ledger_id
181131    ,p_entity_id                => l_array_entity_id(hdr_idx)
181132    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
181133    ,p_entity_code              => l_array_entity_code(hdr_idx)
181134    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
181135    ,p_event_id                 => l_array_event_id(hdr_idx)
181136    ,p_event_class_code         => l_array_class_code(hdr_idx)
181137    ,p_event_type_code          => l_array_event_type(hdr_idx)
181138    ,p_event_number             => l_array_event_number(hdr_idx)
181139    ,p_event_date               => l_array_event_date(hdr_idx)
181143    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
181140    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
181141    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
181142    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
181144    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
181145    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
181146    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
181147    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
181148    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
181149    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
181150    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
181151    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
181152    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
181153    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
181154    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
181155 
181156 --
181157 -- set the status of entry to C_VALID (0)
181158 --
181159 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
181160 
181161 --
181162 -- initialize a row for ae header
181163 --
181164 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
181165 
181166 l_event_id := l_array_event_id(hdr_idx);
181167 
181168 --
181169 -- storing the hdr_idx for event. May be used by line cursor.
181170 --
181171 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
181172 
181173 --
181174 -- store sources from header extract. This can be improved to
181175 -- store only those sources from header extract that may be used in lines
181176 --
181177 
181178 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
181179 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
181180 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
181181 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
181182 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
181183 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
181184 
181185 --
181186 -- initilaize the status of ae headers for diffrent balance types
181187 -- the status is initialised to C_NOT_CREATED (2)
181188 --
181189 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
181190 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
181191 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
181192 
181193 --
181194 -- call api to validate and store accounting attributes for header
181195 --
181196 
181197 ------------------------------------------------------------
181198 -- Accrual Reversal : to get date for Standard Source (NONE)
181199 ------------------------------------------------------------
181200 l_acc_rev_gl_date_source := NULL;
181201 
181202      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
181203       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
181204 
181205 
181206 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
181207 
181208 XLA_AE_HEADER_PKG.SetJeCategoryName;
181209 
181210 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
181211 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
181212 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
181213 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
181214 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
181215 
181216 
181217 -- No header level analytical criteria
181218 
181219 --
181220 --accounting attribute enhancement, bug 3612931
181221 --
181222 l_trx_reversal_source := SUBSTR(NULL, 1,30);
181223 
181224 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
181225    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
181226 
181227    xla_accounting_err_pkg.build_message
181228       (p_appli_s_name            => 'XLA'
181229       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
181230       ,p_token_1                 => 'ACCT_ATTR_NAME'
181231       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
181232       ,p_token_2                 => 'PRODUCT_NAME'
181233       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
181234       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
181235       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
181236       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
181237 
181238 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
181239    --
181240    -- following sets the accounting attributes needed to reverse
181241    -- accounting for a distributeion
181242    --
181243    xla_ae_lines_pkg.SetTrxReversalAttrs
181244       (p_event_id              => l_event_id
181245       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
181246       ,p_trx_reversal_source   => l_trx_reversal_source);
181247 
181248 END IF;
181249 
181250 
181251 ----------------------------------------------------------------
181252 -- 4262811 -  update the header statuses to invalid in need be
181253 ----------------------------------------------------------------
181254 --
181255 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
181256 
181257 
181258   -----------------------------------------------
181259   -- No accrual reversal for the event class/type
181263 --
181260   -----------------------------------------------
181261 ----------------------------------------------------------------
181262 
181264 -- this ends the header loop iteration for one bulk fetch
181265 --
181266 END LOOP;
181267 
181268 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
181269 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
181270 
181271 --
181272 -- insert dummy rows into lines gt table that were created due to
181273 -- transaction reversals
181274 --
181275 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
181276    l_result := XLA_AE_LINES_PKG.InsertLines;
181277 END IF;
181278 
181279 --
181280 -- reset the temp_line_num for each set of events fetched from header
181281 -- cursor rather than doing it for each new event in line cursor
181282 -- Bug 3939231
181283 --
181284 xla_ae_lines_pkg.g_temp_line_num := 0;
181285 
181286 
181287 
181288 --
181289 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
181290 --
181291 --
181292 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181293 
181294       trace
181295          (p_msg      => 'SQL - FETCH line_cur'
181296          ,p_level    => C_LEVEL_STATEMENT
181297          ,p_module   => l_log_module);
181298 
181299 END IF;
181300 --
181301 --
181302 LOOP
181303   --
181304   FETCH line_cur BULK COLLECT INTO
181305         l_array_entity_id
181306       , l_array_legal_entity_id
181307       , l_array_entity_code
181308       , l_array_transaction_num
181309       , l_array_event_id
181310       , l_array_class_code
181311       , l_array_event_type
181312       , l_array_event_number
181313       , l_array_event_date
181314       , l_array_transaction_date
181315       , l_array_reference_num_1
181316       , l_array_reference_num_2
181317       , l_array_reference_num_3
181318       , l_array_reference_num_4
181319       , l_array_reference_char_1
181320       , l_array_reference_char_2
181321       , l_array_reference_char_3
181322       , l_array_reference_char_4
181323       , l_array_reference_date_1
181324       , l_array_reference_date_2
181325       , l_array_reference_date_3
181326       , l_array_reference_date_4
181327       , l_array_event_created_by
181328       , l_array_budgetary_control_flag
181329       , l_array_extract_line_num 
181330       , l_array_source_1
181331       , l_array_source_2
181332       , l_array_source_3
181333       , l_array_source_5
181334       , l_array_source_11
181335       LIMIT l_rows;
181336 
181337   --
181338   IF (C_LEVEL_EVENT >= g_log_level) THEN
181339             trace
181340                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
181341                ,p_level    => C_LEVEL_EVENT
181342                ,p_module   => l_log_module);
181343   END IF;
181344   --
181345   EXIT WHEN l_array_entity_id.count = 0;
181346 
181347   XLA_AE_LINES_PKG.g_rec_lines := null;
181348 
181349 --
181350 -- Bug 4458708
181351 --
181352 XLA_AE_LINES_PKG.g_LineNumber := 0;
181353 --
181354 --
181355 
181356 FOR Idx IN 1..l_array_event_id.count LOOP
181357    --
181358    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
181359    --
181360    l_event_id := l_array_event_id(idx);  -- 5648433
181361 
181362    --
181363    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
181364    --
181365 
181366    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
181367              (g_array_event(l_event_id).array_value_num('header_index'))
181368          ,'N'
181369          ) <> 'Y'
181370    THEN
181371       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181372          trace
181373             (p_msg      => 'Trancaction revesal option is not Y '
181374             ,p_level    => C_LEVEL_STATEMENT
181375             ,p_module   => l_log_module);
181376       END IF;
181377 
181378 --
181379 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
181380 --
181381 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
181382 --
181383 -- set event info as cache for other routines to refer event attributes
181384 --
181385 
181386 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
181387    l_previous_event_id := l_event_id;
181388 
181389    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
181390       (p_application_id           => p_application_id
181391       ,p_primary_ledger_id        => p_primary_ledger_id
181392       ,p_base_ledger_id           => p_base_ledger_id
181393       ,p_target_ledger_id         => p_target_ledger_id
181394       ,p_entity_id                => l_array_entity_id(Idx)
181395       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
181396       ,p_entity_code              => l_array_entity_code(Idx)
181397       ,p_transaction_num          => l_array_transaction_num(Idx)
181398       ,p_event_id                 => l_array_event_id(Idx)
181399       ,p_event_class_code         => l_array_class_code(Idx)
181400       ,p_event_type_code          => l_array_event_type(Idx)
181401       ,p_event_number             => l_array_event_number(Idx)
181402       ,p_event_date               => l_array_event_date(Idx)
181403       ,p_transaction_date         => l_array_transaction_date(Idx)
181404       ,p_reference_num_1          => l_array_reference_num_1(Idx)
181405       ,p_reference_num_2          => l_array_reference_num_2(Idx)
181406       ,p_reference_num_3          => l_array_reference_num_3(Idx)
181407       ,p_reference_num_4          => l_array_reference_num_4(Idx)
181408       ,p_reference_char_1         => l_array_reference_char_1(Idx)
181409       ,p_reference_char_2         => l_array_reference_char_2(Idx)
181410       ,p_reference_char_3         => l_array_reference_char_3(Idx)
181414       ,p_reference_date_3         => l_array_reference_date_3(Idx)
181411       ,p_reference_char_4         => l_array_reference_char_4(Idx)
181412       ,p_reference_date_1         => l_array_reference_date_1(Idx)
181413       ,p_reference_date_2         => l_array_reference_date_2(Idx)
181415       ,p_reference_date_4         => l_array_reference_date_4(Idx)
181416       ,p_event_created_by         => l_array_event_created_by(Idx)
181417       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
181418        --
181419 END IF;
181420 
181421 
181422 
181423 --
181424 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
181425 
181426 l_acct_reversal_source := SUBSTR(NULL, 1,30);
181427 
181428 IF l_continue_with_lines THEN
181429    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
181430       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
181431 
181432       xla_accounting_err_pkg.build_message
181433          (p_appli_s_name            => 'XLA'
181434          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
181435          ,p_token_1                 => 'LINE_NUMBER'
181436          ,p_value_1                 => l_array_extract_line_num(Idx)
181437          ,p_token_2                 => 'PRODUCT_NAME'
181438          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
181439          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
181440          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
181441          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
181442 
181443    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
181444       --
181445       -- following sets the accounting attributes needed to reverse
181446       -- accounting for a distributeion
181447       --
181448 
181449       --
181450       -- 5217187
181451       --
181452       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
181453       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
181454                                        g_array_event(l_event_id).array_value_num('header_index'));
181455       --
181456       --
181457 
181458       -- No reversal code generated
181459 
181460       xla_ae_lines_pkg.SetAcctReversalAttrs
181461          (p_event_id             => l_event_id
181462          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
181463          ,p_calculate_acctd_flag => l_calculate_acctd_flag
181464          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
181465    END IF;
181466 
181467    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
181468        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
181469 
181470 --
181471 AcctLineType_42 (
181472  p_application_id  => p_application_id
181473  ,p_event_id     => l_event_id
181474  ,p_calculate_acctd_flag => l_calculate_acctd_flag
181475  ,p_calculate_g_l_flag => l_calculate_g_l_flag
181476  ,p_actual_flag => l_actual_flag
181477  ,p_balance_type_code => l_balance_type_code
181478  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181479  
181480  , p_source_1 => l_array_source_1(Idx)
181481  , p_source_2 => l_array_source_2(Idx)
181482  , p_source_3 => l_array_source_3(Idx)
181483  , p_source_5 => l_array_source_5(Idx)
181484  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
181485  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
181486  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
181487  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
181488  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
181489  , p_source_11 => l_array_source_11(Idx)
181490  );
181491 If(l_balance_type_code = 'A') THEN
181492   l_actual_gain_loss_ref := l_gain_or_loss_ref;
181493 END IF;
181494 
181495 --
181496 
181497 
181498 --
181499 AcctLineType_56 (
181500  p_application_id  => p_application_id
181501  ,p_event_id     => l_event_id
181502  ,p_calculate_acctd_flag => l_calculate_acctd_flag
181503  ,p_calculate_g_l_flag => l_calculate_g_l_flag
181504  ,p_actual_flag => l_actual_flag
181505  ,p_balance_type_code => l_balance_type_code
181506  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181507  
181508  , p_source_1 => l_array_source_1(Idx)
181509  , p_source_2 => l_array_source_2(Idx)
181510  , p_source_3 => l_array_source_3(Idx)
181511  , p_source_5 => l_array_source_5(Idx)
181512  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
181513  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
181514  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
181515  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
181516  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
181517  , p_source_11 => l_array_source_11(Idx)
181518  );
181519 If(l_balance_type_code = 'A') THEN
181520   l_actual_gain_loss_ref := l_gain_or_loss_ref;
181521 END IF;
181522 
181523 --
181524 
181525 
181526 --
181527 AcctLineType_103 (
181528  p_application_id  => p_application_id
181529  ,p_event_id     => l_event_id
181530  ,p_calculate_acctd_flag => l_calculate_acctd_flag
181531  ,p_calculate_g_l_flag => l_calculate_g_l_flag
181532  ,p_actual_flag => l_actual_flag
181533  ,p_balance_type_code => l_balance_type_code
181534  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181535  
181536  , p_source_1 => l_array_source_1(Idx)
181537  , p_source_2 => l_array_source_2(Idx)
181538  , p_source_3 => l_array_source_3(Idx)
181539  , p_source_5 => l_array_source_5(Idx)
181540  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
181541  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
181542  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
181543  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
181547 If(l_balance_type_code = 'A') THEN
181544  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
181545  , p_source_11 => l_array_source_11(Idx)
181546  );
181548   l_actual_gain_loss_ref := l_gain_or_loss_ref;
181549 END IF;
181550 
181551 --
181552 
181553 
181554 --
181555 AcctLineType_139 (
181556  p_application_id  => p_application_id
181557  ,p_event_id     => l_event_id
181558  ,p_calculate_acctd_flag => l_calculate_acctd_flag
181559  ,p_calculate_g_l_flag => l_calculate_g_l_flag
181560  ,p_actual_flag => l_actual_flag
181561  ,p_balance_type_code => l_balance_type_code
181562  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181563  
181564  , p_source_1 => l_array_source_1(Idx)
181565  , p_source_2 => l_array_source_2(Idx)
181566  , p_source_3 => l_array_source_3(Idx)
181567  , p_source_5 => l_array_source_5(Idx)
181568  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
181569  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
181570  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
181571  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
181572  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
181573  , p_source_11 => l_array_source_11(Idx)
181574  );
181575 If(l_balance_type_code = 'A') THEN
181576   l_actual_gain_loss_ref := l_gain_or_loss_ref;
181577 END IF;
181578 
181579 --
181580 
181581 
181582 --
181583 AcctLineType_195 (
181584  p_application_id  => p_application_id
181585  ,p_event_id     => l_event_id
181586  ,p_calculate_acctd_flag => l_calculate_acctd_flag
181587  ,p_calculate_g_l_flag => l_calculate_g_l_flag
181588  ,p_actual_flag => l_actual_flag
181589  ,p_balance_type_code => l_balance_type_code
181590  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181591  
181592  , p_source_1 => l_array_source_1(Idx)
181593  , p_source_2 => l_array_source_2(Idx)
181594  , p_source_3 => l_array_source_3(Idx)
181595  , p_source_5 => l_array_source_5(Idx)
181596  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
181597  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
181598  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
181599  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
181600  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
181601  , p_source_11 => l_array_source_11(Idx)
181602  );
181603 If(l_balance_type_code = 'A') THEN
181604   l_actual_gain_loss_ref := l_gain_or_loss_ref;
181605 END IF;
181606 
181607 --
181608 
181609 
181610 --
181611 AcctLineType_219 (
181612  p_application_id  => p_application_id
181613  ,p_event_id     => l_event_id
181614  ,p_calculate_acctd_flag => l_calculate_acctd_flag
181615  ,p_calculate_g_l_flag => l_calculate_g_l_flag
181616  ,p_actual_flag => l_actual_flag
181617  ,p_balance_type_code => l_balance_type_code
181618  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181619  
181620  , p_source_1 => l_array_source_1(Idx)
181621  , p_source_2 => l_array_source_2(Idx)
181622  , p_source_3 => l_array_source_3(Idx)
181623  , p_source_5 => l_array_source_5(Idx)
181624  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
181625  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
181626  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
181627  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
181628  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
181629  , p_source_11 => l_array_source_11(Idx)
181630  );
181631 If(l_balance_type_code = 'A') THEN
181632   l_actual_gain_loss_ref := l_gain_or_loss_ref;
181633 END IF;
181634 
181635 --
181636 
181637       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
181638       -- or secondary ledger that has different currency with primary
181639       -- or alc that is calculated by sla
181640       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
181641             (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'))
181642 
181643 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
181644 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
181645           AND (l_actual_flag = 'A')) THEN
181646         XLA_AE_LINES_PKG.CreateGainOrLossLines(
181647           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
181648          ,p_application_id   => p_application_id
181649          ,p_amb_context_code => 'DEFAULT'
181650          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
181651          ,p_event_class_code => C_EVENT_CLASS_CODE
181652          ,p_event_type_code  => C_EVENT_TYPE_CODE
181653          
181654          ,p_gain_ccid        => -1
181655          ,p_loss_ccid        => -1
181656 
181657          ,p_actual_flag      => l_actual_flag
181658          ,p_enc_flag         => null
181659          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
181660          ,p_enc_g_l_ref      => null
181661          );
181662       END IF;
181663    END IF;
181664 END IF;
181665 
181666    ELSE
181667       --
181668       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
181669       --
181670       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181671          trace
181672             (p_msg      => 'Trancaction revesal option is Y'
181673             ,p_level    => C_LEVEL_STATEMENT
181674             ,p_module   => l_log_module);
181675       END IF;
181676    END IF;
181677 
181678 END LOOP;
181679 l_result := XLA_AE_LINES_PKG.InsertLines ;
181680 end loop;
181681 close line_cur;
181682 
181683 
181684 --
181688 
181685 -- insert headers into xla_ae_headers_gt table
181686 --
181687 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
181689 -- insert into errors table here.
181690 
181691 END LOOP;
181692 
181693 --
181694 -- 4865292
181695 --
181696 -- Compare g_hdr_extract_count with event count in
181697 -- CreateHeadersAndLines.
181698 --
181699 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
181700 
181701 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181702    trace (p_msg     => '# rows extracted from header extract objects '
181703                     || ' (running total): '
181704                     || g_hdr_extract_count
181705          ,p_level   => C_LEVEL_STATEMENT
181706          ,p_module  => l_log_module);
181707 END IF;
181708 
181709 CLOSE header_cur;
181710 --
181711 
181712 --
181713 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181714    trace
181715       (p_msg      => 'END of EventType_298'
181716       ,p_level    => C_LEVEL_PROCEDURE
181717       ,p_module   => l_log_module);
181718 END IF;
181719 --
181720 RETURN l_result;
181721 EXCEPTION
181722 WHEN xla_exceptions_pkg.application_exception THEN
181723    
181724 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
181725 
181726    
181727 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
181728 
181729    RAISE;
181730 
181731 WHEN NO_DATA_FOUND THEN
181732 
181733 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
181734 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
181735 
181736 FOR header_record IN header_cur
181737 LOOP
181738     l_array_header_events(header_record.event_id) := header_record.event_id;
181739 END LOOP;
181740 
181741 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
181742 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
181743 
181744 fnd_file.put_line(fnd_file.LOG, '                    ');
181745 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
181746 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
181747 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
181748 
181749 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
181750 LOOP
181751 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
181752 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
181753         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
181754 	END IF;
181755 END LOOP;
181756 
181757 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
181758 fnd_file.put_line(fnd_file.LOG, '                    ');
181759 
181760 
181761 xla_exceptions_pkg.raise_message
181762       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_298');
181763 
181764 
181765 WHEN OTHERS THEN
181766    xla_exceptions_pkg.raise_message
181767       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_298');
181768 END EventType_298;
181769 --
181770 
181771 ---------------------------------------
181772 --
181773 -- PRIVATE PROCEDURE
181774 --         insert_sources_299
181775 --
181776 ----------------------------------------
181777 --
181778 PROCEDURE insert_sources_299(
181779                                 p_target_ledger_id       IN NUMBER
181780                               , p_language               IN VARCHAR2
181781                               , p_sla_ledger_id          IN NUMBER
181782                               , p_pad_start_date         IN DATE
181783                               , p_pad_end_date           IN DATE
181784                          )
181785 IS
181786 
181787 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RET_TO_VENDOR';
181788 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RECEIVE';
181789 p_apps_owner                   VARCHAR2(30);
181790 l_log_module                   VARCHAR2(240);
181791 BEGIN
181792 IF g_log_enabled THEN
181793       l_log_module := C_DEFAULT_MODULE||'.insert_sources_299';
181794 END IF;
181795 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181796 
181797       trace
181798          (p_msg      => 'BEGIN of insert_sources_299'
181799          ,p_level    => C_LEVEL_PROCEDURE
181800          ,p_module   => l_log_module);
181801 
181802 END IF;
181803 
181804 -- select APPS owner
181805 SELECT oracle_username
181806   INTO p_apps_owner
181807   FROM fnd_oracle_userid
181808  WHERE read_only_flag = 'U'
181809 ;
181810 
181811 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181812       trace
181813          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
181814                         ' - p_language = '||p_language||
181815                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
181816                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
181817                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
181818                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
181819          ,p_level    => C_LEVEL_STATEMENT
181820          ,p_module   => l_log_module);
181821 END IF;
181822 
181823 
181824 --
181825 INSERT INTO xla_diag_sources --hdr1
181826 (
181827         event_id
181828       , ledger_id
181829       , sla_ledger_id
181830       , description_language
181831       , object_name
181832       , object_type_code
181833       , line_number
181834       , source_application_id
181835       , source_type_code
181836       , source_code
181837       , source_value
181838       , source_meaning
181839       , created_by
181840       , creation_date
181841       , last_update_date
181842       , last_updated_by
181843       , last_update_login
181847       , request_id
181844       , program_update_date
181845       , program_application_id
181846       , program_id
181848 )
181849 SELECT
181850         event_id
181851       , p_target_ledger_id
181852       , p_sla_ledger_id
181853       , p_language
181854       , object_name
181855       , object_type_code
181856       , line_number
181857       , source_application_id
181858       , source_type_code
181859       , source_code
181860       , SUBSTR(source_value ,1,1996)
181861       , SUBSTR(source_meaning,1,200)
181862       , xla_environment_pkg.g_Usr_Id
181863       , TRUNC(SYSDATE)
181864       , TRUNC(SYSDATE)
181865       , xla_environment_pkg.g_Usr_Id
181866       , xla_environment_pkg.g_Login_Id
181867       , TRUNC(SYSDATE)
181868       , xla_environment_pkg.g_Prog_Appl_Id
181869       , xla_environment_pkg.g_Prog_Id
181870       , xla_environment_pkg.g_Req_Id
181871   FROM (
181872        SELECT xet.event_id                  event_id
181873             , 0                             line_number
181874             , CASE r
181875                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
181876                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
181877                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
181878                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
181879                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
181880                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
181881                 
181882                ELSE null
181883               END                           object_name
181884             , CASE r
181885                 WHEN 1 THEN 'HEADER' 
181886                 WHEN 2 THEN 'HEADER' 
181887                 WHEN 3 THEN 'HEADER' 
181888                 WHEN 4 THEN 'HEADER' 
181889                 WHEN 5 THEN 'HEADER' 
181890                 WHEN 6 THEN 'HEADER' 
181891                 
181892                 ELSE null
181893               END                           object_type_code
181894             , CASE r
181895                 WHEN 1 THEN '555' 
181896                 WHEN 2 THEN '555' 
181897                 WHEN 3 THEN '555' 
181898                 WHEN 4 THEN '555' 
181899                 WHEN 5 THEN '555' 
181900                 WHEN 6 THEN '555' 
181901                 
181902                 ELSE null
181903               END                           source_application_id
181904             , 'S'             source_type_code
181905             , CASE r
181906                 WHEN 1 THEN 'ENTITY_CODE' 
181907                 WHEN 2 THEN 'CURRENCY_CODE' 
181908                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
181909                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
181910                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
181911                 WHEN 6 THEN 'TRANSACTION_DATE' 
181912                 
181913                 ELSE null
181914               END                           source_code
181915             , CASE r
181916                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
181917                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
181918                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
181919                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
181920                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
181921                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
181922                 
181923                 ELSE null
181924               END                           source_value
181925             , CASE r
181926                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
181927                           1010186
181928                          ,TO_CHAR(h1.CURRENCY_CODE)
181929                          ,'CURRENCY_CODE'
181930                          ,'S'
181931                          ,555)
181932                 
181933                 ELSE null
181934               END               source_meaning
181935         FROM xla_events_gt     xet  
181936       , GMF_XLA_EXTRACT_HEADERS  h1
181937             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
181938        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
181939          AND xet.event_type_code = C_EVENT_TYPE_CODE
181940             AND h1.event_id = xet.event_id
181941 
181942 )
181943 ;
181944 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181945 
181946       trace
181947          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
181948          ,p_level    => C_LEVEL_STATEMENT
181949          ,p_module   => l_log_module);
181950 
181951 END IF;
181952 --
181953 
181954 
181955 
181956 --
181957 INSERT INTO xla_diag_sources --line1
181958 (
181959         event_id
181960       , ledger_id
181961       , sla_ledger_id
181962       , description_language
181963       , object_name
181964       , object_type_code
181965       , line_number
181966       , source_application_id
181967       , source_type_code
181968       , source_code
181969       , source_value
181970       , source_meaning
181971       , created_by
181972       , creation_date
181973       , last_update_date
181974       , last_updated_by
181975       , last_update_login
181976       , program_update_date
181977       , program_application_id
181978       , program_id
181979       , request_id
181980 )
181981 SELECT  event_id
181982       , p_target_ledger_id
181983       , p_sla_ledger_id
181984       , p_language
181985       , object_name
181986       , object_type_code
181987       , line_number
181988       , source_application_id
181989       , source_type_code
181990       , source_code
181991       , SUBSTR(source_value,1,1996)
181992       , SUBSTR(source_meaning,1,200)
181993       , xla_environment_pkg.g_Usr_Id
181994       , TRUNC(SYSDATE)
181995       , TRUNC(SYSDATE)
181996       , xla_environment_pkg.g_Usr_Id
182000       , xla_environment_pkg.g_Prog_Id
181997       , xla_environment_pkg.g_Login_Id
181998       , TRUNC(SYSDATE)
181999       , xla_environment_pkg.g_Prog_Appl_Id
182001       , xla_environment_pkg.g_Req_Id
182002   FROM (
182003        SELECT xet.event_id                  event_id
182004             , l2.line_number                 line_number
182005             , CASE r
182006                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
182007                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
182008                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
182009                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
182010                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
182011                 
182012                ELSE null
182013               END                           object_name
182014             , CASE r
182015                 WHEN 1 THEN 'LINE' 
182016                 WHEN 2 THEN 'LINE' 
182017                 WHEN 3 THEN 'LINE' 
182018                 WHEN 4 THEN 'LINE' 
182019                 WHEN 5 THEN 'LINE' 
182020                 
182021                 ELSE null
182022               END                           object_type_code
182023             , CASE r
182024                 WHEN 1 THEN '555' 
182025                 WHEN 2 THEN '555' 
182026                 WHEN 3 THEN '555' 
182027                 WHEN 4 THEN '555' 
182028                 WHEN 5 THEN '555' 
182029                 
182030                 ELSE null
182031               END                           source_application_id
182032             , 'S'             source_type_code
182033             , CASE r
182034                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
182035                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
182036                 WHEN 3 THEN 'ENTERED_AMOUNT' 
182037                 WHEN 4 THEN 'LINE_ID' 
182038                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
182039                 
182040                 ELSE null
182041               END                           source_code
182042             , CASE r
182043                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
182044                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
182045                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
182046                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
182047                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
182048                 
182049                 ELSE null
182050               END                           source_value
182051             , null              source_meaning
182052          FROM  xla_events_gt     xet  
182053         , GMF_XLA_EXTRACT_LINES  l2
182054             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
182055         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
182056           AND xet.event_type_code = C_EVENT_TYPE_CODE
182057             AND l2.event_id          = xet.event_id
182058 
182059 )
182060 ;
182061 --
182062 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182063 
182064       trace
182065          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
182066          ,p_level    => C_LEVEL_STATEMENT
182067          ,p_module   => l_log_module);
182068 
182069 END IF;
182070 
182071 
182072 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182073       trace
182074          (p_msg      => 'END of insert_sources_299'
182075          ,p_level    => C_LEVEL_PROCEDURE
182076          ,p_module   => l_log_module);
182077 END IF;
182078 EXCEPTION
182079   WHEN xla_exceptions_pkg.application_exception THEN
182080       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
182081             trace
182082                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
182083                ,p_level    => C_LEVEL_EXCEPTION
182084                ,p_module   => l_log_module);
182085       END IF;
182086       RAISE;
182087   WHEN OTHERS THEN
182088       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
182089             trace
182090                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
182091                ,p_level    => C_LEVEL_EXCEPTION
182092                ,p_module   => l_log_module);
182093        END IF;
182094        xla_exceptions_pkg.raise_message
182095            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_299');
182096 END insert_sources_299;
182097 --
182098 
182099 ---------------------------------------
182100 --
182101 -- PRIVATE FUNCTION
182102 --         EventType_299
182103 --
182104 ----------------------------------------
182105 --
182106 FUNCTION EventType_299
182107        (p_application_id         IN NUMBER
182108        ,p_base_ledger_id         IN NUMBER
182109        ,p_target_ledger_id       IN NUMBER
182110        ,p_language               IN VARCHAR2
182111        ,p_currency_code          IN VARCHAR2
182112        ,p_sla_ledger_id          IN NUMBER
182113        ,p_pad_start_date         IN DATE
182114        ,p_pad_end_date           IN DATE
182115        ,p_primary_ledger_id      IN NUMBER)
182116 RETURN BOOLEAN IS
182117 --
182118 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RET_TO_VENDOR';
182119 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RECEIVE';
182120 
182121 l_calculate_acctd_flag   VARCHAR2(1) :='N';
182122 l_calculate_g_l_flag     VARCHAR2(1) :='N';
182123 --
182124 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182125 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182126 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
182127 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182128 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182129 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
182130 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
182131 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182135 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182132 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182133 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182134 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182136 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182137 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182138 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182139 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182140 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182141 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182142 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182143 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182144 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182145 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182146 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
182147 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
182148 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
182149 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
182150 
182151 l_event_id                             NUMBER;
182152 l_previous_event_id                    NUMBER;
182153 l_first_event_id                       NUMBER;
182154 l_last_event_id                        NUMBER;
182155 
182156 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
182157 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
182158 --
182159 --
182160 l_result                    BOOLEAN := TRUE;
182161 l_rows                      NUMBER  := 1000;
182162 l_event_type_name           VARCHAR2(80) := 'Return to Vendor';
182163 l_event_class_name          VARCHAR2(80) := 'Receiving';
182164 l_description               VARCHAR2(4000);
182165 l_transaction_reversal      NUMBER;
182166 l_ae_header_id              NUMBER;
182167 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
182168 l_log_module                VARCHAR2(240);
182169 --
182170 l_acct_reversal_source      VARCHAR2(30);
182171 l_trx_reversal_source       VARCHAR2(30);
182172 
182173 l_continue_with_lines       BOOLEAN := TRUE;
182174 --
182175 l_acc_rev_gl_date_source    DATE;                      -- 4262811
182176 --
182177 type t_array_event_id is table of number index by binary_integer;
182178 
182179 l_rec_array_event                    t_rec_array_event;
182180 l_null_rec_array_event               t_rec_array_event;
182181 l_array_ae_header_id                 xla_number_array_type;
182182 l_actual_flag                        VARCHAR2(1) := NULL;
182183 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
182184 l_balance_type_code                  VARCHAR2(1) :=NULL;
182185 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
182186 
182187 --
182188 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
182189 --
182190 
182191 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
182192 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
182193 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
182194 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
182195 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
182196 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
182197 
182198 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
182199 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
182200 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
182201 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
182202 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
182203 
182204 l_array_source_6              t_array_source_6;
182205 l_array_source_7              t_array_source_7;
182206 l_array_source_8              t_array_source_8;
182207 l_array_source_9              t_array_source_9;
182208 l_array_source_10              t_array_source_10;
182209 l_array_source_12              t_array_source_12;
182210 
182211 l_array_source_1      t_array_source_1;
182212 l_array_source_2      t_array_source_2;
182213 l_array_source_3      t_array_source_3;
182214 l_array_source_5      t_array_source_5;
182215 l_array_source_11      t_array_source_11;
182216 
182217 --
182218 CURSOR header_cur
182219 IS
182220 SELECT /*+ leading(xet) cardinality(xet,1) */
182221 -- Event Type Code: RET_TO_VENDOR
182222 -- Event Class Code: RECEIVE
182223     xet.entity_id
182224   , xet.legal_entity_id
182225   , xet.entity_code
182226   , xet.transaction_number
182227   , xet.event_id
182228   , xet.event_class_code
182229   , xet.event_type_code
182230   , xet.event_number
182231   , xet.event_date
182232   , xet.transaction_date
182233   , xet.reference_num_1
182234   , xet.reference_num_2
182235   , xet.reference_num_3
182236   , xet.reference_num_4
182237   , xet.reference_char_1
182238   , xet.reference_char_2
182239   , xet.reference_char_3
182240   , xet.reference_char_4
182241   , xet.reference_date_1
182242   , xet.reference_date_2
182243   , xet.reference_date_3
182244   , xet.reference_date_4
182245   , xet.event_created_by
182246   , xet.budgetary_control_flag 
182247   , h1.ENTITY_CODE    source_6
182248   , h1.CURRENCY_CODE    source_7
182252   , h1.TRANSACTION_DATE    source_12
182249   , h1.CURRENCY_CONVERSION_DATE    source_8
182250   , h1.CURRENCY_CONVERSION_RATE    source_9
182251   , h1.CURRENCY_CONVERSION_TYPE    source_10
182253   FROM xla_events_gt     xet 
182254   , GMF_XLA_EXTRACT_HEADERS  h1
182255  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
182256    and xet.event_type_code = C_EVENT_TYPE_CODE
182257    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
182258 
182259  ORDER BY event_id
182260 ;
182261 
182262 
182263 --
182264 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
182265 IS
182266 SELECT /*+ leading(xet) cardinality(xet,1) */
182267 -- Event Type Code: RET_TO_VENDOR
182268 -- Event Class Code: RECEIVE
182269     xet.entity_id
182270    ,xet.legal_entity_id
182271    ,xet.entity_code
182272    ,xet.transaction_number
182273    ,xet.event_id
182274    ,xet.event_class_code
182275    ,xet.event_type_code
182276    ,xet.event_number
182277    ,xet.event_date
182278    ,xet.transaction_date
182279    ,xet.reference_num_1
182280    ,xet.reference_num_2
182281    ,xet.reference_num_3
182282    ,xet.reference_num_4
182283    ,xet.reference_char_1
182284    ,xet.reference_char_2
182285    ,xet.reference_char_3
182286    ,xet.reference_char_4
182287    ,xet.reference_date_1
182288    ,xet.reference_date_2
182289    ,xet.reference_date_3
182290    ,xet.reference_date_4
182291    ,xet.event_created_by
182292    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
182293   , l2.TRANSACTION_ACCOUNT_ID    source_1
182294   , l2.JOURNAL_LINE_TYPE    source_2
182295   , l2.ENTERED_AMOUNT    source_3
182296   , l2.LINE_ID    source_5
182297   , l2.ACCOUNTED_AMOUNT    source_11
182298   FROM xla_events_gt     xet 
182299   , GMF_XLA_EXTRACT_LINES  l2
182300  WHERE xet.event_id between x_first_event_id and x_last_event_id
182301    and xet.event_date between p_pad_start_date and p_pad_end_date
182302    and xet.event_type_code = C_EVENT_TYPE_CODE
182303    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
182304 ;
182305 
182306 --
182307 BEGIN
182308 IF g_log_enabled THEN
182309    l_log_module := C_DEFAULT_MODULE||'.EventType_299';
182310 END IF;
182311 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182312    trace
182313       (p_msg      => 'BEGIN of EventType_299'
182314       ,p_level    => C_LEVEL_PROCEDURE
182315       ,p_module   => l_log_module);
182316 END IF;
182317 
182318 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182319    trace
182320       (p_msg      => 'p_application_id = '||p_application_id||
182321                      ' - p_base_ledger_id = '||p_base_ledger_id||
182322                      ' - p_target_ledger_id  = '||p_target_ledger_id||
182323                      ' - p_language = '||p_language||
182324                      ' - p_currency_code = '||p_currency_code||
182325                      ' - p_sla_ledger_id = '||p_sla_ledger_id
182326       ,p_level    => C_LEVEL_STATEMENT
182327       ,p_module   => l_log_module);
182328 END IF;
182329 --
182330 -- initialze arrays
182331 --
182332 g_array_event.DELETE;
182333 l_rec_array_event := l_null_rec_array_event;
182334 --
182335 --------------------------------------
182336 -- 4262811 Initialze MPA Line Number
182337 --------------------------------------
182338 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
182339 
182340 --
182341 
182342 --
182343 OPEN header_cur;
182344 --
182345 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182346    trace
182347    (p_msg      => 'SQL - FETCH header_cur'
182348    ,p_level    => C_LEVEL_STATEMENT
182349    ,p_module   => l_log_module);
182350 END IF;
182351 --
182352 LOOP
182353 FETCH header_cur BULK COLLECT INTO
182354         l_array_entity_id
182355       , l_array_legal_entity_id
182356       , l_array_entity_code
182357       , l_array_transaction_num
182358       , l_array_event_id
182359       , l_array_class_code
182360       , l_array_event_type
182361       , l_array_event_number
182362       , l_array_event_date
182363       , l_array_transaction_date
182364       , l_array_reference_num_1
182365       , l_array_reference_num_2
182366       , l_array_reference_num_3
182367       , l_array_reference_num_4
182368       , l_array_reference_char_1
182369       , l_array_reference_char_2
182370       , l_array_reference_char_3
182371       , l_array_reference_char_4
182372       , l_array_reference_date_1
182373       , l_array_reference_date_2
182374       , l_array_reference_date_3
182375       , l_array_reference_date_4
182376       , l_array_event_created_by
182377       , l_array_budgetary_control_flag 
182378       , l_array_source_6
182379       , l_array_source_7
182380       , l_array_source_8
182381       , l_array_source_9
182382       , l_array_source_10
182383       , l_array_source_12
182384       LIMIT l_rows;
182385 --
182386 IF (C_LEVEL_EVENT >= g_log_level) THEN
182387    trace
182388    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
182389    ,p_level    => C_LEVEL_EVENT
182390    ,p_module   => l_log_module);
182391 END IF;
182392 --
182393 EXIT WHEN l_array_entity_id.COUNT = 0;
182394 
182395 -- initialize arrays
182396 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
182397 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
182398 
182399 --
182400 -- Bug 4458708
182401 --
182402 XLA_AE_LINES_PKG.g_LineNumber := 0;
182403 
182404 
182405 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
182406 g_last_hdr_idx := l_array_event_id.LAST;
182407 --
182408 -- loop for the headers. Each iteration is for each header extract row
182409 -- fetched in header cursor
182410 --
182411 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
182415 --
182412 
182413 --
182414 -- set event info as cache for other routines to refer event attributes
182416 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
182417    (p_application_id           => p_application_id
182418    ,p_primary_ledger_id        => p_primary_ledger_id
182419    ,p_base_ledger_id           => p_base_ledger_id
182420    ,p_target_ledger_id         => p_target_ledger_id
182421    ,p_entity_id                => l_array_entity_id(hdr_idx)
182422    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
182423    ,p_entity_code              => l_array_entity_code(hdr_idx)
182424    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
182425    ,p_event_id                 => l_array_event_id(hdr_idx)
182426    ,p_event_class_code         => l_array_class_code(hdr_idx)
182427    ,p_event_type_code          => l_array_event_type(hdr_idx)
182428    ,p_event_number             => l_array_event_number(hdr_idx)
182429    ,p_event_date               => l_array_event_date(hdr_idx)
182430    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
182431    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
182432    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
182433    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
182434    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
182435    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
182436    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
182437    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
182438    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
182439    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
182440    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
182441    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
182442    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
182443    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
182444    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
182445 
182446 --
182447 -- set the status of entry to C_VALID (0)
182448 --
182449 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
182450 
182451 --
182452 -- initialize a row for ae header
182453 --
182454 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
182455 
182456 l_event_id := l_array_event_id(hdr_idx);
182457 
182458 --
182459 -- storing the hdr_idx for event. May be used by line cursor.
182460 --
182461 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
182462 
182463 --
182464 -- store sources from header extract. This can be improved to
182465 -- store only those sources from header extract that may be used in lines
182466 --
182467 
182468 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
182469 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
182470 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
182471 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
182472 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
182473 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
182474 
182475 --
182476 -- initilaize the status of ae headers for diffrent balance types
182477 -- the status is initialised to C_NOT_CREATED (2)
182478 --
182479 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
182480 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
182481 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
182482 
182483 --
182484 -- call api to validate and store accounting attributes for header
182485 --
182486 
182487 ------------------------------------------------------------
182488 -- Accrual Reversal : to get date for Standard Source (NONE)
182489 ------------------------------------------------------------
182490 l_acc_rev_gl_date_source := NULL;
182491 
182492      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
182493       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
182494 
182495 
182496 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
182497 
182498 XLA_AE_HEADER_PKG.SetJeCategoryName;
182499 
182500 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
182501 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
182502 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
182503 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
182504 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
182505 
182506 
182507 -- No header level analytical criteria
182508 
182509 --
182510 --accounting attribute enhancement, bug 3612931
182511 --
182512 l_trx_reversal_source := SUBSTR(NULL, 1,30);
182513 
182514 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
182515    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
182516 
182517    xla_accounting_err_pkg.build_message
182518       (p_appli_s_name            => 'XLA'
182519       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
182520       ,p_token_1                 => 'ACCT_ATTR_NAME'
182521       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
182522       ,p_token_2                 => 'PRODUCT_NAME'
182523       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
182524       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
182525       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
182526       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
182530    -- following sets the accounting attributes needed to reverse
182527 
182528 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
182529    --
182531    -- accounting for a distributeion
182532    --
182533    xla_ae_lines_pkg.SetTrxReversalAttrs
182534       (p_event_id              => l_event_id
182535       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
182536       ,p_trx_reversal_source   => l_trx_reversal_source);
182537 
182538 END IF;
182539 
182540 
182541 ----------------------------------------------------------------
182542 -- 4262811 -  update the header statuses to invalid in need be
182543 ----------------------------------------------------------------
182544 --
182545 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
182546 
182547 
182548   -----------------------------------------------
182549   -- No accrual reversal for the event class/type
182550   -----------------------------------------------
182551 ----------------------------------------------------------------
182552 
182553 --
182554 -- this ends the header loop iteration for one bulk fetch
182555 --
182556 END LOOP;
182557 
182558 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
182559 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
182560 
182561 --
182562 -- insert dummy rows into lines gt table that were created due to
182563 -- transaction reversals
182564 --
182565 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
182566    l_result := XLA_AE_LINES_PKG.InsertLines;
182567 END IF;
182568 
182569 --
182570 -- reset the temp_line_num for each set of events fetched from header
182571 -- cursor rather than doing it for each new event in line cursor
182572 -- Bug 3939231
182573 --
182574 xla_ae_lines_pkg.g_temp_line_num := 0;
182575 
182576 
182577 
182578 --
182579 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
182580 --
182581 --
182582 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182583 
182584       trace
182585          (p_msg      => 'SQL - FETCH line_cur'
182586          ,p_level    => C_LEVEL_STATEMENT
182587          ,p_module   => l_log_module);
182588 
182589 END IF;
182590 --
182591 --
182592 LOOP
182593   --
182594   FETCH line_cur BULK COLLECT INTO
182595         l_array_entity_id
182596       , l_array_legal_entity_id
182597       , l_array_entity_code
182598       , l_array_transaction_num
182599       , l_array_event_id
182600       , l_array_class_code
182601       , l_array_event_type
182602       , l_array_event_number
182603       , l_array_event_date
182604       , l_array_transaction_date
182605       , l_array_reference_num_1
182606       , l_array_reference_num_2
182607       , l_array_reference_num_3
182608       , l_array_reference_num_4
182609       , l_array_reference_char_1
182610       , l_array_reference_char_2
182611       , l_array_reference_char_3
182612       , l_array_reference_char_4
182613       , l_array_reference_date_1
182614       , l_array_reference_date_2
182615       , l_array_reference_date_3
182616       , l_array_reference_date_4
182617       , l_array_event_created_by
182618       , l_array_budgetary_control_flag
182619       , l_array_extract_line_num 
182620       , l_array_source_1
182621       , l_array_source_2
182622       , l_array_source_3
182623       , l_array_source_5
182624       , l_array_source_11
182625       LIMIT l_rows;
182626 
182627   --
182628   IF (C_LEVEL_EVENT >= g_log_level) THEN
182629             trace
182630                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
182631                ,p_level    => C_LEVEL_EVENT
182632                ,p_module   => l_log_module);
182633   END IF;
182634   --
182635   EXIT WHEN l_array_entity_id.count = 0;
182636 
182637   XLA_AE_LINES_PKG.g_rec_lines := null;
182638 
182639 --
182640 -- Bug 4458708
182641 --
182642 XLA_AE_LINES_PKG.g_LineNumber := 0;
182643 --
182644 --
182645 
182646 FOR Idx IN 1..l_array_event_id.count LOOP
182647    --
182648    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
182649    --
182650    l_event_id := l_array_event_id(idx);  -- 5648433
182651 
182652    --
182653    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
182654    --
182655 
182656    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
182657              (g_array_event(l_event_id).array_value_num('header_index'))
182658          ,'N'
182659          ) <> 'Y'
182660    THEN
182661       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182662          trace
182663             (p_msg      => 'Trancaction revesal option is not Y '
182664             ,p_level    => C_LEVEL_STATEMENT
182665             ,p_module   => l_log_module);
182666       END IF;
182667 
182668 --
182669 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
182670 --
182671 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
182672 --
182673 -- set event info as cache for other routines to refer event attributes
182674 --
182675 
182676 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
182677    l_previous_event_id := l_event_id;
182678 
182679    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
182680       (p_application_id           => p_application_id
182681       ,p_primary_ledger_id        => p_primary_ledger_id
182682       ,p_base_ledger_id           => p_base_ledger_id
182683       ,p_target_ledger_id         => p_target_ledger_id
182684       ,p_entity_id                => l_array_entity_id(Idx)
182685       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
182686       ,p_entity_code              => l_array_entity_code(Idx)
182690       ,p_event_type_code          => l_array_event_type(Idx)
182687       ,p_transaction_num          => l_array_transaction_num(Idx)
182688       ,p_event_id                 => l_array_event_id(Idx)
182689       ,p_event_class_code         => l_array_class_code(Idx)
182691       ,p_event_number             => l_array_event_number(Idx)
182692       ,p_event_date               => l_array_event_date(Idx)
182693       ,p_transaction_date         => l_array_transaction_date(Idx)
182694       ,p_reference_num_1          => l_array_reference_num_1(Idx)
182695       ,p_reference_num_2          => l_array_reference_num_2(Idx)
182696       ,p_reference_num_3          => l_array_reference_num_3(Idx)
182697       ,p_reference_num_4          => l_array_reference_num_4(Idx)
182698       ,p_reference_char_1         => l_array_reference_char_1(Idx)
182699       ,p_reference_char_2         => l_array_reference_char_2(Idx)
182700       ,p_reference_char_3         => l_array_reference_char_3(Idx)
182701       ,p_reference_char_4         => l_array_reference_char_4(Idx)
182702       ,p_reference_date_1         => l_array_reference_date_1(Idx)
182703       ,p_reference_date_2         => l_array_reference_date_2(Idx)
182704       ,p_reference_date_3         => l_array_reference_date_3(Idx)
182705       ,p_reference_date_4         => l_array_reference_date_4(Idx)
182706       ,p_event_created_by         => l_array_event_created_by(Idx)
182707       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
182708        --
182709 END IF;
182710 
182711 
182712 
182713 --
182714 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
182715 
182716 l_acct_reversal_source := SUBSTR(NULL, 1,30);
182717 
182718 IF l_continue_with_lines THEN
182719    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
182720       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
182721 
182722       xla_accounting_err_pkg.build_message
182723          (p_appli_s_name            => 'XLA'
182724          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
182725          ,p_token_1                 => 'LINE_NUMBER'
182726          ,p_value_1                 => l_array_extract_line_num(Idx)
182727          ,p_token_2                 => 'PRODUCT_NAME'
182728          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
182729          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
182730          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
182731          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
182732 
182733    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
182734       --
182735       -- following sets the accounting attributes needed to reverse
182736       -- accounting for a distributeion
182737       --
182738 
182739       --
182740       -- 5217187
182741       --
182742       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
182743       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
182744                                        g_array_event(l_event_id).array_value_num('header_index'));
182745       --
182746       --
182747 
182748       -- No reversal code generated
182749 
182750       xla_ae_lines_pkg.SetAcctReversalAttrs
182751          (p_event_id             => l_event_id
182752          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
182753          ,p_calculate_acctd_flag => l_calculate_acctd_flag
182754          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
182755    END IF;
182756 
182757    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
182758        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
182759 
182760 --
182761 AcctLineType_53 (
182762  p_application_id  => p_application_id
182763  ,p_event_id     => l_event_id
182764  ,p_calculate_acctd_flag => l_calculate_acctd_flag
182765  ,p_calculate_g_l_flag => l_calculate_g_l_flag
182766  ,p_actual_flag => l_actual_flag
182767  ,p_balance_type_code => l_balance_type_code
182768  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182769  
182770  , p_source_1 => l_array_source_1(Idx)
182771  , p_source_2 => l_array_source_2(Idx)
182772  , p_source_3 => l_array_source_3(Idx)
182773  , p_source_5 => l_array_source_5(Idx)
182774  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
182775  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
182776  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
182777  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
182778  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
182779  , p_source_11 => l_array_source_11(Idx)
182780  );
182781 If(l_balance_type_code = 'A') THEN
182782   l_actual_gain_loss_ref := l_gain_or_loss_ref;
182783 END IF;
182784 
182785 --
182786 
182787 
182788 --
182789 AcctLineType_203 (
182790  p_application_id  => p_application_id
182791  ,p_event_id     => l_event_id
182792  ,p_calculate_acctd_flag => l_calculate_acctd_flag
182793  ,p_calculate_g_l_flag => l_calculate_g_l_flag
182794  ,p_actual_flag => l_actual_flag
182795  ,p_balance_type_code => l_balance_type_code
182796  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182797  
182798  , p_source_1 => l_array_source_1(Idx)
182799  , p_source_2 => l_array_source_2(Idx)
182800  , p_source_3 => l_array_source_3(Idx)
182801  , p_source_5 => l_array_source_5(Idx)
182802  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
182803  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
182804  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
182805  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
182806  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
182807  , p_source_11 => l_array_source_11(Idx)
182808  );
182809 If(l_balance_type_code = 'A') THEN
182810   l_actual_gain_loss_ref := l_gain_or_loss_ref;
182814 
182811 END IF;
182812 
182813 --
182815       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
182816       -- or secondary ledger that has different currency with primary
182817       -- or alc that is calculated by sla
182818       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
182819             (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'))
182820 
182821 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
182822 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
182823           AND (l_actual_flag = 'A')) THEN
182824         XLA_AE_LINES_PKG.CreateGainOrLossLines(
182825           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
182826          ,p_application_id   => p_application_id
182827          ,p_amb_context_code => 'DEFAULT'
182828          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
182829          ,p_event_class_code => C_EVENT_CLASS_CODE
182830          ,p_event_type_code  => C_EVENT_TYPE_CODE
182831          
182832          ,p_gain_ccid        => -1
182833          ,p_loss_ccid        => -1
182834 
182835          ,p_actual_flag      => l_actual_flag
182836          ,p_enc_flag         => null
182837          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
182838          ,p_enc_g_l_ref      => null
182839          );
182840       END IF;
182841    END IF;
182842 END IF;
182843 
182844    ELSE
182845       --
182846       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
182847       --
182848       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182849          trace
182850             (p_msg      => 'Trancaction revesal option is Y'
182851             ,p_level    => C_LEVEL_STATEMENT
182852             ,p_module   => l_log_module);
182853       END IF;
182854    END IF;
182855 
182856 END LOOP;
182857 l_result := XLA_AE_LINES_PKG.InsertLines ;
182858 end loop;
182859 close line_cur;
182860 
182861 
182862 --
182863 -- insert headers into xla_ae_headers_gt table
182864 --
182865 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
182866 
182867 -- insert into errors table here.
182868 
182869 END LOOP;
182870 
182871 --
182872 -- 4865292
182873 --
182874 -- Compare g_hdr_extract_count with event count in
182875 -- CreateHeadersAndLines.
182876 --
182877 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
182878 
182879 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182880    trace (p_msg     => '# rows extracted from header extract objects '
182881                     || ' (running total): '
182882                     || g_hdr_extract_count
182883          ,p_level   => C_LEVEL_STATEMENT
182884          ,p_module  => l_log_module);
182885 END IF;
182886 
182887 CLOSE header_cur;
182888 --
182889 
182890 --
182891 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182892    trace
182893       (p_msg      => 'END of EventType_299'
182894       ,p_level    => C_LEVEL_PROCEDURE
182895       ,p_module   => l_log_module);
182896 END IF;
182897 --
182898 RETURN l_result;
182899 EXCEPTION
182900 WHEN xla_exceptions_pkg.application_exception THEN
182901    
182902 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
182903 
182904    
182905 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
182906 
182907    RAISE;
182908 
182909 WHEN NO_DATA_FOUND THEN
182910 
182911 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
182912 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
182913 
182914 FOR header_record IN header_cur
182915 LOOP
182916     l_array_header_events(header_record.event_id) := header_record.event_id;
182917 END LOOP;
182918 
182919 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
182920 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
182921 
182922 fnd_file.put_line(fnd_file.LOG, '                    ');
182923 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
182924 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
182925 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
182926 
182927 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
182928 LOOP
182929 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
182930 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
182931         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
182932 	END IF;
182933 END LOOP;
182934 
182935 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
182936 fnd_file.put_line(fnd_file.LOG, '                    ');
182937 
182938 
182939 xla_exceptions_pkg.raise_message
182940       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_299');
182941 
182942 
182943 WHEN OTHERS THEN
182944    xla_exceptions_pkg.raise_message
182945       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_299');
182946 END EventType_299;
182947 --
182948 
182949 ---------------------------------------
182950 --
182951 -- PRIVATE PROCEDURE
182952 --         insert_sources_300
182953 --
182954 ----------------------------------------
182955 --
182956 PROCEDURE insert_sources_300(
182957                                 p_target_ledger_id       IN NUMBER
182958                               , p_language               IN VARCHAR2
182959                               , p_sla_ledger_id          IN NUMBER
182960                               , p_pad_start_date         IN DATE
182964 
182961                               , p_pad_end_date           IN DATE
182962                          )
182963 IS
182965 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RMA_ALL';
182966 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RMA';
182967 p_apps_owner                   VARCHAR2(30);
182968 l_log_module                   VARCHAR2(240);
182969 BEGIN
182970 IF g_log_enabled THEN
182971       l_log_module := C_DEFAULT_MODULE||'.insert_sources_300';
182972 END IF;
182973 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182974 
182975       trace
182976          (p_msg      => 'BEGIN of insert_sources_300'
182977          ,p_level    => C_LEVEL_PROCEDURE
182978          ,p_module   => l_log_module);
182979 
182980 END IF;
182981 
182982 -- select APPS owner
182983 SELECT oracle_username
182984   INTO p_apps_owner
182985   FROM fnd_oracle_userid
182986  WHERE read_only_flag = 'U'
182987 ;
182988 
182989 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182990       trace
182991          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
182992                         ' - p_language = '||p_language||
182993                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
182994                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
182995                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
182996                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
182997          ,p_level    => C_LEVEL_STATEMENT
182998          ,p_module   => l_log_module);
182999 END IF;
183000 
183001 
183002 --
183003 INSERT INTO xla_diag_sources --hdr2
183004 (
183005         event_id
183006       , ledger_id
183007       , sla_ledger_id
183008       , description_language
183009       , object_name
183010       , object_type_code
183011       , line_number
183012       , source_application_id
183013       , source_type_code
183014       , source_code
183015       , source_value
183016       , source_meaning
183017       , created_by
183018       , creation_date
183019       , last_update_date
183020       , last_updated_by
183021       , last_update_login
183022       , program_update_date
183023       , program_application_id
183024       , program_id
183025       , request_id
183026 )
183027 SELECT
183028         event_id
183029       , p_target_ledger_id
183030       , p_sla_ledger_id
183031       , p_language
183032       , object_name
183033       , object_type_code
183034       , line_number
183035       , source_application_id
183036       , source_type_code
183037       , source_code
183038       , SUBSTR(source_value ,1,1996)
183039       , SUBSTR(source_meaning ,1,200)
183040       , xla_environment_pkg.g_Usr_Id
183041       , TRUNC(SYSDATE)
183042       , TRUNC(SYSDATE)
183043       , xla_environment_pkg.g_Usr_Id
183044       , xla_environment_pkg.g_Login_Id
183045       , TRUNC(SYSDATE)
183046       , xla_environment_pkg.g_Prog_Appl_Id
183047       , xla_environment_pkg.g_Prog_Id
183048       , xla_environment_pkg.g_Req_Id
183049   FROM (
183050        SELECT xet.event_id                  event_id
183051             , 0                          line_number
183052             , CASE r
183053                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
183054                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
183055                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
183056                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
183057                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
183058                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
183059                 
183060                ELSE null
183061               END                           object_name
183062             , CASE r
183063                 WHEN 1 THEN 'HEADER' 
183064                 WHEN 2 THEN 'HEADER' 
183065                 WHEN 3 THEN 'HEADER' 
183066                 WHEN 4 THEN 'HEADER' 
183067                 WHEN 5 THEN 'HEADER' 
183068                 WHEN 6 THEN 'HEADER' 
183069                 
183070                 ELSE null
183071               END                           object_type_code
183072             , CASE r
183073                 WHEN 1 THEN '555' 
183074                 WHEN 2 THEN '555' 
183075                 WHEN 3 THEN '555' 
183076                 WHEN 4 THEN '555' 
183077                 WHEN 5 THEN '555' 
183078                 WHEN 6 THEN '555' 
183079                 
183080                 ELSE null
183081               END                           source_application_id
183082             , 'S'             source_type_code
183083             , CASE r
183084                 WHEN 1 THEN 'ENTITY_CODE' 
183085                 WHEN 2 THEN 'CURRENCY_CODE' 
183086                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
183087                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
183088                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
183089                 WHEN 6 THEN 'TRANSACTION_DATE' 
183090                 
183091                 ELSE null
183092               END                           source_code
183093             , CASE r
183094                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
183095                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
183096                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
183097                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
183098                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
183099                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
183100                 
183101                 ELSE null
183102               END                           source_value
183103             , CASE r
183104                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
183105                           1010186
183106                          ,TO_CHAR(h1.CURRENCY_CODE)
183107                          ,'CURRENCY_CODE'
183108                          ,'S'
183109                          ,555)
183113          FROM xla_events_gt     xet  
183110                 
183111                 ELSE null
183112               END               source_meaning
183114       , GMF_XLA_EXTRACT_HEADERS  h1
183115              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
183116          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
183117            AND xet.event_class_code = C_EVENT_CLASS_CODE
183118               AND h1.event_id = xet.event_id
183119 
183120 )
183121 ;
183122 --
183123 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183124 
183125       trace
183126          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
183127          ,p_level    => C_LEVEL_STATEMENT
183128          ,p_module   => l_log_module);
183129 
183130 END IF;
183131 --
183132 
183133 
183134 
183135 --
183136 INSERT INTO xla_diag_sources  --line2
183137 (
183138         event_id
183139       , ledger_id
183140       , sla_ledger_id
183141       , description_language
183142       , object_name
183143       , object_type_code
183144       , line_number
183145       , source_application_id
183146       , source_type_code
183147       , source_code
183148       , source_value
183149       , source_meaning
183150       , created_by
183151       , creation_date
183152       , last_update_date
183153       , last_updated_by
183154       , last_update_login
183155       , program_update_date
183156       , program_application_id
183157       , program_id
183158       , request_id
183159 )
183160 SELECT  event_id
183161       , p_target_ledger_id
183162       , p_sla_ledger_id
183163       , p_language
183164       , object_name
183165       , object_type_code
183166       , line_number
183167       , source_application_id
183168       , source_type_code
183169       , source_code
183170       , SUBSTR(source_value,1,1996)
183171       , SUBSTR(source_meaning ,1,200)
183172       , xla_environment_pkg.g_Usr_Id
183173       , TRUNC(SYSDATE)
183174       , TRUNC(SYSDATE)
183175       , xla_environment_pkg.g_Usr_Id
183176       , xla_environment_pkg.g_Login_Id
183177       , TRUNC(SYSDATE)
183178       , xla_environment_pkg.g_Prog_Appl_Id
183179       , xla_environment_pkg.g_Prog_Id
183180       , xla_environment_pkg.g_Req_Id
183181   FROM (
183182        SELECT xet.event_id                  event_id
183183             , l2.line_number                 line_number
183184             , CASE r
183185                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
183186                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
183187                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
183188                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
183189                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
183190                 
183191                ELSE null
183192               END                           object_name
183193             , CASE r
183194                 WHEN 1 THEN 'LINE' 
183195                 WHEN 2 THEN 'LINE' 
183196                 WHEN 3 THEN 'LINE' 
183197                 WHEN 4 THEN 'LINE' 
183198                 WHEN 5 THEN 'LINE' 
183199                 
183200                 ELSE null
183201               END                           object_type_code
183202             , CASE r
183203                 WHEN 1 THEN '555' 
183204                 WHEN 2 THEN '555' 
183205                 WHEN 3 THEN '555' 
183206                 WHEN 4 THEN '555' 
183207                 WHEN 5 THEN '555' 
183208                 
183209                 ELSE null
183210               END                           source_application_id
183211             , 'S'             source_type_code
183212             , CASE r
183213                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
183214                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
183215                 WHEN 3 THEN 'ENTERED_AMOUNT' 
183216                 WHEN 4 THEN 'LINE_ID' 
183217                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
183218                 
183219                 ELSE null
183220               END                           source_code
183221             , CASE r
183222                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
183223                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
183224                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
183225                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
183226                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
183227                 
183228                 ELSE null
183229               END                           source_value
183230             , null              source_meaning
183231          FROM  xla_events_gt     xet  
183232         , GMF_XLA_EXTRACT_LINES  l2
183233             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
183234         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
183235           AND xet.event_class_code = C_EVENT_CLASS_CODE
183236             AND l2.event_id          = xet.event_id
183237 
183238 )
183239 ;
183240 --
183241 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183242 
183243       trace
183244          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
183245          ,p_level    => C_LEVEL_STATEMENT
183246          ,p_module   => l_log_module);
183247 
183248 END IF;
183249 
183250 
183251 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
183252       trace
183253          (p_msg      => 'END of insert_sources_300'
183254          ,p_level    => C_LEVEL_PROCEDURE
183255          ,p_module   => l_log_module);
183256 END IF;
183257 EXCEPTION
183258   WHEN xla_exceptions_pkg.application_exception THEN
183259       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
183260             trace
183261                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
183262                ,p_level    => C_LEVEL_EXCEPTION
183266   WHEN OTHERS THEN
183263                ,p_module   => l_log_module);
183264       END IF;
183265       RAISE;
183267       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
183268             trace
183269                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
183270                ,p_level    => C_LEVEL_EXCEPTION
183271                ,p_module   => l_log_module);
183272        END IF;
183273        xla_exceptions_pkg.raise_message
183274            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_300');
183275 END insert_sources_300;
183276 --
183277 
183278 ---------------------------------------
183279 --
183280 -- PRIVATE FUNCTION
183281 --         EventClass_300
183282 --
183283 ----------------------------------------
183284 --
183285 FUNCTION EventClass_300
183286        (p_application_id         IN NUMBER
183287        ,p_base_ledger_id         IN NUMBER
183288        ,p_target_ledger_id       IN NUMBER
183289        ,p_language               IN VARCHAR2
183290        ,p_currency_code          IN VARCHAR2
183291        ,p_sla_ledger_id          IN NUMBER
183292        ,p_pad_start_date         IN DATE
183293        ,p_pad_end_date           IN DATE
183294        ,p_primary_ledger_id      IN NUMBER)
183295 RETURN BOOLEAN IS
183296 --
183297 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RMA_ALL';
183298 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RMA';
183299 
183300 l_calculate_acctd_flag   VARCHAR2(1) :='N';
183301 l_calculate_g_l_flag     VARCHAR2(1) :='N';
183302 --
183303 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183304 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183305 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
183306 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183307 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183308 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
183309 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
183310 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183311 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183312 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183313 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183314 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183315 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183316 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183317 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183318 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183319 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183320 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183321 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183322 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183323 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183324 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183325 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
183326 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
183327 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
183328 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
183329 
183330 l_event_id                             NUMBER;
183331 l_previous_event_id                    NUMBER;
183332 l_first_event_id                       NUMBER;
183333 l_last_event_id                        NUMBER;
183334 
183335 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
183336 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
183337 --
183338 --
183339 l_result                    BOOLEAN := TRUE;
183340 l_rows                      NUMBER  := 1000;
183341 l_event_type_name           VARCHAR2(80) := 'All';
183342 l_event_class_name          VARCHAR2(80) := 'RMA';
183343 l_description               VARCHAR2(4000);
183344 l_transaction_reversal      NUMBER;
183345 l_ae_header_id              NUMBER;
183346 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
183347 l_log_module                VARCHAR2(240);
183348 --
183349 l_acct_reversal_source      VARCHAR2(30);
183350 l_trx_reversal_source       VARCHAR2(30);
183351 
183352 l_continue_with_lines       BOOLEAN := TRUE;
183353 --
183354 l_acc_rev_gl_date_source    DATE;                      -- 4262811
183355 --
183356 type t_array_event_id is table of number index by binary_integer;
183357 
183358 l_rec_array_event                    t_rec_array_event;
183359 l_null_rec_array_event               t_rec_array_event;
183360 l_array_ae_header_id                 xla_number_array_type;
183361 l_actual_flag                        VARCHAR2(1) := NULL;
183362 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
183363 l_balance_type_code                  VARCHAR2(1) :=NULL;
183364 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
183365 
183366 --
183367 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
183368 --
183369 
183370 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
183371 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
183372 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
183373 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
183374 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
183378 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
183375 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
183376 
183377 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
183379 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
183380 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
183381 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
183382 
183383 l_array_source_6              t_array_source_6;
183384 l_array_source_7              t_array_source_7;
183385 l_array_source_8              t_array_source_8;
183386 l_array_source_9              t_array_source_9;
183387 l_array_source_10              t_array_source_10;
183388 l_array_source_12              t_array_source_12;
183389 
183390 l_array_source_1      t_array_source_1;
183391 l_array_source_2      t_array_source_2;
183392 l_array_source_3      t_array_source_3;
183393 l_array_source_5      t_array_source_5;
183394 l_array_source_11      t_array_source_11;
183395 
183396 --
183397 CURSOR header_cur
183398 IS
183399 SELECT /*+ leading(xet) cardinality(xet,1) */
183400 -- Event Class Code: RMA
183401     xet.entity_id
183402    ,xet.legal_entity_id
183403    ,xet.entity_code
183404    ,xet.transaction_number
183405    ,xet.event_id
183406    ,xet.event_class_code
183407    ,xet.event_type_code
183408    ,xet.event_number
183409    ,xet.event_date
183410    ,xet.transaction_date
183411    ,xet.reference_num_1
183412    ,xet.reference_num_2
183413    ,xet.reference_num_3
183414    ,xet.reference_num_4
183415    ,xet.reference_char_1
183416    ,xet.reference_char_2
183417    ,xet.reference_char_3
183418    ,xet.reference_char_4
183419    ,xet.reference_date_1
183420    ,xet.reference_date_2
183421    ,xet.reference_date_3
183422    ,xet.reference_date_4
183423    ,xet.event_created_by
183424    ,xet.budgetary_control_flag 
183425   , h1.ENTITY_CODE    source_6
183426   , h1.CURRENCY_CODE    source_7
183427   , h1.CURRENCY_CONVERSION_DATE    source_8
183428   , h1.CURRENCY_CONVERSION_RATE    source_9
183429   , h1.CURRENCY_CONVERSION_TYPE    source_10
183430   , h1.TRANSACTION_DATE    source_12
183431   FROM xla_events_gt     xet 
183432   , GMF_XLA_EXTRACT_HEADERS  h1
183433  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
183434    and xet.event_class_code = C_EVENT_CLASS_CODE
183435    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
183436 
183437  ORDER BY event_id
183438 ;
183439 
183440 
183441 --
183442 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
183443 IS
183444 SELECT  /*+ leading(xet) cardinality(xet,1) */
183445 -- Event Class Code: RMA
183446     xet.entity_id
183447    ,xet.legal_entity_id
183448    ,xet.entity_code
183449    ,xet.transaction_number
183450    ,xet.event_id
183451    ,xet.event_class_code
183452    ,xet.event_type_code
183453    ,xet.event_number
183454    ,xet.event_date
183455    ,xet.transaction_date
183456    ,xet.reference_num_1
183457    ,xet.reference_num_2
183458    ,xet.reference_num_3
183459    ,xet.reference_num_4
183460    ,xet.reference_char_1
183461    ,xet.reference_char_2
183462    ,xet.reference_char_3
183463    ,xet.reference_char_4
183464    ,xet.reference_date_1
183465    ,xet.reference_date_2
183466    ,xet.reference_date_3
183467    ,xet.reference_date_4
183468    ,xet.event_created_by
183469    ,xet.budgetary_control_flag
183470  , l2.LINE_NUMBER  
183471   , l2.TRANSACTION_ACCOUNT_ID    source_1
183472   , l2.JOURNAL_LINE_TYPE    source_2
183473   , l2.ENTERED_AMOUNT    source_3
183474   , l2.LINE_ID    source_5
183475   , l2.ACCOUNTED_AMOUNT    source_11
183476   FROM xla_events_gt     xet 
183477   , GMF_XLA_EXTRACT_LINES  l2
183478  WHERE xet.event_id between x_first_event_id and x_last_event_id
183479    and xet.event_date between p_pad_start_date and p_pad_end_date
183480    and xet.event_class_code = C_EVENT_CLASS_CODE
183481    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
183482 ;
183483 
183484 --
183485 BEGIN
183486 IF g_log_enabled THEN
183487    l_log_module := C_DEFAULT_MODULE||'.EventClass_300';
183488 END IF;
183489 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
183490    trace
183491       (p_msg      => 'BEGIN of EventClass_300'
183492       ,p_level    => C_LEVEL_PROCEDURE
183493       ,p_module   => l_log_module);
183494 END IF;
183495 
183496 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183497    trace
183498       (p_msg      => 'p_application_id = '||p_application_id||
183499                      ' - p_base_ledger_id = '||p_base_ledger_id||
183500                      ' - p_target_ledger_id  = '||p_target_ledger_id||
183501                      ' - p_language = '||p_language||
183502                      ' - p_currency_code = '||p_currency_code||
183503                      ' - p_sla_ledger_id = '||p_sla_ledger_id
183504       ,p_level    => C_LEVEL_STATEMENT
183505       ,p_module   => l_log_module);
183506 END IF;
183507 --
183508 -- initialze arrays
183509 --
183510 g_array_event.DELETE;
183511 l_rec_array_event := l_null_rec_array_event;
183512 --
183513 --------------------------------------
183514 -- 4262811 Initialze MPA Line Number
183515 --------------------------------------
183516 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
183517 
183518 --
183519 
183520 --
183521 OPEN header_cur;
183522 --
183523 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183524    trace
183525    (p_msg      => 'SQL - FETCH header_cur'
183526    ,p_level    => C_LEVEL_STATEMENT
183527    ,p_module   => l_log_module);
183528 END IF;
183529 --
183530 LOOP
183534       , l_array_entity_code
183531 FETCH header_cur BULK COLLECT INTO
183532         l_array_entity_id
183533       , l_array_legal_entity_id
183535       , l_array_transaction_num
183536       , l_array_event_id
183537       , l_array_class_code
183538       , l_array_event_type
183539       , l_array_event_number
183540       , l_array_event_date
183541       , l_array_transaction_date
183542       , l_array_reference_num_1
183543       , l_array_reference_num_2
183544       , l_array_reference_num_3
183545       , l_array_reference_num_4
183546       , l_array_reference_char_1
183547       , l_array_reference_char_2
183548       , l_array_reference_char_3
183549       , l_array_reference_char_4
183550       , l_array_reference_date_1
183551       , l_array_reference_date_2
183552       , l_array_reference_date_3
183553       , l_array_reference_date_4
183554       , l_array_event_created_by
183555       , l_array_budgetary_control_flag 
183556       , l_array_source_6
183557       , l_array_source_7
183558       , l_array_source_8
183559       , l_array_source_9
183560       , l_array_source_10
183561       , l_array_source_12
183562       LIMIT l_rows;
183563 --
183564 IF (C_LEVEL_EVENT >= g_log_level) THEN
183565    trace
183566    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
183567    ,p_level    => C_LEVEL_EVENT
183568    ,p_module   => l_log_module);
183569 END IF;
183570 --
183571 EXIT WHEN l_array_entity_id.COUNT = 0;
183572 
183573 -- initialize arrays
183574 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
183575 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
183576 
183577 --
183578 -- Bug 4458708
183579 --
183580 XLA_AE_LINES_PKG.g_LineNumber := 0;
183581 
183582 
183583 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
183584 g_last_hdr_idx := l_array_event_id.LAST;
183585 --
183586 -- loop for the headers. Each iteration is for each header extract row
183587 -- fetched in header cursor
183588 --
183589 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
183590 
183591 --
183592 -- set event info as cache for other routines to refer event attributes
183593 --
183594 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
183595    (p_application_id           => p_application_id
183596    ,p_primary_ledger_id        => p_primary_ledger_id
183597    ,p_base_ledger_id           => p_base_ledger_id
183598    ,p_target_ledger_id         => p_target_ledger_id
183599    ,p_entity_id                => l_array_entity_id(hdr_idx)
183600    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
183601    ,p_entity_code              => l_array_entity_code(hdr_idx)
183602    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
183603    ,p_event_id                 => l_array_event_id(hdr_idx)
183604    ,p_event_class_code         => l_array_class_code(hdr_idx)
183605    ,p_event_type_code          => l_array_event_type(hdr_idx)
183606    ,p_event_number             => l_array_event_number(hdr_idx)
183607    ,p_event_date               => l_array_event_date(hdr_idx)
183608    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
183609    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
183610    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
183611    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
183612    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
183613    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
183614    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
183615    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
183616    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
183617    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
183618    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
183619    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
183620    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
183621    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
183622    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
183623 
183624 --
183625 -- set the status of entry to C_VALID (0)
183626 --
183627 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
183628 
183629 --
183630 -- initialize a row for ae header
183631 --
183632 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
183633 
183634 l_event_id := l_array_event_id(hdr_idx);
183635 
183636 --
183637 -- storing the hdr_idx for event. May be used by line cursor.
183638 --
183639 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
183640 
183641 --
183642 -- store sources from header extract. This can be improved to
183643 -- store only those sources from header extract that may be used in lines
183644 --
183645 
183646 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
183647 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
183648 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
183649 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
183650 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
183651 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
183652 
183653 --
183654 -- initilaize the status of ae headers for diffrent balance types
183655 -- the status is initialised to C_NOT_CREATED (2)
183656 --
183657 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
183658 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
183659 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
183660 
183661 --
183665 ------------------------------------------------------------
183662 -- call api to validate and store accounting attributes for header
183663 --
183664 
183666 -- Accrual Reversal : to get date for Standard Source (NONE)
183667 ------------------------------------------------------------
183668 l_acc_rev_gl_date_source := NULL;
183669 
183670      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
183671       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
183672 
183673 
183674 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
183675 
183676 XLA_AE_HEADER_PKG.SetJeCategoryName;
183677 
183678 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
183679 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
183680 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
183681 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
183682 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
183683 
183684 
183685 -- No header level analytical criteria
183686 
183687 --
183688 --accounting attribute enhancement, bug 3612931
183689 --
183690 l_trx_reversal_source := SUBSTR(NULL, 1,30);
183691 
183692 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
183693    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
183694 
183695    xla_accounting_err_pkg.build_message
183696       (p_appli_s_name            => 'XLA'
183697       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
183698       ,p_token_1                 => 'ACCT_ATTR_NAME'
183699       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
183700       ,p_token_2                 => 'PRODUCT_NAME'
183701       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
183702       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
183703       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
183704       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
183705 
183706 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
183707    --
183708    -- following sets the accounting attributes needed to reverse
183709    -- accounting for a distributeion
183710    --
183711    xla_ae_lines_pkg.SetTrxReversalAttrs
183712       (p_event_id              => l_event_id
183713       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
183714       ,p_trx_reversal_source   => l_trx_reversal_source);
183715 
183716 END IF;
183717 
183718 
183719 ----------------------------------------------------------------
183720 -- 4262811 -  update the header statuses to invalid in need be
183721 ----------------------------------------------------------------
183722 --
183723 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
183724 
183725 
183726   -----------------------------------------------
183727   -- No accrual reversal for the event class/type
183728   -----------------------------------------------
183729 ----------------------------------------------------------------
183730 
183731 --
183732 -- this ends the header loop iteration for one bulk fetch
183733 --
183734 END LOOP;
183735 
183736 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
183737 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
183738 
183739 --
183740 -- insert dummy rows into lines gt table that were created due to
183741 -- transaction reversals
183742 --
183743 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
183744    l_result := XLA_AE_LINES_PKG.InsertLines;
183745 END IF;
183746 
183747 --
183748 -- reset the temp_line_num for each set of events fetched from header
183749 -- cursor rather than doing it for each new event in line cursor
183750 -- Bug 3939231
183751 --
183752 xla_ae_lines_pkg.g_temp_line_num := 0;
183753 
183754 
183755 
183756 --
183757 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
183758 --
183759 --
183760 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183761 
183762       trace
183763          (p_msg      => 'SQL - FETCH line_cur'
183764          ,p_level    => C_LEVEL_STATEMENT
183765          ,p_module   => l_log_module);
183766 
183767 END IF;
183768 --
183769 --
183770 LOOP
183771   --
183772   FETCH line_cur BULK COLLECT INTO
183773         l_array_entity_id
183774       , l_array_legal_entity_id
183775       , l_array_entity_code
183776       , l_array_transaction_num
183777       , l_array_event_id
183778       , l_array_class_code
183779       , l_array_event_type
183780       , l_array_event_number
183781       , l_array_event_date
183782       , l_array_transaction_date
183783       , l_array_reference_num_1
183784       , l_array_reference_num_2
183785       , l_array_reference_num_3
183786       , l_array_reference_num_4
183787       , l_array_reference_char_1
183788       , l_array_reference_char_2
183789       , l_array_reference_char_3
183790       , l_array_reference_char_4
183791       , l_array_reference_date_1
183792       , l_array_reference_date_2
183793       , l_array_reference_date_3
183794       , l_array_reference_date_4
183795       , l_array_event_created_by
183796       , l_array_budgetary_control_flag
183797       , l_array_extract_line_num 
183798       , l_array_source_1
183799       , l_array_source_2
183800       , l_array_source_3
183801       , l_array_source_5
183802       , l_array_source_11
183803       LIMIT l_rows;
183804 
183805   --
183806   IF (C_LEVEL_EVENT >= g_log_level) THEN
183807             trace
183811   END IF;
183808                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
183809                ,p_level    => C_LEVEL_EVENT
183810                ,p_module   => l_log_module);
183812   --
183813   EXIT WHEN l_array_entity_id.count = 0;
183814 
183815   XLA_AE_LINES_PKG.g_rec_lines := null;
183816 
183817 --
183818 -- Bug 4458708
183819 --
183820 XLA_AE_LINES_PKG.g_LineNumber := 0;
183821 --
183822 --
183823 
183824 FOR Idx IN 1..l_array_event_id.count LOOP
183825    --
183826    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
183827    --
183828    l_event_id := l_array_event_id(idx);  -- 5648433
183829 
183830    --
183831    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
183832    --
183833 
183834    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
183835              (g_array_event(l_event_id).array_value_num('header_index'))
183836          ,'N'
183837          ) <> 'Y'
183838    THEN
183839       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183840          trace
183841             (p_msg      => 'Trancaction revesal option is not Y '
183842             ,p_level    => C_LEVEL_STATEMENT
183843             ,p_module   => l_log_module);
183844       END IF;
183845 
183846 --
183847 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
183848 --
183849 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
183850 --
183851 -- set event info as cache for other routines to refer event attributes
183852 --
183853 
183854 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
183855    l_previous_event_id := l_event_id;
183856 
183857    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
183858       (p_application_id           => p_application_id
183859       ,p_primary_ledger_id        => p_primary_ledger_id
183860       ,p_base_ledger_id           => p_base_ledger_id
183861       ,p_target_ledger_id         => p_target_ledger_id
183862       ,p_entity_id                => l_array_entity_id(Idx)
183863       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
183864       ,p_entity_code              => l_array_entity_code(Idx)
183865       ,p_transaction_num          => l_array_transaction_num(Idx)
183866       ,p_event_id                 => l_array_event_id(Idx)
183867       ,p_event_class_code         => l_array_class_code(Idx)
183868       ,p_event_type_code          => l_array_event_type(Idx)
183869       ,p_event_number             => l_array_event_number(Idx)
183870       ,p_event_date               => l_array_event_date(Idx)
183871       ,p_transaction_date         => l_array_transaction_date(Idx)
183872       ,p_reference_num_1          => l_array_reference_num_1(Idx)
183873       ,p_reference_num_2          => l_array_reference_num_2(Idx)
183874       ,p_reference_num_3          => l_array_reference_num_3(Idx)
183875       ,p_reference_num_4          => l_array_reference_num_4(Idx)
183876       ,p_reference_char_1         => l_array_reference_char_1(Idx)
183877       ,p_reference_char_2         => l_array_reference_char_2(Idx)
183878       ,p_reference_char_3         => l_array_reference_char_3(Idx)
183879       ,p_reference_char_4         => l_array_reference_char_4(Idx)
183880       ,p_reference_date_1         => l_array_reference_date_1(Idx)
183881       ,p_reference_date_2         => l_array_reference_date_2(Idx)
183882       ,p_reference_date_3         => l_array_reference_date_3(Idx)
183883       ,p_reference_date_4         => l_array_reference_date_4(Idx)
183884       ,p_event_created_by         => l_array_event_created_by(Idx)
183885       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
183886        --
183887 END IF;
183888 
183889 
183890 
183891 --
183892 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
183893 
183894 l_acct_reversal_source := SUBSTR(NULL, 1,30);
183895 
183896 IF l_continue_with_lines THEN
183897    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
183898       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
183899 
183900       xla_accounting_err_pkg.build_message
183901          (p_appli_s_name            => 'XLA'
183902          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
183903          ,p_token_1                 => 'LINE_NUMBER'
183904          ,p_value_1                 => l_array_extract_line_num(Idx)
183905          ,p_token_2                 => 'PRODUCT_NAME'
183906          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
183907          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
183908          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
183909          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
183910 
183911    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
183912       --
183913       -- following sets the accounting attributes needed to reverse
183914       -- accounting for a distributeion
183915       --
183916 
183917       --
183918       -- 5217187
183919       --
183920       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
183921       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
183922                                        g_array_event(l_event_id).array_value_num('header_index'));
183923       --
183924       --
183925 
183926       -- No reversal code generated
183927 
183928       xla_ae_lines_pkg.SetAcctReversalAttrs
183929          (p_event_id             => l_event_id
183930          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
183931          ,p_calculate_acctd_flag => l_calculate_acctd_flag
183932          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
183933    END IF;
183934 
183935    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
183936        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
183940  p_application_id  => p_application_id
183937 
183938 --
183939 AcctLineType_72 (
183941  ,p_event_id     => l_event_id
183942  ,p_calculate_acctd_flag => l_calculate_acctd_flag
183943  ,p_calculate_g_l_flag => l_calculate_g_l_flag
183944  ,p_actual_flag => l_actual_flag
183945  ,p_balance_type_code => l_balance_type_code
183946  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183947  
183948  , p_source_1 => l_array_source_1(Idx)
183949  , p_source_2 => l_array_source_2(Idx)
183950  , p_source_3 => l_array_source_3(Idx)
183951  , p_source_5 => l_array_source_5(Idx)
183952  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
183953  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
183954  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
183955  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
183956  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
183957  , p_source_11 => l_array_source_11(Idx)
183958  );
183959 If(l_balance_type_code = 'A') THEN
183960   l_actual_gain_loss_ref := l_gain_or_loss_ref;
183961 END IF;
183962 
183963 --
183964 
183965 
183966 --
183967 AcctLineType_80 (
183968  p_application_id  => p_application_id
183969  ,p_event_id     => l_event_id
183970  ,p_calculate_acctd_flag => l_calculate_acctd_flag
183971  ,p_calculate_g_l_flag => l_calculate_g_l_flag
183972  ,p_actual_flag => l_actual_flag
183973  ,p_balance_type_code => l_balance_type_code
183974  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183975  
183976  , p_source_1 => l_array_source_1(Idx)
183977  , p_source_2 => l_array_source_2(Idx)
183978  , p_source_3 => l_array_source_3(Idx)
183979  , p_source_5 => l_array_source_5(Idx)
183980  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
183981  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
183982  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
183983  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
183984  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
183985  , p_source_11 => l_array_source_11(Idx)
183986  );
183987 If(l_balance_type_code = 'A') THEN
183988   l_actual_gain_loss_ref := l_gain_or_loss_ref;
183989 END IF;
183990 
183991 --
183992 
183993 
183994 --
183995 AcctLineType_166 (
183996  p_application_id  => p_application_id
183997  ,p_event_id     => l_event_id
183998  ,p_calculate_acctd_flag => l_calculate_acctd_flag
183999  ,p_calculate_g_l_flag => l_calculate_g_l_flag
184000  ,p_actual_flag => l_actual_flag
184001  ,p_balance_type_code => l_balance_type_code
184002  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184003  
184004  , p_source_1 => l_array_source_1(Idx)
184005  , p_source_2 => l_array_source_2(Idx)
184006  , p_source_3 => l_array_source_3(Idx)
184007  , p_source_5 => l_array_source_5(Idx)
184008  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
184009  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
184010  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
184011  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
184012  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
184013  , p_source_11 => l_array_source_11(Idx)
184014  );
184015 If(l_balance_type_code = 'A') THEN
184016   l_actual_gain_loss_ref := l_gain_or_loss_ref;
184017 END IF;
184018 
184019 --
184020 
184021       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
184022       -- or secondary ledger that has different currency with primary
184023       -- or alc that is calculated by sla
184024       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
184025             (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'))
184026 
184027 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
184028 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
184029           AND (l_actual_flag = 'A')) THEN
184030         XLA_AE_LINES_PKG.CreateGainOrLossLines(
184031           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
184032          ,p_application_id   => p_application_id
184033          ,p_amb_context_code => 'DEFAULT'
184034          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
184035          ,p_event_class_code => C_EVENT_CLASS_CODE
184036          ,p_event_type_code  => C_EVENT_TYPE_CODE
184037          
184038          ,p_gain_ccid        => -1
184039          ,p_loss_ccid        => -1
184040 
184041          ,p_actual_flag      => l_actual_flag
184042          ,p_enc_flag         => null
184043          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
184044          ,p_enc_g_l_ref      => null
184045          );
184046       END IF;
184047    END IF;
184048 END IF;
184049 
184050    ELSE
184051       --
184052       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
184053       --
184054       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184055          trace
184056             (p_msg      => 'Trancaction revesal option is Y'
184057             ,p_level    => C_LEVEL_STATEMENT
184058             ,p_module   => l_log_module);
184059       END IF;
184060    END IF;
184061 
184062 END LOOP;
184063 l_result := XLA_AE_LINES_PKG.InsertLines ;
184064 end loop;
184065 close line_cur;
184066 
184067 
184068 --
184069 -- insert headers into xla_ae_headers_gt table
184070 --
184071 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
184072 
184073 -- insert into errors table here.
184074 
184075 END LOOP;
184076 
184077 --
184078 -- 4865292
184079 --
184080 -- Compare g_hdr_extract_count with event count in
184084 
184081 -- CreateHeadersAndLines.
184082 --
184083 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
184085 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184086    trace (p_msg     => '# rows extracted from header extract objects '
184087                     || ' (running total): '
184088                     || g_hdr_extract_count
184089          ,p_level   => C_LEVEL_STATEMENT
184090          ,p_module  => l_log_module);
184091 END IF;
184092 
184093 CLOSE header_cur;
184094 --
184095 
184096 --
184097 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184098    trace
184099       (p_msg      => 'END of EventClass_300'
184100       ,p_level    => C_LEVEL_PROCEDURE
184101       ,p_module   => l_log_module);
184102 END IF;
184103 --
184104 RETURN l_result;
184105 EXCEPTION
184106 WHEN xla_exceptions_pkg.application_exception THEN
184107    
184108 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
184109 
184110    
184111 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
184112 
184113    RAISE;
184114 
184115 WHEN NO_DATA_FOUND THEN
184116 
184117 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
184118 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
184119 
184120 FOR header_record IN header_cur
184121 LOOP
184122     l_array_header_events(header_record.event_id) := header_record.event_id;
184123 END LOOP;
184124 
184125 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
184126 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
184127 
184128 fnd_file.put_line(fnd_file.LOG, '                    ');
184129 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
184130 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
184131 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
184132 
184133 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
184134 LOOP
184135 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
184136 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
184137         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
184138 	END IF;
184139 END LOOP;
184140 
184141 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
184142 fnd_file.put_line(fnd_file.LOG, '                    ');
184143 
184144 
184145 xla_exceptions_pkg.raise_message
184146       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventClass_300');
184147 
184148 
184149 WHEN OTHERS THEN
184150    xla_exceptions_pkg.raise_message
184151       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventClass_300');
184152 END EventClass_300;
184153 --
184154 
184155 ---------------------------------------
184156 --
184157 -- PRIVATE PROCEDURE
184158 --         insert_sources_301
184159 --
184160 ----------------------------------------
184161 --
184162 PROCEDURE insert_sources_301(
184163                                 p_target_ledger_id       IN NUMBER
184164                               , p_language               IN VARCHAR2
184165                               , p_sla_ledger_id          IN NUMBER
184166                               , p_pad_start_date         IN DATE
184167                               , p_pad_end_date           IN DATE
184168                          )
184169 IS
184170 
184171 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SO_ISSUE';
184172 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SHIPPING';
184173 p_apps_owner                   VARCHAR2(30);
184174 l_log_module                   VARCHAR2(240);
184175 BEGIN
184176 IF g_log_enabled THEN
184177       l_log_module := C_DEFAULT_MODULE||'.insert_sources_301';
184178 END IF;
184179 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184180 
184181       trace
184182          (p_msg      => 'BEGIN of insert_sources_301'
184183          ,p_level    => C_LEVEL_PROCEDURE
184184          ,p_module   => l_log_module);
184185 
184186 END IF;
184187 
184188 -- select APPS owner
184189 SELECT oracle_username
184190   INTO p_apps_owner
184191   FROM fnd_oracle_userid
184192  WHERE read_only_flag = 'U'
184193 ;
184194 
184195 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184196       trace
184197          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
184198                         ' - p_language = '||p_language||
184199                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
184200                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
184201                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
184202                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
184203          ,p_level    => C_LEVEL_STATEMENT
184204          ,p_module   => l_log_module);
184205 END IF;
184206 
184207 
184208 --
184209 INSERT INTO xla_diag_sources --hdr1
184210 (
184211         event_id
184212       , ledger_id
184213       , sla_ledger_id
184214       , description_language
184215       , object_name
184216       , object_type_code
184217       , line_number
184218       , source_application_id
184219       , source_type_code
184220       , source_code
184221       , source_value
184222       , source_meaning
184223       , created_by
184224       , creation_date
184225       , last_update_date
184226       , last_updated_by
184227       , last_update_login
184228       , program_update_date
184229       , program_application_id
184230       , program_id
184231       , request_id
184232 )
184233 SELECT
184234         event_id
184235       , p_target_ledger_id
184236       , p_sla_ledger_id
184237       , p_language
184238       , object_name
184242       , source_type_code
184239       , object_type_code
184240       , line_number
184241       , source_application_id
184243       , source_code
184244       , SUBSTR(source_value ,1,1996)
184245       , SUBSTR(source_meaning,1,200)
184246       , xla_environment_pkg.g_Usr_Id
184247       , TRUNC(SYSDATE)
184248       , TRUNC(SYSDATE)
184249       , xla_environment_pkg.g_Usr_Id
184250       , xla_environment_pkg.g_Login_Id
184251       , TRUNC(SYSDATE)
184252       , xla_environment_pkg.g_Prog_Appl_Id
184253       , xla_environment_pkg.g_Prog_Id
184254       , xla_environment_pkg.g_Req_Id
184255   FROM (
184256        SELECT xet.event_id                  event_id
184257             , 0                             line_number
184258             , CASE r
184259                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
184260                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
184261                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
184262                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
184263                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
184264                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
184265                 
184266                ELSE null
184267               END                           object_name
184268             , CASE r
184269                 WHEN 1 THEN 'HEADER' 
184270                 WHEN 2 THEN 'HEADER' 
184271                 WHEN 3 THEN 'HEADER' 
184272                 WHEN 4 THEN 'HEADER' 
184273                 WHEN 5 THEN 'HEADER' 
184274                 WHEN 6 THEN 'HEADER' 
184275                 
184276                 ELSE null
184277               END                           object_type_code
184278             , CASE r
184279                 WHEN 1 THEN '555' 
184280                 WHEN 2 THEN '555' 
184281                 WHEN 3 THEN '555' 
184282                 WHEN 4 THEN '555' 
184283                 WHEN 5 THEN '555' 
184284                 WHEN 6 THEN '555' 
184285                 
184286                 ELSE null
184287               END                           source_application_id
184288             , 'S'             source_type_code
184289             , CASE r
184290                 WHEN 1 THEN 'ENTITY_CODE' 
184291                 WHEN 2 THEN 'CURRENCY_CODE' 
184292                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
184293                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
184294                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
184295                 WHEN 6 THEN 'TRANSACTION_DATE' 
184296                 
184297                 ELSE null
184298               END                           source_code
184299             , CASE r
184300                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
184301                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
184302                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
184303                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
184304                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
184305                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
184306                 
184307                 ELSE null
184308               END                           source_value
184309             , CASE r
184310                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
184311                           1010186
184312                          ,TO_CHAR(h1.CURRENCY_CODE)
184313                          ,'CURRENCY_CODE'
184314                          ,'S'
184315                          ,555)
184316                 
184317                 ELSE null
184318               END               source_meaning
184319         FROM xla_events_gt     xet  
184320       , GMF_XLA_EXTRACT_HEADERS  h1
184321             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
184322        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
184323          AND xet.event_type_code = C_EVENT_TYPE_CODE
184324             AND h1.event_id = xet.event_id
184325 
184326 )
184327 ;
184328 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184329 
184330       trace
184331          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
184332          ,p_level    => C_LEVEL_STATEMENT
184333          ,p_module   => l_log_module);
184334 
184335 END IF;
184336 --
184337 
184338 
184339 
184340 --
184341 INSERT INTO xla_diag_sources --line1
184342 (
184343         event_id
184344       , ledger_id
184345       , sla_ledger_id
184346       , description_language
184347       , object_name
184348       , object_type_code
184349       , line_number
184350       , source_application_id
184351       , source_type_code
184352       , source_code
184353       , source_value
184354       , source_meaning
184355       , created_by
184356       , creation_date
184357       , last_update_date
184358       , last_updated_by
184359       , last_update_login
184360       , program_update_date
184361       , program_application_id
184362       , program_id
184363       , request_id
184364 )
184365 SELECT  event_id
184366       , p_target_ledger_id
184367       , p_sla_ledger_id
184368       , p_language
184369       , object_name
184370       , object_type_code
184371       , line_number
184372       , source_application_id
184373       , source_type_code
184374       , source_code
184375       , SUBSTR(source_value,1,1996)
184376       , SUBSTR(source_meaning,1,200)
184377       , xla_environment_pkg.g_Usr_Id
184378       , TRUNC(SYSDATE)
184379       , TRUNC(SYSDATE)
184380       , xla_environment_pkg.g_Usr_Id
184381       , xla_environment_pkg.g_Login_Id
184382       , TRUNC(SYSDATE)
184383       , xla_environment_pkg.g_Prog_Appl_Id
184384       , xla_environment_pkg.g_Prog_Id
184385       , xla_environment_pkg.g_Req_Id
184386   FROM (
184387        SELECT xet.event_id                  event_id
184388             , l2.line_number                 line_number
184392                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
184389             , CASE r
184390                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
184391                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
184393                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
184394                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
184395                 
184396                ELSE null
184397               END                           object_name
184398             , CASE r
184399                 WHEN 1 THEN 'LINE' 
184400                 WHEN 2 THEN 'LINE' 
184401                 WHEN 3 THEN 'LINE' 
184402                 WHEN 4 THEN 'LINE' 
184403                 WHEN 5 THEN 'LINE' 
184404                 
184405                 ELSE null
184406               END                           object_type_code
184407             , CASE r
184408                 WHEN 1 THEN '555' 
184409                 WHEN 2 THEN '555' 
184410                 WHEN 3 THEN '555' 
184411                 WHEN 4 THEN '555' 
184412                 WHEN 5 THEN '555' 
184413                 
184414                 ELSE null
184415               END                           source_application_id
184416             , 'S'             source_type_code
184417             , CASE r
184418                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
184419                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
184420                 WHEN 3 THEN 'ENTERED_AMOUNT' 
184421                 WHEN 4 THEN 'LINE_ID' 
184422                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
184423                 
184424                 ELSE null
184425               END                           source_code
184426             , CASE r
184427                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
184428                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
184429                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
184430                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
184431                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
184432                 
184433                 ELSE null
184434               END                           source_value
184435             , null              source_meaning
184436          FROM  xla_events_gt     xet  
184437         , GMF_XLA_EXTRACT_LINES  l2
184438             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
184439         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
184440           AND xet.event_type_code = C_EVENT_TYPE_CODE
184441             AND l2.event_id          = xet.event_id
184442 
184443 )
184444 ;
184445 --
184446 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184447 
184448       trace
184449          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
184450          ,p_level    => C_LEVEL_STATEMENT
184451          ,p_module   => l_log_module);
184452 
184453 END IF;
184454 
184455 
184456 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184457       trace
184458          (p_msg      => 'END of insert_sources_301'
184459          ,p_level    => C_LEVEL_PROCEDURE
184460          ,p_module   => l_log_module);
184461 END IF;
184462 EXCEPTION
184463   WHEN xla_exceptions_pkg.application_exception THEN
184464       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
184465             trace
184466                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
184467                ,p_level    => C_LEVEL_EXCEPTION
184468                ,p_module   => l_log_module);
184469       END IF;
184470       RAISE;
184471   WHEN OTHERS THEN
184472       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
184473             trace
184474                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
184475                ,p_level    => C_LEVEL_EXCEPTION
184476                ,p_module   => l_log_module);
184477        END IF;
184478        xla_exceptions_pkg.raise_message
184479            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_301');
184480 END insert_sources_301;
184481 --
184482 
184483 ---------------------------------------
184484 --
184485 -- PRIVATE FUNCTION
184486 --         EventType_301
184487 --
184488 ----------------------------------------
184489 --
184490 FUNCTION EventType_301
184491        (p_application_id         IN NUMBER
184492        ,p_base_ledger_id         IN NUMBER
184493        ,p_target_ledger_id       IN NUMBER
184494        ,p_language               IN VARCHAR2
184495        ,p_currency_code          IN VARCHAR2
184496        ,p_sla_ledger_id          IN NUMBER
184497        ,p_pad_start_date         IN DATE
184498        ,p_pad_end_date           IN DATE
184499        ,p_primary_ledger_id      IN NUMBER)
184500 RETURN BOOLEAN IS
184501 --
184502 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SO_ISSUE';
184503 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SHIPPING';
184504 
184505 l_calculate_acctd_flag   VARCHAR2(1) :='N';
184506 l_calculate_g_l_flag     VARCHAR2(1) :='N';
184507 --
184508 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184509 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184510 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184511 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184512 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184513 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184514 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184515 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184516 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184517 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184518 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184519 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184520 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184524 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184521 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184522 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184523 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184525 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184526 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184527 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184528 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184529 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184530 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
184531 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184532 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
184533 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
184534 
184535 l_event_id                             NUMBER;
184536 l_previous_event_id                    NUMBER;
184537 l_first_event_id                       NUMBER;
184538 l_last_event_id                        NUMBER;
184539 
184540 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
184541 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
184542 --
184543 --
184544 l_result                    BOOLEAN := TRUE;
184545 l_rows                      NUMBER  := 1000;
184546 l_event_type_name           VARCHAR2(80) := 'Sales Order Issue';
184547 l_event_class_name          VARCHAR2(80) := 'Shipments';
184548 l_description               VARCHAR2(4000);
184549 l_transaction_reversal      NUMBER;
184550 l_ae_header_id              NUMBER;
184551 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
184552 l_log_module                VARCHAR2(240);
184553 --
184554 l_acct_reversal_source      VARCHAR2(30);
184555 l_trx_reversal_source       VARCHAR2(30);
184556 
184557 l_continue_with_lines       BOOLEAN := TRUE;
184558 --
184559 l_acc_rev_gl_date_source    DATE;                      -- 4262811
184560 --
184561 type t_array_event_id is table of number index by binary_integer;
184562 
184563 l_rec_array_event                    t_rec_array_event;
184564 l_null_rec_array_event               t_rec_array_event;
184565 l_array_ae_header_id                 xla_number_array_type;
184566 l_actual_flag                        VARCHAR2(1) := NULL;
184567 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
184568 l_balance_type_code                  VARCHAR2(1) :=NULL;
184569 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
184570 
184571 --
184572 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
184573 --
184574 
184575 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
184576 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
184577 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
184578 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
184579 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
184580 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
184581 
184582 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
184583 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
184584 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
184585 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
184586 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
184587 
184588 l_array_source_6              t_array_source_6;
184589 l_array_source_7              t_array_source_7;
184590 l_array_source_8              t_array_source_8;
184591 l_array_source_9              t_array_source_9;
184592 l_array_source_10              t_array_source_10;
184593 l_array_source_12              t_array_source_12;
184594 
184595 l_array_source_1      t_array_source_1;
184596 l_array_source_2      t_array_source_2;
184597 l_array_source_3      t_array_source_3;
184598 l_array_source_5      t_array_source_5;
184599 l_array_source_11      t_array_source_11;
184600 
184601 --
184602 CURSOR header_cur
184603 IS
184604 SELECT /*+ leading(xet) cardinality(xet,1) */
184605 -- Event Type Code: SO_ISSUE
184606 -- Event Class Code: SHIPPING
184607     xet.entity_id
184608   , xet.legal_entity_id
184609   , xet.entity_code
184610   , xet.transaction_number
184611   , xet.event_id
184612   , xet.event_class_code
184613   , xet.event_type_code
184614   , xet.event_number
184615   , xet.event_date
184616   , xet.transaction_date
184617   , xet.reference_num_1
184618   , xet.reference_num_2
184619   , xet.reference_num_3
184620   , xet.reference_num_4
184621   , xet.reference_char_1
184622   , xet.reference_char_2
184623   , xet.reference_char_3
184624   , xet.reference_char_4
184625   , xet.reference_date_1
184626   , xet.reference_date_2
184627   , xet.reference_date_3
184628   , xet.reference_date_4
184629   , xet.event_created_by
184630   , xet.budgetary_control_flag 
184631   , h1.ENTITY_CODE    source_6
184632   , h1.CURRENCY_CODE    source_7
184633   , h1.CURRENCY_CONVERSION_DATE    source_8
184634   , h1.CURRENCY_CONVERSION_RATE    source_9
184635   , h1.CURRENCY_CONVERSION_TYPE    source_10
184636   , h1.TRANSACTION_DATE    source_12
184637   FROM xla_events_gt     xet 
184638   , GMF_XLA_EXTRACT_HEADERS  h1
184639  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
184640    and xet.event_type_code = C_EVENT_TYPE_CODE
184644 ;
184641    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
184642 
184643  ORDER BY event_id
184645 
184646 
184647 --
184648 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
184649 IS
184650 SELECT /*+ leading(xet) cardinality(xet,1) */
184651 -- Event Type Code: SO_ISSUE
184652 -- Event Class Code: SHIPPING
184653     xet.entity_id
184654    ,xet.legal_entity_id
184655    ,xet.entity_code
184656    ,xet.transaction_number
184657    ,xet.event_id
184658    ,xet.event_class_code
184659    ,xet.event_type_code
184660    ,xet.event_number
184661    ,xet.event_date
184662    ,xet.transaction_date
184663    ,xet.reference_num_1
184664    ,xet.reference_num_2
184665    ,xet.reference_num_3
184666    ,xet.reference_num_4
184667    ,xet.reference_char_1
184668    ,xet.reference_char_2
184669    ,xet.reference_char_3
184670    ,xet.reference_char_4
184671    ,xet.reference_date_1
184672    ,xet.reference_date_2
184673    ,xet.reference_date_3
184674    ,xet.reference_date_4
184675    ,xet.event_created_by
184676    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
184677   , l2.TRANSACTION_ACCOUNT_ID    source_1
184678   , l2.JOURNAL_LINE_TYPE    source_2
184679   , l2.ENTERED_AMOUNT    source_3
184680   , l2.LINE_ID    source_5
184681   , l2.ACCOUNTED_AMOUNT    source_11
184682   FROM xla_events_gt     xet 
184683   , GMF_XLA_EXTRACT_LINES  l2
184684  WHERE xet.event_id between x_first_event_id and x_last_event_id
184685    and xet.event_date between p_pad_start_date and p_pad_end_date
184686    and xet.event_type_code = C_EVENT_TYPE_CODE
184687    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
184688 ;
184689 
184690 --
184691 BEGIN
184692 IF g_log_enabled THEN
184693    l_log_module := C_DEFAULT_MODULE||'.EventType_301';
184694 END IF;
184695 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184696    trace
184697       (p_msg      => 'BEGIN of EventType_301'
184698       ,p_level    => C_LEVEL_PROCEDURE
184699       ,p_module   => l_log_module);
184700 END IF;
184701 
184702 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184703    trace
184704       (p_msg      => 'p_application_id = '||p_application_id||
184705                      ' - p_base_ledger_id = '||p_base_ledger_id||
184706                      ' - p_target_ledger_id  = '||p_target_ledger_id||
184707                      ' - p_language = '||p_language||
184708                      ' - p_currency_code = '||p_currency_code||
184709                      ' - p_sla_ledger_id = '||p_sla_ledger_id
184710       ,p_level    => C_LEVEL_STATEMENT
184711       ,p_module   => l_log_module);
184712 END IF;
184713 --
184714 -- initialze arrays
184715 --
184716 g_array_event.DELETE;
184717 l_rec_array_event := l_null_rec_array_event;
184718 --
184719 --------------------------------------
184720 -- 4262811 Initialze MPA Line Number
184721 --------------------------------------
184722 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
184723 
184724 --
184725 
184726 --
184727 OPEN header_cur;
184728 --
184729 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184730    trace
184731    (p_msg      => 'SQL - FETCH header_cur'
184732    ,p_level    => C_LEVEL_STATEMENT
184733    ,p_module   => l_log_module);
184734 END IF;
184735 --
184736 LOOP
184737 FETCH header_cur BULK COLLECT INTO
184738         l_array_entity_id
184739       , l_array_legal_entity_id
184740       , l_array_entity_code
184741       , l_array_transaction_num
184742       , l_array_event_id
184743       , l_array_class_code
184744       , l_array_event_type
184745       , l_array_event_number
184746       , l_array_event_date
184747       , l_array_transaction_date
184748       , l_array_reference_num_1
184749       , l_array_reference_num_2
184750       , l_array_reference_num_3
184751       , l_array_reference_num_4
184752       , l_array_reference_char_1
184753       , l_array_reference_char_2
184754       , l_array_reference_char_3
184755       , l_array_reference_char_4
184756       , l_array_reference_date_1
184757       , l_array_reference_date_2
184758       , l_array_reference_date_3
184759       , l_array_reference_date_4
184760       , l_array_event_created_by
184761       , l_array_budgetary_control_flag 
184762       , l_array_source_6
184763       , l_array_source_7
184764       , l_array_source_8
184765       , l_array_source_9
184766       , l_array_source_10
184767       , l_array_source_12
184768       LIMIT l_rows;
184769 --
184770 IF (C_LEVEL_EVENT >= g_log_level) THEN
184771    trace
184772    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
184773    ,p_level    => C_LEVEL_EVENT
184774    ,p_module   => l_log_module);
184775 END IF;
184776 --
184777 EXIT WHEN l_array_entity_id.COUNT = 0;
184778 
184779 -- initialize arrays
184780 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
184781 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
184782 
184783 --
184784 -- Bug 4458708
184785 --
184786 XLA_AE_LINES_PKG.g_LineNumber := 0;
184787 
184788 
184789 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
184790 g_last_hdr_idx := l_array_event_id.LAST;
184791 --
184792 -- loop for the headers. Each iteration is for each header extract row
184793 -- fetched in header cursor
184794 --
184795 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
184796 
184797 --
184798 -- set event info as cache for other routines to refer event attributes
184799 --
184800 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
184801    (p_application_id           => p_application_id
184802    ,p_primary_ledger_id        => p_primary_ledger_id
184803    ,p_base_ledger_id           => p_base_ledger_id
184804    ,p_target_ledger_id         => p_target_ledger_id
184808    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
184805    ,p_entity_id                => l_array_entity_id(hdr_idx)
184806    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
184807    ,p_entity_code              => l_array_entity_code(hdr_idx)
184809    ,p_event_id                 => l_array_event_id(hdr_idx)
184810    ,p_event_class_code         => l_array_class_code(hdr_idx)
184811    ,p_event_type_code          => l_array_event_type(hdr_idx)
184812    ,p_event_number             => l_array_event_number(hdr_idx)
184813    ,p_event_date               => l_array_event_date(hdr_idx)
184814    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
184815    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
184816    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
184817    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
184818    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
184819    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
184820    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
184821    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
184822    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
184823    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
184824    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
184825    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
184826    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
184827    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
184828    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
184829 
184830 --
184831 -- set the status of entry to C_VALID (0)
184832 --
184833 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
184834 
184835 --
184836 -- initialize a row for ae header
184837 --
184838 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
184839 
184840 l_event_id := l_array_event_id(hdr_idx);
184841 
184842 --
184843 -- storing the hdr_idx for event. May be used by line cursor.
184844 --
184845 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
184846 
184847 --
184848 -- store sources from header extract. This can be improved to
184849 -- store only those sources from header extract that may be used in lines
184850 --
184851 
184852 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
184853 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
184854 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
184855 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
184856 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
184857 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
184858 
184859 --
184860 -- initilaize the status of ae headers for diffrent balance types
184861 -- the status is initialised to C_NOT_CREATED (2)
184862 --
184863 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
184864 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
184865 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
184866 
184867 --
184868 -- call api to validate and store accounting attributes for header
184869 --
184870 
184871 ------------------------------------------------------------
184872 -- Accrual Reversal : to get date for Standard Source (NONE)
184873 ------------------------------------------------------------
184874 l_acc_rev_gl_date_source := NULL;
184875 
184876      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
184877       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
184878 
184879 
184880 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
184881 
184882 XLA_AE_HEADER_PKG.SetJeCategoryName;
184883 
184884 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
184885 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
184886 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
184887 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
184888 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
184889 
184890 
184891 -- No header level analytical criteria
184892 
184893 --
184894 --accounting attribute enhancement, bug 3612931
184895 --
184896 l_trx_reversal_source := SUBSTR(NULL, 1,30);
184897 
184898 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
184899    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
184900 
184901    xla_accounting_err_pkg.build_message
184902       (p_appli_s_name            => 'XLA'
184903       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
184904       ,p_token_1                 => 'ACCT_ATTR_NAME'
184905       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
184906       ,p_token_2                 => 'PRODUCT_NAME'
184907       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
184908       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
184909       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
184910       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
184911 
184912 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
184913    --
184914    -- following sets the accounting attributes needed to reverse
184915    -- accounting for a distributeion
184916    --
184917    xla_ae_lines_pkg.SetTrxReversalAttrs
184918       (p_event_id              => l_event_id
184922 END IF;
184919       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
184920       ,p_trx_reversal_source   => l_trx_reversal_source);
184921 
184923 
184924 
184925 ----------------------------------------------------------------
184926 -- 4262811 -  update the header statuses to invalid in need be
184927 ----------------------------------------------------------------
184928 --
184929 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
184930 
184931 
184932   -----------------------------------------------
184933   -- No accrual reversal for the event class/type
184934   -----------------------------------------------
184935 ----------------------------------------------------------------
184936 
184937 --
184938 -- this ends the header loop iteration for one bulk fetch
184939 --
184940 END LOOP;
184941 
184942 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
184943 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
184944 
184945 --
184946 -- insert dummy rows into lines gt table that were created due to
184947 -- transaction reversals
184948 --
184949 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
184950    l_result := XLA_AE_LINES_PKG.InsertLines;
184951 END IF;
184952 
184953 --
184954 -- reset the temp_line_num for each set of events fetched from header
184955 -- cursor rather than doing it for each new event in line cursor
184956 -- Bug 3939231
184957 --
184958 xla_ae_lines_pkg.g_temp_line_num := 0;
184959 
184960 
184961 
184962 --
184963 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
184964 --
184965 --
184966 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184967 
184968       trace
184969          (p_msg      => 'SQL - FETCH line_cur'
184970          ,p_level    => C_LEVEL_STATEMENT
184971          ,p_module   => l_log_module);
184972 
184973 END IF;
184974 --
184975 --
184976 LOOP
184977   --
184978   FETCH line_cur BULK COLLECT INTO
184979         l_array_entity_id
184980       , l_array_legal_entity_id
184981       , l_array_entity_code
184982       , l_array_transaction_num
184983       , l_array_event_id
184984       , l_array_class_code
184985       , l_array_event_type
184986       , l_array_event_number
184987       , l_array_event_date
184988       , l_array_transaction_date
184989       , l_array_reference_num_1
184990       , l_array_reference_num_2
184991       , l_array_reference_num_3
184992       , l_array_reference_num_4
184993       , l_array_reference_char_1
184994       , l_array_reference_char_2
184995       , l_array_reference_char_3
184996       , l_array_reference_char_4
184997       , l_array_reference_date_1
184998       , l_array_reference_date_2
184999       , l_array_reference_date_3
185000       , l_array_reference_date_4
185001       , l_array_event_created_by
185002       , l_array_budgetary_control_flag
185003       , l_array_extract_line_num 
185004       , l_array_source_1
185005       , l_array_source_2
185006       , l_array_source_3
185007       , l_array_source_5
185008       , l_array_source_11
185009       LIMIT l_rows;
185010 
185011   --
185012   IF (C_LEVEL_EVENT >= g_log_level) THEN
185013             trace
185014                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
185015                ,p_level    => C_LEVEL_EVENT
185016                ,p_module   => l_log_module);
185017   END IF;
185018   --
185019   EXIT WHEN l_array_entity_id.count = 0;
185020 
185021   XLA_AE_LINES_PKG.g_rec_lines := null;
185022 
185023 --
185024 -- Bug 4458708
185025 --
185026 XLA_AE_LINES_PKG.g_LineNumber := 0;
185027 --
185028 --
185029 
185030 FOR Idx IN 1..l_array_event_id.count LOOP
185031    --
185032    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
185033    --
185034    l_event_id := l_array_event_id(idx);  -- 5648433
185035 
185036    --
185037    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
185038    --
185039 
185040    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
185041              (g_array_event(l_event_id).array_value_num('header_index'))
185042          ,'N'
185043          ) <> 'Y'
185044    THEN
185045       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185046          trace
185047             (p_msg      => 'Trancaction revesal option is not Y '
185048             ,p_level    => C_LEVEL_STATEMENT
185049             ,p_module   => l_log_module);
185050       END IF;
185051 
185052 --
185053 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
185054 --
185055 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
185056 --
185057 -- set event info as cache for other routines to refer event attributes
185058 --
185059 
185060 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
185061    l_previous_event_id := l_event_id;
185062 
185063    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
185064       (p_application_id           => p_application_id
185065       ,p_primary_ledger_id        => p_primary_ledger_id
185066       ,p_base_ledger_id           => p_base_ledger_id
185067       ,p_target_ledger_id         => p_target_ledger_id
185068       ,p_entity_id                => l_array_entity_id(Idx)
185069       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
185070       ,p_entity_code              => l_array_entity_code(Idx)
185071       ,p_transaction_num          => l_array_transaction_num(Idx)
185072       ,p_event_id                 => l_array_event_id(Idx)
185073       ,p_event_class_code         => l_array_class_code(Idx)
185074       ,p_event_type_code          => l_array_event_type(Idx)
185075       ,p_event_number             => l_array_event_number(Idx)
185079       ,p_reference_num_2          => l_array_reference_num_2(Idx)
185076       ,p_event_date               => l_array_event_date(Idx)
185077       ,p_transaction_date         => l_array_transaction_date(Idx)
185078       ,p_reference_num_1          => l_array_reference_num_1(Idx)
185080       ,p_reference_num_3          => l_array_reference_num_3(Idx)
185081       ,p_reference_num_4          => l_array_reference_num_4(Idx)
185082       ,p_reference_char_1         => l_array_reference_char_1(Idx)
185083       ,p_reference_char_2         => l_array_reference_char_2(Idx)
185084       ,p_reference_char_3         => l_array_reference_char_3(Idx)
185085       ,p_reference_char_4         => l_array_reference_char_4(Idx)
185086       ,p_reference_date_1         => l_array_reference_date_1(Idx)
185087       ,p_reference_date_2         => l_array_reference_date_2(Idx)
185088       ,p_reference_date_3         => l_array_reference_date_3(Idx)
185089       ,p_reference_date_4         => l_array_reference_date_4(Idx)
185090       ,p_event_created_by         => l_array_event_created_by(Idx)
185091       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
185092        --
185093 END IF;
185094 
185095 
185096 
185097 --
185098 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
185099 
185100 l_acct_reversal_source := SUBSTR(NULL, 1,30);
185101 
185102 IF l_continue_with_lines THEN
185103    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
185104       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
185105 
185106       xla_accounting_err_pkg.build_message
185107          (p_appli_s_name            => 'XLA'
185108          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
185109          ,p_token_1                 => 'LINE_NUMBER'
185110          ,p_value_1                 => l_array_extract_line_num(Idx)
185111          ,p_token_2                 => 'PRODUCT_NAME'
185112          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
185113          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
185114          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
185115          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
185116 
185117    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
185118       --
185119       -- following sets the accounting attributes needed to reverse
185120       -- accounting for a distributeion
185121       --
185122 
185123       --
185124       -- 5217187
185125       --
185126       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
185127       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
185128                                        g_array_event(l_event_id).array_value_num('header_index'));
185129       --
185130       --
185131 
185132       -- No reversal code generated
185133 
185134       xla_ae_lines_pkg.SetAcctReversalAttrs
185135          (p_event_id             => l_event_id
185136          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
185137          ,p_calculate_acctd_flag => l_calculate_acctd_flag
185138          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
185139    END IF;
185140 
185141    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
185142        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
185143 
185144 --
185145 AcctLineType_81 (
185146  p_application_id  => p_application_id
185147  ,p_event_id     => l_event_id
185148  ,p_calculate_acctd_flag => l_calculate_acctd_flag
185149  ,p_calculate_g_l_flag => l_calculate_g_l_flag
185150  ,p_actual_flag => l_actual_flag
185151  ,p_balance_type_code => l_balance_type_code
185152  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185153  
185154  , p_source_1 => l_array_source_1(Idx)
185155  , p_source_2 => l_array_source_2(Idx)
185156  , p_source_3 => l_array_source_3(Idx)
185157  , p_source_5 => l_array_source_5(Idx)
185158  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
185159  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
185160  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
185161  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
185162  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
185163  , p_source_11 => l_array_source_11(Idx)
185164  );
185165 If(l_balance_type_code = 'A') THEN
185166   l_actual_gain_loss_ref := l_gain_or_loss_ref;
185167 END IF;
185168 
185169 --
185170 
185171 
185172 --
185173 AcctLineType_153 (
185174  p_application_id  => p_application_id
185175  ,p_event_id     => l_event_id
185176  ,p_calculate_acctd_flag => l_calculate_acctd_flag
185177  ,p_calculate_g_l_flag => l_calculate_g_l_flag
185178  ,p_actual_flag => l_actual_flag
185179  ,p_balance_type_code => l_balance_type_code
185180  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185181  
185182  , p_source_1 => l_array_source_1(Idx)
185183  , p_source_2 => l_array_source_2(Idx)
185184  , p_source_3 => l_array_source_3(Idx)
185185  , p_source_5 => l_array_source_5(Idx)
185186  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
185187  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
185188  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
185189  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
185190  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
185191  , p_source_11 => l_array_source_11(Idx)
185192  );
185193 If(l_balance_type_code = 'A') THEN
185194   l_actual_gain_loss_ref := l_gain_or_loss_ref;
185195 END IF;
185196 
185197 --
185198 
185199       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
185200       -- or secondary ledger that has different currency with primary
185201       -- or alc that is calculated by sla
185205 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
185202       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
185203             (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'))
185204 
185206 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
185207           AND (l_actual_flag = 'A')) THEN
185208         XLA_AE_LINES_PKG.CreateGainOrLossLines(
185209           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
185210          ,p_application_id   => p_application_id
185211          ,p_amb_context_code => 'DEFAULT'
185212          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
185213          ,p_event_class_code => C_EVENT_CLASS_CODE
185214          ,p_event_type_code  => C_EVENT_TYPE_CODE
185215          
185216          ,p_gain_ccid        => -1
185217          ,p_loss_ccid        => -1
185218 
185219          ,p_actual_flag      => l_actual_flag
185220          ,p_enc_flag         => null
185221          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
185222          ,p_enc_g_l_ref      => null
185223          );
185224       END IF;
185225    END IF;
185226 END IF;
185227 
185228    ELSE
185229       --
185230       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
185231       --
185232       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185233          trace
185234             (p_msg      => 'Trancaction revesal option is Y'
185235             ,p_level    => C_LEVEL_STATEMENT
185236             ,p_module   => l_log_module);
185237       END IF;
185238    END IF;
185239 
185240 END LOOP;
185241 l_result := XLA_AE_LINES_PKG.InsertLines ;
185242 end loop;
185243 close line_cur;
185244 
185245 
185246 --
185247 -- insert headers into xla_ae_headers_gt table
185248 --
185249 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
185250 
185251 -- insert into errors table here.
185252 
185253 END LOOP;
185254 
185255 --
185256 -- 4865292
185257 --
185258 -- Compare g_hdr_extract_count with event count in
185259 -- CreateHeadersAndLines.
185260 --
185261 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
185262 
185263 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185264    trace (p_msg     => '# rows extracted from header extract objects '
185265                     || ' (running total): '
185266                     || g_hdr_extract_count
185267          ,p_level   => C_LEVEL_STATEMENT
185268          ,p_module  => l_log_module);
185269 END IF;
185270 
185271 CLOSE header_cur;
185272 --
185273 
185274 --
185275 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185276    trace
185277       (p_msg      => 'END of EventType_301'
185278       ,p_level    => C_LEVEL_PROCEDURE
185279       ,p_module   => l_log_module);
185280 END IF;
185281 --
185282 RETURN l_result;
185283 EXCEPTION
185284 WHEN xla_exceptions_pkg.application_exception THEN
185285    
185286 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
185287 
185288    
185289 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
185290 
185291    RAISE;
185292 
185293 WHEN NO_DATA_FOUND THEN
185294 
185295 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
185296 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
185297 
185298 FOR header_record IN header_cur
185299 LOOP
185300     l_array_header_events(header_record.event_id) := header_record.event_id;
185301 END LOOP;
185302 
185303 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
185304 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
185305 
185306 fnd_file.put_line(fnd_file.LOG, '                    ');
185307 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
185308 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
185309 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
185310 
185311 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
185312 LOOP
185313 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
185314 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
185315         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
185316 	END IF;
185317 END LOOP;
185318 
185319 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
185320 fnd_file.put_line(fnd_file.LOG, '                    ');
185321 
185322 
185323 xla_exceptions_pkg.raise_message
185324       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_301');
185325 
185326 
185327 WHEN OTHERS THEN
185328    xla_exceptions_pkg.raise_message
185329       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_301');
185330 END EventType_301;
185331 --
185332 
185333 ---------------------------------------
185334 --
185335 -- PRIVATE PROCEDURE
185336 --         insert_sources_302
185337 --
185338 ----------------------------------------
185339 --
185340 PROCEDURE insert_sources_302(
185341                                 p_target_ledger_id       IN NUMBER
185342                               , p_language               IN VARCHAR2
185343                               , p_sla_ledger_id          IN NUMBER
185344                               , p_pad_start_date         IN DATE
185345                               , p_pad_end_date           IN DATE
185346                          )
185347 IS
185348 
185349 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'STEP';
185350 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BATCH_RESOURCE';
185354 IF g_log_enabled THEN
185351 p_apps_owner                   VARCHAR2(30);
185352 l_log_module                   VARCHAR2(240);
185353 BEGIN
185355       l_log_module := C_DEFAULT_MODULE||'.insert_sources_302';
185356 END IF;
185357 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185358 
185359       trace
185360          (p_msg      => 'BEGIN of insert_sources_302'
185361          ,p_level    => C_LEVEL_PROCEDURE
185362          ,p_module   => l_log_module);
185363 
185364 END IF;
185365 
185366 -- select APPS owner
185367 SELECT oracle_username
185368   INTO p_apps_owner
185369   FROM fnd_oracle_userid
185370  WHERE read_only_flag = 'U'
185371 ;
185372 
185373 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185374       trace
185375          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
185376                         ' - p_language = '||p_language||
185377                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
185378                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
185379                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
185380                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
185381          ,p_level    => C_LEVEL_STATEMENT
185382          ,p_module   => l_log_module);
185383 END IF;
185384 
185385 
185386 --
185387 INSERT INTO xla_diag_sources --hdr1
185388 (
185389         event_id
185390       , ledger_id
185391       , sla_ledger_id
185392       , description_language
185393       , object_name
185394       , object_type_code
185395       , line_number
185396       , source_application_id
185397       , source_type_code
185398       , source_code
185399       , source_value
185400       , source_meaning
185401       , created_by
185402       , creation_date
185403       , last_update_date
185404       , last_updated_by
185405       , last_update_login
185406       , program_update_date
185407       , program_application_id
185408       , program_id
185409       , request_id
185410 )
185411 SELECT
185412         event_id
185413       , p_target_ledger_id
185414       , p_sla_ledger_id
185415       , p_language
185416       , object_name
185417       , object_type_code
185418       , line_number
185419       , source_application_id
185420       , source_type_code
185421       , source_code
185422       , SUBSTR(source_value ,1,1996)
185423       , SUBSTR(source_meaning,1,200)
185424       , xla_environment_pkg.g_Usr_Id
185425       , TRUNC(SYSDATE)
185426       , TRUNC(SYSDATE)
185427       , xla_environment_pkg.g_Usr_Id
185428       , xla_environment_pkg.g_Login_Id
185429       , TRUNC(SYSDATE)
185430       , xla_environment_pkg.g_Prog_Appl_Id
185431       , xla_environment_pkg.g_Prog_Id
185432       , xla_environment_pkg.g_Req_Id
185433   FROM (
185434        SELECT xet.event_id                  event_id
185435             , 0                             line_number
185436             , CASE r
185437                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
185438                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
185439                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
185440                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
185441                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
185442                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
185443                 
185444                ELSE null
185445               END                           object_name
185446             , CASE r
185447                 WHEN 1 THEN 'HEADER' 
185448                 WHEN 2 THEN 'HEADER' 
185449                 WHEN 3 THEN 'HEADER' 
185450                 WHEN 4 THEN 'HEADER' 
185451                 WHEN 5 THEN 'HEADER' 
185452                 WHEN 6 THEN 'HEADER' 
185453                 
185454                 ELSE null
185455               END                           object_type_code
185456             , CASE r
185457                 WHEN 1 THEN '555' 
185458                 WHEN 2 THEN '555' 
185459                 WHEN 3 THEN '555' 
185460                 WHEN 4 THEN '555' 
185461                 WHEN 5 THEN '555' 
185462                 WHEN 6 THEN '555' 
185463                 
185464                 ELSE null
185465               END                           source_application_id
185466             , 'S'             source_type_code
185467             , CASE r
185468                 WHEN 1 THEN 'ENTITY_CODE' 
185469                 WHEN 2 THEN 'CURRENCY_CODE' 
185470                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
185471                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
185472                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
185473                 WHEN 6 THEN 'TRANSACTION_DATE' 
185474                 
185475                 ELSE null
185476               END                           source_code
185477             , CASE r
185478                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
185479                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
185480                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
185481                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
185482                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
185483                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
185484                 
185485                 ELSE null
185486               END                           source_value
185487             , CASE r
185488                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
185489                           1010186
185490                          ,TO_CHAR(h1.CURRENCY_CODE)
185491                          ,'CURRENCY_CODE'
185492                          ,'S'
185493                          ,555)
185494                 
185495                 ELSE null
185496               END               source_meaning
185497         FROM xla_events_gt     xet  
185498       , GMF_XLA_EXTRACT_HEADERS  h1
185502             AND h1.event_id = xet.event_id
185499             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
185500        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
185501          AND xet.event_type_code = C_EVENT_TYPE_CODE
185503 
185504 )
185505 ;
185506 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185507 
185508       trace
185509          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
185510          ,p_level    => C_LEVEL_STATEMENT
185511          ,p_module   => l_log_module);
185512 
185513 END IF;
185514 --
185515 
185516 
185517 
185518 --
185519 INSERT INTO xla_diag_sources --line1
185520 (
185521         event_id
185522       , ledger_id
185523       , sla_ledger_id
185524       , description_language
185525       , object_name
185526       , object_type_code
185527       , line_number
185528       , source_application_id
185529       , source_type_code
185530       , source_code
185531       , source_value
185532       , source_meaning
185533       , created_by
185534       , creation_date
185535       , last_update_date
185536       , last_updated_by
185537       , last_update_login
185538       , program_update_date
185539       , program_application_id
185540       , program_id
185541       , request_id
185542 )
185543 SELECT  event_id
185544       , p_target_ledger_id
185545       , p_sla_ledger_id
185546       , p_language
185547       , object_name
185548       , object_type_code
185549       , line_number
185550       , source_application_id
185551       , source_type_code
185552       , source_code
185553       , SUBSTR(source_value,1,1996)
185554       , SUBSTR(source_meaning,1,200)
185555       , xla_environment_pkg.g_Usr_Id
185556       , TRUNC(SYSDATE)
185557       , TRUNC(SYSDATE)
185558       , xla_environment_pkg.g_Usr_Id
185559       , xla_environment_pkg.g_Login_Id
185560       , TRUNC(SYSDATE)
185561       , xla_environment_pkg.g_Prog_Appl_Id
185562       , xla_environment_pkg.g_Prog_Id
185563       , xla_environment_pkg.g_Req_Id
185564   FROM (
185565        SELECT xet.event_id                  event_id
185566             , l2.line_number                 line_number
185567             , CASE r
185568                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
185569                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
185570                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
185571                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
185572                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
185573                 
185574                ELSE null
185575               END                           object_name
185576             , CASE r
185577                 WHEN 1 THEN 'LINE' 
185578                 WHEN 2 THEN 'LINE' 
185579                 WHEN 3 THEN 'LINE' 
185580                 WHEN 4 THEN 'LINE' 
185581                 WHEN 5 THEN 'LINE' 
185582                 
185583                 ELSE null
185584               END                           object_type_code
185585             , CASE r
185586                 WHEN 1 THEN '555' 
185587                 WHEN 2 THEN '555' 
185588                 WHEN 3 THEN '555' 
185589                 WHEN 4 THEN '555' 
185590                 WHEN 5 THEN '555' 
185591                 
185592                 ELSE null
185593               END                           source_application_id
185594             , 'S'             source_type_code
185595             , CASE r
185596                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
185597                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
185598                 WHEN 3 THEN 'ENTERED_AMOUNT' 
185599                 WHEN 4 THEN 'LINE_ID' 
185600                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
185601                 
185602                 ELSE null
185603               END                           source_code
185604             , CASE r
185605                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
185606                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
185607                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
185608                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
185609                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
185610                 
185611                 ELSE null
185612               END                           source_value
185613             , null              source_meaning
185614          FROM  xla_events_gt     xet  
185615         , GMF_XLA_EXTRACT_LINES  l2
185616             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
185617         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
185618           AND xet.event_type_code = C_EVENT_TYPE_CODE
185619             AND l2.event_id          = xet.event_id
185620 
185621 )
185622 ;
185623 --
185624 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185625 
185626       trace
185627          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
185628          ,p_level    => C_LEVEL_STATEMENT
185629          ,p_module   => l_log_module);
185630 
185631 END IF;
185632 
185633 
185634 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185635       trace
185636          (p_msg      => 'END of insert_sources_302'
185637          ,p_level    => C_LEVEL_PROCEDURE
185638          ,p_module   => l_log_module);
185639 END IF;
185640 EXCEPTION
185641   WHEN xla_exceptions_pkg.application_exception THEN
185642       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
185643             trace
185644                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
185645                ,p_level    => C_LEVEL_EXCEPTION
185646                ,p_module   => l_log_module);
185647       END IF;
185648       RAISE;
185649   WHEN OTHERS THEN
185650       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
185651             trace
185655        END IF;
185652                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
185653                ,p_level    => C_LEVEL_EXCEPTION
185654                ,p_module   => l_log_module);
185656        xla_exceptions_pkg.raise_message
185657            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_302');
185658 END insert_sources_302;
185659 --
185660 
185661 ---------------------------------------
185662 --
185663 -- PRIVATE FUNCTION
185664 --         EventType_302
185665 --
185666 ----------------------------------------
185667 --
185668 FUNCTION EventType_302
185669        (p_application_id         IN NUMBER
185670        ,p_base_ledger_id         IN NUMBER
185671        ,p_target_ledger_id       IN NUMBER
185672        ,p_language               IN VARCHAR2
185673        ,p_currency_code          IN VARCHAR2
185674        ,p_sla_ledger_id          IN NUMBER
185675        ,p_pad_start_date         IN DATE
185676        ,p_pad_end_date           IN DATE
185677        ,p_primary_ledger_id      IN NUMBER)
185678 RETURN BOOLEAN IS
185679 --
185680 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'STEP';
185681 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BATCH_RESOURCE';
185682 
185683 l_calculate_acctd_flag   VARCHAR2(1) :='N';
185684 l_calculate_g_l_flag     VARCHAR2(1) :='N';
185685 --
185686 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185687 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185688 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185689 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185690 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185691 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185692 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185693 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185694 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185695 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185696 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185697 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185698 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185699 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185700 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185701 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185702 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185703 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185704 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185705 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185706 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185707 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185708 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
185709 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185710 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
185711 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
185712 
185713 l_event_id                             NUMBER;
185714 l_previous_event_id                    NUMBER;
185715 l_first_event_id                       NUMBER;
185716 l_last_event_id                        NUMBER;
185717 
185718 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
185719 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
185720 --
185721 --
185722 l_result                    BOOLEAN := TRUE;
185723 l_rows                      NUMBER  := 1000;
185724 l_event_type_name           VARCHAR2(80) := 'Step Completion';
185725 l_event_class_name          VARCHAR2(80) := 'Batch Resource Transactions';
185726 l_description               VARCHAR2(4000);
185727 l_transaction_reversal      NUMBER;
185728 l_ae_header_id              NUMBER;
185729 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
185730 l_log_module                VARCHAR2(240);
185731 --
185732 l_acct_reversal_source      VARCHAR2(30);
185733 l_trx_reversal_source       VARCHAR2(30);
185734 
185735 l_continue_with_lines       BOOLEAN := TRUE;
185736 --
185737 l_acc_rev_gl_date_source    DATE;                      -- 4262811
185738 --
185739 type t_array_event_id is table of number index by binary_integer;
185740 
185741 l_rec_array_event                    t_rec_array_event;
185742 l_null_rec_array_event               t_rec_array_event;
185743 l_array_ae_header_id                 xla_number_array_type;
185744 l_actual_flag                        VARCHAR2(1) := NULL;
185745 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
185746 l_balance_type_code                  VARCHAR2(1) :=NULL;
185747 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
185748 
185749 --
185750 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
185751 --
185752 
185753 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
185754 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
185755 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
185756 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
185757 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
185758 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
185759 
185760 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
185764 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
185761 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
185762 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
185763 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
185765 
185766 l_array_source_6              t_array_source_6;
185767 l_array_source_7              t_array_source_7;
185768 l_array_source_8              t_array_source_8;
185769 l_array_source_9              t_array_source_9;
185770 l_array_source_10              t_array_source_10;
185771 l_array_source_12              t_array_source_12;
185772 
185773 l_array_source_1      t_array_source_1;
185774 l_array_source_2      t_array_source_2;
185775 l_array_source_3      t_array_source_3;
185776 l_array_source_5      t_array_source_5;
185777 l_array_source_11      t_array_source_11;
185778 
185779 --
185780 CURSOR header_cur
185781 IS
185782 SELECT /*+ leading(xet) cardinality(xet,1) */
185783 -- Event Type Code: STEP
185784 -- Event Class Code: BATCH_RESOURCE
185785     xet.entity_id
185786   , xet.legal_entity_id
185787   , xet.entity_code
185788   , xet.transaction_number
185789   , xet.event_id
185790   , xet.event_class_code
185791   , xet.event_type_code
185792   , xet.event_number
185793   , xet.event_date
185794   , xet.transaction_date
185795   , xet.reference_num_1
185796   , xet.reference_num_2
185797   , xet.reference_num_3
185798   , xet.reference_num_4
185799   , xet.reference_char_1
185800   , xet.reference_char_2
185801   , xet.reference_char_3
185802   , xet.reference_char_4
185803   , xet.reference_date_1
185804   , xet.reference_date_2
185805   , xet.reference_date_3
185806   , xet.reference_date_4
185807   , xet.event_created_by
185808   , xet.budgetary_control_flag 
185809   , h1.ENTITY_CODE    source_6
185810   , h1.CURRENCY_CODE    source_7
185811   , h1.CURRENCY_CONVERSION_DATE    source_8
185812   , h1.CURRENCY_CONVERSION_RATE    source_9
185813   , h1.CURRENCY_CONVERSION_TYPE    source_10
185814   , h1.TRANSACTION_DATE    source_12
185815   FROM xla_events_gt     xet 
185816   , GMF_XLA_EXTRACT_HEADERS  h1
185817  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
185818    and xet.event_type_code = C_EVENT_TYPE_CODE
185819    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
185820 
185821  ORDER BY event_id
185822 ;
185823 
185824 
185825 --
185826 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
185827 IS
185828 SELECT /*+ leading(xet) cardinality(xet,1) */
185829 -- Event Type Code: STEP
185830 -- Event Class Code: BATCH_RESOURCE
185831     xet.entity_id
185832    ,xet.legal_entity_id
185833    ,xet.entity_code
185834    ,xet.transaction_number
185835    ,xet.event_id
185836    ,xet.event_class_code
185837    ,xet.event_type_code
185838    ,xet.event_number
185839    ,xet.event_date
185840    ,xet.transaction_date
185841    ,xet.reference_num_1
185842    ,xet.reference_num_2
185843    ,xet.reference_num_3
185844    ,xet.reference_num_4
185845    ,xet.reference_char_1
185846    ,xet.reference_char_2
185847    ,xet.reference_char_3
185848    ,xet.reference_char_4
185849    ,xet.reference_date_1
185850    ,xet.reference_date_2
185851    ,xet.reference_date_3
185852    ,xet.reference_date_4
185853    ,xet.event_created_by
185854    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
185855   , l2.TRANSACTION_ACCOUNT_ID    source_1
185856   , l2.JOURNAL_LINE_TYPE    source_2
185857   , l2.ENTERED_AMOUNT    source_3
185858   , l2.LINE_ID    source_5
185859   , l2.ACCOUNTED_AMOUNT    source_11
185860   FROM xla_events_gt     xet 
185861   , GMF_XLA_EXTRACT_LINES  l2
185862  WHERE xet.event_id between x_first_event_id and x_last_event_id
185863    and xet.event_date between p_pad_start_date and p_pad_end_date
185864    and xet.event_type_code = C_EVENT_TYPE_CODE
185865    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
185866 ;
185867 
185868 --
185869 BEGIN
185870 IF g_log_enabled THEN
185871    l_log_module := C_DEFAULT_MODULE||'.EventType_302';
185872 END IF;
185873 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185874    trace
185875       (p_msg      => 'BEGIN of EventType_302'
185876       ,p_level    => C_LEVEL_PROCEDURE
185877       ,p_module   => l_log_module);
185878 END IF;
185879 
185880 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185881    trace
185882       (p_msg      => 'p_application_id = '||p_application_id||
185883                      ' - p_base_ledger_id = '||p_base_ledger_id||
185884                      ' - p_target_ledger_id  = '||p_target_ledger_id||
185885                      ' - p_language = '||p_language||
185886                      ' - p_currency_code = '||p_currency_code||
185887                      ' - p_sla_ledger_id = '||p_sla_ledger_id
185888       ,p_level    => C_LEVEL_STATEMENT
185889       ,p_module   => l_log_module);
185890 END IF;
185891 --
185892 -- initialze arrays
185893 --
185894 g_array_event.DELETE;
185895 l_rec_array_event := l_null_rec_array_event;
185896 --
185897 --------------------------------------
185898 -- 4262811 Initialze MPA Line Number
185899 --------------------------------------
185900 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
185901 
185902 --
185903 
185904 --
185905 OPEN header_cur;
185906 --
185907 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185908    trace
185909    (p_msg      => 'SQL - FETCH header_cur'
185910    ,p_level    => C_LEVEL_STATEMENT
185911    ,p_module   => l_log_module);
185912 END IF;
185913 --
185914 LOOP
185915 FETCH header_cur BULK COLLECT INTO
185916         l_array_entity_id
185917       , l_array_legal_entity_id
185918       , l_array_entity_code
185922       , l_array_event_type
185919       , l_array_transaction_num
185920       , l_array_event_id
185921       , l_array_class_code
185923       , l_array_event_number
185924       , l_array_event_date
185925       , l_array_transaction_date
185926       , l_array_reference_num_1
185927       , l_array_reference_num_2
185928       , l_array_reference_num_3
185929       , l_array_reference_num_4
185930       , l_array_reference_char_1
185931       , l_array_reference_char_2
185932       , l_array_reference_char_3
185933       , l_array_reference_char_4
185934       , l_array_reference_date_1
185935       , l_array_reference_date_2
185936       , l_array_reference_date_3
185937       , l_array_reference_date_4
185938       , l_array_event_created_by
185939       , l_array_budgetary_control_flag 
185940       , l_array_source_6
185941       , l_array_source_7
185942       , l_array_source_8
185943       , l_array_source_9
185944       , l_array_source_10
185945       , l_array_source_12
185946       LIMIT l_rows;
185947 --
185948 IF (C_LEVEL_EVENT >= g_log_level) THEN
185949    trace
185950    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
185951    ,p_level    => C_LEVEL_EVENT
185952    ,p_module   => l_log_module);
185953 END IF;
185954 --
185955 EXIT WHEN l_array_entity_id.COUNT = 0;
185956 
185957 -- initialize arrays
185958 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
185959 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
185960 
185961 --
185962 -- Bug 4458708
185963 --
185964 XLA_AE_LINES_PKG.g_LineNumber := 0;
185965 
185966 
185967 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
185968 g_last_hdr_idx := l_array_event_id.LAST;
185969 --
185970 -- loop for the headers. Each iteration is for each header extract row
185971 -- fetched in header cursor
185972 --
185973 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
185974 
185975 --
185976 -- set event info as cache for other routines to refer event attributes
185977 --
185978 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
185979    (p_application_id           => p_application_id
185980    ,p_primary_ledger_id        => p_primary_ledger_id
185981    ,p_base_ledger_id           => p_base_ledger_id
185982    ,p_target_ledger_id         => p_target_ledger_id
185983    ,p_entity_id                => l_array_entity_id(hdr_idx)
185984    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
185985    ,p_entity_code              => l_array_entity_code(hdr_idx)
185986    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
185987    ,p_event_id                 => l_array_event_id(hdr_idx)
185988    ,p_event_class_code         => l_array_class_code(hdr_idx)
185989    ,p_event_type_code          => l_array_event_type(hdr_idx)
185990    ,p_event_number             => l_array_event_number(hdr_idx)
185991    ,p_event_date               => l_array_event_date(hdr_idx)
185992    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
185993    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
185994    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
185995    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
185996    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
185997    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
185998    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
185999    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
186000    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
186001    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
186002    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
186003    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
186004    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
186005    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
186006    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
186007 
186008 --
186009 -- set the status of entry to C_VALID (0)
186010 --
186011 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
186012 
186013 --
186014 -- initialize a row for ae header
186015 --
186016 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
186017 
186018 l_event_id := l_array_event_id(hdr_idx);
186019 
186020 --
186021 -- storing the hdr_idx for event. May be used by line cursor.
186022 --
186023 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
186024 
186025 --
186026 -- store sources from header extract. This can be improved to
186027 -- store only those sources from header extract that may be used in lines
186028 --
186029 
186030 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
186031 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
186032 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
186033 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
186034 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
186035 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
186036 
186037 --
186038 -- initilaize the status of ae headers for diffrent balance types
186039 -- the status is initialised to C_NOT_CREATED (2)
186040 --
186041 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
186042 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
186043 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
186044 
186045 --
186046 -- call api to validate and store accounting attributes for header
186047 --
186048 
186049 ------------------------------------------------------------
186053 
186050 -- Accrual Reversal : to get date for Standard Source (NONE)
186051 ------------------------------------------------------------
186052 l_acc_rev_gl_date_source := NULL;
186054      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
186055       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
186056 
186057 
186058 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
186059 
186060 XLA_AE_HEADER_PKG.SetJeCategoryName;
186061 
186062 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
186063 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
186064 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
186065 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
186066 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
186067 
186068 
186069 -- No header level analytical criteria
186070 
186071 --
186072 --accounting attribute enhancement, bug 3612931
186073 --
186074 l_trx_reversal_source := SUBSTR(NULL, 1,30);
186075 
186076 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
186077    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
186078 
186079    xla_accounting_err_pkg.build_message
186080       (p_appli_s_name            => 'XLA'
186081       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
186082       ,p_token_1                 => 'ACCT_ATTR_NAME'
186083       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
186084       ,p_token_2                 => 'PRODUCT_NAME'
186085       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
186086       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
186087       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
186088       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
186089 
186090 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
186091    --
186092    -- following sets the accounting attributes needed to reverse
186093    -- accounting for a distributeion
186094    --
186095    xla_ae_lines_pkg.SetTrxReversalAttrs
186096       (p_event_id              => l_event_id
186097       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
186098       ,p_trx_reversal_source   => l_trx_reversal_source);
186099 
186100 END IF;
186101 
186102 
186103 ----------------------------------------------------------------
186104 -- 4262811 -  update the header statuses to invalid in need be
186105 ----------------------------------------------------------------
186106 --
186107 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
186108 
186109 
186110   -----------------------------------------------
186111   -- No accrual reversal for the event class/type
186112   -----------------------------------------------
186113 ----------------------------------------------------------------
186114 
186115 --
186116 -- this ends the header loop iteration for one bulk fetch
186117 --
186118 END LOOP;
186119 
186120 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
186121 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
186122 
186123 --
186124 -- insert dummy rows into lines gt table that were created due to
186125 -- transaction reversals
186126 --
186127 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
186128    l_result := XLA_AE_LINES_PKG.InsertLines;
186129 END IF;
186130 
186131 --
186132 -- reset the temp_line_num for each set of events fetched from header
186133 -- cursor rather than doing it for each new event in line cursor
186134 -- Bug 3939231
186135 --
186136 xla_ae_lines_pkg.g_temp_line_num := 0;
186137 
186138 
186139 
186140 --
186141 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
186142 --
186143 --
186144 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186145 
186146       trace
186147          (p_msg      => 'SQL - FETCH line_cur'
186148          ,p_level    => C_LEVEL_STATEMENT
186149          ,p_module   => l_log_module);
186150 
186151 END IF;
186152 --
186153 --
186154 LOOP
186155   --
186156   FETCH line_cur BULK COLLECT INTO
186157         l_array_entity_id
186158       , l_array_legal_entity_id
186159       , l_array_entity_code
186160       , l_array_transaction_num
186161       , l_array_event_id
186162       , l_array_class_code
186163       , l_array_event_type
186164       , l_array_event_number
186165       , l_array_event_date
186166       , l_array_transaction_date
186167       , l_array_reference_num_1
186168       , l_array_reference_num_2
186169       , l_array_reference_num_3
186170       , l_array_reference_num_4
186171       , l_array_reference_char_1
186172       , l_array_reference_char_2
186173       , l_array_reference_char_3
186174       , l_array_reference_char_4
186175       , l_array_reference_date_1
186176       , l_array_reference_date_2
186177       , l_array_reference_date_3
186178       , l_array_reference_date_4
186179       , l_array_event_created_by
186180       , l_array_budgetary_control_flag
186181       , l_array_extract_line_num 
186182       , l_array_source_1
186183       , l_array_source_2
186184       , l_array_source_3
186185       , l_array_source_5
186186       , l_array_source_11
186187       LIMIT l_rows;
186188 
186189   --
186190   IF (C_LEVEL_EVENT >= g_log_level) THEN
186191             trace
186192                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
186193                ,p_level    => C_LEVEL_EVENT
186194                ,p_module   => l_log_module);
186198 
186195   END IF;
186196   --
186197   EXIT WHEN l_array_entity_id.count = 0;
186199   XLA_AE_LINES_PKG.g_rec_lines := null;
186200 
186201 --
186202 -- Bug 4458708
186203 --
186204 XLA_AE_LINES_PKG.g_LineNumber := 0;
186205 --
186206 --
186207 
186208 FOR Idx IN 1..l_array_event_id.count LOOP
186209    --
186210    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
186211    --
186212    l_event_id := l_array_event_id(idx);  -- 5648433
186213 
186214    --
186215    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
186216    --
186217 
186218    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
186219              (g_array_event(l_event_id).array_value_num('header_index'))
186220          ,'N'
186221          ) <> 'Y'
186222    THEN
186223       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186224          trace
186225             (p_msg      => 'Trancaction revesal option is not Y '
186226             ,p_level    => C_LEVEL_STATEMENT
186227             ,p_module   => l_log_module);
186228       END IF;
186229 
186230 --
186231 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
186232 --
186233 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
186234 --
186235 -- set event info as cache for other routines to refer event attributes
186236 --
186237 
186238 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
186239    l_previous_event_id := l_event_id;
186240 
186241    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
186242       (p_application_id           => p_application_id
186243       ,p_primary_ledger_id        => p_primary_ledger_id
186244       ,p_base_ledger_id           => p_base_ledger_id
186245       ,p_target_ledger_id         => p_target_ledger_id
186246       ,p_entity_id                => l_array_entity_id(Idx)
186247       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
186248       ,p_entity_code              => l_array_entity_code(Idx)
186249       ,p_transaction_num          => l_array_transaction_num(Idx)
186250       ,p_event_id                 => l_array_event_id(Idx)
186251       ,p_event_class_code         => l_array_class_code(Idx)
186252       ,p_event_type_code          => l_array_event_type(Idx)
186253       ,p_event_number             => l_array_event_number(Idx)
186254       ,p_event_date               => l_array_event_date(Idx)
186255       ,p_transaction_date         => l_array_transaction_date(Idx)
186256       ,p_reference_num_1          => l_array_reference_num_1(Idx)
186257       ,p_reference_num_2          => l_array_reference_num_2(Idx)
186258       ,p_reference_num_3          => l_array_reference_num_3(Idx)
186259       ,p_reference_num_4          => l_array_reference_num_4(Idx)
186260       ,p_reference_char_1         => l_array_reference_char_1(Idx)
186261       ,p_reference_char_2         => l_array_reference_char_2(Idx)
186262       ,p_reference_char_3         => l_array_reference_char_3(Idx)
186263       ,p_reference_char_4         => l_array_reference_char_4(Idx)
186264       ,p_reference_date_1         => l_array_reference_date_1(Idx)
186265       ,p_reference_date_2         => l_array_reference_date_2(Idx)
186266       ,p_reference_date_3         => l_array_reference_date_3(Idx)
186267       ,p_reference_date_4         => l_array_reference_date_4(Idx)
186268       ,p_event_created_by         => l_array_event_created_by(Idx)
186269       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
186270        --
186271 END IF;
186272 
186273 
186274 
186275 --
186276 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
186277 
186278 l_acct_reversal_source := SUBSTR(NULL, 1,30);
186279 
186280 IF l_continue_with_lines THEN
186281    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
186282       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
186283 
186284       xla_accounting_err_pkg.build_message
186285          (p_appli_s_name            => 'XLA'
186286          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
186287          ,p_token_1                 => 'LINE_NUMBER'
186288          ,p_value_1                 => l_array_extract_line_num(Idx)
186289          ,p_token_2                 => 'PRODUCT_NAME'
186290          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
186291          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
186292          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
186293          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
186294 
186295    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
186296       --
186297       -- following sets the accounting attributes needed to reverse
186298       -- accounting for a distributeion
186299       --
186300 
186301       --
186302       -- 5217187
186303       --
186304       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
186305       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
186306                                        g_array_event(l_event_id).array_value_num('header_index'));
186307       --
186308       --
186309 
186310       -- No reversal code generated
186311 
186312       xla_ae_lines_pkg.SetAcctReversalAttrs
186313          (p_event_id             => l_event_id
186314          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
186315          ,p_calculate_acctd_flag => l_calculate_acctd_flag
186316          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
186317    END IF;
186318 
186319    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
186320        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
186321 
186322 --
186323 AcctLineType_231 (
186324  p_application_id  => p_application_id
186325  ,p_event_id     => l_event_id
186326  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186330  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186327  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186328  ,p_actual_flag => l_actual_flag
186329  ,p_balance_type_code => l_balance_type_code
186331  
186332  , p_source_1 => l_array_source_1(Idx)
186333  , p_source_2 => l_array_source_2(Idx)
186334  , p_source_3 => l_array_source_3(Idx)
186335  , p_source_5 => l_array_source_5(Idx)
186336  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
186337  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
186338  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
186339  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
186340  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
186341  , p_source_11 => l_array_source_11(Idx)
186342  );
186343 If(l_balance_type_code = 'A') THEN
186344   l_actual_gain_loss_ref := l_gain_or_loss_ref;
186345 END IF;
186346 
186347 --
186348 
186349 
186350 --
186351 AcctLineType_240 (
186352  p_application_id  => p_application_id
186353  ,p_event_id     => l_event_id
186354  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186355  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186356  ,p_actual_flag => l_actual_flag
186357  ,p_balance_type_code => l_balance_type_code
186358  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186359  
186360  , p_source_1 => l_array_source_1(Idx)
186361  , p_source_2 => l_array_source_2(Idx)
186362  , p_source_3 => l_array_source_3(Idx)
186363  , p_source_5 => l_array_source_5(Idx)
186364  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
186365  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
186366  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
186367  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
186368  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
186369  , p_source_11 => l_array_source_11(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       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
186378       -- or secondary ledger that has different currency with primary
186379       -- or alc that is calculated by sla
186380       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
186381             (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'))
186382 
186383 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
186384 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
186385           AND (l_actual_flag = 'A')) THEN
186386         XLA_AE_LINES_PKG.CreateGainOrLossLines(
186387           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
186388          ,p_application_id   => p_application_id
186389          ,p_amb_context_code => 'DEFAULT'
186390          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
186391          ,p_event_class_code => C_EVENT_CLASS_CODE
186392          ,p_event_type_code  => C_EVENT_TYPE_CODE
186393          
186394          ,p_gain_ccid        => -1
186395          ,p_loss_ccid        => -1
186396 
186397          ,p_actual_flag      => l_actual_flag
186398          ,p_enc_flag         => null
186399          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
186400          ,p_enc_g_l_ref      => null
186401          );
186402       END IF;
186403    END IF;
186404 END IF;
186405 
186406    ELSE
186407       --
186408       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
186409       --
186410       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186411          trace
186412             (p_msg      => 'Trancaction revesal option is Y'
186413             ,p_level    => C_LEVEL_STATEMENT
186414             ,p_module   => l_log_module);
186415       END IF;
186416    END IF;
186417 
186418 END LOOP;
186419 l_result := XLA_AE_LINES_PKG.InsertLines ;
186420 end loop;
186421 close line_cur;
186422 
186423 
186424 --
186425 -- insert headers into xla_ae_headers_gt table
186426 --
186427 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
186428 
186429 -- insert into errors table here.
186430 
186431 END LOOP;
186432 
186433 --
186434 -- 4865292
186435 --
186436 -- Compare g_hdr_extract_count with event count in
186437 -- CreateHeadersAndLines.
186438 --
186439 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
186440 
186441 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186442    trace (p_msg     => '# rows extracted from header extract objects '
186443                     || ' (running total): '
186444                     || g_hdr_extract_count
186445          ,p_level   => C_LEVEL_STATEMENT
186446          ,p_module  => l_log_module);
186447 END IF;
186448 
186449 CLOSE header_cur;
186450 --
186451 
186452 --
186453 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
186454    trace
186455       (p_msg      => 'END of EventType_302'
186456       ,p_level    => C_LEVEL_PROCEDURE
186457       ,p_module   => l_log_module);
186458 END IF;
186459 --
186460 RETURN l_result;
186461 EXCEPTION
186462 WHEN xla_exceptions_pkg.application_exception THEN
186463    
186464 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
186465 
186466    
186467 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
186468 
186469    RAISE;
186470 
186471 WHEN NO_DATA_FOUND THEN
186472 
186473 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
186474 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
186475 
186476 FOR header_record IN header_cur
186477 LOOP
186481 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
186478     l_array_header_events(header_record.event_id) := header_record.event_id;
186479 END LOOP;
186480 
186482 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
186483 
186484 fnd_file.put_line(fnd_file.LOG, '                    ');
186485 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
186486 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
186487 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
186488 
186489 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
186490 LOOP
186491 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
186492 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
186493         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
186494 	END IF;
186495 END LOOP;
186496 
186497 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
186498 fnd_file.put_line(fnd_file.LOG, '                    ');
186499 
186500 
186501 xla_exceptions_pkg.raise_message
186502       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_302');
186503 
186504 
186505 WHEN OTHERS THEN
186506    xla_exceptions_pkg.raise_message
186507       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_302');
186508 END EventType_302;
186509 --
186510 
186511 ---------------------------------------
186512 --
186513 -- PRIVATE PROCEDURE
186514 --         insert_sources_303
186515 --
186516 ----------------------------------------
186517 --
186518 PROCEDURE insert_sources_303(
186519                                 p_target_ledger_id       IN NUMBER
186520                               , p_language               IN VARCHAR2
186521                               , p_sla_ledger_id          IN NUMBER
186522                               , p_pad_start_date         IN DATE
186523                               , p_pad_end_date           IN DATE
186524                          )
186525 IS
186526 
186527 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SUBINV_XFER_ALL';
186528 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SUBINV_XFER';
186529 p_apps_owner                   VARCHAR2(30);
186530 l_log_module                   VARCHAR2(240);
186531 BEGIN
186532 IF g_log_enabled THEN
186533       l_log_module := C_DEFAULT_MODULE||'.insert_sources_303';
186534 END IF;
186535 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
186536 
186537       trace
186538          (p_msg      => 'BEGIN of insert_sources_303'
186539          ,p_level    => C_LEVEL_PROCEDURE
186540          ,p_module   => l_log_module);
186541 
186542 END IF;
186543 
186544 -- select APPS owner
186545 SELECT oracle_username
186546   INTO p_apps_owner
186547   FROM fnd_oracle_userid
186548  WHERE read_only_flag = 'U'
186549 ;
186550 
186551 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186552       trace
186553          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
186554                         ' - p_language = '||p_language||
186555                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
186556                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
186557                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
186558                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
186559          ,p_level    => C_LEVEL_STATEMENT
186560          ,p_module   => l_log_module);
186561 END IF;
186562 
186563 
186564 --
186565 INSERT INTO xla_diag_sources --hdr2
186566 (
186567         event_id
186568       , ledger_id
186569       , sla_ledger_id
186570       , description_language
186571       , object_name
186572       , object_type_code
186573       , line_number
186574       , source_application_id
186575       , source_type_code
186576       , source_code
186577       , source_value
186578       , source_meaning
186579       , created_by
186580       , creation_date
186581       , last_update_date
186582       , last_updated_by
186583       , last_update_login
186584       , program_update_date
186585       , program_application_id
186586       , program_id
186587       , request_id
186588 )
186589 SELECT
186590         event_id
186591       , p_target_ledger_id
186592       , p_sla_ledger_id
186593       , p_language
186594       , object_name
186595       , object_type_code
186596       , line_number
186597       , source_application_id
186598       , source_type_code
186599       , source_code
186600       , SUBSTR(source_value ,1,1996)
186601       , SUBSTR(source_meaning ,1,200)
186602       , xla_environment_pkg.g_Usr_Id
186603       , TRUNC(SYSDATE)
186604       , TRUNC(SYSDATE)
186605       , xla_environment_pkg.g_Usr_Id
186606       , xla_environment_pkg.g_Login_Id
186607       , TRUNC(SYSDATE)
186608       , xla_environment_pkg.g_Prog_Appl_Id
186609       , xla_environment_pkg.g_Prog_Id
186610       , xla_environment_pkg.g_Req_Id
186611   FROM (
186612        SELECT xet.event_id                  event_id
186613             , 0                          line_number
186614             , CASE r
186615                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
186616                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
186617                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
186618                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
186619                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
186620                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
186621                 
186622                ELSE null
186623               END                           object_name
186624             , CASE r
186625                 WHEN 1 THEN 'HEADER' 
186629                 WHEN 5 THEN 'HEADER' 
186626                 WHEN 2 THEN 'HEADER' 
186627                 WHEN 3 THEN 'HEADER' 
186628                 WHEN 4 THEN 'HEADER' 
186630                 WHEN 6 THEN 'HEADER' 
186631                 
186632                 ELSE null
186633               END                           object_type_code
186634             , CASE r
186635                 WHEN 1 THEN '555' 
186636                 WHEN 2 THEN '555' 
186637                 WHEN 3 THEN '555' 
186638                 WHEN 4 THEN '555' 
186639                 WHEN 5 THEN '555' 
186640                 WHEN 6 THEN '555' 
186641                 
186642                 ELSE null
186643               END                           source_application_id
186644             , 'S'             source_type_code
186645             , CASE r
186646                 WHEN 1 THEN 'ENTITY_CODE' 
186647                 WHEN 2 THEN 'CURRENCY_CODE' 
186648                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
186649                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
186650                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
186651                 WHEN 6 THEN 'TRANSACTION_DATE' 
186652                 
186653                 ELSE null
186654               END                           source_code
186655             , CASE r
186656                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
186657                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
186658                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
186659                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
186660                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
186661                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
186662                 
186663                 ELSE null
186664               END                           source_value
186665             , CASE r
186666                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
186667                           1010186
186668                          ,TO_CHAR(h1.CURRENCY_CODE)
186669                          ,'CURRENCY_CODE'
186670                          ,'S'
186671                          ,555)
186672                 
186673                 ELSE null
186674               END               source_meaning
186675          FROM xla_events_gt     xet  
186676       , GMF_XLA_EXTRACT_HEADERS  h1
186677              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
186678          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
186679            AND xet.event_class_code = C_EVENT_CLASS_CODE
186680               AND h1.event_id = xet.event_id
186681 
186682 )
186683 ;
186684 --
186685 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186686 
186687       trace
186688          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
186689          ,p_level    => C_LEVEL_STATEMENT
186690          ,p_module   => l_log_module);
186691 
186692 END IF;
186693 --
186694 
186695 
186696 
186697 --
186698 INSERT INTO xla_diag_sources  --line2
186699 (
186700         event_id
186701       , ledger_id
186702       , sla_ledger_id
186703       , description_language
186704       , object_name
186705       , object_type_code
186706       , line_number
186707       , source_application_id
186708       , source_type_code
186709       , source_code
186710       , source_value
186711       , source_meaning
186712       , created_by
186713       , creation_date
186714       , last_update_date
186715       , last_updated_by
186716       , last_update_login
186717       , program_update_date
186718       , program_application_id
186719       , program_id
186720       , request_id
186721 )
186722 SELECT  event_id
186723       , p_target_ledger_id
186724       , p_sla_ledger_id
186725       , p_language
186726       , object_name
186727       , object_type_code
186728       , line_number
186729       , source_application_id
186730       , source_type_code
186731       , source_code
186732       , SUBSTR(source_value,1,1996)
186733       , SUBSTR(source_meaning ,1,200)
186734       , xla_environment_pkg.g_Usr_Id
186735       , TRUNC(SYSDATE)
186736       , TRUNC(SYSDATE)
186737       , xla_environment_pkg.g_Usr_Id
186738       , xla_environment_pkg.g_Login_Id
186739       , TRUNC(SYSDATE)
186740       , xla_environment_pkg.g_Prog_Appl_Id
186741       , xla_environment_pkg.g_Prog_Id
186742       , xla_environment_pkg.g_Req_Id
186743   FROM (
186744        SELECT xet.event_id                  event_id
186745             , l2.line_number                 line_number
186746             , CASE r
186747                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
186748                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
186749                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
186750                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
186751                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
186752                 WHEN 6 THEN 'GMF_XLA_EXTRACT_LINES' 
186753                 
186754                ELSE null
186755               END                           object_name
186756             , CASE r
186757                 WHEN 1 THEN 'LINE' 
186758                 WHEN 2 THEN 'LINE' 
186759                 WHEN 3 THEN 'LINE' 
186760                 WHEN 4 THEN 'LINE' 
186761                 WHEN 5 THEN 'LINE' 
186762                 WHEN 6 THEN 'LINE' 
186763                 
186764                 ELSE null
186765               END                           object_type_code
186766             , CASE r
186767                 WHEN 1 THEN '555' 
186768                 WHEN 2 THEN '555' 
186769                 WHEN 3 THEN '555' 
186770                 WHEN 4 THEN '555' 
186771                 WHEN 5 THEN '555' 
186772                 WHEN 6 THEN '555' 
186773                 
186774                 ELSE null
186778                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
186775               END                           source_application_id
186776             , 'S'             source_type_code
186777             , CASE r
186779                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
186780                 WHEN 3 THEN 'ENTERED_AMOUNT' 
186781                 WHEN 4 THEN 'LINE_NUMBER' 
186782                 WHEN 5 THEN 'LINE_ID' 
186783                 WHEN 6 THEN 'ACCOUNTED_AMOUNT' 
186784                 
186785                 ELSE null
186786               END                           source_code
186787             , CASE r
186788                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
186789                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
186790                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
186791                 WHEN 4 THEN TO_CHAR(l2.LINE_NUMBER)
186792                 WHEN 5 THEN TO_CHAR(l2.LINE_ID)
186793                 WHEN 6 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
186794                 
186795                 ELSE null
186796               END                           source_value
186797             , null              source_meaning
186798          FROM  xla_events_gt     xet  
186799         , GMF_XLA_EXTRACT_LINES  l2
186800             , (select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
186801         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
186802           AND xet.event_class_code = C_EVENT_CLASS_CODE
186803             AND l2.event_id          = xet.event_id
186804 
186805 )
186806 ;
186807 --
186808 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186809 
186810       trace
186811          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
186812          ,p_level    => C_LEVEL_STATEMENT
186813          ,p_module   => l_log_module);
186814 
186815 END IF;
186816 
186817 
186818 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
186819       trace
186820          (p_msg      => 'END of insert_sources_303'
186821          ,p_level    => C_LEVEL_PROCEDURE
186822          ,p_module   => l_log_module);
186823 END IF;
186824 EXCEPTION
186825   WHEN xla_exceptions_pkg.application_exception THEN
186826       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
186827             trace
186828                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
186829                ,p_level    => C_LEVEL_EXCEPTION
186830                ,p_module   => l_log_module);
186831       END IF;
186832       RAISE;
186833   WHEN OTHERS THEN
186834       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
186835             trace
186836                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
186837                ,p_level    => C_LEVEL_EXCEPTION
186838                ,p_module   => l_log_module);
186839        END IF;
186840        xla_exceptions_pkg.raise_message
186841            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_303');
186842 END insert_sources_303;
186843 --
186844 
186845 ---------------------------------------
186846 --
186847 -- PRIVATE FUNCTION
186848 --         EventClass_303
186849 --
186850 ----------------------------------------
186851 --
186852 FUNCTION EventClass_303
186853        (p_application_id         IN NUMBER
186854        ,p_base_ledger_id         IN NUMBER
186855        ,p_target_ledger_id       IN NUMBER
186856        ,p_language               IN VARCHAR2
186857        ,p_currency_code          IN VARCHAR2
186858        ,p_sla_ledger_id          IN NUMBER
186859        ,p_pad_start_date         IN DATE
186860        ,p_pad_end_date           IN DATE
186861        ,p_primary_ledger_id      IN NUMBER)
186862 RETURN BOOLEAN IS
186863 --
186864 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SUBINV_XFER_ALL';
186865 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SUBINV_XFER';
186866 
186867 l_calculate_acctd_flag   VARCHAR2(1) :='N';
186868 l_calculate_g_l_flag     VARCHAR2(1) :='N';
186869 --
186870 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186871 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186872 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
186873 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186874 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186875 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
186876 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
186877 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186878 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186879 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186880 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186881 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186882 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186883 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186884 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186885 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186886 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186887 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186888 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186889 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186890 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186891 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186892 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
186893 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
186894 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
186895 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
186899 l_first_event_id                       NUMBER;
186896 
186897 l_event_id                             NUMBER;
186898 l_previous_event_id                    NUMBER;
186900 l_last_event_id                        NUMBER;
186901 
186902 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
186903 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
186904 --
186905 --
186906 l_result                    BOOLEAN := TRUE;
186907 l_rows                      NUMBER  := 1000;
186908 l_event_type_name           VARCHAR2(80) := 'All';
186909 l_event_class_name          VARCHAR2(80) := 'Sub-inventory Transfers';
186910 l_description               VARCHAR2(4000);
186911 l_transaction_reversal      NUMBER;
186912 l_ae_header_id              NUMBER;
186913 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
186914 l_log_module                VARCHAR2(240);
186915 --
186916 l_acct_reversal_source      VARCHAR2(30);
186917 l_trx_reversal_source       VARCHAR2(30);
186918 
186919 l_continue_with_lines       BOOLEAN := TRUE;
186920 --
186921 l_acc_rev_gl_date_source    DATE;                      -- 4262811
186922 --
186923 type t_array_event_id is table of number index by binary_integer;
186924 
186925 l_rec_array_event                    t_rec_array_event;
186926 l_null_rec_array_event               t_rec_array_event;
186927 l_array_ae_header_id                 xla_number_array_type;
186928 l_actual_flag                        VARCHAR2(1) := NULL;
186929 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
186930 l_balance_type_code                  VARCHAR2(1) :=NULL;
186931 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
186932 
186933 --
186934 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
186935 --
186936 
186937 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
186938 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
186939 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
186940 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
186941 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
186942 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
186943 
186944 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
186945 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
186946 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
186947 TYPE t_array_source_4 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
186948 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
186949 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
186950 
186951 l_array_source_6              t_array_source_6;
186952 l_array_source_7              t_array_source_7;
186953 l_array_source_8              t_array_source_8;
186954 l_array_source_9              t_array_source_9;
186955 l_array_source_10              t_array_source_10;
186956 l_array_source_12              t_array_source_12;
186957 
186958 l_array_source_1      t_array_source_1;
186959 l_array_source_2      t_array_source_2;
186960 l_array_source_3      t_array_source_3;
186961 l_array_source_4      t_array_source_4;
186962 l_array_source_5      t_array_source_5;
186963 l_array_source_11      t_array_source_11;
186964 
186965 --
186966 CURSOR header_cur
186967 IS
186968 SELECT /*+ leading(xet) cardinality(xet,1) */
186969 -- Event Class Code: SUBINV_XFER
186970     xet.entity_id
186971    ,xet.legal_entity_id
186972    ,xet.entity_code
186973    ,xet.transaction_number
186974    ,xet.event_id
186975    ,xet.event_class_code
186976    ,xet.event_type_code
186977    ,xet.event_number
186978    ,xet.event_date
186979    ,xet.transaction_date
186980    ,xet.reference_num_1
186981    ,xet.reference_num_2
186982    ,xet.reference_num_3
186983    ,xet.reference_num_4
186984    ,xet.reference_char_1
186985    ,xet.reference_char_2
186986    ,xet.reference_char_3
186987    ,xet.reference_char_4
186988    ,xet.reference_date_1
186989    ,xet.reference_date_2
186990    ,xet.reference_date_3
186991    ,xet.reference_date_4
186992    ,xet.event_created_by
186993    ,xet.budgetary_control_flag 
186994   , h1.ENTITY_CODE    source_6
186995   , h1.CURRENCY_CODE    source_7
186996   , h1.CURRENCY_CONVERSION_DATE    source_8
186997   , h1.CURRENCY_CONVERSION_RATE    source_9
186998   , h1.CURRENCY_CONVERSION_TYPE    source_10
186999   , h1.TRANSACTION_DATE    source_12
187000   FROM xla_events_gt     xet 
187001   , GMF_XLA_EXTRACT_HEADERS  h1
187002  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
187003    and xet.event_class_code = C_EVENT_CLASS_CODE
187004    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
187005 
187006  ORDER BY event_id
187007 ;
187008 
187009 
187010 --
187011 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
187012 IS
187013 SELECT  /*+ leading(xet) cardinality(xet,1) */
187014 -- Event Class Code: SUBINV_XFER
187015     xet.entity_id
187016    ,xet.legal_entity_id
187017    ,xet.entity_code
187018    ,xet.transaction_number
187019    ,xet.event_id
187020    ,xet.event_class_code
187021    ,xet.event_type_code
187022    ,xet.event_number
187023    ,xet.event_date
187024    ,xet.transaction_date
187025    ,xet.reference_num_1
187026    ,xet.reference_num_2
187027    ,xet.reference_num_3
187028    ,xet.reference_num_4
187029    ,xet.reference_char_1
187030    ,xet.reference_char_2
187031    ,xet.reference_char_3
187035    ,xet.reference_date_3
187032    ,xet.reference_char_4
187033    ,xet.reference_date_1
187034    ,xet.reference_date_2
187036    ,xet.reference_date_4
187037    ,xet.event_created_by
187038    ,xet.budgetary_control_flag
187039  , l2.LINE_NUMBER  
187040   , l2.TRANSACTION_ACCOUNT_ID    source_1
187041   , l2.JOURNAL_LINE_TYPE    source_2
187042   , l2.ENTERED_AMOUNT    source_3
187043   , l2.LINE_NUMBER    source_4
187044   , l2.LINE_ID    source_5
187045   , l2.ACCOUNTED_AMOUNT    source_11
187046   FROM xla_events_gt     xet 
187047   , GMF_XLA_EXTRACT_LINES  l2
187048  WHERE xet.event_id between x_first_event_id and x_last_event_id
187049    and xet.event_date between p_pad_start_date and p_pad_end_date
187050    and xet.event_class_code = C_EVENT_CLASS_CODE
187051    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
187052 ;
187053 
187054 --
187055 BEGIN
187056 IF g_log_enabled THEN
187057    l_log_module := C_DEFAULT_MODULE||'.EventClass_303';
187058 END IF;
187059 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187060    trace
187061       (p_msg      => 'BEGIN of EventClass_303'
187062       ,p_level    => C_LEVEL_PROCEDURE
187063       ,p_module   => l_log_module);
187064 END IF;
187065 
187066 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187067    trace
187068       (p_msg      => 'p_application_id = '||p_application_id||
187069                      ' - p_base_ledger_id = '||p_base_ledger_id||
187070                      ' - p_target_ledger_id  = '||p_target_ledger_id||
187071                      ' - p_language = '||p_language||
187072                      ' - p_currency_code = '||p_currency_code||
187073                      ' - p_sla_ledger_id = '||p_sla_ledger_id
187074       ,p_level    => C_LEVEL_STATEMENT
187075       ,p_module   => l_log_module);
187076 END IF;
187077 --
187078 -- initialze arrays
187079 --
187080 g_array_event.DELETE;
187081 l_rec_array_event := l_null_rec_array_event;
187082 --
187083 --------------------------------------
187084 -- 4262811 Initialze MPA Line Number
187085 --------------------------------------
187086 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
187087 
187088 --
187089 
187090 --
187091 OPEN header_cur;
187092 --
187093 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187094    trace
187095    (p_msg      => 'SQL - FETCH header_cur'
187096    ,p_level    => C_LEVEL_STATEMENT
187097    ,p_module   => l_log_module);
187098 END IF;
187099 --
187100 LOOP
187101 FETCH header_cur BULK COLLECT INTO
187102         l_array_entity_id
187103       , l_array_legal_entity_id
187104       , l_array_entity_code
187105       , l_array_transaction_num
187106       , l_array_event_id
187107       , l_array_class_code
187108       , l_array_event_type
187109       , l_array_event_number
187110       , l_array_event_date
187111       , l_array_transaction_date
187112       , l_array_reference_num_1
187113       , l_array_reference_num_2
187114       , l_array_reference_num_3
187115       , l_array_reference_num_4
187116       , l_array_reference_char_1
187117       , l_array_reference_char_2
187118       , l_array_reference_char_3
187119       , l_array_reference_char_4
187120       , l_array_reference_date_1
187121       , l_array_reference_date_2
187122       , l_array_reference_date_3
187123       , l_array_reference_date_4
187124       , l_array_event_created_by
187125       , l_array_budgetary_control_flag 
187126       , l_array_source_6
187127       , l_array_source_7
187128       , l_array_source_8
187129       , l_array_source_9
187130       , l_array_source_10
187131       , l_array_source_12
187132       LIMIT l_rows;
187133 --
187134 IF (C_LEVEL_EVENT >= g_log_level) THEN
187135    trace
187136    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
187137    ,p_level    => C_LEVEL_EVENT
187138    ,p_module   => l_log_module);
187139 END IF;
187140 --
187141 EXIT WHEN l_array_entity_id.COUNT = 0;
187142 
187143 -- initialize arrays
187144 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
187145 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
187146 
187147 --
187148 -- Bug 4458708
187149 --
187150 XLA_AE_LINES_PKG.g_LineNumber := 0;
187151 
187152 
187153 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
187154 g_last_hdr_idx := l_array_event_id.LAST;
187155 --
187156 -- loop for the headers. Each iteration is for each header extract row
187157 -- fetched in header cursor
187158 --
187159 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
187160 
187161 --
187162 -- set event info as cache for other routines to refer event attributes
187163 --
187164 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
187165    (p_application_id           => p_application_id
187166    ,p_primary_ledger_id        => p_primary_ledger_id
187167    ,p_base_ledger_id           => p_base_ledger_id
187168    ,p_target_ledger_id         => p_target_ledger_id
187169    ,p_entity_id                => l_array_entity_id(hdr_idx)
187170    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
187171    ,p_entity_code              => l_array_entity_code(hdr_idx)
187172    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
187173    ,p_event_id                 => l_array_event_id(hdr_idx)
187174    ,p_event_class_code         => l_array_class_code(hdr_idx)
187175    ,p_event_type_code          => l_array_event_type(hdr_idx)
187176    ,p_event_number             => l_array_event_number(hdr_idx)
187177    ,p_event_date               => l_array_event_date(hdr_idx)
187178    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
187179    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
187180    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
187181    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
187185    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
187182    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
187183    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
187184    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
187186    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
187187    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
187188    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
187189    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
187190    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
187191    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
187192    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
187193 
187194 --
187195 -- set the status of entry to C_VALID (0)
187196 --
187197 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
187198 
187199 --
187200 -- initialize a row for ae header
187201 --
187202 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
187203 
187204 l_event_id := l_array_event_id(hdr_idx);
187205 
187206 --
187207 -- storing the hdr_idx for event. May be used by line cursor.
187208 --
187209 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
187210 
187211 --
187212 -- store sources from header extract. This can be improved to
187213 -- store only those sources from header extract that may be used in lines
187214 --
187215 
187216 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
187217 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
187218 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
187219 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
187220 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
187221 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
187222 
187223 --
187224 -- initilaize the status of ae headers for diffrent balance types
187225 -- the status is initialised to C_NOT_CREATED (2)
187226 --
187227 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
187228 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
187229 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
187230 
187231 --
187232 -- call api to validate and store accounting attributes for header
187233 --
187234 
187235 ------------------------------------------------------------
187236 -- Accrual Reversal : to get date for Standard Source (NONE)
187237 ------------------------------------------------------------
187238 l_acc_rev_gl_date_source := NULL;
187239 
187240      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
187241       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
187242 
187243 
187244 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
187245 
187246 XLA_AE_HEADER_PKG.SetJeCategoryName;
187247 
187248 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
187249 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
187250 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
187251 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
187252 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
187253 
187254 
187255 -- No header level analytical criteria
187256 
187257 --
187258 --accounting attribute enhancement, bug 3612931
187259 --
187260 l_trx_reversal_source := SUBSTR(NULL, 1,30);
187261 
187262 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
187263    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
187264 
187265    xla_accounting_err_pkg.build_message
187266       (p_appli_s_name            => 'XLA'
187267       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
187268       ,p_token_1                 => 'ACCT_ATTR_NAME'
187269       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
187270       ,p_token_2                 => 'PRODUCT_NAME'
187271       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
187272       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
187273       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
187274       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
187275 
187276 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
187277    --
187278    -- following sets the accounting attributes needed to reverse
187279    -- accounting for a distributeion
187280    --
187281    xla_ae_lines_pkg.SetTrxReversalAttrs
187282       (p_event_id              => l_event_id
187283       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
187284       ,p_trx_reversal_source   => l_trx_reversal_source);
187285 
187286 END IF;
187287 
187288 
187289 ----------------------------------------------------------------
187290 -- 4262811 -  update the header statuses to invalid in need be
187291 ----------------------------------------------------------------
187292 --
187293 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
187294 
187295 
187296   -----------------------------------------------
187297   -- No accrual reversal for the event class/type
187298   -----------------------------------------------
187299 ----------------------------------------------------------------
187300 
187301 --
187302 -- this ends the header loop iteration for one bulk fetch
187303 --
187304 END LOOP;
187305 
187309 --
187306 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
187307 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
187308 
187310 -- insert dummy rows into lines gt table that were created due to
187311 -- transaction reversals
187312 --
187313 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
187314    l_result := XLA_AE_LINES_PKG.InsertLines;
187315 END IF;
187316 
187317 --
187318 -- reset the temp_line_num for each set of events fetched from header
187319 -- cursor rather than doing it for each new event in line cursor
187320 -- Bug 3939231
187321 --
187322 xla_ae_lines_pkg.g_temp_line_num := 0;
187323 
187324 
187325 
187326 --
187327 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
187328 --
187329 --
187330 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187331 
187332       trace
187333          (p_msg      => 'SQL - FETCH line_cur'
187334          ,p_level    => C_LEVEL_STATEMENT
187335          ,p_module   => l_log_module);
187336 
187337 END IF;
187338 --
187339 --
187340 LOOP
187341   --
187342   FETCH line_cur BULK COLLECT INTO
187343         l_array_entity_id
187344       , l_array_legal_entity_id
187345       , l_array_entity_code
187346       , l_array_transaction_num
187347       , l_array_event_id
187348       , l_array_class_code
187349       , l_array_event_type
187350       , l_array_event_number
187351       , l_array_event_date
187352       , l_array_transaction_date
187353       , l_array_reference_num_1
187354       , l_array_reference_num_2
187355       , l_array_reference_num_3
187356       , l_array_reference_num_4
187357       , l_array_reference_char_1
187358       , l_array_reference_char_2
187359       , l_array_reference_char_3
187360       , l_array_reference_char_4
187361       , l_array_reference_date_1
187362       , l_array_reference_date_2
187363       , l_array_reference_date_3
187364       , l_array_reference_date_4
187365       , l_array_event_created_by
187366       , l_array_budgetary_control_flag
187367       , l_array_extract_line_num 
187368       , l_array_source_1
187369       , l_array_source_2
187370       , l_array_source_3
187371       , l_array_source_4
187372       , l_array_source_5
187373       , l_array_source_11
187374       LIMIT l_rows;
187375 
187376   --
187377   IF (C_LEVEL_EVENT >= g_log_level) THEN
187378             trace
187379                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
187380                ,p_level    => C_LEVEL_EVENT
187381                ,p_module   => l_log_module);
187382   END IF;
187383   --
187384   EXIT WHEN l_array_entity_id.count = 0;
187385 
187386   XLA_AE_LINES_PKG.g_rec_lines := null;
187387 
187388 --
187389 -- Bug 4458708
187390 --
187391 XLA_AE_LINES_PKG.g_LineNumber := 0;
187392 --
187393 --
187394 
187395 FOR Idx IN 1..l_array_event_id.count LOOP
187396    --
187397    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
187398    --
187399    l_event_id := l_array_event_id(idx);  -- 5648433
187400 
187401    --
187402    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
187403    --
187404 
187405    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
187406              (g_array_event(l_event_id).array_value_num('header_index'))
187407          ,'N'
187408          ) <> 'Y'
187409    THEN
187410       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187411          trace
187412             (p_msg      => 'Trancaction revesal option is not Y '
187413             ,p_level    => C_LEVEL_STATEMENT
187414             ,p_module   => l_log_module);
187415       END IF;
187416 
187417 --
187418 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
187419 --
187420 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
187421 --
187422 -- set event info as cache for other routines to refer event attributes
187423 --
187424 
187425 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
187426    l_previous_event_id := l_event_id;
187427 
187428    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
187429       (p_application_id           => p_application_id
187430       ,p_primary_ledger_id        => p_primary_ledger_id
187431       ,p_base_ledger_id           => p_base_ledger_id
187432       ,p_target_ledger_id         => p_target_ledger_id
187433       ,p_entity_id                => l_array_entity_id(Idx)
187434       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
187435       ,p_entity_code              => l_array_entity_code(Idx)
187436       ,p_transaction_num          => l_array_transaction_num(Idx)
187437       ,p_event_id                 => l_array_event_id(Idx)
187438       ,p_event_class_code         => l_array_class_code(Idx)
187439       ,p_event_type_code          => l_array_event_type(Idx)
187440       ,p_event_number             => l_array_event_number(Idx)
187441       ,p_event_date               => l_array_event_date(Idx)
187442       ,p_transaction_date         => l_array_transaction_date(Idx)
187443       ,p_reference_num_1          => l_array_reference_num_1(Idx)
187444       ,p_reference_num_2          => l_array_reference_num_2(Idx)
187445       ,p_reference_num_3          => l_array_reference_num_3(Idx)
187446       ,p_reference_num_4          => l_array_reference_num_4(Idx)
187447       ,p_reference_char_1         => l_array_reference_char_1(Idx)
187448       ,p_reference_char_2         => l_array_reference_char_2(Idx)
187449       ,p_reference_char_3         => l_array_reference_char_3(Idx)
187450       ,p_reference_char_4         => l_array_reference_char_4(Idx)
187451       ,p_reference_date_1         => l_array_reference_date_1(Idx)
187452       ,p_reference_date_2         => l_array_reference_date_2(Idx)
187453       ,p_reference_date_3         => l_array_reference_date_3(Idx)
187457        --
187454       ,p_reference_date_4         => l_array_reference_date_4(Idx)
187455       ,p_event_created_by         => l_array_event_created_by(Idx)
187456       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
187458 END IF;
187459 
187460 
187461 
187462 --
187463 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
187464 
187465 l_acct_reversal_source := SUBSTR(NULL, 1,30);
187466 
187467 IF l_continue_with_lines THEN
187468    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
187469       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
187470 
187471       xla_accounting_err_pkg.build_message
187472          (p_appli_s_name            => 'XLA'
187473          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
187474          ,p_token_1                 => 'LINE_NUMBER'
187475          ,p_value_1                 => l_array_extract_line_num(Idx)
187476          ,p_token_2                 => 'PRODUCT_NAME'
187477          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
187478          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
187479          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
187480          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
187481 
187482    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
187483       --
187484       -- following sets the accounting attributes needed to reverse
187485       -- accounting for a distributeion
187486       --
187487 
187488       --
187489       -- 5217187
187490       --
187491       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
187492       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
187493                                        g_array_event(l_event_id).array_value_num('header_index'));
187494       --
187495       --
187496 
187497       -- No reversal code generated
187498 
187499       xla_ae_lines_pkg.SetAcctReversalAttrs
187500          (p_event_id             => l_event_id
187501          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
187502          ,p_calculate_acctd_flag => l_calculate_acctd_flag
187503          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
187504    END IF;
187505 
187506    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
187507        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
187508 
187509 --
187510 AcctLineType_110 (
187511  p_application_id  => p_application_id
187512  ,p_event_id     => l_event_id
187513  ,p_calculate_acctd_flag => l_calculate_acctd_flag
187514  ,p_calculate_g_l_flag => l_calculate_g_l_flag
187515  ,p_actual_flag => l_actual_flag
187516  ,p_balance_type_code => l_balance_type_code
187517  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187518  
187519  , p_source_1 => l_array_source_1(Idx)
187520  , p_source_2 => l_array_source_2(Idx)
187521  , p_source_3 => l_array_source_3(Idx)
187522  , p_source_4 => l_array_source_4(Idx)
187523  , p_source_5 => l_array_source_5(Idx)
187524  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
187525  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
187526  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
187527  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
187528  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
187529  , p_source_11 => l_array_source_11(Idx)
187530  );
187531 If(l_balance_type_code = 'A') THEN
187532   l_actual_gain_loss_ref := l_gain_or_loss_ref;
187533 END IF;
187534 
187535 --
187536 
187537 
187538 --
187539 AcctLineType_111 (
187540  p_application_id  => p_application_id
187541  ,p_event_id     => l_event_id
187542  ,p_calculate_acctd_flag => l_calculate_acctd_flag
187543  ,p_calculate_g_l_flag => l_calculate_g_l_flag
187544  ,p_actual_flag => l_actual_flag
187545  ,p_balance_type_code => l_balance_type_code
187546  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187547  
187548  , p_source_1 => l_array_source_1(Idx)
187549  , p_source_2 => l_array_source_2(Idx)
187550  , p_source_3 => l_array_source_3(Idx)
187551  , p_source_4 => l_array_source_4(Idx)
187552  , p_source_5 => l_array_source_5(Idx)
187553  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
187554  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
187555  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
187556  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
187557  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
187558  , p_source_11 => l_array_source_11(Idx)
187559  );
187560 If(l_balance_type_code = 'A') THEN
187561   l_actual_gain_loss_ref := l_gain_or_loss_ref;
187562 END IF;
187563 
187564 --
187565 
187566 
187567 --
187568 AcctLineType_169 (
187569  p_application_id  => p_application_id
187570  ,p_event_id     => l_event_id
187571  ,p_calculate_acctd_flag => l_calculate_acctd_flag
187572  ,p_calculate_g_l_flag => l_calculate_g_l_flag
187573  ,p_actual_flag => l_actual_flag
187574  ,p_balance_type_code => l_balance_type_code
187575  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187576  
187577  , p_source_1 => l_array_source_1(Idx)
187578  , p_source_2 => l_array_source_2(Idx)
187579  , p_source_3 => l_array_source_3(Idx)
187580  , p_source_4 => l_array_source_4(Idx)
187581  , p_source_5 => l_array_source_5(Idx)
187582  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
187583  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
187584  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
187585  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
187586  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
187587  , p_source_11 => l_array_source_11(Idx)
187588  );
187592 
187589 If(l_balance_type_code = 'A') THEN
187590   l_actual_gain_loss_ref := l_gain_or_loss_ref;
187591 END IF;
187593 --
187594 
187595 
187596 --
187597 AcctLineType_170 (
187598  p_application_id  => p_application_id
187599  ,p_event_id     => l_event_id
187600  ,p_calculate_acctd_flag => l_calculate_acctd_flag
187601  ,p_calculate_g_l_flag => l_calculate_g_l_flag
187602  ,p_actual_flag => l_actual_flag
187603  ,p_balance_type_code => l_balance_type_code
187604  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187605  
187606  , p_source_1 => l_array_source_1(Idx)
187607  , p_source_2 => l_array_source_2(Idx)
187608  , p_source_3 => l_array_source_3(Idx)
187609  , p_source_4 => l_array_source_4(Idx)
187610  , p_source_5 => l_array_source_5(Idx)
187611  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
187612  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
187613  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
187614  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
187615  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
187616  , p_source_11 => l_array_source_11(Idx)
187617  );
187618 If(l_balance_type_code = 'A') THEN
187619   l_actual_gain_loss_ref := l_gain_or_loss_ref;
187620 END IF;
187621 
187622 --
187623 
187624       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
187625       -- or secondary ledger that has different currency with primary
187626       -- or alc that is calculated by sla
187627       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
187628             (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'))
187629 
187630 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
187631 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
187632           AND (l_actual_flag = 'A')) THEN
187633         XLA_AE_LINES_PKG.CreateGainOrLossLines(
187634           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
187635          ,p_application_id   => p_application_id
187636          ,p_amb_context_code => 'DEFAULT'
187637          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
187638          ,p_event_class_code => C_EVENT_CLASS_CODE
187639          ,p_event_type_code  => C_EVENT_TYPE_CODE
187640          
187641          ,p_gain_ccid        => -1
187642          ,p_loss_ccid        => -1
187643 
187644          ,p_actual_flag      => l_actual_flag
187645          ,p_enc_flag         => null
187646          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
187647          ,p_enc_g_l_ref      => null
187648          );
187649       END IF;
187650    END IF;
187651 END IF;
187652 
187653    ELSE
187654       --
187655       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
187656       --
187657       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187658          trace
187659             (p_msg      => 'Trancaction revesal option is Y'
187660             ,p_level    => C_LEVEL_STATEMENT
187661             ,p_module   => l_log_module);
187662       END IF;
187663    END IF;
187664 
187665 END LOOP;
187666 l_result := XLA_AE_LINES_PKG.InsertLines ;
187667 end loop;
187668 close line_cur;
187669 
187670 
187671 --
187672 -- insert headers into xla_ae_headers_gt table
187673 --
187674 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
187675 
187676 -- insert into errors table here.
187677 
187678 END LOOP;
187679 
187680 --
187681 -- 4865292
187682 --
187683 -- Compare g_hdr_extract_count with event count in
187684 -- CreateHeadersAndLines.
187685 --
187686 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
187687 
187688 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187689    trace (p_msg     => '# rows extracted from header extract objects '
187690                     || ' (running total): '
187691                     || g_hdr_extract_count
187692          ,p_level   => C_LEVEL_STATEMENT
187693          ,p_module  => l_log_module);
187694 END IF;
187695 
187696 CLOSE header_cur;
187697 --
187698 
187699 --
187700 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187701    trace
187702       (p_msg      => 'END of EventClass_303'
187703       ,p_level    => C_LEVEL_PROCEDURE
187704       ,p_module   => l_log_module);
187705 END IF;
187706 --
187707 RETURN l_result;
187708 EXCEPTION
187709 WHEN xla_exceptions_pkg.application_exception THEN
187710    
187711 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
187712 
187713    
187714 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
187715 
187716    RAISE;
187717 
187718 WHEN NO_DATA_FOUND THEN
187719 
187720 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
187721 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
187722 
187723 FOR header_record IN header_cur
187724 LOOP
187725     l_array_header_events(header_record.event_id) := header_record.event_id;
187726 END LOOP;
187727 
187728 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
187729 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
187730 
187731 fnd_file.put_line(fnd_file.LOG, '                    ');
187732 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
187733 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
187734 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
187735 
187736 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
187737 LOOP
187741 	END IF;
187738 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
187739 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
187740         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
187742 END LOOP;
187743 
187744 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
187745 fnd_file.put_line(fnd_file.LOG, '                    ');
187746 
187747 
187748 xla_exceptions_pkg.raise_message
187749       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventClass_303');
187750 
187751 
187752 WHEN OTHERS THEN
187753    xla_exceptions_pkg.raise_message
187754       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventClass_303');
187755 END EventClass_303;
187756 --
187757 
187758 ---------------------------------------
187759 --
187760 -- PRIVATE PROCEDURE
187761 --         insert_sources_304
187762 --
187763 ----------------------------------------
187764 --
187765 PROCEDURE insert_sources_304(
187766                                 p_target_ledger_id       IN NUMBER
187767                               , p_language               IN VARCHAR2
187768                               , p_sla_ledger_id          IN NUMBER
187769                               , p_pad_start_date         IN DATE
187770                               , p_pad_end_date           IN DATE
187771                          )
187772 IS
187773 
187774 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'XFER_TO_CONSIGNED';
187775 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DELIVER';
187776 p_apps_owner                   VARCHAR2(30);
187777 l_log_module                   VARCHAR2(240);
187778 BEGIN
187779 IF g_log_enabled THEN
187780       l_log_module := C_DEFAULT_MODULE||'.insert_sources_304';
187781 END IF;
187782 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187783 
187784       trace
187785          (p_msg      => 'BEGIN of insert_sources_304'
187786          ,p_level    => C_LEVEL_PROCEDURE
187787          ,p_module   => l_log_module);
187788 
187789 END IF;
187790 
187791 -- select APPS owner
187792 SELECT oracle_username
187793   INTO p_apps_owner
187794   FROM fnd_oracle_userid
187795  WHERE read_only_flag = 'U'
187796 ;
187797 
187798 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187799       trace
187800          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
187801                         ' - p_language = '||p_language||
187802                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
187803                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
187804                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
187805                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
187806          ,p_level    => C_LEVEL_STATEMENT
187807          ,p_module   => l_log_module);
187808 END IF;
187809 
187810 
187811 --
187812 INSERT INTO xla_diag_sources --hdr1
187813 (
187814         event_id
187815       , ledger_id
187816       , sla_ledger_id
187817       , description_language
187818       , object_name
187819       , object_type_code
187820       , line_number
187821       , source_application_id
187822       , source_type_code
187823       , source_code
187824       , source_value
187825       , source_meaning
187826       , created_by
187827       , creation_date
187828       , last_update_date
187829       , last_updated_by
187830       , last_update_login
187831       , program_update_date
187832       , program_application_id
187833       , program_id
187834       , request_id
187835 )
187836 SELECT
187837         event_id
187838       , p_target_ledger_id
187839       , p_sla_ledger_id
187840       , p_language
187841       , object_name
187842       , object_type_code
187843       , line_number
187844       , source_application_id
187845       , source_type_code
187846       , source_code
187847       , SUBSTR(source_value ,1,1996)
187848       , SUBSTR(source_meaning,1,200)
187849       , xla_environment_pkg.g_Usr_Id
187850       , TRUNC(SYSDATE)
187851       , TRUNC(SYSDATE)
187852       , xla_environment_pkg.g_Usr_Id
187853       , xla_environment_pkg.g_Login_Id
187854       , TRUNC(SYSDATE)
187855       , xla_environment_pkg.g_Prog_Appl_Id
187856       , xla_environment_pkg.g_Prog_Id
187857       , xla_environment_pkg.g_Req_Id
187858   FROM (
187859        SELECT xet.event_id                  event_id
187860             , 0                             line_number
187861             , CASE r
187862                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
187863                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
187864                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
187865                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
187866                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
187867                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
187868                 
187869                ELSE null
187870               END                           object_name
187871             , CASE r
187872                 WHEN 1 THEN 'HEADER' 
187873                 WHEN 2 THEN 'HEADER' 
187874                 WHEN 3 THEN 'HEADER' 
187875                 WHEN 4 THEN 'HEADER' 
187876                 WHEN 5 THEN 'HEADER' 
187877                 WHEN 6 THEN 'HEADER' 
187878                 
187879                 ELSE null
187880               END                           object_type_code
187881             , CASE r
187882                 WHEN 1 THEN '555' 
187883                 WHEN 2 THEN '555' 
187884                 WHEN 3 THEN '555' 
187885                 WHEN 4 THEN '555' 
187886                 WHEN 5 THEN '555' 
187887                 WHEN 6 THEN '555' 
187888                 
187889                 ELSE null
187893                 WHEN 1 THEN 'ENTITY_CODE' 
187890               END                           source_application_id
187891             , 'S'             source_type_code
187892             , CASE r
187894                 WHEN 2 THEN 'CURRENCY_CODE' 
187895                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
187896                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
187897                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
187898                 WHEN 6 THEN 'TRANSACTION_DATE' 
187899                 
187900                 ELSE null
187901               END                           source_code
187902             , CASE r
187903                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
187904                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
187905                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
187906                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
187907                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
187908                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
187909                 
187910                 ELSE null
187911               END                           source_value
187912             , CASE r
187913                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
187914                           1010186
187915                          ,TO_CHAR(h1.CURRENCY_CODE)
187916                          ,'CURRENCY_CODE'
187917                          ,'S'
187918                          ,555)
187919                 
187920                 ELSE null
187921               END               source_meaning
187922         FROM xla_events_gt     xet  
187923       , GMF_XLA_EXTRACT_HEADERS  h1
187924             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
187925        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
187926          AND xet.event_type_code = C_EVENT_TYPE_CODE
187927             AND h1.event_id = xet.event_id
187928 
187929 )
187930 ;
187931 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187932 
187933       trace
187934          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
187935          ,p_level    => C_LEVEL_STATEMENT
187936          ,p_module   => l_log_module);
187937 
187938 END IF;
187939 --
187940 
187941 
187942 
187943 --
187944 INSERT INTO xla_diag_sources --line1
187945 (
187946         event_id
187947       , ledger_id
187948       , sla_ledger_id
187949       , description_language
187950       , object_name
187951       , object_type_code
187952       , line_number
187953       , source_application_id
187954       , source_type_code
187955       , source_code
187956       , source_value
187957       , source_meaning
187958       , created_by
187959       , creation_date
187960       , last_update_date
187961       , last_updated_by
187962       , last_update_login
187963       , program_update_date
187964       , program_application_id
187965       , program_id
187966       , request_id
187967 )
187968 SELECT  event_id
187969       , p_target_ledger_id
187970       , p_sla_ledger_id
187971       , p_language
187972       , object_name
187973       , object_type_code
187974       , line_number
187975       , source_application_id
187976       , source_type_code
187977       , source_code
187978       , SUBSTR(source_value,1,1996)
187979       , SUBSTR(source_meaning,1,200)
187980       , xla_environment_pkg.g_Usr_Id
187981       , TRUNC(SYSDATE)
187982       , TRUNC(SYSDATE)
187983       , xla_environment_pkg.g_Usr_Id
187984       , xla_environment_pkg.g_Login_Id
187985       , TRUNC(SYSDATE)
187986       , xla_environment_pkg.g_Prog_Appl_Id
187987       , xla_environment_pkg.g_Prog_Id
187988       , xla_environment_pkg.g_Req_Id
187989   FROM (
187990        SELECT xet.event_id                  event_id
187991             , l2.line_number                 line_number
187992             , CASE r
187993                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
187994                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
187995                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
187996                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
187997                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
187998                 
187999                ELSE null
188000               END                           object_name
188001             , CASE r
188002                 WHEN 1 THEN 'LINE' 
188003                 WHEN 2 THEN 'LINE' 
188004                 WHEN 3 THEN 'LINE' 
188005                 WHEN 4 THEN 'LINE' 
188006                 WHEN 5 THEN 'LINE' 
188007                 
188008                 ELSE null
188009               END                           object_type_code
188010             , CASE r
188011                 WHEN 1 THEN '555' 
188012                 WHEN 2 THEN '555' 
188013                 WHEN 3 THEN '555' 
188014                 WHEN 4 THEN '555' 
188015                 WHEN 5 THEN '555' 
188016                 
188017                 ELSE null
188018               END                           source_application_id
188019             , 'S'             source_type_code
188020             , CASE r
188021                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
188022                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
188023                 WHEN 3 THEN 'ENTERED_AMOUNT' 
188024                 WHEN 4 THEN 'LINE_ID' 
188025                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
188026                 
188027                 ELSE null
188028               END                           source_code
188029             , CASE r
188030                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
188031                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
188032                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
188033                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
188034                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
188035                 
188036                 ELSE null
188040         , GMF_XLA_EXTRACT_LINES  l2
188037               END                           source_value
188038             , null              source_meaning
188039          FROM  xla_events_gt     xet  
188041             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
188042         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
188043           AND xet.event_type_code = C_EVENT_TYPE_CODE
188044             AND l2.event_id          = xet.event_id
188045 
188046 )
188047 ;
188048 --
188049 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188050 
188051       trace
188052          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
188053          ,p_level    => C_LEVEL_STATEMENT
188054          ,p_module   => l_log_module);
188055 
188056 END IF;
188057 
188058 
188059 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188060       trace
188061          (p_msg      => 'END of insert_sources_304'
188062          ,p_level    => C_LEVEL_PROCEDURE
188063          ,p_module   => l_log_module);
188064 END IF;
188065 EXCEPTION
188066   WHEN xla_exceptions_pkg.application_exception THEN
188067       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
188068             trace
188069                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
188070                ,p_level    => C_LEVEL_EXCEPTION
188071                ,p_module   => l_log_module);
188072       END IF;
188073       RAISE;
188074   WHEN OTHERS THEN
188075       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
188076             trace
188077                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
188078                ,p_level    => C_LEVEL_EXCEPTION
188079                ,p_module   => l_log_module);
188080        END IF;
188081        xla_exceptions_pkg.raise_message
188082            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_304');
188083 END insert_sources_304;
188084 --
188085 
188086 ---------------------------------------
188087 --
188088 -- PRIVATE FUNCTION
188089 --         EventType_304
188090 --
188091 ----------------------------------------
188092 --
188093 FUNCTION EventType_304
188094        (p_application_id         IN NUMBER
188095        ,p_base_ledger_id         IN NUMBER
188096        ,p_target_ledger_id       IN NUMBER
188097        ,p_language               IN VARCHAR2
188098        ,p_currency_code          IN VARCHAR2
188099        ,p_sla_ledger_id          IN NUMBER
188100        ,p_pad_start_date         IN DATE
188101        ,p_pad_end_date           IN DATE
188102        ,p_primary_ledger_id      IN NUMBER)
188103 RETURN BOOLEAN IS
188104 --
188105 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'XFER_TO_CONSIGNED';
188106 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DELIVER';
188107 
188108 l_calculate_acctd_flag   VARCHAR2(1) :='N';
188109 l_calculate_g_l_flag     VARCHAR2(1) :='N';
188110 --
188111 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188112 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188113 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188114 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188115 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188116 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188117 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188118 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188119 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188120 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188121 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188122 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188123 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188124 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188125 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188126 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188127 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188128 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188129 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188130 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188131 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188132 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188133 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
188134 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188135 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
188136 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
188137 
188138 l_event_id                             NUMBER;
188139 l_previous_event_id                    NUMBER;
188140 l_first_event_id                       NUMBER;
188141 l_last_event_id                        NUMBER;
188142 
188143 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
188144 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
188145 --
188146 --
188147 l_result                    BOOLEAN := TRUE;
188148 l_rows                      NUMBER  := 1000;
188149 l_event_type_name           VARCHAR2(80) := 'Transfer to Consigned';
188150 l_event_class_name          VARCHAR2(80) := 'Deliver to or Return from Inventory';
188151 l_description               VARCHAR2(4000);
188152 l_transaction_reversal      NUMBER;
188153 l_ae_header_id              NUMBER;
188154 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
188155 l_log_module                VARCHAR2(240);
188156 --
188157 l_acct_reversal_source      VARCHAR2(30);
188158 l_trx_reversal_source       VARCHAR2(30);
188162 l_acc_rev_gl_date_source    DATE;                      -- 4262811
188159 
188160 l_continue_with_lines       BOOLEAN := TRUE;
188161 --
188163 --
188164 type t_array_event_id is table of number index by binary_integer;
188165 
188166 l_rec_array_event                    t_rec_array_event;
188167 l_null_rec_array_event               t_rec_array_event;
188168 l_array_ae_header_id                 xla_number_array_type;
188169 l_actual_flag                        VARCHAR2(1) := NULL;
188170 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
188171 l_balance_type_code                  VARCHAR2(1) :=NULL;
188172 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
188173 
188174 --
188175 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
188176 --
188177 
188178 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
188179 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
188180 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
188181 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
188182 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
188183 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
188184 
188185 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
188186 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
188187 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
188188 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
188189 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
188190 
188191 l_array_source_6              t_array_source_6;
188192 l_array_source_7              t_array_source_7;
188193 l_array_source_8              t_array_source_8;
188194 l_array_source_9              t_array_source_9;
188195 l_array_source_10              t_array_source_10;
188196 l_array_source_12              t_array_source_12;
188197 
188198 l_array_source_1      t_array_source_1;
188199 l_array_source_2      t_array_source_2;
188200 l_array_source_3      t_array_source_3;
188201 l_array_source_5      t_array_source_5;
188202 l_array_source_11      t_array_source_11;
188203 
188204 --
188205 CURSOR header_cur
188206 IS
188207 SELECT /*+ leading(xet) cardinality(xet,1) */
188208 -- Event Type Code: XFER_TO_CONSIGNED
188209 -- Event Class Code: DELIVER
188210     xet.entity_id
188211   , xet.legal_entity_id
188212   , xet.entity_code
188213   , xet.transaction_number
188214   , xet.event_id
188215   , xet.event_class_code
188216   , xet.event_type_code
188217   , xet.event_number
188218   , xet.event_date
188219   , xet.transaction_date
188220   , xet.reference_num_1
188221   , xet.reference_num_2
188222   , xet.reference_num_3
188223   , xet.reference_num_4
188224   , xet.reference_char_1
188225   , xet.reference_char_2
188226   , xet.reference_char_3
188227   , xet.reference_char_4
188228   , xet.reference_date_1
188229   , xet.reference_date_2
188230   , xet.reference_date_3
188231   , xet.reference_date_4
188232   , xet.event_created_by
188233   , xet.budgetary_control_flag 
188234   , h1.ENTITY_CODE    source_6
188235   , h1.CURRENCY_CODE    source_7
188236   , h1.CURRENCY_CONVERSION_DATE    source_8
188237   , h1.CURRENCY_CONVERSION_RATE    source_9
188238   , h1.CURRENCY_CONVERSION_TYPE    source_10
188239   , h1.TRANSACTION_DATE    source_12
188240   FROM xla_events_gt     xet 
188241   , GMF_XLA_EXTRACT_HEADERS  h1
188242  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
188243    and xet.event_type_code = C_EVENT_TYPE_CODE
188244    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
188245 
188246  ORDER BY event_id
188247 ;
188248 
188249 
188250 --
188251 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
188252 IS
188253 SELECT /*+ leading(xet) cardinality(xet,1) */
188254 -- Event Type Code: XFER_TO_CONSIGNED
188255 -- Event Class Code: DELIVER
188256     xet.entity_id
188257    ,xet.legal_entity_id
188258    ,xet.entity_code
188259    ,xet.transaction_number
188260    ,xet.event_id
188261    ,xet.event_class_code
188262    ,xet.event_type_code
188263    ,xet.event_number
188264    ,xet.event_date
188265    ,xet.transaction_date
188266    ,xet.reference_num_1
188267    ,xet.reference_num_2
188268    ,xet.reference_num_3
188269    ,xet.reference_num_4
188270    ,xet.reference_char_1
188271    ,xet.reference_char_2
188272    ,xet.reference_char_3
188273    ,xet.reference_char_4
188274    ,xet.reference_date_1
188275    ,xet.reference_date_2
188276    ,xet.reference_date_3
188277    ,xet.reference_date_4
188278    ,xet.event_created_by
188279    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
188280   , l2.TRANSACTION_ACCOUNT_ID    source_1
188281   , l2.JOURNAL_LINE_TYPE    source_2
188282   , l2.ENTERED_AMOUNT    source_3
188283   , l2.LINE_ID    source_5
188284   , l2.ACCOUNTED_AMOUNT    source_11
188285   FROM xla_events_gt     xet 
188286   , GMF_XLA_EXTRACT_LINES  l2
188287  WHERE xet.event_id between x_first_event_id and x_last_event_id
188288    and xet.event_date between p_pad_start_date and p_pad_end_date
188289    and xet.event_type_code = C_EVENT_TYPE_CODE
188290    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
188291 ;
188292 
188293 --
188294 BEGIN
188295 IF g_log_enabled THEN
188296    l_log_module := C_DEFAULT_MODULE||'.EventType_304';
188297 END IF;
188298 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188299    trace
188303 END IF;
188300       (p_msg      => 'BEGIN of EventType_304'
188301       ,p_level    => C_LEVEL_PROCEDURE
188302       ,p_module   => l_log_module);
188304 
188305 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188306    trace
188307       (p_msg      => 'p_application_id = '||p_application_id||
188308                      ' - p_base_ledger_id = '||p_base_ledger_id||
188309                      ' - p_target_ledger_id  = '||p_target_ledger_id||
188310                      ' - p_language = '||p_language||
188311                      ' - p_currency_code = '||p_currency_code||
188312                      ' - p_sla_ledger_id = '||p_sla_ledger_id
188313       ,p_level    => C_LEVEL_STATEMENT
188314       ,p_module   => l_log_module);
188315 END IF;
188316 --
188317 -- initialze arrays
188318 --
188319 g_array_event.DELETE;
188320 l_rec_array_event := l_null_rec_array_event;
188321 --
188322 --------------------------------------
188323 -- 4262811 Initialze MPA Line Number
188324 --------------------------------------
188325 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
188326 
188327 --
188328 
188329 --
188330 OPEN header_cur;
188331 --
188332 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188333    trace
188334    (p_msg      => 'SQL - FETCH header_cur'
188335    ,p_level    => C_LEVEL_STATEMENT
188336    ,p_module   => l_log_module);
188337 END IF;
188338 --
188339 LOOP
188340 FETCH header_cur BULK COLLECT INTO
188341         l_array_entity_id
188342       , l_array_legal_entity_id
188343       , l_array_entity_code
188344       , l_array_transaction_num
188345       , l_array_event_id
188346       , l_array_class_code
188347       , l_array_event_type
188348       , l_array_event_number
188349       , l_array_event_date
188350       , l_array_transaction_date
188351       , l_array_reference_num_1
188352       , l_array_reference_num_2
188353       , l_array_reference_num_3
188354       , l_array_reference_num_4
188355       , l_array_reference_char_1
188356       , l_array_reference_char_2
188357       , l_array_reference_char_3
188358       , l_array_reference_char_4
188359       , l_array_reference_date_1
188360       , l_array_reference_date_2
188361       , l_array_reference_date_3
188362       , l_array_reference_date_4
188363       , l_array_event_created_by
188364       , l_array_budgetary_control_flag 
188365       , l_array_source_6
188366       , l_array_source_7
188367       , l_array_source_8
188368       , l_array_source_9
188369       , l_array_source_10
188370       , l_array_source_12
188371       LIMIT l_rows;
188372 --
188373 IF (C_LEVEL_EVENT >= g_log_level) THEN
188374    trace
188375    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
188376    ,p_level    => C_LEVEL_EVENT
188377    ,p_module   => l_log_module);
188378 END IF;
188379 --
188380 EXIT WHEN l_array_entity_id.COUNT = 0;
188381 
188382 -- initialize arrays
188383 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
188384 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
188385 
188386 --
188387 -- Bug 4458708
188388 --
188389 XLA_AE_LINES_PKG.g_LineNumber := 0;
188390 
188391 
188392 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
188393 g_last_hdr_idx := l_array_event_id.LAST;
188394 --
188395 -- loop for the headers. Each iteration is for each header extract row
188396 -- fetched in header cursor
188397 --
188398 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
188399 
188400 --
188401 -- set event info as cache for other routines to refer event attributes
188402 --
188403 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
188404    (p_application_id           => p_application_id
188405    ,p_primary_ledger_id        => p_primary_ledger_id
188406    ,p_base_ledger_id           => p_base_ledger_id
188407    ,p_target_ledger_id         => p_target_ledger_id
188408    ,p_entity_id                => l_array_entity_id(hdr_idx)
188409    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
188410    ,p_entity_code              => l_array_entity_code(hdr_idx)
188411    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
188412    ,p_event_id                 => l_array_event_id(hdr_idx)
188413    ,p_event_class_code         => l_array_class_code(hdr_idx)
188414    ,p_event_type_code          => l_array_event_type(hdr_idx)
188415    ,p_event_number             => l_array_event_number(hdr_idx)
188416    ,p_event_date               => l_array_event_date(hdr_idx)
188417    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
188418    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
188419    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
188420    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
188421    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
188422    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
188423    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
188424    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
188425    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
188426    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
188427    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
188428    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
188429    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
188430    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
188431    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
188432 
188433 --
188434 -- set the status of entry to C_VALID (0)
188435 --
188436 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
188437 
188438 --
188439 -- initialize a row for ae header
188440 --
188441 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
188442 
188446 -- storing the hdr_idx for event. May be used by line cursor.
188443 l_event_id := l_array_event_id(hdr_idx);
188444 
188445 --
188447 --
188448 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
188449 
188450 --
188451 -- store sources from header extract. This can be improved to
188452 -- store only those sources from header extract that may be used in lines
188453 --
188454 
188455 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
188456 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
188457 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
188458 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
188459 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
188460 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
188461 
188462 --
188463 -- initilaize the status of ae headers for diffrent balance types
188464 -- the status is initialised to C_NOT_CREATED (2)
188465 --
188466 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
188467 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
188468 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
188469 
188470 --
188471 -- call api to validate and store accounting attributes for header
188472 --
188473 
188474 ------------------------------------------------------------
188475 -- Accrual Reversal : to get date for Standard Source (NONE)
188476 ------------------------------------------------------------
188477 l_acc_rev_gl_date_source := NULL;
188478 
188479      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
188480       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
188481 
188482 
188483 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
188484 
188485 XLA_AE_HEADER_PKG.SetJeCategoryName;
188486 
188487 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
188488 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
188489 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
188490 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
188491 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
188492 
188493 
188494 -- No header level analytical criteria
188495 
188496 --
188497 --accounting attribute enhancement, bug 3612931
188498 --
188499 l_trx_reversal_source := SUBSTR(NULL, 1,30);
188500 
188501 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
188502    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
188503 
188504    xla_accounting_err_pkg.build_message
188505       (p_appli_s_name            => 'XLA'
188506       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
188507       ,p_token_1                 => 'ACCT_ATTR_NAME'
188508       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
188509       ,p_token_2                 => 'PRODUCT_NAME'
188510       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
188511       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
188512       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
188513       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
188514 
188515 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
188516    --
188517    -- following sets the accounting attributes needed to reverse
188518    -- accounting for a distributeion
188519    --
188520    xla_ae_lines_pkg.SetTrxReversalAttrs
188521       (p_event_id              => l_event_id
188522       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
188523       ,p_trx_reversal_source   => l_trx_reversal_source);
188524 
188525 END IF;
188526 
188527 
188528 ----------------------------------------------------------------
188529 -- 4262811 -  update the header statuses to invalid in need be
188530 ----------------------------------------------------------------
188531 --
188532 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
188533 
188534 
188535   -----------------------------------------------
188536   -- No accrual reversal for the event class/type
188537   -----------------------------------------------
188538 ----------------------------------------------------------------
188539 
188540 --
188541 -- this ends the header loop iteration for one bulk fetch
188542 --
188543 END LOOP;
188544 
188545 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
188546 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
188547 
188548 --
188549 -- insert dummy rows into lines gt table that were created due to
188550 -- transaction reversals
188551 --
188552 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
188553    l_result := XLA_AE_LINES_PKG.InsertLines;
188554 END IF;
188555 
188556 --
188557 -- reset the temp_line_num for each set of events fetched from header
188558 -- cursor rather than doing it for each new event in line cursor
188559 -- Bug 3939231
188560 --
188561 xla_ae_lines_pkg.g_temp_line_num := 0;
188562 
188563 
188564 
188565 --
188566 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
188567 --
188568 --
188569 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188570 
188571       trace
188572          (p_msg      => 'SQL - FETCH line_cur'
188573          ,p_level    => C_LEVEL_STATEMENT
188574          ,p_module   => l_log_module);
188575 
188576 END IF;
188580   --
188577 --
188578 --
188579 LOOP
188581   FETCH line_cur BULK COLLECT INTO
188582         l_array_entity_id
188583       , l_array_legal_entity_id
188584       , l_array_entity_code
188585       , l_array_transaction_num
188586       , l_array_event_id
188587       , l_array_class_code
188588       , l_array_event_type
188589       , l_array_event_number
188590       , l_array_event_date
188591       , l_array_transaction_date
188592       , l_array_reference_num_1
188593       , l_array_reference_num_2
188594       , l_array_reference_num_3
188595       , l_array_reference_num_4
188596       , l_array_reference_char_1
188597       , l_array_reference_char_2
188598       , l_array_reference_char_3
188599       , l_array_reference_char_4
188600       , l_array_reference_date_1
188601       , l_array_reference_date_2
188602       , l_array_reference_date_3
188603       , l_array_reference_date_4
188604       , l_array_event_created_by
188605       , l_array_budgetary_control_flag
188606       , l_array_extract_line_num 
188607       , l_array_source_1
188608       , l_array_source_2
188609       , l_array_source_3
188610       , l_array_source_5
188611       , l_array_source_11
188612       LIMIT l_rows;
188613 
188614   --
188615   IF (C_LEVEL_EVENT >= g_log_level) THEN
188616             trace
188617                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
188618                ,p_level    => C_LEVEL_EVENT
188619                ,p_module   => l_log_module);
188620   END IF;
188621   --
188622   EXIT WHEN l_array_entity_id.count = 0;
188623 
188624   XLA_AE_LINES_PKG.g_rec_lines := null;
188625 
188626 --
188627 -- Bug 4458708
188628 --
188629 XLA_AE_LINES_PKG.g_LineNumber := 0;
188630 --
188631 --
188632 
188633 FOR Idx IN 1..l_array_event_id.count LOOP
188634    --
188635    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
188636    --
188637    l_event_id := l_array_event_id(idx);  -- 5648433
188638 
188639    --
188640    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
188641    --
188642 
188643    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
188644              (g_array_event(l_event_id).array_value_num('header_index'))
188645          ,'N'
188646          ) <> 'Y'
188647    THEN
188648       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188649          trace
188650             (p_msg      => 'Trancaction revesal option is not Y '
188651             ,p_level    => C_LEVEL_STATEMENT
188652             ,p_module   => l_log_module);
188653       END IF;
188654 
188655 --
188656 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
188657 --
188658 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
188659 --
188660 -- set event info as cache for other routines to refer event attributes
188661 --
188662 
188663 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
188664    l_previous_event_id := l_event_id;
188665 
188666    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
188667       (p_application_id           => p_application_id
188668       ,p_primary_ledger_id        => p_primary_ledger_id
188669       ,p_base_ledger_id           => p_base_ledger_id
188670       ,p_target_ledger_id         => p_target_ledger_id
188671       ,p_entity_id                => l_array_entity_id(Idx)
188672       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
188673       ,p_entity_code              => l_array_entity_code(Idx)
188674       ,p_transaction_num          => l_array_transaction_num(Idx)
188675       ,p_event_id                 => l_array_event_id(Idx)
188676       ,p_event_class_code         => l_array_class_code(Idx)
188677       ,p_event_type_code          => l_array_event_type(Idx)
188678       ,p_event_number             => l_array_event_number(Idx)
188679       ,p_event_date               => l_array_event_date(Idx)
188680       ,p_transaction_date         => l_array_transaction_date(Idx)
188681       ,p_reference_num_1          => l_array_reference_num_1(Idx)
188682       ,p_reference_num_2          => l_array_reference_num_2(Idx)
188683       ,p_reference_num_3          => l_array_reference_num_3(Idx)
188684       ,p_reference_num_4          => l_array_reference_num_4(Idx)
188685       ,p_reference_char_1         => l_array_reference_char_1(Idx)
188686       ,p_reference_char_2         => l_array_reference_char_2(Idx)
188687       ,p_reference_char_3         => l_array_reference_char_3(Idx)
188688       ,p_reference_char_4         => l_array_reference_char_4(Idx)
188689       ,p_reference_date_1         => l_array_reference_date_1(Idx)
188690       ,p_reference_date_2         => l_array_reference_date_2(Idx)
188691       ,p_reference_date_3         => l_array_reference_date_3(Idx)
188692       ,p_reference_date_4         => l_array_reference_date_4(Idx)
188693       ,p_event_created_by         => l_array_event_created_by(Idx)
188694       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
188695        --
188696 END IF;
188697 
188698 
188699 
188700 --
188701 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
188702 
188703 l_acct_reversal_source := SUBSTR(NULL, 1,30);
188704 
188705 IF l_continue_with_lines THEN
188706    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
188707       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
188708 
188709       xla_accounting_err_pkg.build_message
188710          (p_appli_s_name            => 'XLA'
188711          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
188712          ,p_token_1                 => 'LINE_NUMBER'
188713          ,p_value_1                 => l_array_extract_line_num(Idx)
188714          ,p_token_2                 => 'PRODUCT_NAME'
188715          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
188719 
188716          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
188717          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
188718          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
188720    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
188721       --
188722       -- following sets the accounting attributes needed to reverse
188723       -- accounting for a distributeion
188724       --
188725 
188726       --
188727       -- 5217187
188728       --
188729       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
188730       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
188731                                        g_array_event(l_event_id).array_value_num('header_index'));
188732       --
188733       --
188734 
188735       -- No reversal code generated
188736 
188737       xla_ae_lines_pkg.SetAcctReversalAttrs
188738          (p_event_id             => l_event_id
188739          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
188740          ,p_calculate_acctd_flag => l_calculate_acctd_flag
188741          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
188742    END IF;
188743 
188744    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
188745        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
188746 
188747 --
188748 AcctLineType_49 (
188749  p_application_id  => p_application_id
188750  ,p_event_id     => l_event_id
188751  ,p_calculate_acctd_flag => l_calculate_acctd_flag
188752  ,p_calculate_g_l_flag => l_calculate_g_l_flag
188753  ,p_actual_flag => l_actual_flag
188754  ,p_balance_type_code => l_balance_type_code
188755  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188756  
188757  , p_source_1 => l_array_source_1(Idx)
188758  , p_source_2 => l_array_source_2(Idx)
188759  , p_source_3 => l_array_source_3(Idx)
188760  , p_source_5 => l_array_source_5(Idx)
188761  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
188762  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
188763  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
188764  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
188765  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
188766  , p_source_11 => l_array_source_11(Idx)
188767  );
188768 If(l_balance_type_code = 'A') THEN
188769   l_actual_gain_loss_ref := l_gain_or_loss_ref;
188770 END IF;
188771 
188772 --
188773 
188774 
188775 --
188776 AcctLineType_109 (
188777  p_application_id  => p_application_id
188778  ,p_event_id     => l_event_id
188779  ,p_calculate_acctd_flag => l_calculate_acctd_flag
188780  ,p_calculate_g_l_flag => l_calculate_g_l_flag
188781  ,p_actual_flag => l_actual_flag
188782  ,p_balance_type_code => l_balance_type_code
188783  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188784  
188785  , p_source_1 => l_array_source_1(Idx)
188786  , p_source_2 => l_array_source_2(Idx)
188787  , p_source_3 => l_array_source_3(Idx)
188788  , p_source_5 => l_array_source_5(Idx)
188789  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
188790  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
188791  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
188792  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
188793  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
188794  , p_source_11 => l_array_source_11(Idx)
188795  );
188796 If(l_balance_type_code = 'A') THEN
188797   l_actual_gain_loss_ref := l_gain_or_loss_ref;
188798 END IF;
188799 
188800 --
188801 
188802 
188803 --
188804 AcctLineType_126 (
188805  p_application_id  => p_application_id
188806  ,p_event_id     => l_event_id
188807  ,p_calculate_acctd_flag => l_calculate_acctd_flag
188808  ,p_calculate_g_l_flag => l_calculate_g_l_flag
188809  ,p_actual_flag => l_actual_flag
188810  ,p_balance_type_code => l_balance_type_code
188811  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188812  
188813  , p_source_1 => l_array_source_1(Idx)
188814  , p_source_2 => l_array_source_2(Idx)
188815  , p_source_3 => l_array_source_3(Idx)
188816  , p_source_5 => l_array_source_5(Idx)
188817  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
188818  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
188819  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
188820  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
188821  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
188822  , p_source_11 => l_array_source_11(Idx)
188823  );
188824 If(l_balance_type_code = 'A') THEN
188825   l_actual_gain_loss_ref := l_gain_or_loss_ref;
188826 END IF;
188827 
188828 --
188829 
188830 
188831 --
188832 AcctLineType_156 (
188833  p_application_id  => p_application_id
188834  ,p_event_id     => l_event_id
188835  ,p_calculate_acctd_flag => l_calculate_acctd_flag
188836  ,p_calculate_g_l_flag => l_calculate_g_l_flag
188837  ,p_actual_flag => l_actual_flag
188838  ,p_balance_type_code => l_balance_type_code
188839  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188840  
188841  , p_source_1 => l_array_source_1(Idx)
188842  , p_source_2 => l_array_source_2(Idx)
188843  , p_source_3 => l_array_source_3(Idx)
188844  , p_source_5 => l_array_source_5(Idx)
188845  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
188846  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
188847  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
188848  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
188849  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
188850  , p_source_11 => l_array_source_11(Idx)
188851  );
188852 If(l_balance_type_code = 'A') THEN
188853   l_actual_gain_loss_ref := l_gain_or_loss_ref;
188857 
188854 END IF;
188855 
188856 --
188858 
188859 --
188860 AcctLineType_202 (
188861  p_application_id  => p_application_id
188862  ,p_event_id     => l_event_id
188863  ,p_calculate_acctd_flag => l_calculate_acctd_flag
188864  ,p_calculate_g_l_flag => l_calculate_g_l_flag
188865  ,p_actual_flag => l_actual_flag
188866  ,p_balance_type_code => l_balance_type_code
188867  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188868  
188869  , p_source_1 => l_array_source_1(Idx)
188870  , p_source_2 => l_array_source_2(Idx)
188871  , p_source_3 => l_array_source_3(Idx)
188872  , p_source_5 => l_array_source_5(Idx)
188873  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
188874  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
188875  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
188876  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
188877  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
188878  , p_source_11 => l_array_source_11(Idx)
188879  );
188880 If(l_balance_type_code = 'A') THEN
188881   l_actual_gain_loss_ref := l_gain_or_loss_ref;
188882 END IF;
188883 
188884 --
188885 
188886 
188887 --
188888 AcctLineType_229 (
188889  p_application_id  => p_application_id
188890  ,p_event_id     => l_event_id
188891  ,p_calculate_acctd_flag => l_calculate_acctd_flag
188892  ,p_calculate_g_l_flag => l_calculate_g_l_flag
188893  ,p_actual_flag => l_actual_flag
188894  ,p_balance_type_code => l_balance_type_code
188895  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188896  
188897  , p_source_1 => l_array_source_1(Idx)
188898  , p_source_2 => l_array_source_2(Idx)
188899  , p_source_3 => l_array_source_3(Idx)
188900  , p_source_5 => l_array_source_5(Idx)
188901  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
188902  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
188903  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
188904  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
188905  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
188906  , p_source_11 => l_array_source_11(Idx)
188907  );
188908 If(l_balance_type_code = 'A') THEN
188909   l_actual_gain_loss_ref := l_gain_or_loss_ref;
188910 END IF;
188911 
188912 --
188913 
188914       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
188915       -- or secondary ledger that has different currency with primary
188916       -- or alc that is calculated by sla
188917       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
188918             (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'))
188919 
188920 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
188921 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
188922           AND (l_actual_flag = 'A')) THEN
188923         XLA_AE_LINES_PKG.CreateGainOrLossLines(
188924           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
188925          ,p_application_id   => p_application_id
188926          ,p_amb_context_code => 'DEFAULT'
188927          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
188928          ,p_event_class_code => C_EVENT_CLASS_CODE
188929          ,p_event_type_code  => C_EVENT_TYPE_CODE
188930          
188931          ,p_gain_ccid        => -1
188932          ,p_loss_ccid        => -1
188933 
188934          ,p_actual_flag      => l_actual_flag
188935          ,p_enc_flag         => null
188936          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
188937          ,p_enc_g_l_ref      => null
188938          );
188939       END IF;
188940    END IF;
188941 END IF;
188942 
188943    ELSE
188944       --
188945       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
188946       --
188947       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188948          trace
188949             (p_msg      => 'Trancaction revesal option is Y'
188950             ,p_level    => C_LEVEL_STATEMENT
188951             ,p_module   => l_log_module);
188952       END IF;
188953    END IF;
188954 
188955 END LOOP;
188956 l_result := XLA_AE_LINES_PKG.InsertLines ;
188957 end loop;
188958 close line_cur;
188959 
188960 
188961 --
188962 -- insert headers into xla_ae_headers_gt table
188963 --
188964 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
188965 
188966 -- insert into errors table here.
188967 
188968 END LOOP;
188969 
188970 --
188971 -- 4865292
188972 --
188973 -- Compare g_hdr_extract_count with event count in
188974 -- CreateHeadersAndLines.
188975 --
188976 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
188977 
188978 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188979    trace (p_msg     => '# rows extracted from header extract objects '
188980                     || ' (running total): '
188981                     || g_hdr_extract_count
188982          ,p_level   => C_LEVEL_STATEMENT
188983          ,p_module  => l_log_module);
188984 END IF;
188985 
188986 CLOSE header_cur;
188987 --
188988 
188989 --
188990 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188991    trace
188992       (p_msg      => 'END of EventType_304'
188993       ,p_level    => C_LEVEL_PROCEDURE
188994       ,p_module   => l_log_module);
188995 END IF;
188996 --
188997 RETURN l_result;
188998 EXCEPTION
188999 WHEN xla_exceptions_pkg.application_exception THEN
189000    
189001 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
189002 
189003    
189004 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
189005 
189006    RAISE;
189007 
189011 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
189008 WHEN NO_DATA_FOUND THEN
189009 
189010 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
189012 
189013 FOR header_record IN header_cur
189014 LOOP
189015     l_array_header_events(header_record.event_id) := header_record.event_id;
189016 END LOOP;
189017 
189018 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
189019 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
189020 
189021 fnd_file.put_line(fnd_file.LOG, '                    ');
189022 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
189023 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
189024 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
189025 
189026 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
189027 LOOP
189028 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
189029 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
189030         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
189031 	END IF;
189032 END LOOP;
189033 
189034 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
189035 fnd_file.put_line(fnd_file.LOG, '                    ');
189036 
189037 
189038 xla_exceptions_pkg.raise_message
189039       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_304');
189040 
189041 
189042 WHEN OTHERS THEN
189043    xla_exceptions_pkg.raise_message
189044       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_304');
189045 END EventType_304;
189046 --
189047 
189048 ---------------------------------------
189049 --
189050 -- PRIVATE PROCEDURE
189051 --         insert_sources_305
189052 --
189053 ----------------------------------------
189054 --
189055 PROCEDURE insert_sources_305(
189056                                 p_target_ledger_id       IN NUMBER
189057                               , p_language               IN VARCHAR2
189058                               , p_sla_ledger_id          IN NUMBER
189059                               , p_pad_start_date         IN DATE
189060                               , p_pad_end_date           IN DATE
189061                          )
189062 IS
189063 
189064 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'XFER_TO_REGULAR';
189065 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DELIVER';
189066 p_apps_owner                   VARCHAR2(30);
189067 l_log_module                   VARCHAR2(240);
189068 BEGIN
189069 IF g_log_enabled THEN
189070       l_log_module := C_DEFAULT_MODULE||'.insert_sources_305';
189071 END IF;
189072 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189073 
189074       trace
189075          (p_msg      => 'BEGIN of insert_sources_305'
189076          ,p_level    => C_LEVEL_PROCEDURE
189077          ,p_module   => l_log_module);
189078 
189079 END IF;
189080 
189081 -- select APPS owner
189082 SELECT oracle_username
189083   INTO p_apps_owner
189084   FROM fnd_oracle_userid
189085  WHERE read_only_flag = 'U'
189086 ;
189087 
189088 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189089       trace
189090          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
189091                         ' - p_language = '||p_language||
189092                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
189093                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
189094                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
189095                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
189096          ,p_level    => C_LEVEL_STATEMENT
189097          ,p_module   => l_log_module);
189098 END IF;
189099 
189100 
189101 --
189102 INSERT INTO xla_diag_sources --hdr1
189103 (
189104         event_id
189105       , ledger_id
189106       , sla_ledger_id
189107       , description_language
189108       , object_name
189109       , object_type_code
189110       , line_number
189111       , source_application_id
189112       , source_type_code
189113       , source_code
189114       , source_value
189115       , source_meaning
189116       , created_by
189117       , creation_date
189118       , last_update_date
189119       , last_updated_by
189120       , last_update_login
189121       , program_update_date
189122       , program_application_id
189123       , program_id
189124       , request_id
189125 )
189126 SELECT
189127         event_id
189128       , p_target_ledger_id
189129       , p_sla_ledger_id
189130       , p_language
189131       , object_name
189132       , object_type_code
189133       , line_number
189134       , source_application_id
189135       , source_type_code
189136       , source_code
189137       , SUBSTR(source_value ,1,1996)
189138       , SUBSTR(source_meaning,1,200)
189139       , xla_environment_pkg.g_Usr_Id
189140       , TRUNC(SYSDATE)
189141       , TRUNC(SYSDATE)
189142       , xla_environment_pkg.g_Usr_Id
189143       , xla_environment_pkg.g_Login_Id
189144       , TRUNC(SYSDATE)
189145       , xla_environment_pkg.g_Prog_Appl_Id
189146       , xla_environment_pkg.g_Prog_Id
189147       , xla_environment_pkg.g_Req_Id
189148   FROM (
189149        SELECT xet.event_id                  event_id
189150             , 0                             line_number
189151             , CASE r
189152                WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS' 
189153                 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS' 
189154                 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS' 
189155                 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS' 
189156                 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS' 
189160               END                           object_name
189157                 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS' 
189158                 
189159                ELSE null
189161             , CASE r
189162                 WHEN 1 THEN 'HEADER' 
189163                 WHEN 2 THEN 'HEADER' 
189164                 WHEN 3 THEN 'HEADER' 
189165                 WHEN 4 THEN 'HEADER' 
189166                 WHEN 5 THEN 'HEADER' 
189167                 WHEN 6 THEN 'HEADER' 
189168                 
189169                 ELSE null
189170               END                           object_type_code
189171             , CASE r
189172                 WHEN 1 THEN '555' 
189173                 WHEN 2 THEN '555' 
189174                 WHEN 3 THEN '555' 
189175                 WHEN 4 THEN '555' 
189176                 WHEN 5 THEN '555' 
189177                 WHEN 6 THEN '555' 
189178                 
189179                 ELSE null
189180               END                           source_application_id
189181             , 'S'             source_type_code
189182             , CASE r
189183                 WHEN 1 THEN 'ENTITY_CODE' 
189184                 WHEN 2 THEN 'CURRENCY_CODE' 
189185                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
189186                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
189187                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
189188                 WHEN 6 THEN 'TRANSACTION_DATE' 
189189                 
189190                 ELSE null
189191               END                           source_code
189192             , CASE r
189193                 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
189194                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
189195                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
189196                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
189197                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
189198                 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
189199                 
189200                 ELSE null
189201               END                           source_value
189202             , CASE r
189203                 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
189204                           1010186
189205                          ,TO_CHAR(h1.CURRENCY_CODE)
189206                          ,'CURRENCY_CODE'
189207                          ,'S'
189208                          ,555)
189209                 
189210                 ELSE null
189211               END               source_meaning
189212         FROM xla_events_gt     xet  
189213       , GMF_XLA_EXTRACT_HEADERS  h1
189214             ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
189215        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
189216          AND xet.event_type_code = C_EVENT_TYPE_CODE
189217             AND h1.event_id = xet.event_id
189218 
189219 )
189220 ;
189221 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189222 
189223       trace
189224          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
189225          ,p_level    => C_LEVEL_STATEMENT
189226          ,p_module   => l_log_module);
189227 
189228 END IF;
189229 --
189230 
189231 
189232 
189233 --
189234 INSERT INTO xla_diag_sources --line1
189235 (
189236         event_id
189237       , ledger_id
189238       , sla_ledger_id
189239       , description_language
189240       , object_name
189241       , object_type_code
189242       , line_number
189243       , source_application_id
189244       , source_type_code
189245       , source_code
189246       , source_value
189247       , source_meaning
189248       , created_by
189249       , creation_date
189250       , last_update_date
189251       , last_updated_by
189252       , last_update_login
189253       , program_update_date
189254       , program_application_id
189255       , program_id
189256       , request_id
189257 )
189258 SELECT  event_id
189259       , p_target_ledger_id
189260       , p_sla_ledger_id
189261       , p_language
189262       , object_name
189263       , object_type_code
189264       , line_number
189265       , source_application_id
189266       , source_type_code
189267       , source_code
189268       , SUBSTR(source_value,1,1996)
189269       , SUBSTR(source_meaning,1,200)
189270       , xla_environment_pkg.g_Usr_Id
189271       , TRUNC(SYSDATE)
189272       , TRUNC(SYSDATE)
189273       , xla_environment_pkg.g_Usr_Id
189274       , xla_environment_pkg.g_Login_Id
189275       , TRUNC(SYSDATE)
189276       , xla_environment_pkg.g_Prog_Appl_Id
189277       , xla_environment_pkg.g_Prog_Id
189278       , xla_environment_pkg.g_Req_Id
189279   FROM (
189280        SELECT xet.event_id                  event_id
189281             , l2.line_number                 line_number
189282             , CASE r
189283                WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES' 
189284                 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES' 
189285                 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES' 
189286                 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES' 
189287                 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES' 
189288                 
189289                ELSE null
189290               END                           object_name
189291             , CASE r
189292                 WHEN 1 THEN 'LINE' 
189293                 WHEN 2 THEN 'LINE' 
189294                 WHEN 3 THEN 'LINE' 
189295                 WHEN 4 THEN 'LINE' 
189296                 WHEN 5 THEN 'LINE' 
189297                 
189298                 ELSE null
189299               END                           object_type_code
189300             , CASE r
189301                 WHEN 1 THEN '555' 
189302                 WHEN 2 THEN '555' 
189303                 WHEN 3 THEN '555' 
189304                 WHEN 4 THEN '555' 
189305                 WHEN 5 THEN '555' 
189306                 
189310             , CASE r
189307                 ELSE null
189308               END                           source_application_id
189309             , 'S'             source_type_code
189311                 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID' 
189312                 WHEN 2 THEN 'JOURNAL_LINE_TYPE' 
189313                 WHEN 3 THEN 'ENTERED_AMOUNT' 
189314                 WHEN 4 THEN 'LINE_ID' 
189315                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
189316                 
189317                 ELSE null
189318               END                           source_code
189319             , CASE r
189320                 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
189321                 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
189322                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
189323                 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
189324                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
189325                 
189326                 ELSE null
189327               END                           source_value
189328             , null              source_meaning
189329          FROM  xla_events_gt     xet  
189330         , GMF_XLA_EXTRACT_LINES  l2
189331             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
189332         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
189333           AND xet.event_type_code = C_EVENT_TYPE_CODE
189334             AND l2.event_id          = xet.event_id
189335 
189336 )
189337 ;
189338 --
189339 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189340 
189341       trace
189342          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
189343          ,p_level    => C_LEVEL_STATEMENT
189344          ,p_module   => l_log_module);
189345 
189346 END IF;
189347 
189348 
189349 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189350       trace
189351          (p_msg      => 'END of insert_sources_305'
189352          ,p_level    => C_LEVEL_PROCEDURE
189353          ,p_module   => l_log_module);
189354 END IF;
189355 EXCEPTION
189356   WHEN xla_exceptions_pkg.application_exception THEN
189357       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
189358             trace
189359                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
189360                ,p_level    => C_LEVEL_EXCEPTION
189361                ,p_module   => l_log_module);
189362       END IF;
189363       RAISE;
189364   WHEN OTHERS THEN
189365       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
189366             trace
189367                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
189368                ,p_level    => C_LEVEL_EXCEPTION
189369                ,p_module   => l_log_module);
189370        END IF;
189371        xla_exceptions_pkg.raise_message
189372            (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_305');
189373 END insert_sources_305;
189374 --
189375 
189376 ---------------------------------------
189377 --
189378 -- PRIVATE FUNCTION
189379 --         EventType_305
189380 --
189381 ----------------------------------------
189382 --
189383 FUNCTION EventType_305
189384        (p_application_id         IN NUMBER
189385        ,p_base_ledger_id         IN NUMBER
189386        ,p_target_ledger_id       IN NUMBER
189387        ,p_language               IN VARCHAR2
189388        ,p_currency_code          IN VARCHAR2
189389        ,p_sla_ledger_id          IN NUMBER
189390        ,p_pad_start_date         IN DATE
189391        ,p_pad_end_date           IN DATE
189392        ,p_primary_ledger_id      IN NUMBER)
189393 RETURN BOOLEAN IS
189394 --
189395 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'XFER_TO_REGULAR';
189396 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DELIVER';
189397 
189398 l_calculate_acctd_flag   VARCHAR2(1) :='N';
189399 l_calculate_g_l_flag     VARCHAR2(1) :='N';
189400 --
189401 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189402 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189403 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
189404 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189405 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189406 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
189407 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
189408 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189409 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189410 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189411 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189412 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189413 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189414 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189415 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189416 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189417 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189418 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189419 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189420 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189421 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189422 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189423 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
189424 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
189425 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
189426 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
189427 
189428 l_event_id                             NUMBER;
189432 
189429 l_previous_event_id                    NUMBER;
189430 l_first_event_id                       NUMBER;
189431 l_last_event_id                        NUMBER;
189433 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
189434 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
189435 --
189436 --
189437 l_result                    BOOLEAN := TRUE;
189438 l_rows                      NUMBER  := 1000;
189439 l_event_type_name           VARCHAR2(80) := 'Transfer to Regular';
189440 l_event_class_name          VARCHAR2(80) := 'Deliver to or Return from Inventory';
189441 l_description               VARCHAR2(4000);
189442 l_transaction_reversal      NUMBER;
189443 l_ae_header_id              NUMBER;
189444 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
189445 l_log_module                VARCHAR2(240);
189446 --
189447 l_acct_reversal_source      VARCHAR2(30);
189448 l_trx_reversal_source       VARCHAR2(30);
189449 
189450 l_continue_with_lines       BOOLEAN := TRUE;
189451 --
189452 l_acc_rev_gl_date_source    DATE;                      -- 4262811
189453 --
189454 type t_array_event_id is table of number index by binary_integer;
189455 
189456 l_rec_array_event                    t_rec_array_event;
189457 l_null_rec_array_event               t_rec_array_event;
189458 l_array_ae_header_id                 xla_number_array_type;
189459 l_actual_flag                        VARCHAR2(1) := NULL;
189460 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
189461 l_balance_type_code                  VARCHAR2(1) :=NULL;
189462 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
189463 
189464 --
189465 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
189466 --
189467 
189468 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
189469 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
189470 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
189471 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
189472 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
189473 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
189474 
189475 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
189476 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
189477 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
189478 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
189479 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
189480 
189481 l_array_source_6              t_array_source_6;
189482 l_array_source_7              t_array_source_7;
189483 l_array_source_8              t_array_source_8;
189484 l_array_source_9              t_array_source_9;
189485 l_array_source_10              t_array_source_10;
189486 l_array_source_12              t_array_source_12;
189487 
189488 l_array_source_1      t_array_source_1;
189489 l_array_source_2      t_array_source_2;
189490 l_array_source_3      t_array_source_3;
189491 l_array_source_5      t_array_source_5;
189492 l_array_source_11      t_array_source_11;
189493 
189494 --
189495 CURSOR header_cur
189496 IS
189497 SELECT /*+ leading(xet) cardinality(xet,1) */
189498 -- Event Type Code: XFER_TO_REGULAR
189499 -- Event Class Code: DELIVER
189500     xet.entity_id
189501   , xet.legal_entity_id
189502   , xet.entity_code
189503   , xet.transaction_number
189504   , xet.event_id
189505   , xet.event_class_code
189506   , xet.event_type_code
189507   , xet.event_number
189508   , xet.event_date
189509   , xet.transaction_date
189510   , xet.reference_num_1
189511   , xet.reference_num_2
189512   , xet.reference_num_3
189513   , xet.reference_num_4
189514   , xet.reference_char_1
189515   , xet.reference_char_2
189516   , xet.reference_char_3
189517   , xet.reference_char_4
189518   , xet.reference_date_1
189519   , xet.reference_date_2
189520   , xet.reference_date_3
189521   , xet.reference_date_4
189522   , xet.event_created_by
189523   , xet.budgetary_control_flag 
189524   , h1.ENTITY_CODE    source_6
189525   , h1.CURRENCY_CODE    source_7
189526   , h1.CURRENCY_CONVERSION_DATE    source_8
189527   , h1.CURRENCY_CONVERSION_RATE    source_9
189528   , h1.CURRENCY_CONVERSION_TYPE    source_10
189529   , h1.TRANSACTION_DATE    source_12
189530   FROM xla_events_gt     xet 
189531   , GMF_XLA_EXTRACT_HEADERS  h1
189532  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
189533    and xet.event_type_code = C_EVENT_TYPE_CODE
189534    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
189535 
189536  ORDER BY event_id
189537 ;
189538 
189539 
189540 --
189541 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
189542 IS
189543 SELECT /*+ leading(xet) cardinality(xet,1) */
189544 -- Event Type Code: XFER_TO_REGULAR
189545 -- Event Class Code: DELIVER
189546     xet.entity_id
189547    ,xet.legal_entity_id
189548    ,xet.entity_code
189549    ,xet.transaction_number
189550    ,xet.event_id
189551    ,xet.event_class_code
189552    ,xet.event_type_code
189553    ,xet.event_number
189554    ,xet.event_date
189555    ,xet.transaction_date
189556    ,xet.reference_num_1
189557    ,xet.reference_num_2
189558    ,xet.reference_num_3
189559    ,xet.reference_num_4
189560    ,xet.reference_char_1
189561    ,xet.reference_char_2
189562    ,xet.reference_char_3
189563    ,xet.reference_char_4
189564    ,xet.reference_date_1
189565    ,xet.reference_date_2
189569    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
189566    ,xet.reference_date_3
189567    ,xet.reference_date_4
189568    ,xet.event_created_by
189570   , l2.TRANSACTION_ACCOUNT_ID    source_1
189571   , l2.JOURNAL_LINE_TYPE    source_2
189572   , l2.ENTERED_AMOUNT    source_3
189573   , l2.LINE_ID    source_5
189574   , l2.ACCOUNTED_AMOUNT    source_11
189575   FROM xla_events_gt     xet 
189576   , GMF_XLA_EXTRACT_LINES  l2
189577  WHERE xet.event_id between x_first_event_id and x_last_event_id
189578    and xet.event_date between p_pad_start_date and p_pad_end_date
189579    and xet.event_type_code = C_EVENT_TYPE_CODE
189580    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
189581 ;
189582 
189583 --
189584 BEGIN
189585 IF g_log_enabled THEN
189586    l_log_module := C_DEFAULT_MODULE||'.EventType_305';
189587 END IF;
189588 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189589    trace
189590       (p_msg      => 'BEGIN of EventType_305'
189591       ,p_level    => C_LEVEL_PROCEDURE
189592       ,p_module   => l_log_module);
189593 END IF;
189594 
189595 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189596    trace
189597       (p_msg      => 'p_application_id = '||p_application_id||
189598                      ' - p_base_ledger_id = '||p_base_ledger_id||
189599                      ' - p_target_ledger_id  = '||p_target_ledger_id||
189600                      ' - p_language = '||p_language||
189601                      ' - p_currency_code = '||p_currency_code||
189602                      ' - p_sla_ledger_id = '||p_sla_ledger_id
189603       ,p_level    => C_LEVEL_STATEMENT
189604       ,p_module   => l_log_module);
189605 END IF;
189606 --
189607 -- initialze arrays
189608 --
189609 g_array_event.DELETE;
189610 l_rec_array_event := l_null_rec_array_event;
189611 --
189612 --------------------------------------
189613 -- 4262811 Initialze MPA Line Number
189614 --------------------------------------
189615 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
189616 
189617 --
189618 
189619 --
189620 OPEN header_cur;
189621 --
189622 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189623    trace
189624    (p_msg      => 'SQL - FETCH header_cur'
189625    ,p_level    => C_LEVEL_STATEMENT
189626    ,p_module   => l_log_module);
189627 END IF;
189628 --
189629 LOOP
189630 FETCH header_cur BULK COLLECT INTO
189631         l_array_entity_id
189632       , l_array_legal_entity_id
189633       , l_array_entity_code
189634       , l_array_transaction_num
189635       , l_array_event_id
189636       , l_array_class_code
189637       , l_array_event_type
189638       , l_array_event_number
189639       , l_array_event_date
189640       , l_array_transaction_date
189641       , l_array_reference_num_1
189642       , l_array_reference_num_2
189643       , l_array_reference_num_3
189644       , l_array_reference_num_4
189645       , l_array_reference_char_1
189646       , l_array_reference_char_2
189647       , l_array_reference_char_3
189648       , l_array_reference_char_4
189649       , l_array_reference_date_1
189650       , l_array_reference_date_2
189651       , l_array_reference_date_3
189652       , l_array_reference_date_4
189653       , l_array_event_created_by
189654       , l_array_budgetary_control_flag 
189655       , l_array_source_6
189656       , l_array_source_7
189657       , l_array_source_8
189658       , l_array_source_9
189659       , l_array_source_10
189660       , l_array_source_12
189661       LIMIT l_rows;
189662 --
189663 IF (C_LEVEL_EVENT >= g_log_level) THEN
189664    trace
189665    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
189666    ,p_level    => C_LEVEL_EVENT
189667    ,p_module   => l_log_module);
189668 END IF;
189669 --
189670 EXIT WHEN l_array_entity_id.COUNT = 0;
189671 
189672 -- initialize arrays
189673 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
189674 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
189675 
189676 --
189677 -- Bug 4458708
189678 --
189679 XLA_AE_LINES_PKG.g_LineNumber := 0;
189680 
189681 
189682 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
189683 g_last_hdr_idx := l_array_event_id.LAST;
189684 --
189685 -- loop for the headers. Each iteration is for each header extract row
189686 -- fetched in header cursor
189687 --
189688 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
189689 
189690 --
189691 -- set event info as cache for other routines to refer event attributes
189692 --
189693 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
189694    (p_application_id           => p_application_id
189695    ,p_primary_ledger_id        => p_primary_ledger_id
189696    ,p_base_ledger_id           => p_base_ledger_id
189697    ,p_target_ledger_id         => p_target_ledger_id
189698    ,p_entity_id                => l_array_entity_id(hdr_idx)
189699    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
189700    ,p_entity_code              => l_array_entity_code(hdr_idx)
189701    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
189702    ,p_event_id                 => l_array_event_id(hdr_idx)
189703    ,p_event_class_code         => l_array_class_code(hdr_idx)
189704    ,p_event_type_code          => l_array_event_type(hdr_idx)
189705    ,p_event_number             => l_array_event_number(hdr_idx)
189706    ,p_event_date               => l_array_event_date(hdr_idx)
189707    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
189708    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
189709    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
189710    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
189711    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
189712    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
189716    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
189713    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
189714    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
189715    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
189717    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
189718    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
189719    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
189720    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
189721    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
189722 
189723 --
189724 -- set the status of entry to C_VALID (0)
189725 --
189726 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
189727 
189728 --
189729 -- initialize a row for ae header
189730 --
189731 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
189732 
189733 l_event_id := l_array_event_id(hdr_idx);
189734 
189735 --
189736 -- storing the hdr_idx for event. May be used by line cursor.
189737 --
189738 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
189739 
189740 --
189741 -- store sources from header extract. This can be improved to
189742 -- store only those sources from header extract that may be used in lines
189743 --
189744 
189745 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
189746 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
189747 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
189748 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
189749 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
189750 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
189751 
189752 --
189753 -- initilaize the status of ae headers for diffrent balance types
189754 -- the status is initialised to C_NOT_CREATED (2)
189755 --
189756 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
189757 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
189758 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
189759 
189760 --
189761 -- call api to validate and store accounting attributes for header
189762 --
189763 
189764 ------------------------------------------------------------
189765 -- Accrual Reversal : to get date for Standard Source (NONE)
189766 ------------------------------------------------------------
189767 l_acc_rev_gl_date_source := NULL;
189768 
189769      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
189770       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
189771 
189772 
189773 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
189774 
189775 XLA_AE_HEADER_PKG.SetJeCategoryName;
189776 
189777 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
189778 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
189779 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
189780 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
189781 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
189782 
189783 
189784 -- No header level analytical criteria
189785 
189786 --
189787 --accounting attribute enhancement, bug 3612931
189788 --
189789 l_trx_reversal_source := SUBSTR(NULL, 1,30);
189790 
189791 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
189792    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
189793 
189794    xla_accounting_err_pkg.build_message
189795       (p_appli_s_name            => 'XLA'
189796       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
189797       ,p_token_1                 => 'ACCT_ATTR_NAME'
189798       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
189799       ,p_token_2                 => 'PRODUCT_NAME'
189800       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
189801       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
189802       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
189803       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
189804 
189805 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
189806    --
189807    -- following sets the accounting attributes needed to reverse
189808    -- accounting for a distributeion
189809    --
189810    xla_ae_lines_pkg.SetTrxReversalAttrs
189811       (p_event_id              => l_event_id
189812       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
189813       ,p_trx_reversal_source   => l_trx_reversal_source);
189814 
189815 END IF;
189816 
189817 
189818 ----------------------------------------------------------------
189819 -- 4262811 -  update the header statuses to invalid in need be
189820 ----------------------------------------------------------------
189821 --
189822 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
189823 
189824 
189825   -----------------------------------------------
189826   -- No accrual reversal for the event class/type
189827   -----------------------------------------------
189828 ----------------------------------------------------------------
189829 
189830 --
189831 -- this ends the header loop iteration for one bulk fetch
189832 --
189833 END LOOP;
189834 
189835 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
189836 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
189837 
189838 --
189842 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
189839 -- insert dummy rows into lines gt table that were created due to
189840 -- transaction reversals
189841 --
189843    l_result := XLA_AE_LINES_PKG.InsertLines;
189844 END IF;
189845 
189846 --
189847 -- reset the temp_line_num for each set of events fetched from header
189848 -- cursor rather than doing it for each new event in line cursor
189849 -- Bug 3939231
189850 --
189851 xla_ae_lines_pkg.g_temp_line_num := 0;
189852 
189853 
189854 
189855 --
189856 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
189857 --
189858 --
189859 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189860 
189861       trace
189862          (p_msg      => 'SQL - FETCH line_cur'
189863          ,p_level    => C_LEVEL_STATEMENT
189864          ,p_module   => l_log_module);
189865 
189866 END IF;
189867 --
189868 --
189869 LOOP
189870   --
189871   FETCH line_cur BULK COLLECT INTO
189872         l_array_entity_id
189873       , l_array_legal_entity_id
189874       , l_array_entity_code
189875       , l_array_transaction_num
189876       , l_array_event_id
189877       , l_array_class_code
189878       , l_array_event_type
189879       , l_array_event_number
189880       , l_array_event_date
189881       , l_array_transaction_date
189882       , l_array_reference_num_1
189883       , l_array_reference_num_2
189884       , l_array_reference_num_3
189885       , l_array_reference_num_4
189886       , l_array_reference_char_1
189887       , l_array_reference_char_2
189888       , l_array_reference_char_3
189889       , l_array_reference_char_4
189890       , l_array_reference_date_1
189891       , l_array_reference_date_2
189892       , l_array_reference_date_3
189893       , l_array_reference_date_4
189894       , l_array_event_created_by
189895       , l_array_budgetary_control_flag
189896       , l_array_extract_line_num 
189897       , l_array_source_1
189898       , l_array_source_2
189899       , l_array_source_3
189900       , l_array_source_5
189901       , l_array_source_11
189902       LIMIT l_rows;
189903 
189904   --
189905   IF (C_LEVEL_EVENT >= g_log_level) THEN
189906             trace
189907                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
189908                ,p_level    => C_LEVEL_EVENT
189909                ,p_module   => l_log_module);
189910   END IF;
189911   --
189912   EXIT WHEN l_array_entity_id.count = 0;
189913 
189914   XLA_AE_LINES_PKG.g_rec_lines := null;
189915 
189916 --
189917 -- Bug 4458708
189918 --
189919 XLA_AE_LINES_PKG.g_LineNumber := 0;
189920 --
189921 --
189922 
189923 FOR Idx IN 1..l_array_event_id.count LOOP
189924    --
189925    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
189926    --
189927    l_event_id := l_array_event_id(idx);  -- 5648433
189928 
189929    --
189930    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
189931    --
189932 
189933    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
189934              (g_array_event(l_event_id).array_value_num('header_index'))
189935          ,'N'
189936          ) <> 'Y'
189937    THEN
189938       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189939          trace
189940             (p_msg      => 'Trancaction revesal option is not Y '
189941             ,p_level    => C_LEVEL_STATEMENT
189942             ,p_module   => l_log_module);
189943       END IF;
189944 
189945 --
189946 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
189947 --
189948 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
189949 --
189950 -- set event info as cache for other routines to refer event attributes
189951 --
189952 
189953 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
189954    l_previous_event_id := l_event_id;
189955 
189956    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
189957       (p_application_id           => p_application_id
189958       ,p_primary_ledger_id        => p_primary_ledger_id
189959       ,p_base_ledger_id           => p_base_ledger_id
189960       ,p_target_ledger_id         => p_target_ledger_id
189961       ,p_entity_id                => l_array_entity_id(Idx)
189962       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
189963       ,p_entity_code              => l_array_entity_code(Idx)
189964       ,p_transaction_num          => l_array_transaction_num(Idx)
189965       ,p_event_id                 => l_array_event_id(Idx)
189966       ,p_event_class_code         => l_array_class_code(Idx)
189967       ,p_event_type_code          => l_array_event_type(Idx)
189968       ,p_event_number             => l_array_event_number(Idx)
189969       ,p_event_date               => l_array_event_date(Idx)
189970       ,p_transaction_date         => l_array_transaction_date(Idx)
189971       ,p_reference_num_1          => l_array_reference_num_1(Idx)
189972       ,p_reference_num_2          => l_array_reference_num_2(Idx)
189973       ,p_reference_num_3          => l_array_reference_num_3(Idx)
189974       ,p_reference_num_4          => l_array_reference_num_4(Idx)
189975       ,p_reference_char_1         => l_array_reference_char_1(Idx)
189976       ,p_reference_char_2         => l_array_reference_char_2(Idx)
189977       ,p_reference_char_3         => l_array_reference_char_3(Idx)
189978       ,p_reference_char_4         => l_array_reference_char_4(Idx)
189979       ,p_reference_date_1         => l_array_reference_date_1(Idx)
189980       ,p_reference_date_2         => l_array_reference_date_2(Idx)
189981       ,p_reference_date_3         => l_array_reference_date_3(Idx)
189982       ,p_reference_date_4         => l_array_reference_date_4(Idx)
189983       ,p_event_created_by         => l_array_event_created_by(Idx)
189987 
189984       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
189985        --
189986 END IF;
189988 
189989 
189990 --
189991 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
189992 
189993 l_acct_reversal_source := SUBSTR(NULL, 1,30);
189994 
189995 IF l_continue_with_lines THEN
189996    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
189997       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
189998 
189999       xla_accounting_err_pkg.build_message
190000          (p_appli_s_name            => 'XLA'
190001          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
190002          ,p_token_1                 => 'LINE_NUMBER'
190003          ,p_value_1                 => l_array_extract_line_num(Idx)
190004          ,p_token_2                 => 'PRODUCT_NAME'
190005          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
190006          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
190007          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
190008          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
190009 
190010    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
190011       --
190012       -- following sets the accounting attributes needed to reverse
190013       -- accounting for a distributeion
190014       --
190015 
190016       --
190017       -- 5217187
190018       --
190019       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
190020       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
190021                                        g_array_event(l_event_id).array_value_num('header_index'));
190022       --
190023       --
190024 
190025       -- No reversal code generated
190026 
190027       xla_ae_lines_pkg.SetAcctReversalAttrs
190028          (p_event_id             => l_event_id
190029          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
190030          ,p_calculate_acctd_flag => l_calculate_acctd_flag
190031          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
190032    END IF;
190033 
190034    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
190035        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
190036 
190037 --
190038 AcctLineType_50 (
190039  p_application_id  => p_application_id
190040  ,p_event_id     => l_event_id
190041  ,p_calculate_acctd_flag => l_calculate_acctd_flag
190042  ,p_calculate_g_l_flag => l_calculate_g_l_flag
190043  ,p_actual_flag => l_actual_flag
190044  ,p_balance_type_code => l_balance_type_code
190045  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190046  
190047  , p_source_1 => l_array_source_1(Idx)
190048  , p_source_2 => l_array_source_2(Idx)
190049  , p_source_3 => l_array_source_3(Idx)
190050  , p_source_5 => l_array_source_5(Idx)
190051  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
190052  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
190053  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
190054  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
190055  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
190056  , p_source_11 => l_array_source_11(Idx)
190057  );
190058 If(l_balance_type_code = 'A') THEN
190059   l_actual_gain_loss_ref := l_gain_or_loss_ref;
190060 END IF;
190061 
190062 --
190063 
190064 
190065 --
190066 AcctLineType_96 (
190067  p_application_id  => p_application_id
190068  ,p_event_id     => l_event_id
190069  ,p_calculate_acctd_flag => l_calculate_acctd_flag
190070  ,p_calculate_g_l_flag => l_calculate_g_l_flag
190071  ,p_actual_flag => l_actual_flag
190072  ,p_balance_type_code => l_balance_type_code
190073  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190074  
190075  , p_source_1 => l_array_source_1(Idx)
190076  , p_source_2 => l_array_source_2(Idx)
190077  , p_source_3 => l_array_source_3(Idx)
190078  , p_source_5 => l_array_source_5(Idx)
190079  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
190080  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
190081  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
190082  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
190083  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
190084  , p_source_11 => l_array_source_11(Idx)
190085  );
190086 If(l_balance_type_code = 'A') THEN
190087   l_actual_gain_loss_ref := l_gain_or_loss_ref;
190088 END IF;
190089 
190090 --
190091 
190092 
190093 --
190094 AcctLineType_140 (
190095  p_application_id  => p_application_id
190096  ,p_event_id     => l_event_id
190097  ,p_calculate_acctd_flag => l_calculate_acctd_flag
190098  ,p_calculate_g_l_flag => l_calculate_g_l_flag
190099  ,p_actual_flag => l_actual_flag
190100  ,p_balance_type_code => l_balance_type_code
190101  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190102  
190103  , p_source_1 => l_array_source_1(Idx)
190104  , p_source_2 => l_array_source_2(Idx)
190105  , p_source_3 => l_array_source_3(Idx)
190106  , p_source_5 => l_array_source_5(Idx)
190107  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
190108  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
190109  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
190110  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
190111  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
190112  , p_source_11 => l_array_source_11(Idx)
190113  );
190114 If(l_balance_type_code = 'A') THEN
190115   l_actual_gain_loss_ref := l_gain_or_loss_ref;
190116 END IF;
190117 
190118 --
190119 
190120 
190121 --
190122 AcctLineType_204 (
190123  p_application_id  => p_application_id
190127  ,p_actual_flag => l_actual_flag
190124  ,p_event_id     => l_event_id
190125  ,p_calculate_acctd_flag => l_calculate_acctd_flag
190126  ,p_calculate_g_l_flag => l_calculate_g_l_flag
190128  ,p_balance_type_code => l_balance_type_code
190129  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190130  
190131  , p_source_1 => l_array_source_1(Idx)
190132  , p_source_2 => l_array_source_2(Idx)
190133  , p_source_3 => l_array_source_3(Idx)
190134  , p_source_5 => l_array_source_5(Idx)
190135  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
190136  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
190137  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
190138  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
190139  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
190140  , p_source_11 => l_array_source_11(Idx)
190141  );
190142 If(l_balance_type_code = 'A') THEN
190143   l_actual_gain_loss_ref := l_gain_or_loss_ref;
190144 END IF;
190145 
190146 --
190147 
190148 
190149 --
190150 AcctLineType_225 (
190151  p_application_id  => p_application_id
190152  ,p_event_id     => l_event_id
190153  ,p_calculate_acctd_flag => l_calculate_acctd_flag
190154  ,p_calculate_g_l_flag => l_calculate_g_l_flag
190155  ,p_actual_flag => l_actual_flag
190156  ,p_balance_type_code => l_balance_type_code
190157  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190158  
190159  , p_source_1 => l_array_source_1(Idx)
190160  , p_source_2 => l_array_source_2(Idx)
190161  , p_source_3 => l_array_source_3(Idx)
190162  , p_source_5 => l_array_source_5(Idx)
190163  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
190164  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
190165  , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
190166  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
190167  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
190168  , p_source_11 => l_array_source_11(Idx)
190169  );
190170 If(l_balance_type_code = 'A') THEN
190171   l_actual_gain_loss_ref := l_gain_or_loss_ref;
190172 END IF;
190173 
190174 --
190175 
190176       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
190177       -- or secondary ledger that has different currency with primary
190178       -- or alc that is calculated by sla
190179       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
190180             (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'))
190181 
190182 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
190183 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
190184           AND (l_actual_flag = 'A')) THEN
190185         XLA_AE_LINES_PKG.CreateGainOrLossLines(
190186           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
190187          ,p_application_id   => p_application_id
190188          ,p_amb_context_code => 'DEFAULT'
190189          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
190190          ,p_event_class_code => C_EVENT_CLASS_CODE
190191          ,p_event_type_code  => C_EVENT_TYPE_CODE
190192          
190193          ,p_gain_ccid        => -1
190194          ,p_loss_ccid        => -1
190195 
190196          ,p_actual_flag      => l_actual_flag
190197          ,p_enc_flag         => null
190198          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
190199          ,p_enc_g_l_ref      => null
190200          );
190201       END IF;
190202    END IF;
190203 END IF;
190204 
190205    ELSE
190206       --
190207       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
190208       --
190209       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190210          trace
190211             (p_msg      => 'Trancaction revesal option is Y'
190212             ,p_level    => C_LEVEL_STATEMENT
190213             ,p_module   => l_log_module);
190214       END IF;
190215    END IF;
190216 
190217 END LOOP;
190218 l_result := XLA_AE_LINES_PKG.InsertLines ;
190219 end loop;
190220 close line_cur;
190221 
190222 
190223 --
190224 -- insert headers into xla_ae_headers_gt table
190225 --
190226 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
190227 
190228 -- insert into errors table here.
190229 
190230 END LOOP;
190231 
190232 --
190233 -- 4865292
190234 --
190235 -- Compare g_hdr_extract_count with event count in
190236 -- CreateHeadersAndLines.
190237 --
190238 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
190239 
190240 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190241    trace (p_msg     => '# rows extracted from header extract objects '
190242                     || ' (running total): '
190243                     || g_hdr_extract_count
190244          ,p_level   => C_LEVEL_STATEMENT
190245          ,p_module  => l_log_module);
190246 END IF;
190247 
190248 CLOSE header_cur;
190249 --
190250 
190251 --
190252 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
190253    trace
190254       (p_msg      => 'END of EventType_305'
190255       ,p_level    => C_LEVEL_PROCEDURE
190256       ,p_module   => l_log_module);
190257 END IF;
190258 --
190259 RETURN l_result;
190260 EXCEPTION
190261 WHEN xla_exceptions_pkg.application_exception THEN
190262    
190263 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
190264 
190265    
190266 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
190267 
190268    RAISE;
190269 
190270 WHEN NO_DATA_FOUND THEN
190271 
190272 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
190273 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
190274 
190278 END LOOP;
190275 FOR header_record IN header_cur
190276 LOOP
190277     l_array_header_events(header_record.event_id) := header_record.event_id;
190279 
190280 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
190281 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
190282 
190283 fnd_file.put_line(fnd_file.LOG, '                    ');
190284 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
190285 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
190286 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
190287 
190288 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
190289 LOOP
190290 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
190291 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
190292         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
190293 	END IF;
190294 END LOOP;
190295 
190296 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
190297 fnd_file.put_line(fnd_file.LOG, '                    ');
190298 
190299 
190300 xla_exceptions_pkg.raise_message
190301       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_305');
190302 
190303 
190304 WHEN OTHERS THEN
190305    xla_exceptions_pkg.raise_message
190306       (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_305');
190307 END EventType_305;
190308 --
190309 
190310 --
190311 --+============================================+
190312 --|                                            |
190313 --|  PRIVATE FUNCTION                          |
190314 --|                                            |
190315 --+============================================+
190316 --
190317 FUNCTION CreateHeadersAndLines
190318        (p_application_id         IN NUMBER
190319        ,p_base_ledger_id         IN NUMBER
190320        ,p_target_ledger_id       IN NUMBER
190321        ,p_pad_start_date         IN DATE
190322        ,p_pad_end_date           IN DATE
190323        ,p_primary_ledger_id      IN NUMBER)
190324 RETURN BOOLEAN IS
190325 l_created                   BOOLEAN:=FALSE;
190326 l_event_id                  NUMBER;
190327 l_event_date                DATE;
190328 l_language                  VARCHAR2(30);
190329 l_currency_code             VARCHAR2(30);
190330 l_sla_ledger_id             NUMBER;
190331 l_log_module                VARCHAR2(240);
190332 
190333 BEGIN
190334 --
190335 IF g_log_enabled THEN
190336    l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
190337 END IF;
190338 --
190339 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
190340    trace
190341       (p_msg      => 'BEGIN of CreateHeadersAndLines'
190342       ,p_level    => C_LEVEL_PROCEDURE
190343       ,p_module   => l_log_module);
190344 END IF;
190345 
190346 l_language         := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
190347 l_currency_code    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
190348 l_sla_ledger_id    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
190349 
190350 --
190351 -- initialize array of lines with NULL
190352 --
190353 xla_ae_lines_pkg.SetNullLine;
190354 
190355 --
190356 -- initialize header extract count -- Bug 4865292
190357 --
190358 g_hdr_extract_count:= 0;
190359 
190360 
190361  l_created :=  EventType_248(
190362    p_application_id         => p_application_id
190363  , p_base_ledger_id         => p_base_ledger_id
190364  , p_target_ledger_id       => p_target_ledger_id
190365  , p_language               => l_language
190366  , p_currency_code          => l_currency_code
190367  , p_sla_ledger_id          => l_sla_ledger_id
190368  , p_pad_start_date         => p_pad_start_date
190369  , p_pad_end_date           => p_pad_end_date
190370  , p_primary_ledger_id      => p_primary_ledger_id
190371 );
190372 
190373 
190374 
190375      IF ( g_diagnostics_mode ='Y' ) THEN
190376 
190377          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190378           trace
190379               (p_msg      => 'CALL Transaction Objects Diagnostics'
190380               ,p_level    => C_LEVEL_STATEMENT
190381               ,p_module   => l_log_module);
190382 
190383          END IF;
190384 
190385          insert_sources_248(
190386                           p_target_ledger_id => p_target_ledger_id
190387                         , p_language         => l_language
190388                         , p_sla_ledger_id    => l_sla_ledger_id
190389                         , p_pad_start_date   => p_pad_start_date
190390                         , p_pad_end_date     => p_pad_end_date
190391                           );
190392 
190393      END IF;
190394 
190395  l_created :=  EventType_249(
190396    p_application_id         => p_application_id
190397  , p_base_ledger_id         => p_base_ledger_id
190398  , p_target_ledger_id       => p_target_ledger_id
190399  , p_language               => l_language
190400  , p_currency_code          => l_currency_code
190401  , p_sla_ledger_id          => l_sla_ledger_id
190402  , p_pad_start_date         => p_pad_start_date
190403  , p_pad_end_date           => p_pad_end_date
190404  , p_primary_ledger_id      => p_primary_ledger_id
190405 );
190406 
190407 
190408 
190409      IF ( g_diagnostics_mode ='Y' ) THEN
190410 
190411          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190412           trace
190413               (p_msg      => 'CALL Transaction Objects Diagnostics'
190414               ,p_level    => C_LEVEL_STATEMENT
190415               ,p_module   => l_log_module);
190416 
190417          END IF;
190418 
190419          insert_sources_249(
190423                         , p_pad_start_date   => p_pad_start_date
190420                           p_target_ledger_id => p_target_ledger_id
190421                         , p_language         => l_language
190422                         , p_sla_ledger_id    => l_sla_ledger_id
190424                         , p_pad_end_date     => p_pad_end_date
190425                           );
190426 
190427      END IF;
190428 
190429  l_created :=  EventType_250(
190430    p_application_id         => p_application_id
190431  , p_base_ledger_id         => p_base_ledger_id
190432  , p_target_ledger_id       => p_target_ledger_id
190433  , p_language               => l_language
190434  , p_currency_code          => l_currency_code
190435  , p_sla_ledger_id          => l_sla_ledger_id
190436  , p_pad_start_date         => p_pad_start_date
190437  , p_pad_end_date           => p_pad_end_date
190438  , p_primary_ledger_id      => p_primary_ledger_id
190439 );
190440 
190441 
190442 
190443      IF ( g_diagnostics_mode ='Y' ) THEN
190444 
190445          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190446           trace
190447               (p_msg      => 'CALL Transaction Objects Diagnostics'
190448               ,p_level    => C_LEVEL_STATEMENT
190449               ,p_module   => l_log_module);
190450 
190451          END IF;
190452 
190453          insert_sources_250(
190454                           p_target_ledger_id => p_target_ledger_id
190455                         , p_language         => l_language
190456                         , p_sla_ledger_id    => l_sla_ledger_id
190457                         , p_pad_start_date   => p_pad_start_date
190458                         , p_pad_end_date     => p_pad_end_date
190459                           );
190460 
190461      END IF;
190462 
190463  l_created :=  EventType_251(
190464    p_application_id         => p_application_id
190465  , p_base_ledger_id         => p_base_ledger_id
190466  , p_target_ledger_id       => p_target_ledger_id
190467  , p_language               => l_language
190468  , p_currency_code          => l_currency_code
190469  , p_sla_ledger_id          => l_sla_ledger_id
190470  , p_pad_start_date         => p_pad_start_date
190471  , p_pad_end_date           => p_pad_end_date
190472  , p_primary_ledger_id      => p_primary_ledger_id
190473 );
190474 
190475 
190476 
190477      IF ( g_diagnostics_mode ='Y' ) THEN
190478 
190479          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190480           trace
190481               (p_msg      => 'CALL Transaction Objects Diagnostics'
190482               ,p_level    => C_LEVEL_STATEMENT
190483               ,p_module   => l_log_module);
190484 
190485          END IF;
190486 
190487          insert_sources_251(
190488                           p_target_ledger_id => p_target_ledger_id
190489                         , p_language         => l_language
190490                         , p_sla_ledger_id    => l_sla_ledger_id
190491                         , p_pad_start_date   => p_pad_start_date
190492                         , p_pad_end_date     => p_pad_end_date
190493                           );
190494 
190495      END IF;
190496 
190497  l_created :=  EventType_252(
190498    p_application_id         => p_application_id
190499  , p_base_ledger_id         => p_base_ledger_id
190500  , p_target_ledger_id       => p_target_ledger_id
190501  , p_language               => l_language
190502  , p_currency_code          => l_currency_code
190503  , p_sla_ledger_id          => l_sla_ledger_id
190504  , p_pad_start_date         => p_pad_start_date
190505  , p_pad_end_date           => p_pad_end_date
190506  , p_primary_ledger_id      => p_primary_ledger_id
190507 );
190508 
190509 
190510 
190511      IF ( g_diagnostics_mode ='Y' ) THEN
190512 
190513          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190514           trace
190515               (p_msg      => 'CALL Transaction Objects Diagnostics'
190516               ,p_level    => C_LEVEL_STATEMENT
190517               ,p_module   => l_log_module);
190518 
190519          END IF;
190520 
190521          insert_sources_252(
190522                           p_target_ledger_id => p_target_ledger_id
190523                         , p_language         => l_language
190524                         , p_sla_ledger_id    => l_sla_ledger_id
190525                         , p_pad_start_date   => p_pad_start_date
190526                         , p_pad_end_date     => p_pad_end_date
190527                           );
190528 
190529      END IF;
190530 
190531  l_created :=  EventType_253(
190532    p_application_id         => p_application_id
190533  , p_base_ledger_id         => p_base_ledger_id
190534  , p_target_ledger_id       => p_target_ledger_id
190535  , p_language               => l_language
190536  , p_currency_code          => l_currency_code
190537  , p_sla_ledger_id          => l_sla_ledger_id
190538  , p_pad_start_date         => p_pad_start_date
190539  , p_pad_end_date           => p_pad_end_date
190540  , p_primary_ledger_id      => p_primary_ledger_id
190541 );
190542 
190543 
190544 
190545      IF ( g_diagnostics_mode ='Y' ) THEN
190546 
190547          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190548           trace
190549               (p_msg      => 'CALL Transaction Objects Diagnostics'
190550               ,p_level    => C_LEVEL_STATEMENT
190551               ,p_module   => l_log_module);
190552 
190553          END IF;
190554 
190555          insert_sources_253(
190556                           p_target_ledger_id => p_target_ledger_id
190557                         , p_language         => l_language
190558                         , p_sla_ledger_id    => l_sla_ledger_id
190559                         , p_pad_start_date   => p_pad_start_date
190560                         , p_pad_end_date     => p_pad_end_date
190561                           );
190562 
190563      END IF;
190564 
190568  , p_target_ledger_id       => p_target_ledger_id
190565  l_created :=  EventType_254(
190566    p_application_id         => p_application_id
190567  , p_base_ledger_id         => p_base_ledger_id
190569  , p_language               => l_language
190570  , p_currency_code          => l_currency_code
190571  , p_sla_ledger_id          => l_sla_ledger_id
190572  , p_pad_start_date         => p_pad_start_date
190573  , p_pad_end_date           => p_pad_end_date
190574  , p_primary_ledger_id      => p_primary_ledger_id
190575 );
190576 
190577 
190578 
190579      IF ( g_diagnostics_mode ='Y' ) THEN
190580 
190581          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190582           trace
190583               (p_msg      => 'CALL Transaction Objects Diagnostics'
190584               ,p_level    => C_LEVEL_STATEMENT
190585               ,p_module   => l_log_module);
190586 
190587          END IF;
190588 
190589          insert_sources_254(
190590                           p_target_ledger_id => p_target_ledger_id
190591                         , p_language         => l_language
190592                         , p_sla_ledger_id    => l_sla_ledger_id
190593                         , p_pad_start_date   => p_pad_start_date
190594                         , p_pad_end_date     => p_pad_end_date
190595                           );
190596 
190597      END IF;
190598 
190599  l_created :=  EventType_255(
190600    p_application_id         => p_application_id
190601  , p_base_ledger_id         => p_base_ledger_id
190602  , p_target_ledger_id       => p_target_ledger_id
190603  , p_language               => l_language
190604  , p_currency_code          => l_currency_code
190605  , p_sla_ledger_id          => l_sla_ledger_id
190606  , p_pad_start_date         => p_pad_start_date
190607  , p_pad_end_date           => p_pad_end_date
190608  , p_primary_ledger_id      => p_primary_ledger_id
190609 );
190610 
190611 
190612 
190613      IF ( g_diagnostics_mode ='Y' ) THEN
190614 
190615          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190616           trace
190617               (p_msg      => 'CALL Transaction Objects Diagnostics'
190618               ,p_level    => C_LEVEL_STATEMENT
190619               ,p_module   => l_log_module);
190620 
190621          END IF;
190622 
190623          insert_sources_255(
190624                           p_target_ledger_id => p_target_ledger_id
190625                         , p_language         => l_language
190626                         , p_sla_ledger_id    => l_sla_ledger_id
190627                         , p_pad_start_date   => p_pad_start_date
190628                         , p_pad_end_date     => p_pad_end_date
190629                           );
190630 
190631      END IF;
190632 
190633  l_created :=  EventType_256(
190634    p_application_id         => p_application_id
190635  , p_base_ledger_id         => p_base_ledger_id
190636  , p_target_ledger_id       => p_target_ledger_id
190637  , p_language               => l_language
190638  , p_currency_code          => l_currency_code
190639  , p_sla_ledger_id          => l_sla_ledger_id
190640  , p_pad_start_date         => p_pad_start_date
190641  , p_pad_end_date           => p_pad_end_date
190642  , p_primary_ledger_id      => p_primary_ledger_id
190643 );
190644 
190645 
190646 
190647      IF ( g_diagnostics_mode ='Y' ) THEN
190648 
190649          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190650           trace
190651               (p_msg      => 'CALL Transaction Objects Diagnostics'
190652               ,p_level    => C_LEVEL_STATEMENT
190653               ,p_module   => l_log_module);
190654 
190655          END IF;
190656 
190657          insert_sources_256(
190658                           p_target_ledger_id => p_target_ledger_id
190659                         , p_language         => l_language
190660                         , p_sla_ledger_id    => l_sla_ledger_id
190661                         , p_pad_start_date   => p_pad_start_date
190662                         , p_pad_end_date     => p_pad_end_date
190663                           );
190664 
190665      END IF;
190666 
190667  l_created :=  EventType_257(
190668    p_application_id         => p_application_id
190669  , p_base_ledger_id         => p_base_ledger_id
190670  , p_target_ledger_id       => p_target_ledger_id
190671  , p_language               => l_language
190672  , p_currency_code          => l_currency_code
190673  , p_sla_ledger_id          => l_sla_ledger_id
190674  , p_pad_start_date         => p_pad_start_date
190675  , p_pad_end_date           => p_pad_end_date
190676  , p_primary_ledger_id      => p_primary_ledger_id
190677 );
190678 
190679 
190680 
190681      IF ( g_diagnostics_mode ='Y' ) THEN
190682 
190683          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190684           trace
190685               (p_msg      => 'CALL Transaction Objects Diagnostics'
190686               ,p_level    => C_LEVEL_STATEMENT
190687               ,p_module   => l_log_module);
190688 
190689          END IF;
190690 
190691          insert_sources_257(
190692                           p_target_ledger_id => p_target_ledger_id
190693                         , p_language         => l_language
190694                         , p_sla_ledger_id    => l_sla_ledger_id
190695                         , p_pad_start_date   => p_pad_start_date
190696                         , p_pad_end_date     => p_pad_end_date
190697                           );
190698 
190699      END IF;
190700 
190701  l_created :=  EventType_258(
190702    p_application_id         => p_application_id
190703  , p_base_ledger_id         => p_base_ledger_id
190704  , p_target_ledger_id       => p_target_ledger_id
190705  , p_language               => l_language
190706  , p_currency_code          => l_currency_code
190707  , p_sla_ledger_id          => l_sla_ledger_id
190708  , p_pad_start_date         => p_pad_start_date
190709  , p_pad_end_date           => p_pad_end_date
190713 
190710  , p_primary_ledger_id      => p_primary_ledger_id
190711 );
190712 
190714 
190715      IF ( g_diagnostics_mode ='Y' ) THEN
190716 
190717          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190718           trace
190719               (p_msg      => 'CALL Transaction Objects Diagnostics'
190720               ,p_level    => C_LEVEL_STATEMENT
190721               ,p_module   => l_log_module);
190722 
190723          END IF;
190724 
190725          insert_sources_258(
190726                           p_target_ledger_id => p_target_ledger_id
190727                         , p_language         => l_language
190728                         , p_sla_ledger_id    => l_sla_ledger_id
190729                         , p_pad_start_date   => p_pad_start_date
190730                         , p_pad_end_date     => p_pad_end_date
190731                           );
190732 
190733      END IF;
190734 
190735  l_created :=  EventType_259(
190736    p_application_id         => p_application_id
190737  , p_base_ledger_id         => p_base_ledger_id
190738  , p_target_ledger_id       => p_target_ledger_id
190739  , p_language               => l_language
190740  , p_currency_code          => l_currency_code
190741  , p_sla_ledger_id          => l_sla_ledger_id
190742  , p_pad_start_date         => p_pad_start_date
190743  , p_pad_end_date           => p_pad_end_date
190744  , p_primary_ledger_id      => p_primary_ledger_id
190745 );
190746 
190747 
190748 
190749      IF ( g_diagnostics_mode ='Y' ) THEN
190750 
190751          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190752           trace
190753               (p_msg      => 'CALL Transaction Objects Diagnostics'
190754               ,p_level    => C_LEVEL_STATEMENT
190755               ,p_module   => l_log_module);
190756 
190757          END IF;
190758 
190759          insert_sources_259(
190760                           p_target_ledger_id => p_target_ledger_id
190761                         , p_language         => l_language
190762                         , p_sla_ledger_id    => l_sla_ledger_id
190763                         , p_pad_start_date   => p_pad_start_date
190764                         , p_pad_end_date     => p_pad_end_date
190765                           );
190766 
190767      END IF;
190768 
190769  l_created :=  EventType_260(
190770    p_application_id         => p_application_id
190771  , p_base_ledger_id         => p_base_ledger_id
190772  , p_target_ledger_id       => p_target_ledger_id
190773  , p_language               => l_language
190774  , p_currency_code          => l_currency_code
190775  , p_sla_ledger_id          => l_sla_ledger_id
190776  , p_pad_start_date         => p_pad_start_date
190777  , p_pad_end_date           => p_pad_end_date
190778  , p_primary_ledger_id      => p_primary_ledger_id
190779 );
190780 
190781 
190782 
190783      IF ( g_diagnostics_mode ='Y' ) THEN
190784 
190785          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190786           trace
190787               (p_msg      => 'CALL Transaction Objects Diagnostics'
190788               ,p_level    => C_LEVEL_STATEMENT
190789               ,p_module   => l_log_module);
190790 
190791          END IF;
190792 
190793          insert_sources_260(
190794                           p_target_ledger_id => p_target_ledger_id
190795                         , p_language         => l_language
190796                         , p_sla_ledger_id    => l_sla_ledger_id
190797                         , p_pad_start_date   => p_pad_start_date
190798                         , p_pad_end_date     => p_pad_end_date
190799                           );
190800 
190801      END IF;
190802 
190803  l_created :=  EventType_261(
190804    p_application_id         => p_application_id
190805  , p_base_ledger_id         => p_base_ledger_id
190806  , p_target_ledger_id       => p_target_ledger_id
190807  , p_language               => l_language
190808  , p_currency_code          => l_currency_code
190809  , p_sla_ledger_id          => l_sla_ledger_id
190810  , p_pad_start_date         => p_pad_start_date
190811  , p_pad_end_date           => p_pad_end_date
190812  , p_primary_ledger_id      => p_primary_ledger_id
190813 );
190814 
190815 
190816 
190817      IF ( g_diagnostics_mode ='Y' ) THEN
190818 
190819          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190820           trace
190821               (p_msg      => 'CALL Transaction Objects Diagnostics'
190822               ,p_level    => C_LEVEL_STATEMENT
190823               ,p_module   => l_log_module);
190824 
190825          END IF;
190826 
190827          insert_sources_261(
190828                           p_target_ledger_id => p_target_ledger_id
190829                         , p_language         => l_language
190830                         , p_sla_ledger_id    => l_sla_ledger_id
190831                         , p_pad_start_date   => p_pad_start_date
190832                         , p_pad_end_date     => p_pad_end_date
190833                           );
190834 
190835      END IF;
190836 
190837  l_created :=  EventType_262(
190838    p_application_id         => p_application_id
190839  , p_base_ledger_id         => p_base_ledger_id
190840  , p_target_ledger_id       => p_target_ledger_id
190841  , p_language               => l_language
190842  , p_currency_code          => l_currency_code
190843  , p_sla_ledger_id          => l_sla_ledger_id
190844  , p_pad_start_date         => p_pad_start_date
190845  , p_pad_end_date           => p_pad_end_date
190846  , p_primary_ledger_id      => p_primary_ledger_id
190847 );
190848 
190849 
190850 
190851      IF ( g_diagnostics_mode ='Y' ) THEN
190852 
190853          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190854           trace
190855               (p_msg      => 'CALL Transaction Objects Diagnostics'
190856               ,p_level    => C_LEVEL_STATEMENT
190857               ,p_module   => l_log_module);
190858 
190862                           p_target_ledger_id => p_target_ledger_id
190859          END IF;
190860 
190861          insert_sources_262(
190863                         , p_language         => l_language
190864                         , p_sla_ledger_id    => l_sla_ledger_id
190865                         , p_pad_start_date   => p_pad_start_date
190866                         , p_pad_end_date     => p_pad_end_date
190867                           );
190868 
190869      END IF;
190870 
190871  l_created :=  EventType_263(
190872    p_application_id         => p_application_id
190873  , p_base_ledger_id         => p_base_ledger_id
190874  , p_target_ledger_id       => p_target_ledger_id
190875  , p_language               => l_language
190876  , p_currency_code          => l_currency_code
190877  , p_sla_ledger_id          => l_sla_ledger_id
190878  , p_pad_start_date         => p_pad_start_date
190879  , p_pad_end_date           => p_pad_end_date
190880  , p_primary_ledger_id      => p_primary_ledger_id
190881 );
190882 
190883 
190884 
190885      IF ( g_diagnostics_mode ='Y' ) THEN
190886 
190887          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190888           trace
190889               (p_msg      => 'CALL Transaction Objects Diagnostics'
190890               ,p_level    => C_LEVEL_STATEMENT
190891               ,p_module   => l_log_module);
190892 
190893          END IF;
190894 
190895          insert_sources_263(
190896                           p_target_ledger_id => p_target_ledger_id
190897                         , p_language         => l_language
190898                         , p_sla_ledger_id    => l_sla_ledger_id
190899                         , p_pad_start_date   => p_pad_start_date
190900                         , p_pad_end_date     => p_pad_end_date
190901                           );
190902 
190903      END IF;
190904 
190905  l_created :=  EventType_264(
190906    p_application_id         => p_application_id
190907  , p_base_ledger_id         => p_base_ledger_id
190908  , p_target_ledger_id       => p_target_ledger_id
190909  , p_language               => l_language
190910  , p_currency_code          => l_currency_code
190911  , p_sla_ledger_id          => l_sla_ledger_id
190912  , p_pad_start_date         => p_pad_start_date
190913  , p_pad_end_date           => p_pad_end_date
190914  , p_primary_ledger_id      => p_primary_ledger_id
190915 );
190916 
190917 
190918 
190919      IF ( g_diagnostics_mode ='Y' ) THEN
190920 
190921          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190922           trace
190923               (p_msg      => 'CALL Transaction Objects Diagnostics'
190924               ,p_level    => C_LEVEL_STATEMENT
190925               ,p_module   => l_log_module);
190926 
190927          END IF;
190928 
190929          insert_sources_264(
190930                           p_target_ledger_id => p_target_ledger_id
190931                         , p_language         => l_language
190932                         , p_sla_ledger_id    => l_sla_ledger_id
190933                         , p_pad_start_date   => p_pad_start_date
190934                         , p_pad_end_date     => p_pad_end_date
190935                           );
190936 
190937      END IF;
190938 
190939  l_created :=  EventType_265(
190940    p_application_id         => p_application_id
190941  , p_base_ledger_id         => p_base_ledger_id
190942  , p_target_ledger_id       => p_target_ledger_id
190943  , p_language               => l_language
190944  , p_currency_code          => l_currency_code
190945  , p_sla_ledger_id          => l_sla_ledger_id
190946  , p_pad_start_date         => p_pad_start_date
190947  , p_pad_end_date           => p_pad_end_date
190948  , p_primary_ledger_id      => p_primary_ledger_id
190949 );
190950 
190951 
190952 
190953      IF ( g_diagnostics_mode ='Y' ) THEN
190954 
190955          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190956           trace
190957               (p_msg      => 'CALL Transaction Objects Diagnostics'
190958               ,p_level    => C_LEVEL_STATEMENT
190959               ,p_module   => l_log_module);
190960 
190961          END IF;
190962 
190963          insert_sources_265(
190964                           p_target_ledger_id => p_target_ledger_id
190965                         , p_language         => l_language
190966                         , p_sla_ledger_id    => l_sla_ledger_id
190967                         , p_pad_start_date   => p_pad_start_date
190968                         , p_pad_end_date     => p_pad_end_date
190969                           );
190970 
190971      END IF;
190972 
190973  l_created :=  EventType_266(
190974    p_application_id         => p_application_id
190975  , p_base_ledger_id         => p_base_ledger_id
190976  , p_target_ledger_id       => p_target_ledger_id
190977  , p_language               => l_language
190978  , p_currency_code          => l_currency_code
190979  , p_sla_ledger_id          => l_sla_ledger_id
190980  , p_pad_start_date         => p_pad_start_date
190981  , p_pad_end_date           => p_pad_end_date
190982  , p_primary_ledger_id      => p_primary_ledger_id
190983 );
190984 
190985 
190986 
190987      IF ( g_diagnostics_mode ='Y' ) THEN
190988 
190989          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190990           trace
190991               (p_msg      => 'CALL Transaction Objects Diagnostics'
190992               ,p_level    => C_LEVEL_STATEMENT
190993               ,p_module   => l_log_module);
190994 
190995          END IF;
190996 
190997          insert_sources_266(
190998                           p_target_ledger_id => p_target_ledger_id
190999                         , p_language         => l_language
191000                         , p_sla_ledger_id    => l_sla_ledger_id
191001                         , p_pad_start_date   => p_pad_start_date
191002                         , p_pad_end_date     => p_pad_end_date
191003                           );
191007  l_created :=  EventType_267(
191004 
191005      END IF;
191006 
191008    p_application_id         => p_application_id
191009  , p_base_ledger_id         => p_base_ledger_id
191010  , p_target_ledger_id       => p_target_ledger_id
191011  , p_language               => l_language
191012  , p_currency_code          => l_currency_code
191013  , p_sla_ledger_id          => l_sla_ledger_id
191014  , p_pad_start_date         => p_pad_start_date
191015  , p_pad_end_date           => p_pad_end_date
191016  , p_primary_ledger_id      => p_primary_ledger_id
191017 );
191018 
191019 
191020 
191021      IF ( g_diagnostics_mode ='Y' ) THEN
191022 
191023          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191024           trace
191025               (p_msg      => 'CALL Transaction Objects Diagnostics'
191026               ,p_level    => C_LEVEL_STATEMENT
191027               ,p_module   => l_log_module);
191028 
191029          END IF;
191030 
191031          insert_sources_267(
191032                           p_target_ledger_id => p_target_ledger_id
191033                         , p_language         => l_language
191034                         , p_sla_ledger_id    => l_sla_ledger_id
191035                         , p_pad_start_date   => p_pad_start_date
191036                         , p_pad_end_date     => p_pad_end_date
191037                           );
191038 
191039      END IF;
191040 
191041  l_created :=  EventType_268(
191042    p_application_id         => p_application_id
191043  , p_base_ledger_id         => p_base_ledger_id
191044  , p_target_ledger_id       => p_target_ledger_id
191045  , p_language               => l_language
191046  , p_currency_code          => l_currency_code
191047  , p_sla_ledger_id          => l_sla_ledger_id
191048  , p_pad_start_date         => p_pad_start_date
191049  , p_pad_end_date           => p_pad_end_date
191050  , p_primary_ledger_id      => p_primary_ledger_id
191051 );
191052 
191053 
191054 
191055      IF ( g_diagnostics_mode ='Y' ) THEN
191056 
191057          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191058           trace
191059               (p_msg      => 'CALL Transaction Objects Diagnostics'
191060               ,p_level    => C_LEVEL_STATEMENT
191061               ,p_module   => l_log_module);
191062 
191063          END IF;
191064 
191065          insert_sources_268(
191066                           p_target_ledger_id => p_target_ledger_id
191067                         , p_language         => l_language
191068                         , p_sla_ledger_id    => l_sla_ledger_id
191069                         , p_pad_start_date   => p_pad_start_date
191070                         , p_pad_end_date     => p_pad_end_date
191071                           );
191072 
191073      END IF;
191074 
191075  l_created :=  EventType_269(
191076    p_application_id         => p_application_id
191077  , p_base_ledger_id         => p_base_ledger_id
191078  , p_target_ledger_id       => p_target_ledger_id
191079  , p_language               => l_language
191080  , p_currency_code          => l_currency_code
191081  , p_sla_ledger_id          => l_sla_ledger_id
191082  , p_pad_start_date         => p_pad_start_date
191083  , p_pad_end_date           => p_pad_end_date
191084  , p_primary_ledger_id      => p_primary_ledger_id
191085 );
191086 
191087 
191088 
191089      IF ( g_diagnostics_mode ='Y' ) THEN
191090 
191091          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191092           trace
191093               (p_msg      => 'CALL Transaction Objects Diagnostics'
191094               ,p_level    => C_LEVEL_STATEMENT
191095               ,p_module   => l_log_module);
191096 
191097          END IF;
191098 
191099          insert_sources_269(
191100                           p_target_ledger_id => p_target_ledger_id
191101                         , p_language         => l_language
191102                         , p_sla_ledger_id    => l_sla_ledger_id
191103                         , p_pad_start_date   => p_pad_start_date
191104                         , p_pad_end_date     => p_pad_end_date
191105                           );
191106 
191107      END IF;
191108 
191109  l_created :=  EventType_270(
191110    p_application_id         => p_application_id
191111  , p_base_ledger_id         => p_base_ledger_id
191112  , p_target_ledger_id       => p_target_ledger_id
191113  , p_language               => l_language
191114  , p_currency_code          => l_currency_code
191115  , p_sla_ledger_id          => l_sla_ledger_id
191116  , p_pad_start_date         => p_pad_start_date
191117  , p_pad_end_date           => p_pad_end_date
191118  , p_primary_ledger_id      => p_primary_ledger_id
191119 );
191120 
191121 
191122 
191123      IF ( g_diagnostics_mode ='Y' ) THEN
191124 
191125          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191126           trace
191127               (p_msg      => 'CALL Transaction Objects Diagnostics'
191128               ,p_level    => C_LEVEL_STATEMENT
191129               ,p_module   => l_log_module);
191130 
191131          END IF;
191132 
191133          insert_sources_270(
191134                           p_target_ledger_id => p_target_ledger_id
191135                         , p_language         => l_language
191136                         , p_sla_ledger_id    => l_sla_ledger_id
191137                         , p_pad_start_date   => p_pad_start_date
191138                         , p_pad_end_date     => p_pad_end_date
191139                           );
191140 
191141      END IF;
191142 
191143  l_created :=  EventType_271(
191144    p_application_id         => p_application_id
191145  , p_base_ledger_id         => p_base_ledger_id
191146  , p_target_ledger_id       => p_target_ledger_id
191147  , p_language               => l_language
191148  , p_currency_code          => l_currency_code
191149  , p_sla_ledger_id          => l_sla_ledger_id
191153 );
191150  , p_pad_start_date         => p_pad_start_date
191151  , p_pad_end_date           => p_pad_end_date
191152  , p_primary_ledger_id      => p_primary_ledger_id
191154 
191155 
191156 
191157      IF ( g_diagnostics_mode ='Y' ) THEN
191158 
191159          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191160           trace
191161               (p_msg      => 'CALL Transaction Objects Diagnostics'
191162               ,p_level    => C_LEVEL_STATEMENT
191163               ,p_module   => l_log_module);
191164 
191165          END IF;
191166 
191167          insert_sources_271(
191168                           p_target_ledger_id => p_target_ledger_id
191169                         , p_language         => l_language
191170                         , p_sla_ledger_id    => l_sla_ledger_id
191171                         , p_pad_start_date   => p_pad_start_date
191172                         , p_pad_end_date     => p_pad_end_date
191173                           );
191174 
191175      END IF;
191176 
191177  l_created :=  EventType_272(
191178    p_application_id         => p_application_id
191179  , p_base_ledger_id         => p_base_ledger_id
191180  , p_target_ledger_id       => p_target_ledger_id
191181  , p_language               => l_language
191182  , p_currency_code          => l_currency_code
191183  , p_sla_ledger_id          => l_sla_ledger_id
191184  , p_pad_start_date         => p_pad_start_date
191185  , p_pad_end_date           => p_pad_end_date
191186  , p_primary_ledger_id      => p_primary_ledger_id
191187 );
191188 
191189 
191190 
191191      IF ( g_diagnostics_mode ='Y' ) THEN
191192 
191193          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191194           trace
191195               (p_msg      => 'CALL Transaction Objects Diagnostics'
191196               ,p_level    => C_LEVEL_STATEMENT
191197               ,p_module   => l_log_module);
191198 
191199          END IF;
191200 
191201          insert_sources_272(
191202                           p_target_ledger_id => p_target_ledger_id
191203                         , p_language         => l_language
191204                         , p_sla_ledger_id    => l_sla_ledger_id
191205                         , p_pad_start_date   => p_pad_start_date
191206                         , p_pad_end_date     => p_pad_end_date
191207                           );
191208 
191209      END IF;
191210 
191211  l_created :=  EventType_273(
191212    p_application_id         => p_application_id
191213  , p_base_ledger_id         => p_base_ledger_id
191214  , p_target_ledger_id       => p_target_ledger_id
191215  , p_language               => l_language
191216  , p_currency_code          => l_currency_code
191217  , p_sla_ledger_id          => l_sla_ledger_id
191218  , p_pad_start_date         => p_pad_start_date
191219  , p_pad_end_date           => p_pad_end_date
191220  , p_primary_ledger_id      => p_primary_ledger_id
191221 );
191222 
191223 
191224 
191225      IF ( g_diagnostics_mode ='Y' ) THEN
191226 
191227          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191228           trace
191229               (p_msg      => 'CALL Transaction Objects Diagnostics'
191230               ,p_level    => C_LEVEL_STATEMENT
191231               ,p_module   => l_log_module);
191232 
191233          END IF;
191234 
191235          insert_sources_273(
191236                           p_target_ledger_id => p_target_ledger_id
191237                         , p_language         => l_language
191238                         , p_sla_ledger_id    => l_sla_ledger_id
191239                         , p_pad_start_date   => p_pad_start_date
191240                         , p_pad_end_date     => p_pad_end_date
191241                           );
191242 
191243      END IF;
191244 
191245  l_created :=  EventType_274(
191246    p_application_id         => p_application_id
191247  , p_base_ledger_id         => p_base_ledger_id
191248  , p_target_ledger_id       => p_target_ledger_id
191249  , p_language               => l_language
191250  , p_currency_code          => l_currency_code
191251  , p_sla_ledger_id          => l_sla_ledger_id
191252  , p_pad_start_date         => p_pad_start_date
191253  , p_pad_end_date           => p_pad_end_date
191254  , p_primary_ledger_id      => p_primary_ledger_id
191255 );
191256 
191257 
191258 
191259      IF ( g_diagnostics_mode ='Y' ) THEN
191260 
191261          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191262           trace
191263               (p_msg      => 'CALL Transaction Objects Diagnostics'
191264               ,p_level    => C_LEVEL_STATEMENT
191265               ,p_module   => l_log_module);
191266 
191267          END IF;
191268 
191269          insert_sources_274(
191270                           p_target_ledger_id => p_target_ledger_id
191271                         , p_language         => l_language
191272                         , p_sla_ledger_id    => l_sla_ledger_id
191273                         , p_pad_start_date   => p_pad_start_date
191274                         , p_pad_end_date     => p_pad_end_date
191275                           );
191276 
191277      END IF;
191278 
191279  l_created :=  EventType_275(
191280    p_application_id         => p_application_id
191281  , p_base_ledger_id         => p_base_ledger_id
191282  , p_target_ledger_id       => p_target_ledger_id
191283  , p_language               => l_language
191284  , p_currency_code          => l_currency_code
191285  , p_sla_ledger_id          => l_sla_ledger_id
191286  , p_pad_start_date         => p_pad_start_date
191287  , p_pad_end_date           => p_pad_end_date
191288  , p_primary_ledger_id      => p_primary_ledger_id
191289 );
191290 
191291 
191292 
191293      IF ( g_diagnostics_mode ='Y' ) THEN
191294 
191295          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191296           trace
191297               (p_msg      => 'CALL Transaction Objects Diagnostics'
191301          END IF;
191298               ,p_level    => C_LEVEL_STATEMENT
191299               ,p_module   => l_log_module);
191300 
191302 
191303          insert_sources_275(
191304                           p_target_ledger_id => p_target_ledger_id
191305                         , p_language         => l_language
191306                         , p_sla_ledger_id    => l_sla_ledger_id
191307                         , p_pad_start_date   => p_pad_start_date
191308                         , p_pad_end_date     => p_pad_end_date
191309                           );
191310 
191311      END IF;
191312 
191313  l_created :=  EventType_276(
191314    p_application_id         => p_application_id
191315  , p_base_ledger_id         => p_base_ledger_id
191316  , p_target_ledger_id       => p_target_ledger_id
191317  , p_language               => l_language
191318  , p_currency_code          => l_currency_code
191319  , p_sla_ledger_id          => l_sla_ledger_id
191320  , p_pad_start_date         => p_pad_start_date
191321  , p_pad_end_date           => p_pad_end_date
191322  , p_primary_ledger_id      => p_primary_ledger_id
191323 );
191324 
191325 
191326 
191327      IF ( g_diagnostics_mode ='Y' ) THEN
191328 
191329          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191330           trace
191331               (p_msg      => 'CALL Transaction Objects Diagnostics'
191332               ,p_level    => C_LEVEL_STATEMENT
191333               ,p_module   => l_log_module);
191334 
191335          END IF;
191336 
191337          insert_sources_276(
191338                           p_target_ledger_id => p_target_ledger_id
191339                         , p_language         => l_language
191340                         , p_sla_ledger_id    => l_sla_ledger_id
191341                         , p_pad_start_date   => p_pad_start_date
191342                         , p_pad_end_date     => p_pad_end_date
191343                           );
191344 
191345      END IF;
191346 
191347  l_created :=  EventType_277(
191348    p_application_id         => p_application_id
191349  , p_base_ledger_id         => p_base_ledger_id
191350  , p_target_ledger_id       => p_target_ledger_id
191351  , p_language               => l_language
191352  , p_currency_code          => l_currency_code
191353  , p_sla_ledger_id          => l_sla_ledger_id
191354  , p_pad_start_date         => p_pad_start_date
191355  , p_pad_end_date           => p_pad_end_date
191356  , p_primary_ledger_id      => p_primary_ledger_id
191357 );
191358 
191359 
191360 
191361      IF ( g_diagnostics_mode ='Y' ) THEN
191362 
191363          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191364           trace
191365               (p_msg      => 'CALL Transaction Objects Diagnostics'
191366               ,p_level    => C_LEVEL_STATEMENT
191367               ,p_module   => l_log_module);
191368 
191369          END IF;
191370 
191371          insert_sources_277(
191372                           p_target_ledger_id => p_target_ledger_id
191373                         , p_language         => l_language
191374                         , p_sla_ledger_id    => l_sla_ledger_id
191375                         , p_pad_start_date   => p_pad_start_date
191376                         , p_pad_end_date     => p_pad_end_date
191377                           );
191378 
191379      END IF;
191380 
191381  l_created :=  EventType_278(
191382    p_application_id         => p_application_id
191383  , p_base_ledger_id         => p_base_ledger_id
191384  , p_target_ledger_id       => p_target_ledger_id
191385  , p_language               => l_language
191386  , p_currency_code          => l_currency_code
191387  , p_sla_ledger_id          => l_sla_ledger_id
191388  , p_pad_start_date         => p_pad_start_date
191389  , p_pad_end_date           => p_pad_end_date
191390  , p_primary_ledger_id      => p_primary_ledger_id
191391 );
191392 
191393 
191394 
191395      IF ( g_diagnostics_mode ='Y' ) THEN
191396 
191397          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191398           trace
191399               (p_msg      => 'CALL Transaction Objects Diagnostics'
191400               ,p_level    => C_LEVEL_STATEMENT
191401               ,p_module   => l_log_module);
191402 
191403          END IF;
191404 
191405          insert_sources_278(
191406                           p_target_ledger_id => p_target_ledger_id
191407                         , p_language         => l_language
191408                         , p_sla_ledger_id    => l_sla_ledger_id
191409                         , p_pad_start_date   => p_pad_start_date
191410                         , p_pad_end_date     => p_pad_end_date
191411                           );
191412 
191413      END IF;
191414 
191415  l_created :=  EventType_279(
191416    p_application_id         => p_application_id
191417  , p_base_ledger_id         => p_base_ledger_id
191418  , p_target_ledger_id       => p_target_ledger_id
191419  , p_language               => l_language
191420  , p_currency_code          => l_currency_code
191421  , p_sla_ledger_id          => l_sla_ledger_id
191422  , p_pad_start_date         => p_pad_start_date
191423  , p_pad_end_date           => p_pad_end_date
191424  , p_primary_ledger_id      => p_primary_ledger_id
191425 );
191426 
191427 
191428 
191429      IF ( g_diagnostics_mode ='Y' ) THEN
191430 
191431          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191432           trace
191433               (p_msg      => 'CALL Transaction Objects Diagnostics'
191434               ,p_level    => C_LEVEL_STATEMENT
191435               ,p_module   => l_log_module);
191436 
191437          END IF;
191438 
191439          insert_sources_279(
191440                           p_target_ledger_id => p_target_ledger_id
191441                         , p_language         => l_language
191442                         , p_sla_ledger_id    => l_sla_ledger_id
191446 
191443                         , p_pad_start_date   => p_pad_start_date
191444                         , p_pad_end_date     => p_pad_end_date
191445                           );
191447      END IF;
191448 
191449  l_created :=  EventType_280(
191450    p_application_id         => p_application_id
191451  , p_base_ledger_id         => p_base_ledger_id
191452  , p_target_ledger_id       => p_target_ledger_id
191453  , p_language               => l_language
191454  , p_currency_code          => l_currency_code
191455  , p_sla_ledger_id          => l_sla_ledger_id
191456  , p_pad_start_date         => p_pad_start_date
191457  , p_pad_end_date           => p_pad_end_date
191458  , p_primary_ledger_id      => p_primary_ledger_id
191459 );
191460 
191461 
191462 
191463      IF ( g_diagnostics_mode ='Y' ) THEN
191464 
191465          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191466           trace
191467               (p_msg      => 'CALL Transaction Objects Diagnostics'
191468               ,p_level    => C_LEVEL_STATEMENT
191469               ,p_module   => l_log_module);
191470 
191471          END IF;
191472 
191473          insert_sources_280(
191474                           p_target_ledger_id => p_target_ledger_id
191475                         , p_language         => l_language
191476                         , p_sla_ledger_id    => l_sla_ledger_id
191477                         , p_pad_start_date   => p_pad_start_date
191478                         , p_pad_end_date     => p_pad_end_date
191479                           );
191480 
191481      END IF;
191482 
191483  l_created :=  EventType_281(
191484    p_application_id         => p_application_id
191485  , p_base_ledger_id         => p_base_ledger_id
191486  , p_target_ledger_id       => p_target_ledger_id
191487  , p_language               => l_language
191488  , p_currency_code          => l_currency_code
191489  , p_sla_ledger_id          => l_sla_ledger_id
191490  , p_pad_start_date         => p_pad_start_date
191491  , p_pad_end_date           => p_pad_end_date
191492  , p_primary_ledger_id      => p_primary_ledger_id
191493 );
191494 
191495 
191496 
191497      IF ( g_diagnostics_mode ='Y' ) THEN
191498 
191499          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191500           trace
191501               (p_msg      => 'CALL Transaction Objects Diagnostics'
191502               ,p_level    => C_LEVEL_STATEMENT
191503               ,p_module   => l_log_module);
191504 
191505          END IF;
191506 
191507          insert_sources_281(
191508                           p_target_ledger_id => p_target_ledger_id
191509                         , p_language         => l_language
191510                         , p_sla_ledger_id    => l_sla_ledger_id
191511                         , p_pad_start_date   => p_pad_start_date
191512                         , p_pad_end_date     => p_pad_end_date
191513                           );
191514 
191515      END IF;
191516 
191517  l_created :=  EventType_282(
191518    p_application_id         => p_application_id
191519  , p_base_ledger_id         => p_base_ledger_id
191520  , p_target_ledger_id       => p_target_ledger_id
191521  , p_language               => l_language
191522  , p_currency_code          => l_currency_code
191523  , p_sla_ledger_id          => l_sla_ledger_id
191524  , p_pad_start_date         => p_pad_start_date
191525  , p_pad_end_date           => p_pad_end_date
191526  , p_primary_ledger_id      => p_primary_ledger_id
191527 );
191528 
191529 
191530 
191531      IF ( g_diagnostics_mode ='Y' ) THEN
191532 
191533          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191534           trace
191535               (p_msg      => 'CALL Transaction Objects Diagnostics'
191536               ,p_level    => C_LEVEL_STATEMENT
191537               ,p_module   => l_log_module);
191538 
191539          END IF;
191540 
191541          insert_sources_282(
191542                           p_target_ledger_id => p_target_ledger_id
191543                         , p_language         => l_language
191544                         , p_sla_ledger_id    => l_sla_ledger_id
191545                         , p_pad_start_date   => p_pad_start_date
191546                         , p_pad_end_date     => p_pad_end_date
191547                           );
191548 
191549      END IF;
191550 
191551  l_created :=  EventType_283(
191552    p_application_id         => p_application_id
191553  , p_base_ledger_id         => p_base_ledger_id
191554  , p_target_ledger_id       => p_target_ledger_id
191555  , p_language               => l_language
191556  , p_currency_code          => l_currency_code
191557  , p_sla_ledger_id          => l_sla_ledger_id
191558  , p_pad_start_date         => p_pad_start_date
191559  , p_pad_end_date           => p_pad_end_date
191560  , p_primary_ledger_id      => p_primary_ledger_id
191561 );
191562 
191563 
191564 
191565      IF ( g_diagnostics_mode ='Y' ) THEN
191566 
191567          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191568           trace
191569               (p_msg      => 'CALL Transaction Objects Diagnostics'
191570               ,p_level    => C_LEVEL_STATEMENT
191571               ,p_module   => l_log_module);
191572 
191573          END IF;
191574 
191575          insert_sources_283(
191576                           p_target_ledger_id => p_target_ledger_id
191577                         , p_language         => l_language
191578                         , p_sla_ledger_id    => l_sla_ledger_id
191579                         , p_pad_start_date   => p_pad_start_date
191580                         , p_pad_end_date     => p_pad_end_date
191581                           );
191582 
191583      END IF;
191584 
191585  l_created :=  EventType_284(
191586    p_application_id         => p_application_id
191587  , p_base_ledger_id         => p_base_ledger_id
191588  , p_target_ledger_id       => p_target_ledger_id
191592  , p_pad_start_date         => p_pad_start_date
191589  , p_language               => l_language
191590  , p_currency_code          => l_currency_code
191591  , p_sla_ledger_id          => l_sla_ledger_id
191593  , p_pad_end_date           => p_pad_end_date
191594  , p_primary_ledger_id      => p_primary_ledger_id
191595 );
191596 
191597 
191598 
191599      IF ( g_diagnostics_mode ='Y' ) THEN
191600 
191601          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191602           trace
191603               (p_msg      => 'CALL Transaction Objects Diagnostics'
191604               ,p_level    => C_LEVEL_STATEMENT
191605               ,p_module   => l_log_module);
191606 
191607          END IF;
191608 
191609          insert_sources_284(
191610                           p_target_ledger_id => p_target_ledger_id
191611                         , p_language         => l_language
191612                         , p_sla_ledger_id    => l_sla_ledger_id
191613                         , p_pad_start_date   => p_pad_start_date
191614                         , p_pad_end_date     => p_pad_end_date
191615                           );
191616 
191617      END IF;
191618 
191619  l_created :=  EventType_285(
191620    p_application_id         => p_application_id
191621  , p_base_ledger_id         => p_base_ledger_id
191622  , p_target_ledger_id       => p_target_ledger_id
191623  , p_language               => l_language
191624  , p_currency_code          => l_currency_code
191625  , p_sla_ledger_id          => l_sla_ledger_id
191626  , p_pad_start_date         => p_pad_start_date
191627  , p_pad_end_date           => p_pad_end_date
191628  , p_primary_ledger_id      => p_primary_ledger_id
191629 );
191630 
191631 
191632 
191633      IF ( g_diagnostics_mode ='Y' ) THEN
191634 
191635          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191636           trace
191637               (p_msg      => 'CALL Transaction Objects Diagnostics'
191638               ,p_level    => C_LEVEL_STATEMENT
191639               ,p_module   => l_log_module);
191640 
191641          END IF;
191642 
191643          insert_sources_285(
191644                           p_target_ledger_id => p_target_ledger_id
191645                         , p_language         => l_language
191646                         , p_sla_ledger_id    => l_sla_ledger_id
191647                         , p_pad_start_date   => p_pad_start_date
191648                         , p_pad_end_date     => p_pad_end_date
191649                           );
191650 
191651      END IF;
191652 
191653  l_created :=  EventType_286(
191654    p_application_id         => p_application_id
191655  , p_base_ledger_id         => p_base_ledger_id
191656  , p_target_ledger_id       => p_target_ledger_id
191657  , p_language               => l_language
191658  , p_currency_code          => l_currency_code
191659  , p_sla_ledger_id          => l_sla_ledger_id
191660  , p_pad_start_date         => p_pad_start_date
191661  , p_pad_end_date           => p_pad_end_date
191662  , p_primary_ledger_id      => p_primary_ledger_id
191663 );
191664 
191665 
191666 
191667      IF ( g_diagnostics_mode ='Y' ) THEN
191668 
191669          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191670           trace
191671               (p_msg      => 'CALL Transaction Objects Diagnostics'
191672               ,p_level    => C_LEVEL_STATEMENT
191673               ,p_module   => l_log_module);
191674 
191675          END IF;
191676 
191677          insert_sources_286(
191678                           p_target_ledger_id => p_target_ledger_id
191679                         , p_language         => l_language
191680                         , p_sla_ledger_id    => l_sla_ledger_id
191681                         , p_pad_start_date   => p_pad_start_date
191682                         , p_pad_end_date     => p_pad_end_date
191683                           );
191684 
191685      END IF;
191686 
191687  l_created :=  EventType_287(
191688    p_application_id         => p_application_id
191689  , p_base_ledger_id         => p_base_ledger_id
191690  , p_target_ledger_id       => p_target_ledger_id
191691  , p_language               => l_language
191692  , p_currency_code          => l_currency_code
191693  , p_sla_ledger_id          => l_sla_ledger_id
191694  , p_pad_start_date         => p_pad_start_date
191695  , p_pad_end_date           => p_pad_end_date
191696  , p_primary_ledger_id      => p_primary_ledger_id
191697 );
191698 
191699 
191700 
191701      IF ( g_diagnostics_mode ='Y' ) THEN
191702 
191703          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191704           trace
191705               (p_msg      => 'CALL Transaction Objects Diagnostics'
191706               ,p_level    => C_LEVEL_STATEMENT
191707               ,p_module   => l_log_module);
191708 
191709          END IF;
191710 
191711          insert_sources_287(
191712                           p_target_ledger_id => p_target_ledger_id
191713                         , p_language         => l_language
191714                         , p_sla_ledger_id    => l_sla_ledger_id
191715                         , p_pad_start_date   => p_pad_start_date
191716                         , p_pad_end_date     => p_pad_end_date
191717                           );
191718 
191719      END IF;
191720 
191721  l_created :=  EventType_288(
191722    p_application_id         => p_application_id
191723  , p_base_ledger_id         => p_base_ledger_id
191724  , p_target_ledger_id       => p_target_ledger_id
191725  , p_language               => l_language
191726  , p_currency_code          => l_currency_code
191727  , p_sla_ledger_id          => l_sla_ledger_id
191728  , p_pad_start_date         => p_pad_start_date
191729  , p_pad_end_date           => p_pad_end_date
191730  , p_primary_ledger_id      => p_primary_ledger_id
191731 );
191732 
191733 
191734 
191735      IF ( g_diagnostics_mode ='Y' ) THEN
191736 
191740               ,p_level    => C_LEVEL_STATEMENT
191737          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191738           trace
191739               (p_msg      => 'CALL Transaction Objects Diagnostics'
191741               ,p_module   => l_log_module);
191742 
191743          END IF;
191744 
191745          insert_sources_288(
191746                           p_target_ledger_id => p_target_ledger_id
191747                         , p_language         => l_language
191748                         , p_sla_ledger_id    => l_sla_ledger_id
191749                         , p_pad_start_date   => p_pad_start_date
191750                         , p_pad_end_date     => p_pad_end_date
191751                           );
191752 
191753      END IF;
191754 
191755  l_created :=  EventType_289(
191756    p_application_id         => p_application_id
191757  , p_base_ledger_id         => p_base_ledger_id
191758  , p_target_ledger_id       => p_target_ledger_id
191759  , p_language               => l_language
191760  , p_currency_code          => l_currency_code
191761  , p_sla_ledger_id          => l_sla_ledger_id
191762  , p_pad_start_date         => p_pad_start_date
191763  , p_pad_end_date           => p_pad_end_date
191764  , p_primary_ledger_id      => p_primary_ledger_id
191765 );
191766 
191767 
191768 
191769      IF ( g_diagnostics_mode ='Y' ) THEN
191770 
191771          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191772           trace
191773               (p_msg      => 'CALL Transaction Objects Diagnostics'
191774               ,p_level    => C_LEVEL_STATEMENT
191775               ,p_module   => l_log_module);
191776 
191777          END IF;
191778 
191779          insert_sources_289(
191780                           p_target_ledger_id => p_target_ledger_id
191781                         , p_language         => l_language
191782                         , p_sla_ledger_id    => l_sla_ledger_id
191783                         , p_pad_start_date   => p_pad_start_date
191784                         , p_pad_end_date     => p_pad_end_date
191785                           );
191786 
191787      END IF;
191788 
191789  l_created :=  EventType_290(
191790    p_application_id         => p_application_id
191791  , p_base_ledger_id         => p_base_ledger_id
191792  , p_target_ledger_id       => p_target_ledger_id
191793  , p_language               => l_language
191794  , p_currency_code          => l_currency_code
191795  , p_sla_ledger_id          => l_sla_ledger_id
191796  , p_pad_start_date         => p_pad_start_date
191797  , p_pad_end_date           => p_pad_end_date
191798  , p_primary_ledger_id      => p_primary_ledger_id
191799 );
191800 
191801 
191802 
191803      IF ( g_diagnostics_mode ='Y' ) THEN
191804 
191805          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191806           trace
191807               (p_msg      => 'CALL Transaction Objects Diagnostics'
191808               ,p_level    => C_LEVEL_STATEMENT
191809               ,p_module   => l_log_module);
191810 
191811          END IF;
191812 
191813          insert_sources_290(
191814                           p_target_ledger_id => p_target_ledger_id
191815                         , p_language         => l_language
191816                         , p_sla_ledger_id    => l_sla_ledger_id
191817                         , p_pad_start_date   => p_pad_start_date
191818                         , p_pad_end_date     => p_pad_end_date
191819                           );
191820 
191821      END IF;
191822 
191823  l_created :=  EventType_291(
191824    p_application_id         => p_application_id
191825  , p_base_ledger_id         => p_base_ledger_id
191826  , p_target_ledger_id       => p_target_ledger_id
191827  , p_language               => l_language
191828  , p_currency_code          => l_currency_code
191829  , p_sla_ledger_id          => l_sla_ledger_id
191830  , p_pad_start_date         => p_pad_start_date
191831  , p_pad_end_date           => p_pad_end_date
191832  , p_primary_ledger_id      => p_primary_ledger_id
191833 );
191834 
191835 
191836 
191837      IF ( g_diagnostics_mode ='Y' ) THEN
191838 
191839          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191840           trace
191841               (p_msg      => 'CALL Transaction Objects Diagnostics'
191842               ,p_level    => C_LEVEL_STATEMENT
191843               ,p_module   => l_log_module);
191844 
191845          END IF;
191846 
191847          insert_sources_291(
191848                           p_target_ledger_id => p_target_ledger_id
191849                         , p_language         => l_language
191850                         , p_sla_ledger_id    => l_sla_ledger_id
191851                         , p_pad_start_date   => p_pad_start_date
191852                         , p_pad_end_date     => p_pad_end_date
191853                           );
191854 
191855      END IF;
191856 
191857 l_created := EventClass_292(
191858    p_application_id         => p_application_id
191859  , p_base_ledger_id         => p_base_ledger_id
191860  , p_target_ledger_id       => p_target_ledger_id
191861  , p_language               => l_language
191862  , p_currency_code          => l_currency_code
191863  , p_sla_ledger_id          => l_sla_ledger_id
191864  , p_pad_start_date         => p_pad_start_date
191865  , p_pad_end_date           => p_pad_end_date
191866  , p_primary_ledger_id      => p_primary_ledger_id
191867 );
191868 
191869 
191870 
191871      IF ( g_diagnostics_mode ='Y' ) THEN
191872 
191873          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191874           trace
191875               (p_msg      => 'CALL Transaction Objects Diagnostics'
191876               ,p_level    => C_LEVEL_STATEMENT
191877               ,p_module   => l_log_module);
191878 
191879          END IF;
191880 
191881          insert_sources_292(
191882                           p_target_ledger_id => p_target_ledger_id
191886                         , p_pad_end_date     => p_pad_end_date
191883                         , p_language         => l_language
191884                         , p_sla_ledger_id    => l_sla_ledger_id
191885                         , p_pad_start_date   => p_pad_start_date
191887                           );
191888 
191889      END IF;
191890 
191891  l_created :=  EventType_293(
191892    p_application_id         => p_application_id
191893  , p_base_ledger_id         => p_base_ledger_id
191894  , p_target_ledger_id       => p_target_ledger_id
191895  , p_language               => l_language
191896  , p_currency_code          => l_currency_code
191897  , p_sla_ledger_id          => l_sla_ledger_id
191898  , p_pad_start_date         => p_pad_start_date
191899  , p_pad_end_date           => p_pad_end_date
191900  , p_primary_ledger_id      => p_primary_ledger_id
191901 );
191902 
191903 
191904 
191905      IF ( g_diagnostics_mode ='Y' ) THEN
191906 
191907          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191908           trace
191909               (p_msg      => 'CALL Transaction Objects Diagnostics'
191910               ,p_level    => C_LEVEL_STATEMENT
191911               ,p_module   => l_log_module);
191912 
191913          END IF;
191914 
191915          insert_sources_293(
191916                           p_target_ledger_id => p_target_ledger_id
191917                         , p_language         => l_language
191918                         , p_sla_ledger_id    => l_sla_ledger_id
191919                         , p_pad_start_date   => p_pad_start_date
191920                         , p_pad_end_date     => p_pad_end_date
191921                           );
191922 
191923      END IF;
191924 
191925  l_created :=  EventType_294(
191926    p_application_id         => p_application_id
191927  , p_base_ledger_id         => p_base_ledger_id
191928  , p_target_ledger_id       => p_target_ledger_id
191929  , p_language               => l_language
191930  , p_currency_code          => l_currency_code
191931  , p_sla_ledger_id          => l_sla_ledger_id
191932  , p_pad_start_date         => p_pad_start_date
191933  , p_pad_end_date           => p_pad_end_date
191934  , p_primary_ledger_id      => p_primary_ledger_id
191935 );
191936 
191937 
191938 
191939      IF ( g_diagnostics_mode ='Y' ) THEN
191940 
191941          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191942           trace
191943               (p_msg      => 'CALL Transaction Objects Diagnostics'
191944               ,p_level    => C_LEVEL_STATEMENT
191945               ,p_module   => l_log_module);
191946 
191947          END IF;
191948 
191949          insert_sources_294(
191950                           p_target_ledger_id => p_target_ledger_id
191951                         , p_language         => l_language
191952                         , p_sla_ledger_id    => l_sla_ledger_id
191953                         , p_pad_start_date   => p_pad_start_date
191954                         , p_pad_end_date     => p_pad_end_date
191955                           );
191956 
191957      END IF;
191958 
191959  l_created :=  EventType_295(
191960    p_application_id         => p_application_id
191961  , p_base_ledger_id         => p_base_ledger_id
191962  , p_target_ledger_id       => p_target_ledger_id
191963  , p_language               => l_language
191964  , p_currency_code          => l_currency_code
191965  , p_sla_ledger_id          => l_sla_ledger_id
191966  , p_pad_start_date         => p_pad_start_date
191967  , p_pad_end_date           => p_pad_end_date
191968  , p_primary_ledger_id      => p_primary_ledger_id
191969 );
191970 
191971 
191972 
191973      IF ( g_diagnostics_mode ='Y' ) THEN
191974 
191975          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191976           trace
191977               (p_msg      => 'CALL Transaction Objects Diagnostics'
191978               ,p_level    => C_LEVEL_STATEMENT
191979               ,p_module   => l_log_module);
191980 
191981          END IF;
191982 
191983          insert_sources_295(
191984                           p_target_ledger_id => p_target_ledger_id
191985                         , p_language         => l_language
191986                         , p_sla_ledger_id    => l_sla_ledger_id
191987                         , p_pad_start_date   => p_pad_start_date
191988                         , p_pad_end_date     => p_pad_end_date
191989                           );
191990 
191991      END IF;
191992 
191993  l_created :=  EventType_296(
191994    p_application_id         => p_application_id
191995  , p_base_ledger_id         => p_base_ledger_id
191996  , p_target_ledger_id       => p_target_ledger_id
191997  , p_language               => l_language
191998  , p_currency_code          => l_currency_code
191999  , p_sla_ledger_id          => l_sla_ledger_id
192000  , p_pad_start_date         => p_pad_start_date
192001  , p_pad_end_date           => p_pad_end_date
192002  , p_primary_ledger_id      => p_primary_ledger_id
192003 );
192004 
192005 
192006 
192007      IF ( g_diagnostics_mode ='Y' ) THEN
192008 
192009          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192010           trace
192011               (p_msg      => 'CALL Transaction Objects Diagnostics'
192012               ,p_level    => C_LEVEL_STATEMENT
192013               ,p_module   => l_log_module);
192014 
192015          END IF;
192016 
192017          insert_sources_296(
192018                           p_target_ledger_id => p_target_ledger_id
192019                         , p_language         => l_language
192020                         , p_sla_ledger_id    => l_sla_ledger_id
192021                         , p_pad_start_date   => p_pad_start_date
192022                         , p_pad_end_date     => p_pad_end_date
192023                           );
192024 
192025      END IF;
192026 
192027  l_created :=  EventType_297(
192028    p_application_id         => p_application_id
192032  , p_currency_code          => l_currency_code
192029  , p_base_ledger_id         => p_base_ledger_id
192030  , p_target_ledger_id       => p_target_ledger_id
192031  , p_language               => l_language
192033  , p_sla_ledger_id          => l_sla_ledger_id
192034  , p_pad_start_date         => p_pad_start_date
192035  , p_pad_end_date           => p_pad_end_date
192036  , p_primary_ledger_id      => p_primary_ledger_id
192037 );
192038 
192039 
192040 
192041      IF ( g_diagnostics_mode ='Y' ) THEN
192042 
192043          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192044           trace
192045               (p_msg      => 'CALL Transaction Objects Diagnostics'
192046               ,p_level    => C_LEVEL_STATEMENT
192047               ,p_module   => l_log_module);
192048 
192049          END IF;
192050 
192051          insert_sources_297(
192052                           p_target_ledger_id => p_target_ledger_id
192053                         , p_language         => l_language
192054                         , p_sla_ledger_id    => l_sla_ledger_id
192055                         , p_pad_start_date   => p_pad_start_date
192056                         , p_pad_end_date     => p_pad_end_date
192057                           );
192058 
192059      END IF;
192060 
192061  l_created :=  EventType_298(
192062    p_application_id         => p_application_id
192063  , p_base_ledger_id         => p_base_ledger_id
192064  , p_target_ledger_id       => p_target_ledger_id
192065  , p_language               => l_language
192066  , p_currency_code          => l_currency_code
192067  , p_sla_ledger_id          => l_sla_ledger_id
192068  , p_pad_start_date         => p_pad_start_date
192069  , p_pad_end_date           => p_pad_end_date
192070  , p_primary_ledger_id      => p_primary_ledger_id
192071 );
192072 
192073 
192074 
192075      IF ( g_diagnostics_mode ='Y' ) THEN
192076 
192077          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192078           trace
192079               (p_msg      => 'CALL Transaction Objects Diagnostics'
192080               ,p_level    => C_LEVEL_STATEMENT
192081               ,p_module   => l_log_module);
192082 
192083          END IF;
192084 
192085          insert_sources_298(
192086                           p_target_ledger_id => p_target_ledger_id
192087                         , p_language         => l_language
192088                         , p_sla_ledger_id    => l_sla_ledger_id
192089                         , p_pad_start_date   => p_pad_start_date
192090                         , p_pad_end_date     => p_pad_end_date
192091                           );
192092 
192093      END IF;
192094 
192095  l_created :=  EventType_299(
192096    p_application_id         => p_application_id
192097  , p_base_ledger_id         => p_base_ledger_id
192098  , p_target_ledger_id       => p_target_ledger_id
192099  , p_language               => l_language
192100  , p_currency_code          => l_currency_code
192101  , p_sla_ledger_id          => l_sla_ledger_id
192102  , p_pad_start_date         => p_pad_start_date
192103  , p_pad_end_date           => p_pad_end_date
192104  , p_primary_ledger_id      => p_primary_ledger_id
192105 );
192106 
192107 
192108 
192109      IF ( g_diagnostics_mode ='Y' ) THEN
192110 
192111          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192112           trace
192113               (p_msg      => 'CALL Transaction Objects Diagnostics'
192114               ,p_level    => C_LEVEL_STATEMENT
192115               ,p_module   => l_log_module);
192116 
192117          END IF;
192118 
192119          insert_sources_299(
192120                           p_target_ledger_id => p_target_ledger_id
192121                         , p_language         => l_language
192122                         , p_sla_ledger_id    => l_sla_ledger_id
192123                         , p_pad_start_date   => p_pad_start_date
192124                         , p_pad_end_date     => p_pad_end_date
192125                           );
192126 
192127      END IF;
192128 
192129 l_created := EventClass_300(
192130    p_application_id         => p_application_id
192131  , p_base_ledger_id         => p_base_ledger_id
192132  , p_target_ledger_id       => p_target_ledger_id
192133  , p_language               => l_language
192134  , p_currency_code          => l_currency_code
192135  , p_sla_ledger_id          => l_sla_ledger_id
192136  , p_pad_start_date         => p_pad_start_date
192137  , p_pad_end_date           => p_pad_end_date
192138  , p_primary_ledger_id      => p_primary_ledger_id
192139 );
192140 
192141 
192142 
192143      IF ( g_diagnostics_mode ='Y' ) THEN
192144 
192145          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192146           trace
192147               (p_msg      => 'CALL Transaction Objects Diagnostics'
192148               ,p_level    => C_LEVEL_STATEMENT
192149               ,p_module   => l_log_module);
192150 
192151          END IF;
192152 
192153          insert_sources_300(
192154                           p_target_ledger_id => p_target_ledger_id
192155                         , p_language         => l_language
192156                         , p_sla_ledger_id    => l_sla_ledger_id
192157                         , p_pad_start_date   => p_pad_start_date
192158                         , p_pad_end_date     => p_pad_end_date
192159                           );
192160 
192161      END IF;
192162 
192163  l_created :=  EventType_301(
192164    p_application_id         => p_application_id
192165  , p_base_ledger_id         => p_base_ledger_id
192166  , p_target_ledger_id       => p_target_ledger_id
192167  , p_language               => l_language
192168  , p_currency_code          => l_currency_code
192169  , p_sla_ledger_id          => l_sla_ledger_id
192170  , p_pad_start_date         => p_pad_start_date
192171  , p_pad_end_date           => p_pad_end_date
192172  , p_primary_ledger_id      => p_primary_ledger_id
192173 );
192174 
192178 
192175 
192176 
192177      IF ( g_diagnostics_mode ='Y' ) THEN
192179          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192180           trace
192181               (p_msg      => 'CALL Transaction Objects Diagnostics'
192182               ,p_level    => C_LEVEL_STATEMENT
192183               ,p_module   => l_log_module);
192184 
192185          END IF;
192186 
192187          insert_sources_301(
192188                           p_target_ledger_id => p_target_ledger_id
192189                         , p_language         => l_language
192190                         , p_sla_ledger_id    => l_sla_ledger_id
192191                         , p_pad_start_date   => p_pad_start_date
192192                         , p_pad_end_date     => p_pad_end_date
192193                           );
192194 
192195      END IF;
192196 
192197  l_created :=  EventType_302(
192198    p_application_id         => p_application_id
192199  , p_base_ledger_id         => p_base_ledger_id
192200  , p_target_ledger_id       => p_target_ledger_id
192201  , p_language               => l_language
192202  , p_currency_code          => l_currency_code
192203  , p_sla_ledger_id          => l_sla_ledger_id
192204  , p_pad_start_date         => p_pad_start_date
192205  , p_pad_end_date           => p_pad_end_date
192206  , p_primary_ledger_id      => p_primary_ledger_id
192207 );
192208 
192209 
192210 
192211      IF ( g_diagnostics_mode ='Y' ) THEN
192212 
192213          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192214           trace
192215               (p_msg      => 'CALL Transaction Objects Diagnostics'
192216               ,p_level    => C_LEVEL_STATEMENT
192217               ,p_module   => l_log_module);
192218 
192219          END IF;
192220 
192221          insert_sources_302(
192222                           p_target_ledger_id => p_target_ledger_id
192223                         , p_language         => l_language
192224                         , p_sla_ledger_id    => l_sla_ledger_id
192225                         , p_pad_start_date   => p_pad_start_date
192226                         , p_pad_end_date     => p_pad_end_date
192227                           );
192228 
192229      END IF;
192230 
192231 l_created := EventClass_303(
192232    p_application_id         => p_application_id
192233  , p_base_ledger_id         => p_base_ledger_id
192234  , p_target_ledger_id       => p_target_ledger_id
192235  , p_language               => l_language
192236  , p_currency_code          => l_currency_code
192237  , p_sla_ledger_id          => l_sla_ledger_id
192238  , p_pad_start_date         => p_pad_start_date
192239  , p_pad_end_date           => p_pad_end_date
192240  , p_primary_ledger_id      => p_primary_ledger_id
192241 );
192242 
192243 
192244 
192245      IF ( g_diagnostics_mode ='Y' ) THEN
192246 
192247          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192248           trace
192249               (p_msg      => 'CALL Transaction Objects Diagnostics'
192250               ,p_level    => C_LEVEL_STATEMENT
192251               ,p_module   => l_log_module);
192252 
192253          END IF;
192254 
192255          insert_sources_303(
192256                           p_target_ledger_id => p_target_ledger_id
192257                         , p_language         => l_language
192258                         , p_sla_ledger_id    => l_sla_ledger_id
192259                         , p_pad_start_date   => p_pad_start_date
192260                         , p_pad_end_date     => p_pad_end_date
192261                           );
192262 
192263      END IF;
192264 
192265  l_created :=  EventType_304(
192266    p_application_id         => p_application_id
192267  , p_base_ledger_id         => p_base_ledger_id
192268  , p_target_ledger_id       => p_target_ledger_id
192269  , p_language               => l_language
192270  , p_currency_code          => l_currency_code
192271  , p_sla_ledger_id          => l_sla_ledger_id
192272  , p_pad_start_date         => p_pad_start_date
192273  , p_pad_end_date           => p_pad_end_date
192274  , p_primary_ledger_id      => p_primary_ledger_id
192275 );
192276 
192277 
192278 
192279      IF ( g_diagnostics_mode ='Y' ) THEN
192280 
192281          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192282           trace
192283               (p_msg      => 'CALL Transaction Objects Diagnostics'
192284               ,p_level    => C_LEVEL_STATEMENT
192285               ,p_module   => l_log_module);
192286 
192287          END IF;
192288 
192289          insert_sources_304(
192290                           p_target_ledger_id => p_target_ledger_id
192291                         , p_language         => l_language
192292                         , p_sla_ledger_id    => l_sla_ledger_id
192293                         , p_pad_start_date   => p_pad_start_date
192294                         , p_pad_end_date     => p_pad_end_date
192295                           );
192296 
192297      END IF;
192298 
192299  l_created :=  EventType_305(
192300    p_application_id         => p_application_id
192301  , p_base_ledger_id         => p_base_ledger_id
192302  , p_target_ledger_id       => p_target_ledger_id
192303  , p_language               => l_language
192304  , p_currency_code          => l_currency_code
192305  , p_sla_ledger_id          => l_sla_ledger_id
192306  , p_pad_start_date         => p_pad_start_date
192307  , p_pad_end_date           => p_pad_end_date
192308  , p_primary_ledger_id      => p_primary_ledger_id
192309 );
192310 
192311 
192312 
192313      IF ( g_diagnostics_mode ='Y' ) THEN
192314 
192315          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192316           trace
192317               (p_msg      => 'CALL Transaction Objects Diagnostics'
192318               ,p_level    => C_LEVEL_STATEMENT
192319               ,p_module   => l_log_module);
192320 
192321          END IF;
192322 
192323          insert_sources_305(
192327                         , p_pad_start_date   => p_pad_start_date
192324                           p_target_ledger_id => p_target_ledger_id
192325                         , p_language         => l_language
192326                         , p_sla_ledger_id    => l_sla_ledger_id
192328                         , p_pad_end_date     => p_pad_end_date
192329                           );
192330 
192331      END IF;
192332 
192333 
192334  --
192335  -- Bug 4865292
192336  -- When the number of events and that of header extract do not match,
192337  -- set the no header extract flag to indicate there are some issues
192338  -- in header extract.
192339  --
192340  -- Event count context is set in xla_accounting_pkg.unit_processor.
192341  -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
192342  -- to report it as a general error.
192343  --
192344  IF  xla_context_pkg.get_event_count_context <> g_hdr_extract_count
192345  AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
192346 
192347      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192348         trace
192349           (p_msg      => '# of extracted headers and events does not match'
192350           ,p_level    => C_LEVEL_STATEMENT
192351           ,p_module   => l_log_module);
192352 
192353         trace
192354           (p_msg      => '# of extracted headers: '
192355                          ||g_hdr_extract_count
192356           ,p_level    => C_LEVEL_STATEMENT
192357           ,p_module   => l_log_module);
192358 
192359         trace
192360           (p_msg      => '# of events in xla_events_gt: '
192361                          ||xla_context_pkg.get_event_count_context
192362           ,p_level    => C_LEVEL_STATEMENT
192363           ,p_module   => l_log_module);
192364 
192365         trace
192366           (p_msg      => 'Event No Header Extract Context: '
192367                          ||xla_context_pkg.get_event_nohdr_context
192368           ,p_level    => C_LEVEL_STATEMENT
192369           ,p_module   => l_log_module);
192370 
192371      END IF;
192372 
192373 
192374      xla_context_pkg.set_event_nohdr_context
192375        (p_nohdr_extract_flag => 'Y'
192376        ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
192377 
192378      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192379         trace
192380           (p_msg      => 'No Header Extract Flag is set to Y'
192381           ,p_level    => C_LEVEL_STATEMENT
192382           ,p_module   => l_log_module);
192383      END IF;
192384 
192385  END IF;
192386 
192387 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192388    trace
192389       (p_msg      => 'END of CreateHeadersAndLines'
192390       ,p_level    => C_LEVEL_PROCEDURE
192391       ,p_module   => l_log_module);
192392 END IF;
192393 
192394 RETURN l_created;
192395 EXCEPTION
192396 WHEN xla_exceptions_pkg.application_exception THEN
192397    RAISE;
192398 WHEN OTHERS THEN
192399    xla_exceptions_pkg.raise_message
192400       (p_location => 'XLA_00555_AAD_S_000001_PKG.CreateHeadersAndLines');
192401 END CreateHeadersAndLines;
192402 --
192403 --
192404 
192405 --
192406 --+============================================+
192407 --|                                            |
192408 --|  PUBLIC FUNCTION                           |
192409 --|                                            |
192410 --+============================================+
192411 --
192412 FUNCTION CreateJournalEntries
192413        (p_application_id         IN NUMBER
192414        ,p_base_ledger_id         IN NUMBER
192415        ,p_pad_start_date         IN DATE
192416        ,p_pad_end_date           IN DATE
192417        ,p_primary_ledger_id      IN NUMBER)
192418 RETURN NUMBER IS
192419 l_log_module                   VARCHAR2(240);
192420 l_array_ledgers                xla_accounting_cache_pkg.t_array_ledger_id;
192421 l_temp_result                  BOOLEAN;
192422 l_result                       NUMBER;
192423 BEGIN
192424 --
192425 IF g_log_enabled THEN
192426    l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
192427 END IF;
192428 --
192429 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192430    trace
192431       (p_msg      => 'BEGIN of CreateJournalEntries'||
192432                      ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
192433       ,p_level    => C_LEVEL_PROCEDURE
192434       ,p_module   => l_log_module);
192435 
192436 END IF;
192437 
192438 --
192439 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
192440 
192441 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192442    trace
192443       (p_msg      => 'g_diagnostics_mode = '||g_diagnostics_mode
192444       ,p_level    => C_LEVEL_STATEMENT
192445       ,p_module   => l_log_module);
192446 END IF;
192447 --
192448 xla_ae_journal_entry_pkg.SetProductAcctDefinition
192449    (p_product_rule_code      => 'PROCESS_MFG_FINANCIALS'
192450    ,p_product_rule_type_code => 'S'
192451    ,p_product_rule_version   => ''
192452    ,p_product_rule_name      => 'Process Manufacturing Financials'
192453    ,p_amb_context_code       => 'DEFAULT'
192454    );
192455 
192456 l_array_ledgers :=
192457    xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
192458       (p_base_ledger_id  => p_base_ledger_id);
192459 
192460 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
192461    l_temp_result :=
192462       XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
192463          (p_application_id           => p_application_id
192464          ,p_base_ledger_id           => p_base_ledger_id
192465          ,p_target_ledger_id         => l_array_ledgers(Idx)
192466          ,p_primary_ledger_id        => p_primary_ledger_id
192467          ,p_pad_start_date           => p_pad_start_date
192468          ,p_pad_end_date             => p_pad_end_date);
192469 
192470    l_temp_result :=
192471       l_temp_result AND
192472       CreateHeadersAndLines
192476          ,p_pad_start_date             => p_pad_start_date
192473          (p_application_id             => p_application_id
192474          ,p_base_ledger_id             => p_base_ledger_id
192475          ,p_target_ledger_id           => l_array_ledgers(Idx)
192477          ,p_pad_end_date               => p_pad_end_date
192478          ,p_primary_ledger_id          => p_primary_ledger_id
192479          );
192480 END LOOP;
192481 
192482 
192483 IF (g_diagnostics_mode = 'Y' AND
192484     C_LEVEL_UNEXPECTED >= g_log_level AND
192485     xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
192486 
192487    xla_accounting_dump_pkg.acctg_event_extract_log(
192488     p_application_id  => p_application_id
192489     ,p_request_id     => xla_environment_pkg.g_Req_Id
192490    );
192491 
192492 END IF;
192493 
192494 CASE l_temp_result
192495   WHEN TRUE THEN l_result := 0;
192496   ELSE l_result := 2;
192497 END CASE;
192498 
192499 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192500    trace
192501       (p_msg      => 'return value. = '||TO_CHAR(l_result)
192502       ,p_level    => C_LEVEL_PROCEDURE
192503       ,p_module   => l_log_module);
192504    trace
192505       (p_msg      => 'END of CreateJournalEntries '
192506       ,p_level    => C_LEVEL_PROCEDURE
192507       ,p_module   => l_log_module);
192508 END IF;
192509 
192510 RETURN l_result;
192511 EXCEPTION
192512 WHEN xla_exceptions_pkg.application_exception THEN
192513    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192514    trace
192515       (p_msg      => 'ERROR. = '||sqlerrm
192516       ,p_level    => C_LEVEL_PROCEDURE
192517       ,p_module   => l_log_module);
192518    END IF;
192519    RAISE;
192520 WHEN OTHERS THEN
192521    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192522    trace
192523       (p_msg      => 'ERROR. = '||sqlerrm
192524       ,p_level    => C_LEVEL_PROCEDURE
192525       ,p_module   => l_log_module);
192526    END IF;
192527    xla_exceptions_pkg.raise_message
192528       (p_location => 'XLA_00555_AAD_S_000001_PKG.CreateJournalEntries');
192529 END CreateJournalEntries;
192530 --
192531 --=============================================================================
192532 --
192533 --
192534 --
192535 --
192536 --
192537 --
192538 --
192539 --
192540 --
192541 --
192542 --
192543 --
192544 --
192545 --
192546 --
192547 --
192548 --
192549 --
192550 --
192551 --
192552 --
192553 --
192554 --=============================================================================
192555 --=============================================================================
192556 --          *********** Initialization routine **********
192557 --=============================================================================
192558 
192559 BEGIN
192560    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
192561    g_log_enabled    := fnd_log.test
192562                           (log_level  => g_log_level
192563                           ,module     => C_DEFAULT_MODULE);
192564 
192565    IF NOT g_log_enabled  THEN
192566       g_log_level := C_LEVEL_LOG_DISABLED;
192567    END IF;
192568 --
192569 END XLA_00555_AAD_S_000001_PKG;
192570 --